Mercurial > irccd
annotate lib/CMakeLists.txt @ 138:ff26bd33a45d
CMake: improve VS2015 support, #425
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 19 May 2016 13:00:00 +0200 |
parents | 01df93b56dde |
children | c1acfacc46bd |
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 |
138
ff26bd33a45d
CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents:
136
diff
changeset
|
45 target_link_libraries(libirccd extern-duktape extern-ircclient extern-jansson extern-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 () |