annotate libirccd/CMakeLists.txt @ 850:688f28dd3241

irccd: remove short options, closes #1673 While here, use a brand new home made option parsing.
author David Demelier <markand@malikania.fr>
date Tue, 16 Jul 2019 20:49:36 +0200
parents 06cc2f95f479
children 5e25439fe98d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
377
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
1 #
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
2 # CMakeLists.txt -- CMake build system for irccd
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
3 #
824
06cc2f95f479 misc: happy new year!
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
4 # Copyright (c) 2013-2019 David Demelier <markand@malikania.fr>
377
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
5 #
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
8 # copyright notice and this permission notice appear in all copies.
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
9 #
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
17 #
cd7270ec6c8e CMake: general cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
18
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
19 project(libirccd)
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 812
diff changeset
21 find_package(Boost 1.60 REQUIRED QUIET COMPONENTS date_time filesystem system)
477
bf201d09ee6a Irccd: use boost::filesystem (fs::exists), #594
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
22
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 set(
797
2dfba38e93f0 cmake: fix headers installation, closes #924 @1h
David Demelier <markand@malikania.fr>
parents: 782
diff changeset
24 SOURCES
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
25 ${libirccd_SOURCE_DIR}/irccd/acceptor.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
26 ${libirccd_SOURCE_DIR}/irccd/config.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
27 ${libirccd_SOURCE_DIR}/irccd/config.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
28 ${libirccd_SOURCE_DIR}/irccd/connector.hpp
812
e29af7701b21 misc: add convenient headers, closes #956 @30m
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
29 ${libirccd_SOURCE_DIR}/irccd/core.hpp
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
30 ${libirccd_SOURCE_DIR}/irccd/fs_util.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
31 ${libirccd_SOURCE_DIR}/irccd/fs_util.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
32 ${libirccd_SOURCE_DIR}/irccd/ini.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
33 ${libirccd_SOURCE_DIR}/irccd/ini.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
34 ${libirccd_SOURCE_DIR}/irccd/ini_util.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
35 ${libirccd_SOURCE_DIR}/irccd/json_util.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
36 ${libirccd_SOURCE_DIR}/irccd/json_util.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
37 ${libirccd_SOURCE_DIR}/irccd/options.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
38 ${libirccd_SOURCE_DIR}/irccd/stream.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
39 ${libirccd_SOURCE_DIR}/irccd/string_util.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
40 ${libirccd_SOURCE_DIR}/irccd/string_util.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
41 ${libirccd_SOURCE_DIR}/irccd/system.cpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
42 ${libirccd_SOURCE_DIR}/irccd/system.hpp
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
43 ${libirccd_SOURCE_DIR}/irccd/xdg.hpp
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 )
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 set(
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
47 LIBRARIES
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
48 ${CMAKE_DL_LIBS}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
49 libjson
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
50 Threads::Threads
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 812
diff changeset
51 Boost::disable_autolinking
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 812
diff changeset
52 Boost::dynamic_linking
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 812
diff changeset
53 Boost::date_time
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
54 Boost::filesystem
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
55 Boost::system
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
56 )
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
57
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
58 if (CMAKE_SYSTEM_NAME MATCHES Windows)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
59 list(APPEND LIBRARIES mswsock shlwapi ws2_32)
782
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
60 elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
61 #
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
62 # Disable epoll in boost until it get fixed:
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
63 # https://github.com/boostorg/asio/issues/150
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
64 #
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
65 list(APPEND FLAGS "BOOST_ASIO_DISABLE_EPOLL")
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
66 elseif (APPLE)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
67 list(APPEND LIBRARIES resolv)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
68 endif ()
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
69
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
70 if (IRCCD_HAVE_SSL)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
71 list(APPEND LIBRARIES OpenSSL::Crypto OpenSSL::SSL)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
72 endif ()
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
73
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 irccd_define_library(
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
75 TARGET libirccd
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
76 EXPORT
782
2d188a3e8802 Core: disable epoll backend by default
David Demelier <markand@malikania.fr>
parents: 780
diff changeset
77 FLAGS ${FLAGS}
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
78 HEADERS ${libirccd_SOURCE_DIR}/irccd/
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
79 SOURCES ${SOURCES}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
80 LIBRARIES ${LIBRARIES}
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
81 PUBLIC_INCLUDES
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
82 $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 797
diff changeset
83 $<BUILD_INTERFACE:${libirccd_SOURCE_DIR}>
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 730
diff changeset
84 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
290
24bb45724dc0 Irccd: split lib into libcommon, #564
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 )