Mercurial > irccd
annotate cmake/function/IrccdDefineLibrary.cmake @ 254:93a227277786
Irccd: various fixes for further cross-compilation
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 05 Sep 2016 12:53:13 +0200 |
parents | 6635b9187d71 |
children | 08b52b6483e3 |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineLibrary.cmake -- CMake build system for irccd | |
3 # | |
4 # Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> | |
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_library | |
21 # ------------------------------------------------------------------- | |
22 # | |
23 # irccd_define_library( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
24 # TARGET target name |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
25 # SOURCES src1, src2, srcn |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
26 # LOCAL (Optional) set to true to build a static library |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
27 # FLAGS (Optional) C/C++ flags (without -D) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
28 # LIBRARIES (Optional) libraries to link |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
29 # LOCAL_INCLUDES (Optional) local includes for the target only |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
30 # PUBLIC_INCLUDES (Optional) includes to share with target dependencies |
0 | 31 # ) |
32 # | |
33 # Create a static library for internal use. | |
34 # | |
35 | |
36 function(irccd_define_library) | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
37 set(options LOCAL) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
38 set(oneValueArgs TARGET) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
39 set(multiValueArgs SOURCES FLAGS LIBRARIES LOCAL_INCLUDES PUBLIC_INCLUDES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
40 set(mandatory TARGET SOURCES) |
0 | 41 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
42 cmake_parse_arguments(LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 43 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
44 if (NOT LIB_TARGET) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
45 message(FATAL_ERROR "Please set TARGET") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
46 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
47 if (NOT LIB_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
48 message(FATAL_ERROR "Please set SOURCES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
49 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
50 if (LIB_LOCAL) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
51 set(type STATIC) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
52 endif () |
0 | 53 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
54 add_library(${LIB_TARGET} ${type} ${LIB_SOURCES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
55 target_include_directories(${LIB_TARGET} PRIVATE ${LIB_LOCAL_INCLUDES} PUBLIC ${LIB_PUBLIC_INCLUDES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
56 target_compile_definitions(${LIB_TARGET} PUBLIC ${LIB_FLAGS}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
72
diff
changeset
|
57 target_link_libraries(${LIB_TARGET} ${LIB_LIBRARIES}) |
72
98ac3c79009f
Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
58 endfunction() |