annotate lib/CMakeLists.txt @ 136:01df93b56dde

Irccd: implement native plugins, #502 - Add brand new DynlibPlugin to load shared libraries as plugins, - Add a template as documentation.
author David Demelier <markand@malikania.fr>
date Wed, 18 May 2016 22:31:24 +0200
parents be4b9ed19a17
children ff26bd33a45d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
1 #
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
2 # CMakeLists.txt -- CMake build system for irccd
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
3 #
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
4 # Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
5 #
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
8 # copyright notice and this permission notice appear in all copies.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
9 #
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
17 #
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
18
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 project(lib)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 include(irccd/CMakeSources.cmake)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 add_library(libirccd ${HEADERS} ${SOURCES})
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 target_include_directories(
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 libirccd
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 PUBLIC
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
28 $<BUILD_INTERFACE:${duktape_SOURCE_DIR}>
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
29 $<BUILD_INTERFACE:${extern-libircclient_SOURCE_DIR}/include>
101
113d909fdfe1 CMake: disallow absolute paths, #389
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
30 $<BUILD_INTERFACE:${IRCCD_FAKEROOTDIR}/include/irccd>
113d909fdfe1 CMake: disallow absolute paths, #389
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
31 $<BUILD_INTERFACE:${IRCCD_FAKEROOTDIR}/include>
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
32 $<BUILD_INTERFACE:${lib_SOURCE_DIR}>
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
33 $<INSTALL_INTERFACE:include>
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 ${OPENSSL_INCLUDE_DIR}
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 )
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 if (IRCCD_SYSTEM_WINDOWS)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 list(APPEND LIBRARIES ws2_32 shlwapi)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 elseif (IRCCD_SYSTEM_MAC)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 list(APPEND LIBRARIES resolv)
136
01df93b56dde Irccd: implement native plugins, #502
David Demelier <markand@malikania.fr>
parents: 104
diff changeset
41 elseif (IRCCD_SYSTEM_LINUX)
01df93b56dde Irccd: implement native plugins, #502
David Demelier <markand@malikania.fr>
parents: 104
diff changeset
42 list(APPEND LIBRARIES dl)
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 endif ()
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
104
be4b9ed19a17 Irccd: import cppformat, #483
David Demelier <markand@malikania.fr>
parents: 101
diff changeset
45 target_link_libraries(libirccd extern-duktape extern-ircclient extern-jansson cppformat ${LIBRARIES})
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
46
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
47 set_target_properties(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
48 libirccd
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
49 PROPERTIES
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
50 PREFIX ""
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
51 OUTPUT_NAME_DEBUG libirccd2d
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
52 VERSION ${IRCCD_VERSION}
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
53 SOVERSION ${IRCCD_VERSION_SHLIB}
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
54 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
55
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
56 install(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
57 TARGETS libirccd
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
58 # EXPORT Irccd2Targets
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
59 RUNTIME DESTINATION bin
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
60 LIBRARY DESTINATION lib
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
61 ARCHIVE DESTINATION lib
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
62 )
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
64 # # CMake target exports.
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
65 # export(
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
66 # EXPORT Irccd2Targets
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
67 # FILE "${CMAKE_BINARY_DIR}/Irccd2Targets.cmake"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
68 # NAMESPACE Irccd2::
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
69 # )
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
70
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
71 # CMake version file.
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
72 # include(CMakePackageConfigHelpers)
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
73
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
74 # write_basic_package_version_file(
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
75 # "${CMAKE_CURRENT_BINARY_DIR}/Irccd2ConfigVersion.cmake"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
76 # VERSION ${IRCCD_VERSION}
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
77 # COMPATIBILITY AnyNewerVersion
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
78 # )
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
79
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
80 # Irccd main module file.
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
81 # configure_file(
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
82 # "${CMAKE_SOURCE_DIR}/cmake/internal/Irccd2Config.cmake.in"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
83 # "${CMAKE_BINARY_DIR}/Irccd2Config.cmake"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
84 # COPYONLY
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
85 # )
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
86
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
87 # Install all CMake stuff.
76
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
88 # install(
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
89 # EXPORT Irccd2Targets
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
90 # FILE Irccd2Targets.cmake
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
91 # NAMESPACE Irccd2::
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
92 # DESTINATION ${WITH_CMAKEDIR}/Irccd2
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
93 # )
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
94 #
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
95 # install(
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
96 # FILES
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
97 # "${CMAKE_BINARY_DIR}/Irccd2Config.cmake"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
98 # "${CMAKE_BINARY_DIR}/Irccd2ConfigVersion.cmake"
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
99 # DESTINATION ${WITH_CMAKEDIR}/Irccd2
7e9a1faeb6f6 CMake: temporarily disable CMake export as it requires Ph.D
David Demelier <markand@malikania.fr>
parents: 75
diff changeset
100 # )
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
101
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
102 # pkg-config
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
103 if (WITH_PKGCONFIG)
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
104 # Configure the pkg-config file.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
105 configure_file(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
106 ${CMAKE_SOURCE_DIR}/cmake/internal/irccd2.pc.in
83
f1a3026027f1 CMake: fix invalid creation of pkg-config file ending in permanent CMake re-run
David Demelier <markand@malikania.fr>
parents: 76
diff changeset
107 ${CMAKE_BINARY_DIR}/irccd2.pc
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
108 @ONLY
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
109 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
110
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
111 # Adjust the library output name if debug.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
112 file(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
113 GENERATE
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
114 OUTPUT ${CMAKE_BINARY_DIR}/irccd2.pc
83
f1a3026027f1 CMake: fix invalid creation of pkg-config file ending in permanent CMake re-run
David Demelier <markand@malikania.fr>
parents: 76
diff changeset
115 INPUT ${CMAKE_BINARY_DIR}/irccd2.pc
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
116 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
117
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
118 install(FILES ${CMAKE_BINARY_DIR}/irccd2.pc DESTINATION ${WITH_PKGCONFIGDIR})
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
119 endif ()