annotate lib/CMakeLists.txt @ 75:f8160d515a76

Irccd: rework a lot the JavaScript library
author David Demelier <markand@malikania.fr>
date Wed, 30 Mar 2016 13:52:47 +0200
parents 35ef15100de8
children 7e9a1faeb6f6
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>
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
30 $<BUILD_INTERFACE:${irccd_BINARY_DIR}>
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
31 $<BUILD_INTERFACE:${lib_SOURCE_DIR}>
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
32 $<INSTALL_INTERFACE:include>
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 ${OPENSSL_INCLUDE_DIR}
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 )
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 if (IRCCD_SYSTEM_WINDOWS)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 list(APPEND LIBRARIES ws2_32 shlwapi)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 elseif (IRCCD_SYSTEM_MAC)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 list(APPEND LIBRARIES resolv)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 endif ()
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
42 target_link_libraries(libirccd PRIVATE extern-duktape extern-ircclient extern-jansson)
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
43 target_link_libraries(libirccd ${LIBRARIES})
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
44
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
45 set_target_properties(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
46 libirccd
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
47 PROPERTIES
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
48 PREFIX ""
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
49 OUTPUT_NAME_DEBUG libirccd2d
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
50 VERSION ${IRCCD_VERSION}
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
51 SOVERSION ${IRCCD_VERSION_SHLIB}
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
52 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
53
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
54 install(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
55 TARGETS libirccd
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
56 EXPORT Irccd2Targets
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
57 RUNTIME DESTINATION bin
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
58 LIBRARY DESTINATION lib
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
59 ARCHIVE DESTINATION lib
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
60 )
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
75
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
62 # CMake target exports.
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
63 export(
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
64 EXPORT Irccd2Targets
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
65 FILE "${CMAKE_BINARY_DIR}/Irccd2Targets.cmake"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
66 NAMESPACE Irccd2::
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
67 )
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
68
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
69 # CMake version file.
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
70 include(CMakePackageConfigHelpers)
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
71
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
72 write_basic_package_version_file(
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
73 "${CMAKE_CURRENT_BINARY_DIR}/Irccd2ConfigVersion.cmake"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
74 VERSION ${IRCCD_VERSION}
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
75 COMPATIBILITY AnyNewerVersion
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
76 )
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
77
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
78 # Irccd main module file.
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
79 configure_file(
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
80 "${CMAKE_SOURCE_DIR}/cmake/internal/Irccd2Config.cmake.in"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
81 "${CMAKE_BINARY_DIR}/Irccd2Config.cmake"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
82 COPYONLY
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
83 )
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
84
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
85 # Install all CMake stuff.
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
86 install(
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
87 EXPORT Irccd2Targets
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
88 FILE Irccd2Targets.cmake
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
89 NAMESPACE Irccd2::
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
90 DESTINATION ${WITH_CMAKEDIR}/Irccd2
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
91 )
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
92
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
93 install(
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
94 FILES
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
95 "${CMAKE_BINARY_DIR}/Irccd2Config.cmake"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
96 "${CMAKE_BINARY_DIR}/Irccd2ConfigVersion.cmake"
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
97 DESTINATION ${WITH_CMAKEDIR}/Irccd2
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
98 )
f8160d515a76 Irccd: rework a lot the JavaScript library
David Demelier <markand@malikania.fr>
parents: 74
diff changeset
99
74
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
100 # pkg-config
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
101 if (WITH_PKGCONFIG)
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
102 # Configure the pkg-config file.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
103 configure_file(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
104 ${CMAKE_SOURCE_DIR}/cmake/internal/irccd2.pc.in
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
105 ${CMAKE_BINARY_DIR}/irccd2.pc.tmp
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
106 @ONLY
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
107 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
108
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
109 # Adjust the library output name if debug.
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
110 file(
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
111 GENERATE
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
112 OUTPUT ${CMAKE_BINARY_DIR}/irccd2.pc
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
113 INPUT ${CMAKE_BINARY_DIR}/irccd2.pc.tmp
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
114 )
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
115
35ef15100de8 CMake: install pkg-config file, #440
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
116 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
117 endif ()