Commit | Line | Data |
---|---|---|
6cb16c21 KK |
1 | # Project |
2 | project(libasyncio) | |
4ad8653b | 3 | set(VERSION 0.3) |
6cb16c21 KK |
4 | set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}") |
5 | ||
6 | # CMake | |
7 | set(CMAKE_COLOR_MAKEFILE ON) | |
8 | cmake_minimum_required(VERSION 2.6 FATAL_ERROR) | |
9 | ||
10 | # Source package generation | |
11 | set(CPACK_SOURCE_GENERATOR TGZ) | |
12 | set(CPACK_SOURCE_IGNORE_FILES "~$;\\\\.git;build;build-rpm") | |
13 | set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}") | |
14 | ||
15 | # Find external packages | |
16 | include(FindPkgConfig) | |
17 | ||
c26e19eb | 18 | option(WITH_LIBI2NCOMMON "Build with libi2ncommon support" OFF) |
6cb16c21 | 19 | if(WITH_LIBI2NCOMMON) |
c26e19eb | 20 | message(STATUS "[!] Building *with* libi2ncommon support. [!]") |
6cb16c21 KK |
21 | pkg_check_modules(LIBI2NCOMMON REQUIRED libi2ncommon) |
22 | include_directories(${LIBI2NCOMMON_INCLUDE_DIRS}) | |
23 | link_directories(${LIBI2NCOMMON_LIBRARY_DIRS}) | |
c26e19eb | 24 | else(WITH_LIBI2NCOMMON) |
6cb16c21 KK |
25 | message(STATUS "[!] Building *without* libi2ncommon support. [!]") |
26 | endif(WITH_LIBI2NCOMMON) | |
27 | ||
983acc1f | 28 | find_package(Boost 1.34 REQUIRED COMPONENTS unit_test_framework) |
6cb16c21 KK |
29 | include_directories(${Boost_INCLUDE_DIRS}) |
30 | ||
c26e19eb | 31 | option(WITH_LIBT2N "Build with libt2n support" OFF) |
6cb16c21 | 32 | if(WITH_LIBT2N) |
c26e19eb | 33 | message(STATUS "[!] Building *with* libt2n support. [!]") |
6cb16c21 KK |
34 | pkg_check_modules(LIBT2N REQUIRED libt2n) |
35 | include_directories(${LIBT2N_INCLUDE_DIRS}) | |
36 | link_directories(${LIBT2N_LIBRARY_DIRS}) | |
c26e19eb GE |
37 | add_subdirectory(glue_t2n) |
38 | else(WITH_LIBT2N) | |
6cb16c21 KK |
39 | message(STATUS "[!] Building *without* libt2n support. [!]") |
40 | endif(WITH_LIBT2N) | |
41 | ||
42 | # Documentation | |
43 | find_package(Doxygen) | |
44 | if(DOXYGEN_FOUND) | |
45 | # Find doxy config | |
46 | message(STATUS "Doxygen found.") | |
47 | set(DOXY_DIR "${CMAKE_SOURCE_DIR}/doc") | |
48 | set(DOXY_CONFIG "${DOXY_DIR}/Doxyfile.in") | |
c89d77ed | 49 | set(top_srcdir ${CMAKE_SOURCE_DIR}) |
6cb16c21 KK |
50 | |
51 | # Copy doxy.config.in | |
52 | configure_file("${DOXY_CONFIG}" "${CMAKE_BINARY_DIR}/doxy.config") | |
53 | ||
54 | # Create doc directory | |
55 | add_custom_command( | |
56 | OUTPUT ${CMAKE_BINARY_DIR}/doc | |
57 | COMMAND rm -rf ${CMAKE_BINARY_DIR}/doc/{html,man} | |
58 | COMMAND mkdir -p ${CMAKE_BINARY_DIR}/doc | |
59 | DEPENDS utils asyncio ${T2NDIRS} unittest | |
60 | ) | |
61 | ||
62 | # Run doxygen | |
63 | add_custom_command( | |
64 | OUTPUT ${CMAKE_BINARY_DIR}/doc/html/index.html | |
65 | COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxy.config" | |
66 | DEPENDS "${CMAKE_BINARY_DIR}/doxy.config" "${CMAKE_BINARY_DIR}/doc" | |
67 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc | |
68 | ) | |
69 | ||
70 | add_custom_target(docs ALL DEPENDS ${CMAKE_BINARY_DIR}/doc/html/index.html) | |
71 | ||
72 | message(STATUS "Generating API documentation with Doxygen.") | |
73 | else(DOXYGEN_FOUND) | |
74 | message(STATUS "Not generating API documentation.") | |
75 | endif(DOXYGEN_FOUND) | |
76 | ||
77 | # Spec file | |
78 | configure_file(${CMAKE_SOURCE_DIR}/libasyncio.spec.in ${CMAKE_SOURCE_DIR}/libasyncio.spec @ONLY) | |
79 | ||
7b52dc40 KK |
80 | # Check include files and availability of libraries for config file |
81 | include(CheckIncludeFiles) | |
82 | ||
83 | if(Boost_FOUND) | |
84 | set(HAVE_BOOST 1) | |
85 | endif() | |
7b52dc40 KK |
86 | if(Boost_UNIT_TEST_FRAMEWORK_FOUND) |
87 | set(HAVE_BOOST_UNIT_TEST_FRAMEWORK 1) | |
88 | endif() | |
89 | if(LIBI2NCOMMON_FOUND) | |
90 | set(HAVE_LIBI2NCOMMON 1) | |
91 | endif() | |
92 | if(LIBT2N_FOUND) | |
93 | set(HAVE_LIBT2N 1) | |
94 | endif() | |
95 | check_include_files(dlfcn.h HAVE_DLFCN_H) | |
96 | check_include_files(inttypes.h HAVE_INTTYPES_H) | |
97 | check_include_files(memory.h HAVE_MEMORY_H) | |
98 | check_include_files(stdint.h HAVE_STDINT_H) | |
99 | check_include_files(stdlib.h HAVE_STDLIB_H) | |
100 | check_include_files(strings.h HAVE_STRINGS_H) | |
101 | check_include_files(string.h HAVE_STRING_H) | |
102 | check_include_files(sys/stat.h HAVE_SYS_STAT_H) | |
103 | check_include_files(sys/types.h HAVE_SYS_TYPES_H) | |
104 | check_include_files(unistd.h HAVE_UNISTD_H) | |
105 | set(STDC_HEADER_NAMES | |
106 | assert.h | |
107 | ctype.h | |
108 | errno.h | |
109 | float.h | |
110 | limits.h | |
111 | locale.h | |
112 | math.h | |
113 | setjmp.h | |
114 | signal.h | |
115 | stdarg.h | |
116 | stddef.h | |
117 | stdio.h | |
118 | stdlib.h | |
119 | string.h | |
120 | time.h | |
121 | ) | |
122 | check_include_files("${STDC_HEADER_NAMES}" STDC_HEADERS) | |
123 | ||
6cb16c21 | 124 | # Config file |
623f402c KK |
125 | # configure_file(${CMAKE_SOURCE_DIR}/asyncio_config.hpp.in.cmake ${CMAKE_BINARY_DIR}/asyncio_config.hpp) |
126 | # include_directories(BEFORE ${CMAKE_BINARY_DIR}) | |
127 | configure_file(${CMAKE_SOURCE_DIR}/asyncio_config.hpp.in.cmake ${CMAKE_SOURCE_DIR}/asyncio/asyncio_config.hpp) | |
128 | # include_directories(BEFORE ${CMAKE_SOURCE_DIR}/asyncio) | |
6cb16c21 KK |
129 | |
130 | # PkgConfig output | |
131 | set(prefix ${CMAKE_INSTALL_PREFIX}) | |
132 | set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin) | |
133 | set(includedir ${CMAKE_INSTALL_PREFIX}/include) | |
134 | set(libdir ${CMAKE_INSTALL_PREFIX}/lib) | |
135 | ||
136 | # PkgConfig files | |
137 | configure_file(${CMAKE_SOURCE_DIR}/asyncio/libasyncio.pc.in ${CMAKE_BINARY_DIR}/asyncio/libasyncio.pc @ONLY) | |
138 | configure_file(${CMAKE_SOURCE_DIR}/utils/libasyncio_utils.pc.in ${CMAKE_BINARY_DIR}/utils/libasyncio_utils.pc @ONLY) | |
139 | configure_file(${CMAKE_SOURCE_DIR}/glue_t2n/libasyncio_t2n.pc.in ${CMAKE_BINARY_DIR}/glue_t2n/libasyncio_t2n.pc @ONLY) | |
140 | ||
141 | install(FILES ${CMAKE_BINARY_DIR}/asyncio/libasyncio.pc DESTINATION lib/pkgconfig) | |
142 | install(FILES ${CMAKE_BINARY_DIR}/utils/libasyncio_utils.pc DESTINATION lib/pkgconfig) | |
143 | install(FILES ${CMAKE_BINARY_DIR}/glue_t2n/libasyncio_t2n.pc DESTINATION lib/pkgconfig) | |
144 | ||
145 | # Subdirectories | |
146 | set(CPACK_SET_DESTDIR "ON") | |
147 | add_subdirectory(utils) | |
148 | add_subdirectory(asyncio) | |
6cb16c21 KK |
149 | add_subdirectory(unittest) |
150 | ||
151 | include(CPack) |