summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2016-09-11 18:49:44 +0100
committeriphydf <iphydf@users.noreply.github.com>2016-09-14 14:32:01 +0100
commitd1f16e27b8cc543f79e326713b6d40fce5c82acf (patch)
tree772356869cf49fbf1f90249cf28f66ea02e8d99a /cmake
parent45d28904b92c825d1ac88be9edae8baabcd4bba1 (diff)
Add option to build static libraries.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/ModulePackage.cmake50
1 files changed, 50 insertions, 0 deletions
diff --git a/cmake/ModulePackage.cmake b/cmake/ModulePackage.cmake
new file mode 100644
index 00000000..1e49503a
--- /dev/null
+++ b/cmake/ModulePackage.cmake
@@ -0,0 +1,50 @@
1option(ENABLE_SHARED "Build shared (dynamic) libraries for all modules" ON)
2option(ENABLE_STATIC "Build static libraries for all modules" ON)
3
4find_package(PkgConfig REQUIRED)
5
6function(pkg_use_module mod)
7 pkg_search_module(${mod} ${ARGN})
8 if(${mod}_FOUND)
9 link_directories(${${mod}_LIBRARY_DIRS})
10 include_directories(${${mod}_INCLUDE_DIRS})
11 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${mod}_CFLAGS_OTHER}")
12 endif()
13endfunction()
14
15function(add_module lib)
16 if(ENABLE_SHARED)
17 add_library(${lib}_shared SHARED ${ARGN})
18 set_target_properties(${lib}_shared PROPERTIES OUTPUT_NAME ${lib})
19 install(TARGETS ${lib}_shared DESTINATION "lib")
20 endif()
21 if(ENABLE_STATIC)
22 add_library(${lib}_static STATIC ${ARGN})
23 set_target_properties(${lib}_static PROPERTIES OUTPUT_NAME ${lib})
24 install(TARGETS ${lib}_static DESTINATION "lib")
25 endif()
26endfunction()
27
28function(target_link_modules target)
29 if(TARGET ${target}_shared)
30 set(_targets ${_targets} ${target}_shared)
31 endif()
32 if(TARGET ${target}_static)
33 set(_targets ${_targets} ${target}_static)
34 endif()
35 if(NOT _targets)
36 set(_targets ${_targets} ${target})
37 endif()
38
39 foreach(target ${_targets})
40 foreach(dep ${ARGN})
41 if(TARGET ${dep}_shared)
42 target_link_libraries(${target} ${dep}_shared)
43 elseif(TARGET ${dep}_static)
44 target_link_libraries(${target} ${dep}_static)
45 else()
46 target_link_libraries(${target} ${dep})
47 endif()
48 endforeach()
49 endforeach()
50endfunction()