annotate cmake/function/IrccdDefineLibrary.cmake @ 896:b594a9269f49

tests: remove useless debug info in hook
author David Demelier <markand@malikania.fr>
date Fri, 20 Sep 2019 11:42:52 +0000
parents 6baa070e083c
children 5e25439fe98d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # IrccdDefineLibrary.cmake -- CMake build system for irccd
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 # irccd_define_library
659
e9adad05580f CMake: style #782
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
21 # --------------------
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #
874
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
23 # Synopsis:
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
24 #
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 # irccd_define_library(
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
26 # TARGET target name
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 # EXPORT (Optional) set to true to export library through irccd
874
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
29 # and install it
797
2dfba38e93f0 cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents: 773
diff changeset
30 # HEADERS (Optional) directory of headers to install
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
31 # FLAGS (Optional) C/C++ flags (without -D)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
32 # LIBRARIES (Optional) libraries to link
877
6baa070e083c misc: update before 3.0.0
David Demelier <markand@malikania.fr>
parents: 874
diff changeset
33 # PRIVATE_INCLUDES (Optional) local includes for the target only
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
34 # PUBLIC_INCLUDES (Optional) includes to share with target dependencies
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 # )
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 #
874
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
37 # Create a library and optionally install it.
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
38 #
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
39 # The function create a new library named with the parameter TARGET, you should
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
40 # prefix it with "lib" as its the convention within irccd (e.g. libfoo), the
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
41 # prefix is automatically removed.
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
42 #
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
43 # The argument SOURCES should contains the C++ source files and HEADERS should
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
44 # points to a directory to be installed verbatim in the include directory.
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
45 #
877
6baa070e083c misc: update before 3.0.0
David Demelier <markand@malikania.fr>
parents: 874
diff changeset
46 # Optional argument FLAGS, PRIVATE_INCLUDES, PUBLIC_INCLUDES, LIBRARIES may be
874
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
47 # passed to set compile flags, private includes, public includes and libraries
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
48 # respectively.
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
49 #
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
50 # If export boolean parameter is set, the library is exported and installed.
bf2bdb41f181 doc: improve doxygen documentation
David Demelier <markand@malikania.fr>
parents: 858
diff changeset
51 #
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
823
d76699e13156 cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
53 include(${CMAKE_CURRENT_LIST_DIR}/IrccdInstallDependencies.cmake)
d76699e13156 cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
54
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 function(irccd_define_library)
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
56 set(options EXPORT)
797
2dfba38e93f0 cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents: 773
diff changeset
57 set(oneValueArgs TARGET)
877
6baa070e083c misc: update before 3.0.0
David Demelier <markand@malikania.fr>
parents: 874
diff changeset
58 set(multiValueArgs HEADERS SOURCES FLAGS LIBRARIES PRIVATE_INCLUDES PUBLIC_INCLUDES)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
60 cmake_parse_arguments(LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
62 if (NOT LIB_TARGET)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
63 message(FATAL_ERROR "Please set TARGET")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
64 endif ()
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
65 if (NOT LIB_SOURCES)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
66 message(FATAL_ERROR "Please set SOURCES")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
67 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
69 add_library(${LIB_TARGET} ${LIB_SOURCES} ${LIB_HEADERS})
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 800
diff changeset
70 target_include_directories(
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 800
diff changeset
71 ${LIB_TARGET}
877
6baa070e083c misc: update before 3.0.0
David Demelier <markand@malikania.fr>
parents: 874
diff changeset
72 PRIVATE ${LIB_PRIVATE_INCLUDES}
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 800
diff changeset
73 PUBLIC ${LIB_PUBLIC_INCLUDES}
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 800
diff changeset
74 )
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
75 target_compile_definitions(
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
76 ${LIB_TARGET}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
77 PRIVATE
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
78 CMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}"
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
79 CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
80 PUBLIC
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
81 ${LIB_FLAGS}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
82 )
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
83 target_link_libraries(${LIB_TARGET} ${LIB_LIBRARIES})
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
84 set_target_properties(
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
85 ${LIB_TARGET}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
86 PROPERTIES
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
87 PREFIX ""
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 800
diff changeset
88 IMPORT_PREFIX ""
858
6af323b76970 cmake: install macros and reduce IrccdOptions.cmake, closes #951 @1h
David Demelier <markand@malikania.fr>
parents: 824
diff changeset
89 CXX_STANDARD 17
6af323b76970 cmake: install macros and reduce IrccdOptions.cmake, closes #951 @1h
David Demelier <markand@malikania.fr>
parents: 824
diff changeset
90 CXX_STANDARD_REQUIRED On
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
91 )
510
6ec510722582 CMake: enable vera++ as code checking, closes #603
David Demelier <markand@malikania.fr>
parents: 509
diff changeset
92
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
93 if (${LIB_EXPORT})
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
94 install(
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
95 TARGETS ${LIB_TARGET}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
96 EXPORT irccd-targets
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
97 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
98 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
99 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
100 )
823
d76699e13156 cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
101
d76699e13156 cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
102 irccd_install_dependencies(${LIB_TARGET})
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
103 endif ()
710
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 663
diff changeset
104
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
105 if (LIB_HEADERS)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
106 install(
797
2dfba38e93f0 cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents: 773
diff changeset
107 DIRECTORY ${LIB_HEADERS}
2dfba38e93f0 cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents: 773
diff changeset
108 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
109 )
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
110 endif ()
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
111 endfunction()