Skip to content

Commit

Permalink
CMakeLists.txts - make parallel builds with (eg. make -j4)
Browse files Browse the repository at this point in the history
  • Loading branch information
winterz committed Aug 17, 2015
1 parent 9c1b309 commit dcc40c7
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 103 deletions.
1 change: 1 addition & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
168 changes: 82 additions & 86 deletions src/libical/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}\"")
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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})
Expand All @@ -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()
Expand Down Expand Up @@ -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
Expand Down
18 changes: 5 additions & 13 deletions src/libicalss/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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
Expand Down Expand Up @@ -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()

Expand Down Expand Up @@ -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})
Expand Down
5 changes: 1 addition & 4 deletions src/libicalvcal/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down
2 changes: 2 additions & 0 deletions src/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit dcc40c7

Please sign in to comment.