annotate cmake/function/MalikaniaDefineLibrary.cmake @ 215:268b66d72ec0 default tip @

misc: remove Javascript bindings, closes #2402
author David Demelier <markand@malikania.fr>
date Thu, 10 Oct 2019 13:52:57 +0200
parents c973501abe36
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()