3
# Force cmake 2.8.8 in order to have a decent support of Qt5
4
cmake_minimum_required(VERSION 2.8.8)
5
cmake_policy(SET CMP0003 NEW)
7
# Do not link against qtmain on Windows
8
cmake_policy(SET CMP0020 OLD)
10
# On Windows debug library should have 'd' postfix.
12
set(CMAKE_DEBUG_POSTFIX "d")
14
set(CMAKE_DEBUG_POSTFIX "_debug")
17
# OPTION(OSX_FRAMEWORK "Build a Mac OS X Framework")
18
# SET(FRAMEWORK_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/Library/Frameworks"
19
# CACHE PATH "Where to place jdns.framework if OSX_FRAMEWORK is selected")
21
option(BUILD_SHARED_LIBS "Build shared library" ON)
22
option(BUILD_QJDNS "Buid JDNS Qt-wrapper" ON)
23
option(BUILD_JDNS_TOOL "Build jdns test tool" ON)
25
# jdns tool requires qjdns
27
set(BUILD_JDNS_TOOL OFF)
28
endif(NOT BUILD_QJDNS)
30
if(NOT BUILD_SHARED_LIBS)
31
add_definitions(-DJDNS_STATIC)
32
endif(NOT BUILD_SHARED_LIBS)
35
option(QT4_BUILD "Force building with Qt4 even if Qt5 is found")
37
find_package(Qt5Core QUIET)
38
find_package(Qt5Network QUIET)
44
include_directories(${Qt5Core_INCLUDE_DIRS})
45
include_directories(${Qt5Network_INCLUDE_DIRS})
46
add_definitions(${Qt5Core_DEFINITIONS})
47
add_definitions(${Qt5Network_DEFINITIONS})
49
# Tell CMake to run moc when necessary:
51
# As moc files are generated in the binary dir, tell CMake
52
# to always look for includes there:
53
set(CMAKE_INCLUDE_CURRENT_DIR ON)
54
set(QJDns_QT_PC_VERSION "Qt5Core Qt5Network")
56
message("Qt5 not found, searching for Qt4")
58
find_package(Qt4 REQUIRED QtCore QtNetwork)
60
# Include the cmake file needed to use qt4
61
include(${QT_USE_FILE})
62
set(QJDns_QT_PC_VERSION "QtCore QtNetwork")
66
set(QT_DONT_USE_QTGUI TRUE)
70
# put the include dirs which are in the source or build tree
71
# before all other include dirs, so the headers in the sources
72
# are prefered over the already installed ones
73
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
75
set(JDNS_INCLUDEDIR "${CMAKE_CURRENT_SOURCE_DIR}/include/jdns" )
78
#add extra search paths for libraries and includes
79
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
80
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE STRING "Directory where binary will install")
81
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Directory where library will install")
82
set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in")
85
set(JDNS_CONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/jdns")
86
set(QJDNS_CONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/qjdns")
88
set(JDNS_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake/")
89
set(QJDNS_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake/")
93
set(CMAKE_INSTALL_NAME_DIR ${LIB_INSTALL_DIR})
96
set(JDNS_LIB_MAJOR_VERSION "2")
97
set(JDNS_LIB_MINOR_VERSION "0")
98
set(JDNS_LIB_PATCH_VERSION "0")
100
set(JDNS_LIB_VERSION_STRING "${JDNS_LIB_MAJOR_VERSION}.${JDNS_LIB_MINOR_VERSION}.${JDNS_LIB_PATCH_VERSION}")
102
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" )
103
# Use the same path for shared and static library
104
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" )
105
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" )
110
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jdns.pc.in
111
${CMAKE_CURRENT_BINARY_DIR}/jdns.pc
113
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jdns.pc
114
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
116
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qjdns.pc.in
117
${CMAKE_CURRENT_BINARY_DIR}/qjdns.pc
119
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qjdns.pc
120
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
123
include_directories("include/jdns/")
126
add_subdirectory(src)
129
add_subdirectory(tools/jdns)
130
endif(BUILD_JDNS_TOOL)
133
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
134
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
137
# figure out the relative path from the installed Config.cmake file to the install prefix (which may be at
138
# runtime different from the chosen CMAKE_INSTALL_PREFIX if under Windows the package was installed anywhere)
139
# This relative path will be configured into the QJDNSConfig.cmake
140
file(RELATIVE_PATH relInstallDir ${JDNS_CONFIG_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
141
file(RELATIVE_PATH JDNS_INCLUDEDIR_REL ${CMAKE_INSTALL_PREFIX} "${INCLUDE_INSTALL_DIR}/jdns")
142
file(RELATIVE_PATH LIB_INSTALL_DIR_REL ${CMAKE_INSTALL_PREFIX} ${LIB_INSTALL_DIR})
145
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/JDnsConfig.cmake.in
146
${CMAKE_CURRENT_BINARY_DIR}/JDnsConfig.cmake
148
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/JDnsConfigVersion.cmake.in
149
${CMAKE_CURRENT_BINARY_DIR}/JDnsConfigVersion.cmake
151
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/JDnsConfig.cmake
152
${CMAKE_CURRENT_BINARY_DIR}/JDnsConfigVersion.cmake
153
DESTINATION ${JDNS_CONFIG_INSTALL_DIR})
155
install(EXPORT jdns-export DESTINATION ${JDNS_CONFIG_INSTALL_DIR} FILE JDnsTargets.cmake)
157
install(EXPORT qjdns-export DESTINATION ${QJDNS_CONFIG_INSTALL_DIR} FILE QJDnsTargets.cmake)
160
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/QJDnsConfig.cmake.in
161
${CMAKE_CURRENT_BINARY_DIR}/QJDnsConfig.cmake
164
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/QJDnsConfigVersion.cmake.in
165
${CMAKE_CURRENT_BINARY_DIR}/QJDnsConfigVersion.cmake
168
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QJDnsConfig.cmake
169
${CMAKE_CURRENT_BINARY_DIR}/QJDnsConfigVersion.cmake
170
DESTINATION ${QJDNS_CONFIG_INSTALL_DIR})
173
add_custom_target(uninstall
174
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")