diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-03-18 22:25:27 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-03-18 22:25:27 -0400 |
commit | ccaeb7092b5ad40b1b3833c987ba3ec4d47f0bb8 (patch) | |
tree | ae167772a9a2343aa77bf8944b56abe853f6a2ec | |
parent | 3731bb4679ee8716d4f579d5744c36a2d1b4a257 (diff) | |
download | spmc-ccaeb7092b5ad40b1b3833c987ba3ec4d47f0bb8.tar.gz |
Refactor project: build/install libspm[_static.a].so to make unit testing possible
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | lib/CMakeLists.txt | 57 | ||||
-rw-r--r-- | lib/archive.c (renamed from src/archive.c) | 0 | ||||
-rw-r--r-- | lib/checksum.c (renamed from src/checksum.c) | 0 | ||||
-rw-r--r-- | lib/compat.c (renamed from src/compat.c) | 0 | ||||
-rw-r--r-- | lib/config.c (renamed from src/config.c) | 0 | ||||
-rw-r--r-- | lib/config_global.c (renamed from src/config_global.c) | 0 | ||||
-rw-r--r-- | lib/environment.c (renamed from src/environment.c) | 0 | ||||
-rw-r--r-- | lib/extern/url.c (renamed from src/extern/url.c) | 0 | ||||
-rw-r--r-- | lib/find.c (renamed from src/find.c) | 0 | ||||
-rw-r--r-- | lib/fs.c (renamed from src/fs.c) | 0 | ||||
-rw-r--r-- | lib/install.c (renamed from src/install.c) | 0 | ||||
-rw-r--r-- | lib/internal_cmd.c (renamed from src/internal_cmd.c) | 0 | ||||
-rw-r--r-- | lib/manifest.c (renamed from src/manifest.c) | 0 | ||||
-rw-r--r-- | lib/metadata.c (renamed from src/metadata.c) | 0 | ||||
-rw-r--r-- | lib/mime.c (renamed from src/mime.c) | 0 | ||||
-rw-r--r-- | lib/mirrors.c (renamed from src/mirrors.c) | 0 | ||||
-rw-r--r-- | lib/purge.c (renamed from src/purge.c) | 0 | ||||
-rw-r--r-- | lib/relocation.c (renamed from src/relocation.c) | 0 | ||||
-rw-r--r-- | lib/resolve.c (renamed from src/resolve.c) | 0 | ||||
-rw-r--r-- | lib/rpath.c (renamed from src/rpath.c) | 0 | ||||
-rw-r--r-- | lib/shell.c (renamed from src/shell.c) | 0 | ||||
-rw-r--r-- | lib/shlib.c (renamed from src/shlib.c) | 0 | ||||
-rw-r--r-- | lib/spm_build.c (renamed from src/spm_build.c) | 0 | ||||
-rw-r--r-- | lib/str.c (renamed from src/str.c) | 0 | ||||
-rw-r--r-- | lib/strlist.c (renamed from src/strlist.c) | 0 | ||||
-rw-r--r-- | lib/user_input.c (renamed from src/user_input.c) | 0 | ||||
-rw-r--r-- | lib/version_spec.c (renamed from src/version_spec.c) | 0 | ||||
-rw-r--r-- | src/CMakeLists.txt | 30 |
29 files changed, 61 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c9a674..ba01f3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,11 +2,13 @@ cmake_minimum_required(VERSION 3.11) project(spm C) include(CheckSymbolExists) set(CMAKE_C_STANDARD 99) +set(CMAKE_INSTALL_RPATH $ORIGIN/../lib) check_symbol_exists(strsep string.h HAVE_STRSEP) check_symbol_exists(reallocarray stdlib.h HAVE_REALLOCARRAY) configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/include/config.h) +add_subdirectory(lib) add_subdirectory(src) add_subdirectory(include) add_subdirectory(scripts) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..3ec0f68 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,57 @@ +include_directories( + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_BINARY_DIR}/include +) + +set(libspm_src + config.c + compat.c + resolve.c + fs.c + rpath.c + find.c + shell.c + archive.c + str.c + relocation.c + install.c + config_global.c + manifest.c + checksum.c + extern/url.c + version_spec.c + spm_build.c + mime.c + internal_cmd.c + environment.c + mirrors.c + strlist.c + shlib.c + user_input.c + metadata.c + purge.c +) + +add_library(libspm_obj OBJECT ${libspm_src}) +set_property(TARGET libspm_obj PROPERTY POSITION_INDEPENDENT_CODE 1) +add_library(libspm SHARED $<TARGET_OBJECTS:libspm_obj>) +add_library(libspm_static STATIC $<TARGET_OBJECTS:libspm_obj>) + + +target_link_libraries(libspm crypto ssl curl) +if (LINUX) + target_link_libraries(libspm rt) +endif() + +if(MSVC) + target_compile_options(libspm PRIVATE /W4 /WX) +else() + target_compile_options(libspm PRIVATE -Wall -Wextra -fstack-protector) +endif() + +set_target_properties(libspm PROPERTIES OUTPUT_NAME "spm") +install( + TARGETS libspm + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib +) diff --git a/src/archive.c b/lib/archive.c index d964469..d964469 100644 --- a/src/archive.c +++ b/lib/archive.c diff --git a/src/checksum.c b/lib/checksum.c index 249d6cb..249d6cb 100644 --- a/src/checksum.c +++ b/lib/checksum.c diff --git a/src/compat.c b/lib/compat.c index 5fd2cc4..5fd2cc4 100644 --- a/src/compat.c +++ b/lib/compat.c diff --git a/src/config.c b/lib/config.c index 88c96fd..88c96fd 100644 --- a/src/config.c +++ b/lib/config.c diff --git a/src/config_global.c b/lib/config_global.c index 16d97cf..16d97cf 100644 --- a/src/config_global.c +++ b/lib/config_global.c diff --git a/src/environment.c b/lib/environment.c index d9bfe51..d9bfe51 100644 --- a/src/environment.c +++ b/lib/environment.c diff --git a/src/extern/url.c b/lib/extern/url.c index fe54db2..fe54db2 100644 --- a/src/extern/url.c +++ b/lib/extern/url.c diff --git a/src/install.c b/lib/install.c index e0592db..e0592db 100644 --- a/src/install.c +++ b/lib/install.c diff --git a/src/internal_cmd.c b/lib/internal_cmd.c index a192ccf..a192ccf 100644 --- a/src/internal_cmd.c +++ b/lib/internal_cmd.c diff --git a/src/manifest.c b/lib/manifest.c index 1b2b600..1b2b600 100644 --- a/src/manifest.c +++ b/lib/manifest.c diff --git a/src/metadata.c b/lib/metadata.c index 6861740..6861740 100644 --- a/src/metadata.c +++ b/lib/metadata.c diff --git a/src/mirrors.c b/lib/mirrors.c index cad3f6b..cad3f6b 100644 --- a/src/mirrors.c +++ b/lib/mirrors.c diff --git a/src/purge.c b/lib/purge.c index 997df51..997df51 100644 --- a/src/purge.c +++ b/lib/purge.c diff --git a/src/relocation.c b/lib/relocation.c index f22a25d..f22a25d 100644 --- a/src/relocation.c +++ b/lib/relocation.c diff --git a/src/resolve.c b/lib/resolve.c index 1a4448f..1a4448f 100644 --- a/src/resolve.c +++ b/lib/resolve.c diff --git a/src/rpath.c b/lib/rpath.c index 4d4d801..4d4d801 100644 --- a/src/rpath.c +++ b/lib/rpath.c diff --git a/src/shell.c b/lib/shell.c index 6b28e64..6b28e64 100644 --- a/src/shell.c +++ b/lib/shell.c diff --git a/src/shlib.c b/lib/shlib.c index a8222af..a8222af 100644 --- a/src/shlib.c +++ b/lib/shlib.c diff --git a/src/spm_build.c b/lib/spm_build.c index 726b540..726b540 100644 --- a/src/spm_build.c +++ b/lib/spm_build.c diff --git a/src/strlist.c b/lib/strlist.c index 1cab324..1cab324 100644 --- a/src/strlist.c +++ b/lib/strlist.c diff --git a/src/user_input.c b/lib/user_input.c index 3f358fa..3f358fa 100644 --- a/src/user_input.c +++ b/lib/user_input.c diff --git a/src/version_spec.c b/lib/version_spec.c index 06fcd1b..06fcd1b 100644 --- a/src/version_spec.c +++ b/lib/version_spec.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bac2769..2bd023c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,37 +5,11 @@ include_directories( add_executable(spm spm.c - config.c - compat.c - resolve.c - fs.c - rpath.c - find.c - shell.c - archive.c - str.c - relocation.c - install.c - config_global.c - manifest.c - checksum.c - extern/url.c - version_spec.c - spm_build.c - mime.c - internal_cmd.c - environment.c - mirrors.c - strlist.c - shlib.c - user_input.c - metadata.c - purge.c ) -target_link_libraries(spm crypto ssl curl) +target_link_libraries(spm libspm crypto ssl curl) if (LINUX) - target_link_libraries(spm rt) + target_link_libraries(spm libspm rt) endif() if(MSVC) |