@@ -5,12 +5,14 @@ project(LetMeCreate)
55
66set (LETMECREATE_MAJOR_VERSION 1)
77set (LETMECREATE_MINOR_VERSION 5)
8- set (LETMECREATE_PATCH_VERSION 1 )
8+ set (LETMECREATE_PATCH_VERSION 2 )
99set (LETMECREATE_VERSION ${LETMECREATE_MAJOR_VERSION} .${LETMECREATE_MINOR_VERSION} .${LETMECREATE_PATCH_VERSION} )
1010set (PROJECT_VERSION ${LETMECREATE_VERSION} )
1111
1212option (BUILD_EXAMPLES "Build examples" OFF )
1313option (BUILD_TESTS "Build tests" OFF )
14+ option (BUILD_SHARED "Build shared libraries" ON )
15+ option (BUILD_STATIC "Build static libraries" ON )
1416
1517file (GLOB bosch_srcs src/bosch/*.c)
1618file (GLOB core_srcs src/core/*.c)
@@ -25,30 +27,38 @@ file(GLOB rpisensehat_hdrs include/letmecreate/rpisensehat/*.h)
2527include_directories (include )
2628
2729# Create targets
28- add_library (letmecreate_core SHARED ${core_srcs} ${core_hdrs} )
29- add_library (letmecreate_click SHARED ${click_srcs} ${click_hdrs} )
30- add_library (letmecreate_bosch SHARED ${bosch_srcs} ${bosch_hdrs} )
31- add_library (letmecreate_rpisensehat SHARED ${rpisensehat_srcs} ${rpisensehat_hdrs} )
32- target_link_libraries (letmecreate_core pthread)
33- target_link_libraries (letmecreate_click letmecreate_core letmecreate_bosch)
34- target_link_libraries (letmecreate_rpisensehat letmecreate_core)
35-
36- # Export symbols
37- include (GenerateExportHeader)
38- generate_export_header(letmecreate_bosch EXPORT_FILE_NAME "include/letmecreate/bosch/export.h" )
39- generate_export_header(letmecreate_core EXPORT_FILE_NAME "include/letmecreate/core/export.h" )
40- generate_export_header(letmecreate_click EXPORT_FILE_NAME "include/letmecreate/click/export.h" )
41- generate_export_header(letmecreate_rpisensehat EXPORT_FILE_NAME "include/letmecreate/rpisensehat/export.h" )
42- set_target_properties (letmecreate_bosch PROPERTIES C_VISIBILITY_PRESET hidden)
43- set_target_properties (letmecreate_core PROPERTIES C_VISIBILITY_PRESET hidden)
44- set_target_properties (letmecreate_click PROPERTIES C_VISIBILITY_PRESET hidden)
45- set_target_properties (letmecreate_rpisensehat PROPERTIES C_VISIBILITY_PRESET hidden)
30+ if (BUILD_SHARED)
31+ add_library (letmecreate_core SHARED ${core_srcs} ${core_hdrs} )
32+ add_library (letmecreate_click SHARED ${click_srcs} ${click_hdrs} )
33+ add_library (letmecreate_bosch SHARED ${bosch_srcs} ${bosch_hdrs} )
34+ add_library (letmecreate_rpisensehat SHARED ${rpisensehat_srcs} ${rpisensehat_hdrs} )
35+ target_link_libraries (letmecreate_core pthread)
36+ target_link_libraries (letmecreate_click letmecreate_core letmecreate_bosch)
37+ target_link_libraries (letmecreate_rpisensehat letmecreate_core)
38+ # Export symbols
39+ include (GenerateExportHeader)
40+ generate_export_header(letmecreate_bosch EXPORT_FILE_NAME "include/letmecreate/bosch/export.h" )
41+ generate_export_header(letmecreate_core EXPORT_FILE_NAME "include/letmecreate/core/export.h" )
42+ generate_export_header(letmecreate_click EXPORT_FILE_NAME "include/letmecreate/click/export.h" )
43+ generate_export_header(letmecreate_rpisensehat EXPORT_FILE_NAME "include/letmecreate/rpisensehat/export.h" )
44+ set_target_properties (letmecreate_bosch PROPERTIES C_VISIBILITY_PRESET hidden)
45+ set_target_properties (letmecreate_core PROPERTIES C_VISIBILITY_PRESET hidden)
46+ set_target_properties (letmecreate_click PROPERTIES C_VISIBILITY_PRESET hidden)
47+ set_target_properties (letmecreate_rpisensehat PROPERTIES C_VISIBILITY_PRESET hidden)
48+ endif ()
49+
50+ if (BUILD_STATIC)
51+ add_library (letmecreate_core_s STATIC ${core_srcs} ${core_hdrs} )
52+ add_library (letmecreate_click_s STATIC ${click_srcs} ${click_hdrs} )
53+ add_library (letmecreate_bosch_s STATIC ${bosch_srcs} ${bosch_hdrs} )
54+ add_library (letmecreate_rpisensehat_s STATIC ${rpisensehat_srcs} ${rpisensehat_hdrs} )
55+ endif ()
4656
4757# Enable warnings
4858set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra -ggdb3" )
4959set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Wextra -O2" )
5060
51-
61+ if (BUILD_SHARED)
5262target_include_directories (
5363 letmecreate_core PUBLIC
5464 "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
@@ -69,6 +79,30 @@ target_include_directories(
6979 "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
7080 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
7181)
82+ endif ()
83+
84+ if (BUILD_STATIC)
85+ target_include_directories (
86+ letmecreate_core_s PUBLIC
87+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
88+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
89+ )
90+ target_include_directories (
91+ letmecreate_click_s PUBLIC
92+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
93+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
94+ )
95+ target_include_directories (
96+ letmecreate_bosch_s PUBLIC
97+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
98+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
99+ )
100+ target_include_directories (
101+ letmecreate_rpisensehat_s PUBLIC
102+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
103+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
104+ )
105+ endif ()
72106
73107
74108set (config_install_dir "lib/cmake/${PROJECT_NAME} " )
@@ -94,6 +128,7 @@ configure_package_config_file(
94128 INSTALL_DESTINATION "${config_install_dir} "
95129)
96130
131+ if (BUILD_SHARED)
97132install (
98133 TARGETS letmecreate_core letmecreate_click letmecreate_bosch letmecreate_rpisensehat
99134 EXPORT "${targets_export_name} "
@@ -102,6 +137,19 @@ install(
102137 RUNTIME DESTINATION "bin"
103138 INCLUDES DESTINATION "${include_install_dir} "
104139)
140+ endif ()
141+
142+ if (BUILD_STATIC)
143+ install (
144+ TARGETS letmecreate_core_s letmecreate_click_s letmecreate_bosch_s letmecreate_rpisensehat_s
145+ EXPORT "${targets_export_name} "
146+ LIBRARY DESTINATION "lib"
147+ ARCHIVE DESTINATION "lib"
148+ RUNTIME DESTINATION "bin"
149+ INCLUDES DESTINATION "${include_install_dir} "
150+ )
151+ endif ()
152+
105153
106154install (
107155 DIRECTORY "include/letmecreate"
0 commit comments