d43a20f8f4
This is necessary for static builds where the linking is passed around to dependent targets, but the library is lost.
186 lines
4.0 KiB
CMake
186 lines
4.0 KiB
CMake
cmake_minimum_required(VERSION 2.8.7)
|
|
|
|
project(unbound C)
|
|
|
|
find_package(OpenSSL REQUIRED)
|
|
find_package(Threads)
|
|
|
|
include(configure_checks.cmake)
|
|
|
|
if (WIN32)
|
|
set(USE_MINI_EVENT 1)
|
|
set(USE_WINSOCK 1)
|
|
else ()
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(LIBEVENT2 REQUIRED libevent)
|
|
endif ()
|
|
|
|
set(RETSIGTYPE void)
|
|
|
|
add_definitions(-D_GNU_SOURCE)
|
|
|
|
option(USE_ECDSA "Use ECDSA algorithms" ON)
|
|
option(USE_SHA2 "Enable SHA2 support" ON)
|
|
set(ENABLE_DNSTAP 0)
|
|
set(HAVE_SSL 1)
|
|
if (CMAKE_USE_PTHREADS_INIT AND NOT CMAKE_USE_WIN32_THREADS_INIT)
|
|
set(HAVE_PTHREAD 1)
|
|
else ()
|
|
set(HAVE_PTHREAD 0)
|
|
endif ()
|
|
if (CMAKE_USE_WIN32_THREADS_INIT)
|
|
set(HAVE_WINDOWS_THREADS 1)
|
|
else ()
|
|
set(HAVE_WINDOWS_THREADS 0)
|
|
endif ()
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/dnstap/dnstap_config.h.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/dnstap/dnstap_config.h")
|
|
|
|
set(common_src
|
|
services/cache/dns.c
|
|
services/cache/infra.c
|
|
services/cache/rrset.c
|
|
util/data/dname.c
|
|
util/data/msgencode.c
|
|
util/data/msgparse.c
|
|
util/data/msgreply.c
|
|
util/data/packed_rrset.c
|
|
iterator/iterator.c
|
|
iterator/iter_delegpt.c
|
|
iterator/iter_donotq.c
|
|
iterator/iter_fwd.c
|
|
iterator/iter_hints.c
|
|
iterator/iter_priv.c
|
|
iterator/iter_resptype.c
|
|
iterator/iter_scrub.c
|
|
iterator/iter_utils.c
|
|
services/listen_dnsport.c
|
|
services/localzone.c
|
|
services/mesh.c
|
|
services/modstack.c
|
|
services/outbound_list.c
|
|
services/outside_network.c
|
|
util/alloc.c
|
|
util/config_file.c
|
|
util/configlexer.c
|
|
util/configparser.c
|
|
util/fptr_wlist.c
|
|
util/locks.c
|
|
util/log.c
|
|
util/mini_event.c
|
|
util/module.c
|
|
util/netevent.c
|
|
util/net_help.c
|
|
util/random.c
|
|
util/rbtree.c
|
|
util/regional.c
|
|
util/rtt.c
|
|
util/storage/dnstree.c
|
|
util/storage/lookup3.c
|
|
util/storage/lruhash.c
|
|
util/storage/slabhash.c
|
|
util/timehist.c
|
|
util/tube.c
|
|
util/winsock_event.c
|
|
validator/autotrust.c
|
|
validator/val_anchor.c
|
|
validator/validator.c
|
|
validator/val_kcache.c
|
|
validator/val_kentry.c
|
|
validator/val_neg.c
|
|
validator/val_nsec3.c
|
|
validator/val_nsec.c
|
|
validator/val_secalgo.c
|
|
validator/val_sigcrypt.c
|
|
validator/val_utils.c
|
|
dns64/dns64.c
|
|
|
|
#$(CHECKLOCK_SRC)
|
|
testcode/checklocks.c)
|
|
|
|
set(compat_src)
|
|
|
|
foreach (symbol IN ITEMS ctime_r gmtime_r inet_aton inet_ntop inet_pton malloc memcmp memmove snprintf strlcat strlcpy strptime explicit_bzero arc4random arc4random_uniform sha512)
|
|
string(TOUPPER "${symbol}" upper_sym)
|
|
if (NOT HAVE_${upper_sym})
|
|
list(APPEND compat_src
|
|
compat/${symbol}.c)
|
|
endif ()
|
|
endforeach ()
|
|
|
|
if (NOT HAVE_ARC4RANDOM)
|
|
list(APPEND compat_src
|
|
compat/arc4_lock.c)
|
|
endif ()
|
|
|
|
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
list(APPEND compat_src
|
|
compat/getentropy_linux.c)
|
|
elseif (APPLE)
|
|
list(APPEND compat_src
|
|
compat/getentropy_osx.c)
|
|
#elseif (SunOS)
|
|
# list(APPEND compat_src
|
|
# compat/getentropy_solaris.c)
|
|
elseif (WIN32)
|
|
list(APPEND compat_src
|
|
compat/getentropy_win.c)
|
|
endif ()
|
|
|
|
if (NOT HAVE_GETADDRINFO)
|
|
list(APPEND compat_src
|
|
compat/fake-rfc2553.c)
|
|
endif ()
|
|
|
|
set(sldns_src
|
|
ldns/keyraw.c
|
|
ldns/sbuffer.c
|
|
ldns/wire2str.c
|
|
ldns/parse.c
|
|
ldns/parseutil.c
|
|
ldns/rrdef.c
|
|
ldns/str2wire.c)
|
|
|
|
set(libunbound_src
|
|
libunbound/context.c
|
|
libunbound/libunbound.c
|
|
libunbound/libworker.c)
|
|
|
|
include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
|
|
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
|
|
include_directories(SYSTEM ${OPENSSL_INCLUDE_DIR})
|
|
if (LIBEVENT2_FOUND)
|
|
include_directories(SYSTEM ${LIBEVENT2_INCLUDE_DIRS})
|
|
link_directories(${LIBEVENT2_LIBRARY_DIRS})
|
|
endif ()
|
|
add_library(unbound
|
|
${common_src}
|
|
${sldns_src}
|
|
${compat_src}
|
|
${libunbound_src})
|
|
target_link_libraries(unbound
|
|
LINK_PRIVATE
|
|
${OPENSSL_LIBRARIES}
|
|
${CMAKE_THREAD_LIBS_INIT})
|
|
if (LIBEVENT2_FOUND)
|
|
target_link_libraries(unbound
|
|
LINK_PRIVATE
|
|
${LIBEVENT2_LIBRARIES})
|
|
endif ()
|
|
|
|
if (WIN32)
|
|
target_link_libraries(unbound
|
|
LINK_PRIVATE
|
|
iphlpapi
|
|
ws2_32)
|
|
endif ()
|
|
|
|
# XXX: Hack for static builds.
|
|
set(LIBEVENT2_LIBDIR
|
|
"${LIBEVENT2_LIBDIR}"
|
|
PARENT_SCOPE)
|