aboutsummaryrefslogtreecommitdiff
path: root/external/unbound/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--external/unbound/CMakeLists.txt180
1 files changed, 180 insertions, 0 deletions
diff --git a/external/unbound/CMakeLists.txt b/external/unbound/CMakeLists.txt
new file mode 100644
index 000000000..a81e80314
--- /dev/null
+++ b/external/unbound/CMakeLists.txt
@@ -0,0 +1,180 @@
+cmake_minimum_required(VERSION 2.8.8)
+
+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
+ PRIVATE
+ ${OPENSSL_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT})
+if (LIBEVENT2_FOUND)
+ target_link_libraries(unbound
+ PRIVATE
+ ${LIBEVENT2_LIBRARIES})
+endif ()
+
+if (WIN32)
+ target_link_libraries(unbound
+ PRIVATE
+ iphlpapi
+ ws2_32)
+endif ()