mirror of
https://github.com/monero-project/monero.git
synced 2024-11-18 10:01:02 +00:00
de4fc40576
These are found as shared libraries and need to be copied so that PATH manipulation isn't necessary outside of an msys shell.
201 lines
4.5 KiB
CMake
201 lines
4.5 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)
|
|
|
|
if (MINGW)
|
|
# There is no variable for this (probably due to the fact that the pthread
|
|
# library is implicit with a link in msys).
|
|
find_library(win32pthread
|
|
NAMES libwinpthread-1.dll)
|
|
foreach (input IN LISTS win32pthread OPENSSL_LIBRARIES)
|
|
# Copy shared libraries into the build tree so that no PATH manipulation is
|
|
# necessary.
|
|
get_filename_component(name "${input}" NAME)
|
|
configure_file(
|
|
"${input}"
|
|
"${CMAKE_BINARY_DIR}/bin/${name}"
|
|
COPYONLY)
|
|
endforeach ()
|
|
endif ()
|