aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--external/unbound/CMakeLists.txt201
1 files changed, 201 insertions, 0 deletions
diff --git a/external/unbound/CMakeLists.txt b/external/unbound/CMakeLists.txt
new file mode 100644
index 000000000..fdfa0a0fe
--- /dev/null
+++ b/external/unbound/CMakeLists.txt
@@ -0,0 +1,201 @@
+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 ()