Mercurial > malikania
annotate cmake/function/MalikaniaDefineLibrary.cmake @ 214:e2574aa8301d
client: add basic input text, closes #910
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 01 Sep 2019 06:53:48 +0200 |
parents | c973501abe36 |
children |
rev | line source |
---|---|
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # MalikaniaDefineLibrary.cmake -- CMake build system for malikania |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
158
4b292c20124c
Misc: update copyrights
David Demelier <markand@malikania.fr>
parents:
121
diff
changeset
|
4 # Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Permission to use, copy, modify, and/or distribute this software for any |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # purpose with or without fee is hereby granted, provided that the above |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # copyright notice and this permission notice appear in all copies. |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 # malikania_define_library |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 # ------------------------ |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 # malikania_define_library( |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
24 # TARGET The target name |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
25 # SOURCES The sources |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
26 # ASSETS (Optional) Additional assets files |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
27 # INTERFACE_FLAGS (Optional) List of interface flags |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
28 # PRIVATE_FLAGS (Optional) list of private flags |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
29 # PUBLIC_FLAGS (Optional) list of public flags |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
30 # INTERFACE_INCLUDES (Optional) List of interface include directories |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
31 # INTERFACE_LIBRARIES (Optional) List of interface libraries |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
32 # PRIVATE_INCLUDES (Optional) List of private include directories |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
33 # PRIVATE_LIBRARIES (Optional) List of private libraries |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
34 # PUBLIC_INCLUDES (Optional) List of public include directories |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
35 # PUBLIC_LIBRARIES (Optional) List of public libraries |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 # ) |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 # |
200
0a285d62ace7
windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents:
199
diff
changeset
|
38 # Create a library and install it. |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 # |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 |
182
3107ce017c3a
Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
165
diff
changeset
|
41 include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaBuildAssets.cmake) |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 |
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 function(malikania_define_library) |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
44 set(singleArgs TARGET) |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
45 set( |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
46 multiArgs |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
47 ASSETS |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
48 INTERFACE_FLAGS |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
49 INTERFACE_INCLUDES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
50 INTERFACE_LIBRARIES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
51 PRIVATE_FLAGS |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
52 PRIVATE_INCLUDES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
53 PRIVATE_LIBRARIES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
54 PUBLIC_FLAGS |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
55 PUBLIC_INCLUDES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
56 PUBLIC_LIBRARIES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
57 SOURCES |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
58 ) |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
60 cmake_parse_arguments(LIB "" "${singleArgs}" "${multiArgs}" ${ARGN}) |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
62 if (NOT LIB_TARGET) |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
63 message(FATAL_ERROR "Missing TARGET parameter") |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
64 endif () |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
65 if (NOT LIB_SOURCES) |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
66 message(FATAL_ERROR "Missing SOURCES parameter") |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
67 endif () |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
69 # Enable assets for libraries. |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
70 malikania_build_assets("${LIB_ASSETS}" assets) |
182
3107ce017c3a
Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents:
165
diff
changeset
|
71 |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
72 # Create the shared library. |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
73 add_library(${LIB_TARGET} SHARED ${LIB_SOURCES} ${assets} ${LIB_ASSETS}) |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
74 target_link_libraries( |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
75 ${LIB_TARGET} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
76 PRIVATE ${LIB_PRIVATE_LIBRARIES} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
77 PUBLIC ${LIB_PUBLIC_LIBRARIES} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
78 INTERFACE ${LIB_INTERFACE_LIBRARIES} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
79 ) |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
80 target_include_directories( |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
81 ${LIB_TARGET} |
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
82 PRIVATE |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
83 ${CMAKE_CURRENT_BINARY_DIR} |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
84 ${LIB_PRIVATE_INCLUDES} |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
85 PUBLIC ${LIB_PUBLIC_INCLUDES} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
86 INTERFACE ${LIB_INTERFACE_INCLUDES} |
183
387f6b0a5420
CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents:
182
diff
changeset
|
87 ) |
205
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
88 target_compile_definitions( |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
89 ${LIB_TARGET} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
90 PRIVATE ${LIB_PRIVATE_FLAGS} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
91 PUBLIC ${LIB_PUBLIC_FLAGS} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
92 INTERFACE ${LIB_INTERFACE_FLAGS} |
c973501abe36
windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents:
202
diff
changeset
|
93 ) |
202
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
94 set_target_properties( |
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
95 ${LIB_TARGET} |
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
96 PROPERTIES |
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
97 PREFIX "" |
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
98 IMPORT_PREFIX "" |
d01d694ae544
cmake: remove lib prefix
David Demelier <markand@malikania.fr>
parents:
200
diff
changeset
|
99 ) |
49
2804ae55c70f
CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 endfunction() |