aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2020-03-18 22:25:27 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2020-03-18 22:25:27 -0400
commitccaeb7092b5ad40b1b3833c987ba3ec4d47f0bb8 (patch)
treeae167772a9a2343aa77bf8944b56abe853f6a2ec
parent3731bb4679ee8716d4f579d5744c36a2d1b4a257 (diff)
downloadspmc-ccaeb7092b5ad40b1b3833c987ba3ec4d47f0bb8.tar.gz
Refactor project: build/install libspm[_static.a].so to make unit testing possible
-rw-r--r--CMakeLists.txt2
-rw-r--r--lib/CMakeLists.txt57
-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.txt30
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/find.c b/lib/find.c
index 348a8f7..348a8f7 100644
--- a/src/find.c
+++ b/lib/find.c
diff --git a/src/fs.c b/lib/fs.c
index d920248..d920248 100644
--- a/src/fs.c
+++ b/lib/fs.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/mime.c b/lib/mime.c
index 9e4bdce..9e4bdce 100644
--- a/src/mime.c
+++ b/lib/mime.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/str.c b/lib/str.c
index 5db3adc..5db3adc 100644
--- a/src/str.c
+++ b/lib/str.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)