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