diff options
author | Allen Winter <allen.winter@kdab.com> | 2014-09-20 13:20:23 -0400 |
---|---|---|
committer | Allen Winter <allen.winter@kdab.com> | 2014-09-20 13:20:23 -0400 |
commit | 3247ec69057327338a189feb4ab86781eb832b99 (patch) | |
tree | fef2fcb2359eb0562714108db0c10010bfc6f037 | |
parent | fde0e93a388c9f12b94998671131a9a19e793c6e (diff) | |
download | libical-git-3247ec69057327338a189feb4ab86781eb832b99.tar.gz |
fix issue87: build shared libs only with cmake -DSHARED_ONLY=True
-rw-r--r-- | CMakeLists.txt | 16 | ||||
-rw-r--r-- | Install.txt | 1 | ||||
-rw-r--r-- | src/libical/CMakeLists.txt | 25 | ||||
-rw-r--r-- | src/libicalss/CMakeLists.txt | 29 | ||||
-rw-r--r-- | src/libicalvcal/CMakeLists.txt | 29 |
5 files changed, 82 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 980abe67..b01e2ee4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,11 @@ # Set to build static libraries only. # Default=false (build shared and static libs) # +# -DSHARED_ONLY=[true|false] +# Set to build shared (dynamic) libraries only. +# Default=false (build shared and static libs) +# Takes precedence over STATIC_ONLY +# # -DGOBJECT_INTROSPECTION=[true|false] # Set to build GObject introspection "typelib" files # Requires GObject Introspection development package v0.6.7 or higher @@ -69,11 +74,20 @@ set(LIBICAL_LIB_VERSION_STRING set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}") set(PROJECT_URL "http://libical.github.io/libical/") +# library build types +set(LIBICAL_STATIC 0) +set(LIBRARY_TYPE SHARED) + if(STATIC_ONLY) set(LIBICAL_STATIC 1) add_definitions(-DLIBICAL_STATIC) set(LIBRARY_TYPE STATIC) -else() +endif() + +if(SHARED_ONLY) + set(STATIC_ONLY False) + set(LIBICAL_STATIC 0) + remove_definitions(-DLIBICAL_STATIC) set(LIBRARY_TYPE SHARED) endif() diff --git a/Install.txt b/Install.txt index cd976a02..8dbdb1e5 100644 --- a/Install.txt +++ b/Install.txt @@ -60,3 +60,4 @@ For example: nmake test ARGS="-V" By default, the buildsystem creates shared(dynamic) and static versions of the libraries, but that behavior can be modified at CMake time: - To build the static libraries only, pass -DSTATIC_ONLY=True to CMake. + - To build the shared libraries only, pass -DSHARED_ONLY=True to CMake. diff --git a/src/libical/CMakeLists.txt b/src/libical/CMakeLists.txt index 5ab7e649..776eb86c 100644 --- a/src/libical/CMakeLists.txt +++ b/src/libical/CMakeLists.txt @@ -259,7 +259,9 @@ if(WIN32) endif() add_library(ical ${LIBRARY_TYPE} ${ical_LIB_SRCS}) -add_library(ical-static STATIC ${ical_LIB_SRCS}) +if(NOT SHARED_ONLY) + add_library(ical-static STATIC ${ical_LIB_SRCS}) +endif() add_dependencies(ical ical-header) @@ -278,22 +280,35 @@ endif() if(MSVC) set_target_properties(ical PROPERTIES OUTPUT_NAME "libical") - set_target_properties(ical-static PROPERTIES OUTPUT_NAME "libical-static") + if(NOT SHARED_ONLY) + set_target_properties(ical-static PROPERTIES OUTPUT_NAME "libical-static") + endif() else() - set_target_properties(ical-static PROPERTIES OUTPUT_NAME "ical") + if(NOT SHARED_ONLY) + set_target_properties(ical-static PROPERTIES OUTPUT_NAME "ical") + endif() endif() set_target_properties(ical PROPERTIES VERSION ${LIBICAL_LIB_VERSION_STRING} SOVERSION ${LIBICAL_LIB_MAJOR_VERSION} ) set_target_properties(ical PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties(ical-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +if(NOT SHARED_ONLY) + set_target_properties(ical-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +endif() install( - TARGETS ical ical-static + TARGETS ical EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} ) +if(NOT SHARED_ONLY) + install( + TARGETS ical-static + EXPORT icalTargets + DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} + ) +endif() ########### install files ############### diff --git a/src/libicalss/CMakeLists.txt b/src/libicalss/CMakeLists.txt index 18d387fc..3d86246b 100644 --- a/src/libicalss/CMakeLists.txt +++ b/src/libicalss/CMakeLists.txt @@ -69,31 +69,48 @@ if(MSVC) endif() add_library(icalss ${LIBRARY_TYPE} ${icalss_LIB_SRCS}) -add_library(icalss-static STATIC ${icalss_LIB_SRCS}) +if(NOT SHARED_ONLY) + add_library(icalss-static STATIC ${icalss_LIB_SRCS}) +endif() add_dependencies(icalss icalss-header) -add_dependencies(icalss-static icalss-header) +if(NOT SHARED_ONLY) + add_dependencies(icalss-static icalss-header) +endif() target_link_libraries(icalss ical) if(MSVC) set_target_properties(icalss PROPERTIES OUTPUT_NAME "libicalss") - set_target_properties(icalss-static PROPERTIES OUTPUT_NAME "libicalss-static") + if(NOT SHARED_ONLY) + set_target_properties(icalss-static PROPERTIES OUTPUT_NAME "libicalss-static") + endif() else() - set_target_properties(icalss-static PROPERTIES OUTPUT_NAME "icalss") + if(NOT SHARED_ONLY) + set_target_properties(icalss-static PROPERTIES OUTPUT_NAME "icalss") + endif() endif() set_target_properties(icalss PROPERTIES VERSION ${LIBICAL_LIB_VERSION_STRING} SOVERSION ${LIBICAL_LIB_MAJOR_VERSION} ) set_target_properties(icalss PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties(icalss-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +if(NOT SHARED_ONLY) + set_target_properties(icalss-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +endif() install( - TARGETS icalss icalss-static + TARGETS icalss EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} ) +if(NOT SHARED_ONLY) + install( + TARGETS icalss-static + EXPORT icalTargets + DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} + ) +endif() ########### install files ############### diff --git a/src/libicalvcal/CMakeLists.txt b/src/libicalvcal/CMakeLists.txt index 8d7c9d80..4ab0c941 100644 --- a/src/libicalvcal/CMakeLists.txt +++ b/src/libicalvcal/CMakeLists.txt @@ -28,31 +28,48 @@ if(MSVC) endif() add_library(icalvcal ${LIBRARY_TYPE} ${icalvcal_LIB_SRCS}) -add_library(icalvcal-static STATIC ${icalvcal_LIB_SRCS}) +if(NOT SHARED_ONLY) + add_library(icalvcal-static STATIC ${icalvcal_LIB_SRCS}) +endif() add_dependencies(icalvcal ical-header) -add_dependencies(icalvcal-static ical-header) +if(NOT SHARED_ONLY) + add_dependencies(icalvcal-static ical-header) +endif() target_link_libraries(icalvcal ical) if(MSVC) set_target_properties(icalvcal PROPERTIES OUTPUT_NAME "libicalvcal") - set_target_properties(icalvcal-static PROPERTIES OUTPUT_NAME "libicalvcal-static") + if(NOT SHARED_ONLY) + set_target_properties(icalvcal-static PROPERTIES OUTPUT_NAME "libicalvcal-static") + endif() else() - set_target_properties(icalvcal-static PROPERTIES OUTPUT_NAME "icalvcal") + if(NOT SHARED_ONLY) + set_target_properties(icalvcal-static PROPERTIES OUTPUT_NAME "icalvcal") + endif() endif() set_target_properties(icalvcal PROPERTIES VERSION ${LIBICAL_LIB_VERSION_STRING} SOVERSION ${LIBICAL_LIB_MAJOR_VERSION} ) set_target_properties(icalvcal PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties(icalvcal-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +if(NOT SHARED_ONLY) + set_target_properties(icalvcal-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +endif() install( - TARGETS icalvcal icalvcal-static + TARGETS icalvcal EXPORT icalTargets DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} ) +if(NOT SHARED_ONLY) + install( + TARGETS icalvcal-static + EXPORT icalTargets + DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} + ) +endif() ########### install files ############### |