Mercurial > irccd
annotate cmake/function/IrccdDefineExecutable.cmake @ 829:963feffc07fe
irccd: fix invalid server load from json
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 07 Feb 2019 11:42:49 +0100 |
parents | 06cc2f95f479 |
children | 6af323b76970 |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineExecutable.cmake -- CMake build system for irccd | |
3 # | |
824
06cc2f95f479
misc: happy new year!
David Demelier <markand@malikania.fr>
parents:
823
diff
changeset
|
4 # Copyright (c) 2013-2019 David Demelier <markand@malikania.fr> |
0 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 # | |
20 # irccd_define_executable | |
659 | 21 # ----------------------- |
0 | 22 # |
23 # irccd_define_executable( | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
24 # TARGET target name |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
25 # EXPORT (Optional) export executable through CMake |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
26 # DESCRIPTION short description (Required if installed) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
27 # SOURCES src1, src2, srcn |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
28 # FLAGS (Optional) C/C++ flags (without -D) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
29 # LIBRARIES (Optional) libraries to link |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
30 # INCLUDES (Optional) includes for the target |
0 | 31 # ) |
32 # | |
33 # Create an executable that can be installed or not. | |
34 # | |
35 | |
823
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
36 include(${CMAKE_CURRENT_LIST_DIR}/IrccdInstallDependencies.cmake) |
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
37 |
0 | 38 function(irccd_define_executable) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
39 set(options EXPORT) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
40 set(oneValueArgs DESCRIPTION TARGET) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
41 set(multiValueArgs SOURCES FLAGS LIBRARIES INCLUDES OPTIONS) |
0 | 42 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
43 cmake_parse_arguments(EXE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 44 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
45 if (NOT EXE_TARGET) |
823
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
46 message(FATAL_ERROR "Argument TARGET required") |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
47 endif () |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
48 if (NOT EXE_SOURCES) |
823
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
49 message(FATAL_ERROR "Argument SOURCES required") |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
50 endif () |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
51 if (NOT EXE_DESCRIPTION) |
823
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
52 message(FATAL_ERROR "Argument DESCRIPTION required") |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
53 endif () |
0 | 54 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
55 add_executable(${EXE_TARGET} ${EXE_SOURCES}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
56 target_include_directories(${EXE_TARGET} PRIVATE ${EXE_INCLUDES}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
57 target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
58 target_compile_options(${EXE_TARGET} PRIVATE ${EXE_OPTIONS}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
59 target_link_libraries(${EXE_TARGET} ${EXE_LIBRARIES}) |
0 | 60 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
61 set_target_properties( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
62 ${EXE_TARGET} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
63 PROPERTIES |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
64 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
65 ) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
66 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
67 string(TOUPPER ${c} cu) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
68 set_target_properties( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
69 ${EXE_TARGET} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
70 PROPERTIES |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
71 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
72 ) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
73 endforeach() |
509
c9a6d9df083f
CMake: output all runtimes to bin, closes #715
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
74 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
75 if (EXE_EXPORT) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
76 install( |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
77 TARGETS ${EXE_TARGET} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
78 EXPORT irccd-targets |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
79 COMPONENT ${EXE_TARGET} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
80 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
81 ) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
82 endif () |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
83 |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
84 # Put the application into a cpack group. |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
85 string(TOUPPER ${EXE_TARGET} CMP) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
86 setg(CPACK_COMPONENT_${CMP}_DISPLAY_NAME "${EXE_TARGET} executable") |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
87 setg(CPACK_COMPONENT_${CMP}_DESCRIPTION ${EXE_DESCRIPTION}) |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
88 setg(CPACK_COMPONENT_${CMP}_GROUP "Applications") |
823
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
89 |
d76699e13156
cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents:
800
diff
changeset
|
90 irccd_install_dependencies(${EXE_TARGET}) |
72
98ac3c79009f
Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
91 endfunction() |