summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/CMakeLists.txt1
-rw-r--r--src/libical/CMakeLists.txt168
-rw-r--r--src/libicalss/CMakeLists.txt18
-rw-r--r--src/libicalvcal/CMakeLists.txt5
-rw-r--r--src/test/CMakeLists.txt2
5 files changed, 91 insertions, 103 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index d3379593..32942d99 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -18,6 +18,7 @@ set(doesnothing_SRCS
)
add_executable(doesnothing ${doesnothing_SRCS})
+add_dependencies(doesnothing ical icalss icalvcal)
if(NOT STATIC_ONLY)
target_link_libraries(doesnothing ical icalss icalvcal)
diff --git a/src/libical/CMakeLists.txt b/src/libical/CMakeLists.txt
index cb37c135..aaa78847 100644
--- a/src/libical/CMakeLists.txt
+++ b/src/libical/CMakeLists.txt
@@ -21,114 +21,129 @@ set(PACKAGE_DATA_DIR "\\\"${CMAKE_INSTALL_PREFIX}/share/libical\\\"")
add_definitions(-DPACKAGE_DATA_DIR="${PACKAGE_DATA_DIR}")
set(ICALSCRIPTS ${CMAKE_SOURCE_DIR}/scripts/)
+set(BUILT_HEADERS) #list of derived headers we build
+set(BUILD_SOURCES) #list of derived implementations we build
set(PROPERTYDEPS
${ICALSCRIPTS}/mkderivedproperties.pl
${CMAKE_SOURCE_DIR}/design-data/properties.csv
${CMAKE_SOURCE_DIR}/design-data/value-types.csv
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
- COMMAND
- ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
- -h ${CMAKE_SOURCE_DIR}/design-data/properties.csv
- ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
- DEPENDS ${PROPERTYDEPS}
+ COMMAND
+ ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
+ -h ${CMAKE_SOURCE_DIR}/design-data/properties.csv
+ ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
+ DEPENDS
+ ${PROPERTYDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.h.in
)
+list(APPEND BUILT_HEADERS ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c
- COMMAND
- ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
- -c ${CMAKE_SOURCE_DIR}/design-data/properties.csv
- ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c
- DEPENDS ${PROPERTYDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
+ COMMAND
+ ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedproperties.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
+ -c ${CMAKE_SOURCE_DIR}/design-data/properties.csv
+ ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c
+ DEPENDS
+ ${PROPERTYDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedproperty.c.in
)
+list(APPEND BUILT_SOURCES ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.c)
set(PARAMETERDEPS
${ICALSCRIPTS}/mkderivedparameters.pl
${CMAKE_SOURCE_DIR}/design-data/parameters.csv
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
- COMMAND
- ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
- -h ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
- DEPENDS ${PARAMETERDEPS}
+ COMMAND
+ ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
+ -h ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
+ DEPENDS
+ ${PARAMETERDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.h.in
)
+list(APPEND BUILT_HEADERS ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c
- COMMAND
- ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
- -c ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c
- DEPENDS ${PARAMETERDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
+ COMMAND
+ ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedparameters.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
+ -c ${CMAKE_SOURCE_DIR}/design-data/parameters.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c
+ DEPENDS
+ ${PARAMETERDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedparameter.c.in
)
+list(APPEND BUILT_SOURCES ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.c)
set(RESTRICTIONDEPS
${ICALSCRIPTS}/mkrestrictiontable.pl
${CMAKE_SOURCE_DIR}/design-data/restrictions.csv
- ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
)
-file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/src/libical/)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c
- COMMAND
- ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkrestrictiontable.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
- ${CMAKE_SOURCE_DIR}/design-data/restrictions.csv >
${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c
- DEPENDS ${RESTRICTIONDEPS}
+ COMMAND
+ ${PERL_EXECUTABLE} -I ${ICALSCRIPTS} ${ICALSCRIPTS}/mkrestrictiontable.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
+ ${CMAKE_SOURCE_DIR}/design-data/restrictions.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c
+ DEPENDS
+ ${RESTRICTIONDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalrestriction.c.in
)
+list(APPEND BUILT_SOURCES ${CMAKE_BINARY_DIR}/src/libical/icalrestriction.c)
set(VALUEDEPS
${ICALSCRIPTS}mkderivedvalues.pl
${CMAKE_SOURCE_DIR}/design-data/value-types.csv
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
- ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
- COMMAND
- ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
- -h ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
- DEPENDS ${VALUEDEPS}
+ COMMAND
+ ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
+ -h ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
+ DEPENDS
+ ${VALUEDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.h.in
)
+list(APPEND BUILT_HEADERS ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h)
add_custom_command(
OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c
- COMMAND
- ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
- -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
- -c ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c
- DEPENDS ${VALUEDEPS} ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
+ COMMAND
+ ${PERL_EXECUTABLE} -I${ICALSCRIPTS} ${ICALSCRIPTS}/mkderivedvalues.pl
+ -i ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
+ -c ${CMAKE_SOURCE_DIR}/design-data/value-types.csv >
+ ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c
+ DEPENDS
+ ${VALUEDEPS}
+ ${CMAKE_SOURCE_DIR}/src/libical/icalderivedvalue.c.in
)
+list(APPEND BUILT_SOURCES ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.c)
if(WIN32)
set(TOPS "\"${CMAKE_SOURCE_DIR}\"")
@@ -138,23 +153,17 @@ else()
set(TOPB "${CMAKE_BINARY_DIR}")
endif()
-add_custom_command(
- OUTPUT
- ${CMAKE_BINARY_DIR}/src/libical/ical.h
+add_custom_target(
+ ical-header ALL
COMMAND
- ${CMAKE_COMMAND}
- -DTOPS:FILEPATH=${TOPS}
- -DTOPB:FILEPATH=${TOPB}
- -DICAL_FILE_H_FILE:FILEPATH=${CMAKE_BINARY_DIR}/src/libical/ical.h
- -P ${CMAKE_CURRENT_SOURCE_DIR}/ical_file.cmake
+ ${CMAKE_COMMAND}
+ -DTOPS:FILEPATH=${TOPS}
+ -DTOPB:FILEPATH=${TOPB}
+ -DICAL_FILE_H_FILE:FILEPATH=${CMAKE_BINARY_DIR}/src/libical/ical.h
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/ical_file.cmake
DEPENDS
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
-)
-
-add_custom_target(ical-header DEPENDS
- ${CMAKE_BINARY_DIR}/src/libical/ical.h
+ ${BUILT_SOURCES}
+ ${BUILT_HEADERS}
)
# GObject Introspection
@@ -184,22 +193,9 @@ endif()
########### next target ###############
-set(BUILT_COMBINEDHEADERS
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
-)
-
-set(BUILT_SOURCES
- ${BUILT_COMBINEDHEADERS}
- icalderivedparameter.c
- icalderivedproperty.c
- icalrestriction.c
- icalderivedvalue.c
-)
-
set(ical_LIB_SRCS
${BUILT_SOURCES}
+ ${BUILT_HEADERS}
libical_ical_export.h
icalarray.c
icalarray.h
@@ -253,12 +249,12 @@ set(ical_LIB_SRCS
)
add_library(ical ${LIBRARY_TYPE} ${ical_LIB_SRCS})
+add_dependencies(ical ical-header)
if(NOT SHARED_ONLY)
add_library(ical-static STATIC ${ical_LIB_SRCS})
+ add_dependencies(ical-static ical-header)
endif()
-add_dependencies(ical ical-header)
-
target_link_libraries(ical ${CMAKE_THREAD_LIBS_INIT})
if(ICU_FOUND)
@@ -323,6 +319,7 @@ if(WITH_CXX_BINDINGS)
if(NOT STATIC_ONLY)
add_library(ical_cxx SHARED ${icalcxx_LIB_SRCS})
+ add_dependencies(ical_cxx ical-header)
target_link_libraries(ical_cxx ical ${CMAKE_THREAD_LIBS_INIT})
if(WINCE)
target_link_libraries(ical_cxx ${WCECOMPAT_LIBRARIES})
@@ -345,6 +342,7 @@ if(WITH_CXX_BINDINGS)
if(NOT SHARED_ONLY)
add_library(ical_cxx-static STATIC ${icalcxx_LIB_SRCS})
+ add_dependencies(ical_cxx-static ical-header)
if(MSVC)
set_target_properties(ical_cxx-static PROPERTIES OUTPUT_NAME "libical_cxx-static")
else()
@@ -372,9 +370,7 @@ install(FILES
icalarray.h
icalattach.h
icalcomponent.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedparameter.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedproperty.h
- ${CMAKE_BINARY_DIR}/src/libical/icalderivedvalue.h
+ ${BUILT_HEADERS}
icalduration.h
icalenums.h
icalerror.h
diff --git a/src/libicalss/CMakeLists.txt b/src/libicalss/CMakeLists.txt
index 0132cf04..7eec7218 100644
--- a/src/libicalss/CMakeLists.txt
+++ b/src/libicalss/CMakeLists.txt
@@ -19,9 +19,8 @@ else()
set(TOPB "${CMAKE_BINARY_DIR}")
endif()
-add_custom_command(
- OUTPUT
- ${CMAKE_BINARY_DIR}/src/libicalss/icalss.h
+add_custom_target(
+ icalss-header ALL
COMMAND
${CMAKE_COMMAND}
-DTOPS:FILEPATH=${TOPS}
@@ -33,12 +32,6 @@ add_custom_command(
ical-header
)
-add_custom_target(icalss-header
- DEPENDS
- ical-header
- ${CMAKE_BINARY_DIR}/src/libicalss/icalss.h
-)
-
########### next target ###############
#these are generated sources, but we keep them in the repo
@@ -80,12 +73,9 @@ if(WITH_BDB)
endif()
add_library(icalss ${LIBRARY_TYPE} ${icalss_LIB_SRCS})
-if(NOT SHARED_ONLY)
- add_library(icalss-static STATIC ${icalss_LIB_SRCS})
-endif()
-
add_dependencies(icalss icalss-header)
if(NOT SHARED_ONLY)
+ add_library(icalss-static STATIC ${icalss_LIB_SRCS})
add_dependencies(icalss-static icalss-header)
endif()
@@ -139,8 +129,10 @@ if(WITH_CXX_BINDINGS)
)
endif()
add_library(icalss_cxx ${LIBRARY_TYPE} ${icalsscxx_LIB_SRCS})
+ add_dependencies(icalss_cxx icalss-header)
if(NOT SHARED_ONLY)
add_library(icalss_cxx-static STATIC ${icalsscxx_LIB_SRCS})
+ add_dependencies(icalss_cxx-static icalss-header)
endif()
target_link_libraries(icalss_cxx icalss ical_cxx ${CMAKE_THREAD_LIBS_INIT})
diff --git a/src/libicalvcal/CMakeLists.txt b/src/libicalvcal/CMakeLists.txt
index e6728e23..fc7629bc 100644
--- a/src/libicalvcal/CMakeLists.txt
+++ b/src/libicalvcal/CMakeLists.txt
@@ -26,12 +26,9 @@ set(icalvcal_LIB_SRCS
)
add_library(icalvcal ${LIBRARY_TYPE} ${icalvcal_LIB_SRCS})
-if(NOT SHARED_ONLY)
- add_library(icalvcal-static STATIC ${icalvcal_LIB_SRCS})
-endif()
-
add_dependencies(icalvcal ical-header)
if(NOT SHARED_ONLY)
+ add_library(icalvcal-static STATIC ${icalvcal_LIB_SRCS})
add_dependencies(icalvcal-static ical-header)
endif()
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
index b7e22a66..ace0b4de 100644
--- a/src/test/CMakeLists.txt
+++ b/src/test/CMakeLists.txt
@@ -43,11 +43,13 @@ endmacro()
macro(buildme _name _srcs)
add_executable(${_name} ${_srcs})
if(NOT STATIC_ONLY)
+ add_dependencies(${_name} ical icalss icalvcal)
target_link_libraries(${_name} ical icalss icalvcal)
if(WITH_CXX_BINDINGS)
target_link_libraries(${_name} ical_cxx icalss_cxx)
endif()
else()
+ add_dependencies(${_name} ical-static icalss-static icalvcal-static)
if(NOT WIN32)
target_link_libraries(${_name}
${CMAKE_BINARY_DIR}/lib/libical.a