summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Winter <allen.winter@kdab.com>2014-09-20 13:20:23 -0400
committerAllen Winter <allen.winter@kdab.com>2014-09-20 13:20:23 -0400
commit3247ec69057327338a189feb4ab86781eb832b99 (patch)
treefef2fcb2359eb0562714108db0c10010bfc6f037
parentfde0e93a388c9f12b94998671131a9a19e793c6e (diff)
downloadlibical-git-3247ec69057327338a189feb4ab86781eb832b99.tar.gz
fix issue87: build shared libs only with cmake -DSHARED_ONLY=True
-rw-r--r--CMakeLists.txt16
-rw-r--r--Install.txt1
-rw-r--r--src/libical/CMakeLists.txt25
-rw-r--r--src/libicalss/CMakeLists.txt29
-rw-r--r--src/libicalvcal/CMakeLists.txt29
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 ###############