diff options
author | iphydf <iphydf@users.noreply.github.com> | 2016-09-11 18:49:44 +0100 |
---|---|---|
committer | iphydf <iphydf@users.noreply.github.com> | 2016-09-14 14:32:01 +0100 |
commit | d1f16e27b8cc543f79e326713b6d40fce5c82acf (patch) | |
tree | 772356869cf49fbf1f90249cf28f66ea02e8d99a /cmake | |
parent | 45d28904b92c825d1ac88be9edae8baabcd4bba1 (diff) |
Add option to build static libraries.
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/ModulePackage.cmake | 50 |
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 @@ | |||
1 | option(ENABLE_SHARED "Build shared (dynamic) libraries for all modules" ON) | ||
2 | option(ENABLE_STATIC "Build static libraries for all modules" ON) | ||
3 | |||
4 | find_package(PkgConfig REQUIRED) | ||
5 | |||
6 | function(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() | ||
13 | endfunction() | ||
14 | |||
15 | function(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() | ||
26 | endfunction() | ||
27 | |||
28 | function(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() | ||
50 | endfunction() | ||