Merge pull request #180
ce71c01
cmake: work around a bug with implicit link directories (Ben Boeckel)de4fc40
mingw: copy required libraries to the build tree (Ben Boeckel)ec54e2f
cmake: place binaries together in the build tree (Ben Boeckel)18c56ab
msys: don't use LTO (Ben Boeckel)5680c9c
msys: factor out -Werror on msys (Ben Boeckel)4751542
msys: look in msys' directory for files (Ben Boeckel)d855fe4
miniupnpc: bump the _POSIX_C_SOURCE feature macro (Ben Boeckel)c696492
unbound: fix getaddrinfo detection for 32-bit windows (Ben Boeckel)e377687
cmake: Windows and static builds need this (Ben Boeckel)01895dd
cmake: fix up link lines (Ben Boeckel)4b6515c
unbound: fix type checking (Ben Boeckel)d43a20f
unbound: plumb the libdir up (Ben Boeckel)7d708e4
cmake: support 2.8.7 (Ben Boeckel)464c280
cmake: fix up miniupnpc's define (Ben Boeckel)9689df9
cmake: clean up EXTRA_LIBRARIES (Ben Boeckel)3b7bdcb
cmake: set the project name (Ben Boeckel)0f0efc4
cmake: prepend to CMAKE_MODULE_PATH (Ben Boeckel)031e3da
cmake: remove scream-make (all-caps functions) (Ben Boeckel)abbd5c0
unbound: import cmake build system (Ben Boeckel)e59b5b7
miniupnpc: clean up build system (Ben Boeckel)475fe20
cmake: minor cleanups (indentation and typos) (Ben Boeckel)799e8b2
cmake: use option() for STATIC (Ben Boeckel)c24d22b
cmake: clean up if auto-dereferencing (Ben Boeckel)9ed415a
build: inform the build of what generates version.h (Ben Boeckel)eba180a
cmake: support git info in released tarballs (Ben Boeckel)eeffac6
cmake: fix up BOOST_IGNORE_SYSTEM_PATHS (Ben Boeckel)a43f1a8
cmake: remove configuration variables (Ben Boeckel)a87ce09
cmake: factor out error messages (Ben Boeckel)9aa48b6
miniupnpc: clear out else/endfoo command arguments (Ben Boeckel)8a86ac8
daemon_tests: update cmake code (Ben Boeckel)fa3ff75
gtest: support an external gtest (Ben Boeckel)7bfcffa
cmake: put each test executable in its own directory (Ben Boeckel)f53f047
cmake: handle private vs. public headers (Ben Boeckel)55ca7d3
cmake: refactor common code with libraries (Ben Boeckel)c773f46
cmake: refactor common code with executables (Ben Boeckel)89cff7b
cmake: put each library into its own directory (Ben Boeckel)
This commit is contained in:
commit
ab7c6c07e7
|
@ -1,2 +1,2 @@
|
||||||
.git* export-ignore
|
.git* export-ignore
|
||||||
/CMakeLists.txt export-subst
|
version.cmake export-subst
|
||||||
|
|
107
CMakeLists.txt
107
CMakeLists.txt
|
@ -28,33 +28,41 @@
|
||||||
#
|
#
|
||||||
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.6)
|
cmake_minimum_required(VERSION 2.8.7)
|
||||||
|
|
||||||
if(NOT WIN32)
|
project(bitmonero)
|
||||||
string(ASCII 27 Esc)
|
|
||||||
set(ColourReset "${Esc}[m")
|
|
||||||
set(BoldRed "${Esc}[1;31m")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
function (die msg)
|
||||||
|
if (NOT WIN32)
|
||||||
|
string(ASCII 27 Esc)
|
||||||
|
set(ColourReset "${Esc}[m")
|
||||||
|
set(BoldRed "${Esc}[1;31m")
|
||||||
|
else ()
|
||||||
|
set(ColourReset "")
|
||||||
|
set(BoldRed "")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
message(FATAL_ERROR "${BoldRed}${msg}${ColourReset}")
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
list(INSERT CMAKE_MODULE_PATH 0
|
||||||
|
"${CMAKE_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
if (NOT DEFINED ENV{DEVELOPER_LOCAL_TOOLS})
|
if (NOT DEFINED ENV{DEVELOPER_LOCAL_TOOLS})
|
||||||
message(STATUS "Could not find DEVELOPER_LOCAL_TOOLS in env (not required)")
|
message(STATUS "Could not find DEVELOPER_LOCAL_TOOLS in env (not required)")
|
||||||
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT OFF)
|
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT OFF)
|
||||||
elseif ("$ENV{DEVELOPER_LOCAL_TOOLS}" EQUAL 1)
|
elseif (ENV{DEVELOPER_LOCAL_TOOLS} EQUAL 1)
|
||||||
message(STATUS "Found: env DEVELOPER_LOCAL_TOOLS = 1")
|
message(STATUS "Found: env DEVELOPER_LOCAL_TOOLS = 1")
|
||||||
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT ON)
|
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT ON)
|
||||||
option(BOOST_IGNORE_SYSTEM_PATHS "Ignore boost system paths for local boost installation" ON)
|
|
||||||
else()
|
else()
|
||||||
message(STATUS "found: env DEVELOPER_LOCAL_TOOLS = 0")
|
message(STATUS "Found: env DEVELOPER_LOCAL_TOOLS = 0")
|
||||||
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT OFF)
|
set(BOOST_IGNORE_SYSTEM_PATHS_DEFAULT OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
message(STATUS "BOOST_IGNORE_SYSTEM_PATHS defaults to ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT}")
|
message(STATUS "BOOST_IGNORE_SYSTEM_PATHS defaults to ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT}")
|
||||||
option(BOOST_IGNORE_SYSTEM_PATHS "Ignore boost system paths for local boost ins tallation" $BOOST_IGNORE_SYSTEM_PATHS_DEFAULT)
|
option(BOOST_IGNORE_SYSTEM_PATHS "Ignore boost system paths for local boost installation" ${BOOST_IGNORE_SYSTEM_PATHS_DEFAULT})
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
# Check if we're on FreeBSD so we can exclude the local miniupnpc (it should be installed from ports instead)
|
# Check if we're on FreeBSD so we can exclude the local miniupnpc (it should be installed from ports instead)
|
||||||
|
@ -85,15 +93,28 @@ if(MSVC OR MINGW)
|
||||||
else()
|
else()
|
||||||
set(DEFAULT_STATIC false)
|
set(DEFAULT_STATIC false)
|
||||||
endif()
|
endif()
|
||||||
set(STATIC ${DEFAULT_STATIC} CACHE BOOL "Link libraries statically")
|
option(STATIC "Link libraries statically" ${DEFAULT_STATIC})
|
||||||
|
|
||||||
IF(STATIC)
|
if(MINGW)
|
||||||
IF(MSVC)
|
get_filename_component(msys2_install_path "[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MSYS2 64bit;InstallLocation]" ABSOLUTE)
|
||||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll.a .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
set(CMAKE_INCLUDE_PATH "${msys2_install_path}/mingw64/include")
|
||||||
ELSE()
|
# This is necessary because otherwise CMake will make Boost libraries -lfoo
|
||||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
# rather than a full path. Unfortunately, this makes the shared libraries get
|
||||||
ENDIF()
|
# linked due to a bug in CMake which misses putting -static flags around the
|
||||||
ENDIF()
|
# -lfoo arguments.
|
||||||
|
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_DIRECTORIES
|
||||||
|
"${msys2_install_path}/mingw64/lib")
|
||||||
|
list(REMOVE_ITEM CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES
|
||||||
|
"${msys2_install_path}/mingw64/lib")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(STATIC)
|
||||||
|
if(MSVC)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .dll.a .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
|
else()
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (UNIX AND NOT APPLE)
|
if (UNIX AND NOT APPLE)
|
||||||
# Note that at the time of this writing the -Wstrict-prototypes flag added below will make this fail
|
# Note that at the time of this writing the -Wstrict-prototypes flag added below will make this fail
|
||||||
|
@ -112,6 +133,7 @@ endif()
|
||||||
|
|
||||||
# Final setup for libunbound
|
# Final setup for libunbound
|
||||||
include_directories(${UNBOUND_INCLUDE})
|
include_directories(${UNBOUND_INCLUDE})
|
||||||
|
link_directories(${UNBOUND_LIBRARY_DIRS})
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_definitions("/bigobj /MP /W3 /GS- /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /FIinline_c.h /D__SSE4_1__")
|
add_definitions("/bigobj /MP /W3 /GS- /D_CRT_SECURE_NO_WARNINGS /wd4996 /wd4345 /D_WIN32_WINNT=0x0600 /DWIN32_LEAN_AND_MEAN /DGTEST_HAS_TR1_TUPLE=0 /FIinline_c.h /D__SSE4_1__")
|
||||||
|
@ -125,12 +147,15 @@ if(MSVC)
|
||||||
include_directories(SYSTEM src/platform/msc)
|
include_directories(SYSTEM src/platform/msc)
|
||||||
else()
|
else()
|
||||||
set(ARCH native CACHE STRING "CPU to build for: -march value or default")
|
set(ARCH native CACHE STRING "CPU to build for: -march value or default")
|
||||||
if("${ARCH}" STREQUAL "default")
|
if(ARCH STREQUAL "default")
|
||||||
set(ARCH_FLAG "")
|
set(ARCH_FLAG "")
|
||||||
else()
|
else()
|
||||||
set(ARCH_FLAG "-march=${ARCH}")
|
set(ARCH_FLAG "-march=${ARCH}")
|
||||||
endif()
|
endif()
|
||||||
set(WARNINGS "-Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Werror -Wno-error=extra -Wno-error=deprecated-declarations -Wno-error=sign-compare -Wno-error=strict-aliasing -Wno-error=type-limits -Wno-unused-parameter -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized")
|
set(WARNINGS "-Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-error=sign-compare -Wno-error=strict-aliasing -Wno-error=type-limits -Wno-unused-parameter -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized")
|
||||||
|
if(NOT MINGW)
|
||||||
|
set(WARNINGS "${WARNINGS} -Werror")
|
||||||
|
endif()
|
||||||
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
set(WARNINGS "${WARNINGS} -Wno-error=mismatched-tags -Wno-error=null-conversion -Wno-overloaded-shift-op-parentheses -Wno-error=shift-count-overflow -Wno-error=tautological-constant-out-of-range-compare -Wno-error=unused-private-field -Wno-error=unneeded-internal-declaration")
|
set(WARNINGS "${WARNINGS} -Wno-error=mismatched-tags -Wno-error=null-conversion -Wno-overloaded-shift-op-parentheses -Wno-error=shift-count-overflow -Wno-error=tautological-constant-out-of-range-compare -Wno-error=unused-private-field -Wno-error=unneeded-internal-declaration")
|
||||||
else()
|
else()
|
||||||
|
@ -141,6 +166,8 @@ else()
|
||||||
set(MINGW_FLAG "${MINGW_FLAG} -DWIN32_LEAN_AND_MEAN")
|
set(MINGW_FLAG "${MINGW_FLAG} -DWIN32_LEAN_AND_MEAN")
|
||||||
set(Boost_THREADAPI win32)
|
set(Boost_THREADAPI win32)
|
||||||
include_directories(SYSTEM src/platform/mingw)
|
include_directories(SYSTEM src/platform/mingw)
|
||||||
|
# mingw doesn't support LTO (multiple definition errors at link time)
|
||||||
|
set(USE_LTO_DEFAULT false)
|
||||||
endif()
|
endif()
|
||||||
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes")
|
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes")
|
||||||
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
|
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
|
||||||
|
@ -170,7 +197,7 @@ else()
|
||||||
|
|
||||||
# There is a clang bug that does not allow to compile code that uses AES-NI intrinsics if -flto is enabled, so explicitly disable
|
# There is a clang bug that does not allow to compile code that uses AES-NI intrinsics if -flto is enabled, so explicitly disable
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
set(USE_LTO false)
|
set(USE_LTO false)
|
||||||
endif()
|
endif()
|
||||||
if(USE_LTO)
|
if(USE_LTO)
|
||||||
set(RELEASE_FLAGS "${RELEASE_FLAGS} -flto")
|
set(RELEASE_FLAGS "${RELEASE_FLAGS} -flto")
|
||||||
|
@ -194,7 +221,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BOOST_IGNORE_SYSTEM_PATHS)
|
if (BOOST_IGNORE_SYSTEM_PATHS)
|
||||||
set(Boost_NO_SYSTEM_PATHS TRUE)
|
set(Boost_NO_SYSTEM_PATHS TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(STATIC)
|
if(STATIC)
|
||||||
|
@ -204,36 +231,24 @@ endif()
|
||||||
find_package(Boost 1.53 QUIET REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options)
|
find_package(Boost 1.53 QUIET REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options)
|
||||||
|
|
||||||
if(NOT Boost_FOUND)
|
if(NOT Boost_FOUND)
|
||||||
MESSAGE(FATAL_ERROR "${BoldRed}Could not find Boost libraries, please make sure you have installed Boost or libboost-all-dev (1.53 or 1.55+) or the equivalent${ColourReset}")
|
die("Could not find Boost libraries, please make sure you have installed Boost or libboost-all-dev (1.53 or 1.55+) or the equivalent")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((${Boost_MAJOR_VERSION} EQUAL 1) AND (${Boost_MINOR_VERSION} EQUAL 54))
|
if((Boost_MAJOR_VERSION EQUAL 1) AND (Boost_MINOR_VERSION EQUAL 54))
|
||||||
message(FATAL_ERROR "${BoldRed}Boost version 1.54 is unsupported due to a bug (see: http://goo.gl/RrCFmA), please install Boost 1.53 or 1.55 and above${ColourReset}")
|
die("Boost version 1.54 is unsupported due to a bug (see: http://goo.gl/RrCFmA), please install Boost 1.53 or 1.55 and above")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
set(EXTRA_LIBRARIES pthread;mswsock;ws2_32)
|
set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi)
|
||||||
elseif(APPLE OR FREEBSD)
|
elseif(APPLE OR FREEBSD)
|
||||||
set(EXTRA_LIBRARIES "")
|
set(EXTRA_LIBRARIES "")
|
||||||
elseif(NOT MSVC)
|
elseif(NOT MSVC)
|
||||||
find_library(RT rt)
|
find_library(RT rt)
|
||||||
find_library(PTHREAD pthread)
|
|
||||||
find_library(DL dl)
|
|
||||||
set(EXTRA_LIBRARIES ${RT} ${PTHREAD} ${DL})
|
set(EXTRA_LIBRARIES ${RT} ${PTHREAD} ${DL})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/version")
|
include(version.cmake)
|
||||||
find_package(Git QUIET)
|
|
||||||
if(Git_FOUND OR GIT_FOUND)
|
|
||||||
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
|
||||||
add_custom_target(version ALL "${CMAKE_COMMAND}" "-D" "GIT=${GIT_EXECUTABLE}" "-D" "TO=${CMAKE_BINARY_DIR}/version/version.h" "-P" "src/version.cmake" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
|
||||||
else()
|
|
||||||
message(STATUS "WARNING: Git was not found!")
|
|
||||||
set(VERSIONTAG "unknown")
|
|
||||||
configure_file("src/version.h.in" "version/version.h")
|
|
||||||
add_custom_target(version ALL)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
if (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY)
|
if (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY)
|
||||||
# Already in cache, be silent
|
# Already in cache, be silent
|
||||||
set(MINIUPNP_FIND_QUIETLY TRUE)
|
set(MINIUPNP_FIND_QUIETLY TRUE)
|
||||||
endif (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY)
|
endif ()
|
||||||
|
|
||||||
find_path(MINIUPNP_INCLUDE_DIR miniupnpc.h
|
find_path(MINIUPNP_INCLUDE_DIR miniupnpc.h
|
||||||
PATH_SUFFIXES miniupnpc)
|
PATH_SUFFIXES miniupnpc)
|
||||||
|
@ -47,7 +47,7 @@ if (MINIUPNP_FOUND)
|
||||||
if (NOT MINIUPNP_FIND_QUIETLY)
|
if (NOT MINIUPNP_FIND_QUIETLY)
|
||||||
message (STATUS "Found the miniupnpc libraries at ${MINIUPNP_LIBRARY}")
|
message (STATUS "Found the miniupnpc libraries at ${MINIUPNP_LIBRARY}")
|
||||||
message (STATUS "Found the miniupnpc headers at ${MINIUPNP_INCLUDE_DIR}")
|
message (STATUS "Found the miniupnpc headers at ${MINIUPNP_INCLUDE_DIR}")
|
||||||
endif (NOT MINIUPNP_FIND_QUIETLY)
|
endif ()
|
||||||
|
|
||||||
message(STATUS "Detecting version of miniupnpc in path: ${MINIUPNP_INCLUDE_DIR}")
|
message(STATUS "Detecting version of miniupnpc in path: ${MINIUPNP_INCLUDE_DIR}")
|
||||||
|
|
||||||
|
|
|
@ -38,14 +38,14 @@
|
||||||
find_package(MiniUpnpc QUIET)
|
find_package(MiniUpnpc QUIET)
|
||||||
|
|
||||||
# FreeBSD doesn't play well with the local copy, so default to using shared
|
# FreeBSD doesn't play well with the local copy, so default to using shared
|
||||||
SET(USE_SHARED_MINIUPNPC false)
|
set(USE_SHARED_MINIUPNPC false)
|
||||||
|
|
||||||
# If we have the correct shared version and we're not building static, use it
|
# If we have the correct shared version and we're not building static, use it
|
||||||
IF(STATIC)
|
if(STATIC)
|
||||||
SET(USE_SHARED_MINIUPNPC false)
|
set(USE_SHARED_MINIUPNPC false)
|
||||||
ELSEIF(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER)
|
elseif(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER)
|
||||||
SET(USE_SHARED_MINIUPNPC true)
|
set(USE_SHARED_MINIUPNPC true)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
if(USE_SHARED_MINIUPNPC)
|
if(USE_SHARED_MINIUPNPC)
|
||||||
message(STATUS "Using shared miniupnpc found at ${MINIUPNP_INCLUDE_DIR}")
|
message(STATUS "Using shared miniupnpc found at ${MINIUPNP_INCLUDE_DIR}")
|
||||||
|
@ -59,7 +59,7 @@ else()
|
||||||
else()
|
else()
|
||||||
message(STATUS "Using miniupnpc from local source tree (/external/miniupnpc)")
|
message(STATUS "Using miniupnpc from local source tree (/external/miniupnpc)")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(UPNPC_BUILD_STATIC ON CACHE BOOL "Build static library")
|
set(UPNPC_BUILD_STATIC ON CACHE BOOL "Build static library")
|
||||||
set(UPNPC_BUILD_SHARED OFF CACHE BOOL "Build shared library")
|
set(UPNPC_BUILD_SHARED OFF CACHE BOOL "Build shared library")
|
||||||
set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Build test executables")
|
set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Build test executables")
|
||||||
|
@ -78,98 +78,22 @@ endif()
|
||||||
|
|
||||||
find_package(Unbound)
|
find_package(Unbound)
|
||||||
|
|
||||||
IF(!UNBOUND_INCLUDE_DIR OR STATIC)
|
if(NOT UNBOUND_INCLUDE_DIR OR STATIC)
|
||||||
if(STATIC)
|
add_subdirectory(unbound)
|
||||||
message(STATUS "Using libunbound from local source tree for static build")
|
|
||||||
else()
|
|
||||||
message(STATUS "Using libunbound from local source tree (/external/unbound)")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
INCLUDE(ExternalProject)
|
|
||||||
|
|
||||||
FIND_PACKAGE(OpenSSL QUIET)
|
|
||||||
IF(!OPENSSL_LIBRARIES)
|
|
||||||
MESSAGE(FATAL_ERROR "${BoldRed}Could not find the openssl library. Please make sure you have installed openssl or libssl-dev or the equivalent${ColourReset}")
|
|
||||||
ELSE()
|
|
||||||
MESSAGE(STATUS "Found openssl libraries")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
FIND_PACKAGE(Expat QUIET)
|
|
||||||
IF(!EXPAT_LIBRARIES)
|
|
||||||
MESSAGE(FATAL_ERROR "${BoldRed}Could not find the expat library. Please make sure you have installed libexpat or libexpat-dev or the equivalent${ColourReset}")
|
|
||||||
ELSE()
|
|
||||||
MESSAGE(STATUS "Found expat libraries")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(MINGW)
|
|
||||||
set(ENV{USE_WINSOCK} 1)
|
|
||||||
set(ENV{CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
set(ENV{GCC_PREFIX} ${GCC_PREFIX})
|
|
||||||
set(ENV{CMAKE_FIND_ROOT_PATH} ${CMAKE_FIND_ROOT_PATH})
|
|
||||||
EXTERNALPROJECT_ADD(
|
|
||||||
libunbound
|
|
||||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/unbound
|
|
||||||
URL ${CMAKE_CURRENT_SOURCE_DIR}/unbound/
|
|
||||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/unbound/monero-config.sh
|
|
||||||
BUILD_COMMAND $(MAKE)
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
PATCH_COMMAND ""
|
|
||||||
INSTALL_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libtool --mode=install cp ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libunbound.la ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build
|
|
||||||
LOG_DOWNLOAD 1
|
|
||||||
LOG_UPDATE 1
|
|
||||||
LOG_CONFIGURE 1
|
|
||||||
LOG_BUILD 1
|
|
||||||
LOG_TEST 1
|
|
||||||
LOG_INSTALL 1
|
|
||||||
)
|
|
||||||
ELSEIF(APPLE)
|
|
||||||
execute_process(COMMAND brew --prefix OUTPUT_VARIABLE BREW_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
EXTERNALPROJECT_ADD(
|
|
||||||
libunbound
|
|
||||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/unbound
|
|
||||||
URL ${CMAKE_CURRENT_SOURCE_DIR}/unbound/
|
|
||||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/unbound/configure --prefix=${BREW_PREFIX} --enable-shared --enable-static --disable-gost --disable-rpath --with-libevent=no --without-pyunbound --without-pythonmodule --without-pthreads --with-libunbound-only
|
|
||||||
BUILD_COMMAND $(MAKE)
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
PATCH_COMMAND ""
|
|
||||||
INSTALL_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libtool --mode=install cp ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libunbound.la ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build
|
|
||||||
LOG_DOWNLOAD 1
|
|
||||||
LOG_UPDATE 1
|
|
||||||
LOG_CONFIGURE 1
|
|
||||||
LOG_BUILD 1
|
|
||||||
LOG_TEST 1
|
|
||||||
LOG_INSTALL 1
|
|
||||||
)
|
|
||||||
ELSE()
|
|
||||||
EXTERNALPROJECT_ADD(
|
|
||||||
libunbound
|
|
||||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/unbound
|
|
||||||
URL ${CMAKE_CURRENT_SOURCE_DIR}/unbound/
|
|
||||||
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/unbound/configure --disable-shared --enable-static --disable-gost --disable-rpath --with-libevent=no --without-pyunbound --without-pythonmodule --without-pthreads --with-libunbound-only
|
|
||||||
BUILD_COMMAND $(MAKE)
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
PATCH_COMMAND ""
|
|
||||||
INSTALL_COMMAND ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libtool --mode=install cp ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libunbound.la ${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build
|
|
||||||
LOG_DOWNLOAD 1
|
|
||||||
LOG_UPDATE 1
|
|
||||||
LOG_CONFIGURE 1
|
|
||||||
LOG_BUILD 1
|
|
||||||
LOG_TEST 1
|
|
||||||
LOG_INSTALL 1
|
|
||||||
)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
set(UNBOUND_STATIC true PARENT_SCOPE)
|
set(UNBOUND_STATIC true PARENT_SCOPE)
|
||||||
set(UNBOUND_INCLUDE "${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build" PARENT_SCOPE)
|
set(UNBOUND_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/unbound/libunbound" PARENT_SCOPE)
|
||||||
set(UNBOUND_LIBRARY "${CMAKE_CURRENT_BINARY_DIR}/unbound/src/libunbound-build/libunbound.a;${OPENSSL_LIBRARIES}" PARENT_SCOPE)
|
set(UNBOUND_LIBRARY "unbound" PARENT_SCOPE)
|
||||||
ELSE()
|
set(UNBOUND_LIBRARY_DIRS "${LIBEVENT2_LIBDIR}" PARENT_SCOPE)
|
||||||
MESSAGE(STATUS "Found libunbound include (unbound.h) in ${UNBOUND_INCLUDE_DIR}")
|
else()
|
||||||
IF(UNBOUND_LIBRARIES)
|
message(STATUS "Found libunbound include (unbound.h) in ${UNBOUND_INCLUDE_DIR}")
|
||||||
MESSAGE(STATUS "Found libunbound shared library")
|
if(UNBOUND_LIBRARIES)
|
||||||
|
message(STATUS "Found libunbound shared library")
|
||||||
set(UNBOUND_STATIC false PARENT_SCOPE)
|
set(UNBOUND_STATIC false PARENT_SCOPE)
|
||||||
set(UNBOUND_INCLUDE ${UNBOUND_INCLUDE_DIR} PARENT_SCOPE)
|
set(UNBOUND_INCLUDE ${UNBOUND_INCLUDE_DIR} PARENT_SCOPE)
|
||||||
set(UNBOUND_LIBRARY ${UNBOUND_LIBRARIES} PARENT_SCOPE)
|
set(UNBOUND_LIBRARY ${UNBOUND_LIBRARIES} PARENT_SCOPE)
|
||||||
ELSE()
|
set(UNBOUND_LIBRARY_DIRS "" PARENT_SCOPE)
|
||||||
MESSAGE(FATAL_ERROR "${BoldRed}Found libunbound includes, but could not find libunbound library. Please make sure you have installed libunbound or libunbound-dev or the equivalent${ColourReset}")
|
else()
|
||||||
ENDIF()
|
die("Found libunbound includes, but could not find libunbound library. Please make sure you have installed libunbound or libunbound-dev or the equivalent")
|
||||||
ENDIF()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
|
@ -4,64 +4,27 @@ project (miniupnpc C)
|
||||||
set (MINIUPNPC_VERSION 1.9)
|
set (MINIUPNPC_VERSION 1.9)
|
||||||
set (MINIUPNPC_API_VERSION 10)
|
set (MINIUPNPC_API_VERSION 10)
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE)
|
|
||||||
if (WIN32)
|
|
||||||
set (DEFAULT_BUILD_TYPE MinSizeRel)
|
|
||||||
else (WIN32)
|
|
||||||
set (DEFAULT_BUILD_TYPE RelWithDebInfo)
|
|
||||||
endif(WIN32)
|
|
||||||
set (CMAKE_BUILD_TYPE ${DEFAULT_BUILD_TYPE} CACHE STRING
|
|
||||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
|
|
||||||
FORCE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
|
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
|
||||||
option (UPNPC_BUILD_SHARED "Build shared library" TRUE)
|
option (UPNPC_BUILD_SHARED "Build shared library" TRUE)
|
||||||
if (NOT WIN32)
|
|
||||||
option (UPNPC_BUILD_TESTS "Build test executables" TRUE)
|
|
||||||
endif (NOT WIN32)
|
|
||||||
option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
|
option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
|
||||||
|
|
||||||
mark_as_advanced (NO_GETADDRINFO)
|
mark_as_advanced (NO_GETADDRINFO)
|
||||||
|
|
||||||
if (NO_GETADDRINFO)
|
if (NO_GETADDRINFO)
|
||||||
add_definitions (-DNO_GETADDRINFO)
|
add_definitions (-DNO_GETADDRINFO)
|
||||||
endif (NO_GETADDRINFO)
|
endif ()
|
||||||
|
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
|
add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
|
||||||
add_definitions (-D_BSD_SOURCE -D_POSIX_C_SOURCE=1)
|
add_definitions (-D_BSD_SOURCE -D_POSIX_C_SOURCE=201112)
|
||||||
else (NOT WIN32)
|
else ()
|
||||||
add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends
|
add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends
|
||||||
endif (NOT WIN32)
|
endif ()
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||||
add_definitions (-D_DARWIN_C_SOURCE)
|
add_definitions (-D_DARWIN_C_SOURCE)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Set compiler specific build flags
|
|
||||||
if (CMAKE_COMPILER_IS_GNUC)
|
|
||||||
# Set our own default flags at first run.
|
|
||||||
if (NOT CONFIGURED)
|
|
||||||
|
|
||||||
if (NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
|
|
||||||
set (_PIC -fPIC)
|
|
||||||
endif (CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
|
|
||||||
|
|
||||||
set (CMAKE_C_FLAGS "${_PIC} -Wall $ENV{CFLAGS}" # CMAKE_C_FLAGS gets appended to the other C flags
|
|
||||||
CACHE STRING "Flags used by the C compiler during normal builds." FORCE)
|
|
||||||
set (CMAKE_C_FLAGS_DEBUG "-g -DDDEBUG"
|
|
||||||
CACHE STRING "Flags used by the C compiler during debug builds." FORCE)
|
|
||||||
set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG"
|
|
||||||
CACHE STRING "Flags used by the C compiler during release builds." FORCE)
|
|
||||||
set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG"
|
|
||||||
CACHE STRING "Flags used by the C compiler during release builds." FORCE)
|
|
||||||
set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG"
|
|
||||||
CACHE STRING "Flags used by the C compiler during release builds." FORCE)
|
|
||||||
|
|
||||||
endif (NOT CONFIGURED)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
configure_file (miniupnpcstrings.h.cmake ${CMAKE_BINARY_DIR}/miniupnpcstrings.h)
|
configure_file (miniupnpcstrings.h.cmake ${CMAKE_BINARY_DIR}/miniupnpcstrings.h)
|
||||||
include_directories (${CMAKE_BINARY_DIR})
|
include_directories (${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
@ -80,16 +43,16 @@ set (MINIUPNPC_SOURCES
|
||||||
receivedata.c
|
receivedata.c
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
|
if (NOT WIN32)
|
||||||
set (MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c)
|
set (MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c)
|
||||||
endif (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
|
endif ()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set_source_files_properties (${MINIUPNPC_SOURCES} PROPERTIES
|
set_source_files_properties (${MINIUPNPC_SOURCES} PROPERTIES
|
||||||
COMPILE_DEFINITIONS MINIUPNP_STATICLIB
|
COMPILE_DEFINITIONS MINIUPNP_STATICLIB
|
||||||
COMPILE_DEFINITIONS MINIUPNP_EXPORTS
|
COMPILE_DEFINITIONS MINIUPNP_EXPORTS
|
||||||
)
|
)
|
||||||
endif (WIN32)
|
endif ()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
# find_library (WINSOCK2_LIBRARY NAMES ws2_32 WS2_32 Ws2_32)
|
# find_library (WINSOCK2_LIBRARY NAMES ws2_32 WS2_32 Ws2_32)
|
||||||
|
@ -97,63 +60,31 @@ if (WIN32)
|
||||||
set(WINSOCK2_LIBRARY ws2_32)
|
set(WINSOCK2_LIBRARY ws2_32)
|
||||||
set(IPHLPAPI_LIBRARY iphlpapi)
|
set(IPHLPAPI_LIBRARY iphlpapi)
|
||||||
set (LDLIBS ${WINSOCK2_LIBRARY} ${IPHLPAPI_LIBRARY} ${LDLIBS})
|
set (LDLIBS ${WINSOCK2_LIBRARY} ${IPHLPAPI_LIBRARY} ${LDLIBS})
|
||||||
#elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris")
|
endif ()
|
||||||
# find_library (SOCKET_LIBRARY NAMES socket)
|
|
||||||
# find_library (NSL_LIBRARY NAMES nsl)
|
|
||||||
# find_library (RESOLV_LIBRARY NAMES resolv)
|
|
||||||
# set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS})
|
|
||||||
endif (WIN32)
|
|
||||||
|
|
||||||
if (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED)
|
if (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED)
|
||||||
message (FATAL "Both shared and static libraries are disabled!")
|
message (FATAL "Both shared and static libraries are disabled!")
|
||||||
endif (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED)
|
endif ()
|
||||||
|
|
||||||
if (UPNPC_BUILD_STATIC)
|
if (UPNPC_BUILD_STATIC)
|
||||||
add_library (upnpc-static STATIC ${MINIUPNPC_SOURCES})
|
add_library (upnpc-static STATIC ${MINIUPNPC_SOURCES})
|
||||||
|
set_target_properties (upnpc-static PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||||
set_target_properties (upnpc-static PROPERTIES OUTPUT_NAME "miniupnpc")
|
set_target_properties (upnpc-static PROPERTIES OUTPUT_NAME "miniupnpc")
|
||||||
target_link_libraries (upnpc-static ${LDLIBS})
|
target_link_libraries (upnpc-static ${LDLIBS})
|
||||||
set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-static)
|
set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-static)
|
||||||
set (UPNPC_LIBRARY_TARGET upnpc-static)
|
set (UPNPC_LIBRARY_TARGET upnpc-static)
|
||||||
endif (UPNPC_BUILD_STATIC)
|
endif ()
|
||||||
|
|
||||||
if (UPNPC_BUILD_SHARED)
|
if (UPNPC_BUILD_SHARED)
|
||||||
add_library (upnpc-shared SHARED ${MINIUPNPC_SOURCES})
|
add_library (upnpc-shared SHARED ${MINIUPNPC_SOURCES})
|
||||||
|
set_target_properties (upnpc-shared PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||||
set_target_properties (upnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc")
|
set_target_properties (upnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc")
|
||||||
set_target_properties (upnpc-shared PROPERTIES VERSION ${MINIUPNPC_VERSION})
|
set_target_properties (upnpc-shared PROPERTIES VERSION ${MINIUPNPC_VERSION})
|
||||||
set_target_properties (upnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION})
|
set_target_properties (upnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION})
|
||||||
target_link_libraries (upnpc-shared ${LDLIBS})
|
target_link_libraries (upnpc-shared ${LDLIBS})
|
||||||
set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-shared)
|
set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-shared)
|
||||||
set (UPNPC_LIBRARY_TARGET upnpc-shared)
|
set (UPNPC_LIBRARY_TARGET upnpc-shared)
|
||||||
endif (UPNPC_BUILD_SHARED)
|
endif ()
|
||||||
|
|
||||||
if (UPNPC_BUILD_TESTS)
|
|
||||||
add_executable (testminixml testminixml.c minixml.c igd_desc_parse.c)
|
|
||||||
target_link_libraries (testminixml ${LDLIBS})
|
|
||||||
|
|
||||||
add_executable (minixmlvalid minixmlvalid.c minixml.c)
|
|
||||||
target_link_libraries (minixmlvalid ${LDLIBS})
|
|
||||||
|
|
||||||
add_executable (testupnpreplyparse testupnpreplyparse.c
|
|
||||||
minixml.c upnpreplyparse.c)
|
|
||||||
target_link_libraries (testupnpreplyparse ${LDLIBS})
|
|
||||||
|
|
||||||
add_executable (testigddescparse testigddescparse.c
|
|
||||||
igd_desc_parse.c minixml.c miniupnpc.c miniwget.c minissdpc.c
|
|
||||||
upnpcommands.c upnpreplyparse.c minisoap.c connecthostport.c
|
|
||||||
portlistingparse.c receivedata.c
|
|
||||||
)
|
|
||||||
target_link_libraries (testigddescparse ${LDLIBS})
|
|
||||||
|
|
||||||
add_executable (testminiwget testminiwget.c
|
|
||||||
miniwget.c miniupnpc.c minisoap.c upnpcommands.c minissdpc.c
|
|
||||||
upnpreplyparse.c minixml.c igd_desc_parse.c connecthostport.c
|
|
||||||
portlistingparse.c receivedata.c
|
|
||||||
)
|
|
||||||
target_link_libraries (testminiwget ${LDLIBS})
|
|
||||||
|
|
||||||
# set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} testminixml minixmlvalid testupnpreplyparse testigddescparse testminiwget)
|
|
||||||
endif (UPNPC_BUILD_TESTS)
|
|
||||||
|
|
||||||
|
|
||||||
install (TARGETS ${UPNPC_INSTALL_TARGETS}
|
install (TARGETS ${UPNPC_INSTALL_TARGETS}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
|
@ -161,7 +92,7 @@ install (TARGETS ${UPNPC_INSTALL_TARGETS}
|
||||||
ARCHIVE DESTINATION lib${LIB_SUFFIX}
|
ARCHIVE DESTINATION lib${LIB_SUFFIX}
|
||||||
)
|
)
|
||||||
install (FILES
|
install (FILES
|
||||||
miniupnpc.h
|
miniupnpc.h
|
||||||
miniwget.h
|
miniwget.h
|
||||||
upnpcommands.h
|
upnpcommands.h
|
||||||
igd_desc_parse.h
|
igd_desc_parse.h
|
||||||
|
@ -173,6 +104,4 @@ install (FILES
|
||||||
DESTINATION include/miniupnpc
|
DESTINATION include/miniupnpc
|
||||||
)
|
)
|
||||||
|
|
||||||
set (CONFIGURED YES CACHE INTERNAL "")
|
|
||||||
|
|
||||||
# vim: ts=2:sw=2
|
# vim: ts=2:sw=2
|
||||||
|
|
|
@ -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 ()
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,218 @@
|
||||||
|
include(CheckIncludeFile)
|
||||||
|
include(CheckFunctionExists)
|
||||||
|
include(CheckSymbolExists)
|
||||||
|
include(CheckTypeSize)
|
||||||
|
|
||||||
|
# Need expat.
|
||||||
|
|
||||||
|
check_include_file(arpa/inet.h HAVE_ARPA_INET_H)
|
||||||
|
check_include_file(endian.h HAVE_ENDIAN_H)
|
||||||
|
check_include_file(dlfcn.h HAVE_DLFCN_H)
|
||||||
|
check_include_file(event.h HAVE_EVENT_H)
|
||||||
|
check_include_file(getopt.h HAVE_GETOPT_H)
|
||||||
|
check_include_file(glob.h HAVE_GLOB_H)
|
||||||
|
check_include_file(grp.h HAVE_GRP_H)
|
||||||
|
check_include_file(inttypes.h HAVE_INTTYPES_H)
|
||||||
|
check_include_file(iphlpapi.h HAVE_IPHLPAPI_H)
|
||||||
|
check_include_file(login_cap.h HAVE_LOGIN_CAP_H)
|
||||||
|
check_include_file(memory.h HAVE_MEMORY_H)
|
||||||
|
check_include_file(netdb.h HAVE_NETDB_H)
|
||||||
|
check_include_file(netinet/in.h HAVE_NETINET_IN_H)
|
||||||
|
check_include_file(pwd.h HAVE_PWD_H)
|
||||||
|
check_include_file(stdarg.h HAVE_STDARG_H)
|
||||||
|
check_include_file(stdbool.h HAVE_STDBOOL_H)
|
||||||
|
check_include_file(stdint.h HAVE_STDINT_H)
|
||||||
|
check_include_file(stdlib.h HAVE_STDLIB_H)
|
||||||
|
check_include_file(strings.h HAVE_STRINGS_H)
|
||||||
|
check_include_file(string.h HAVE_STRING_H)
|
||||||
|
check_include_file(sys/param.h HAVE_SYS_PARAM_H)
|
||||||
|
check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
|
||||||
|
check_include_file(sys/sha2.h HAVE_SYS_SHA2_H)
|
||||||
|
check_include_file(sys/socket.h HAVE_SYS_SOCKET_H)
|
||||||
|
check_include_file(sys/stat.h HAVE_SYS_STAT_H)
|
||||||
|
check_include_file(sys/sysctl.h HAVE_SYS_SYSCTL_H)
|
||||||
|
check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
||||||
|
check_include_file(sys/uio.h HAVE_SYS_UIO_H)
|
||||||
|
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)
|
||||||
|
check_include_file(syslog.h HAVE_SYSLOG_H)
|
||||||
|
check_include_file(time.h HAVE_TIME_H)
|
||||||
|
check_include_file(unistd.h HAVE_UNISTD_H)
|
||||||
|
check_include_file(vfork.h HAVE_VFORK_H)
|
||||||
|
check_include_file(windows.h HAVE_WINDOWS_H)
|
||||||
|
check_include_file(winsock2.h HAVE_WINSOCK2_H)
|
||||||
|
check_include_file(ws2tcpip.h HAVE_WS2TCPIP_H)
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES
|
||||||
|
iphlpapi
|
||||||
|
ws2_32)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
check_function_exists(arc4random HAVE_ARC4RANDOM)
|
||||||
|
check_function_exists(arc4random_uniform HAVE_ARC4RANDOM_UNIFORM)
|
||||||
|
check_function_exists(chown HAVE_CHOWN)
|
||||||
|
check_function_exists(chroot HAVE_CHROOT)
|
||||||
|
check_function_exists(ctime_r HAVE_CTIME_R)
|
||||||
|
check_function_exists(daemon HAVE_DAEMON)
|
||||||
|
check_function_exists(endprotoent HAVE_ENDPROTOENT)
|
||||||
|
check_function_exists(endservent HAVE_ENDSERVENT)
|
||||||
|
check_function_exists(fnctl HAVE_FNCTL)
|
||||||
|
check_function_exists(fork HAVE_FORK)
|
||||||
|
check_function_exists(fseeko HAVE_FSEEKO)
|
||||||
|
check_function_exists(getentropy HAVE_GETENTROPY)
|
||||||
|
check_function_exists(getpwnam HAVE_GETPWNAM)
|
||||||
|
check_function_exists(getrlimit HAVE_GETRLIMIT)
|
||||||
|
check_function_exists(glob HAVE_GLOB)
|
||||||
|
check_function_exists(gmtime_r HAVE_GMTIME_R)
|
||||||
|
check_function_exists(inet_aton HAVE_INET_ATON)
|
||||||
|
check_function_exists(inet_ntop HAVE_INET_NTOP)
|
||||||
|
check_function_exists(inet_pton HAVE_INET_PTON)
|
||||||
|
check_function_exists(initgroups HAVE_INITGROUPS)
|
||||||
|
check_function_exists(ioctlsocket HAVE_IOCTLSOCKET)
|
||||||
|
check_function_exists(kill HAVE_KILL)
|
||||||
|
check_function_exists(localtime_r HAVE_LOCALTIME_R)
|
||||||
|
check_function_exists(malloc HAVE_MALLOC)
|
||||||
|
check_function_exists(memmove HAVE_MEMMOVE)
|
||||||
|
check_function_exists(random HAVE_RANDOM)
|
||||||
|
check_function_exists(recvmsg HAVE_RECVMSG)
|
||||||
|
check_function_exists(sbrk HAVE_SBRK)
|
||||||
|
check_function_exists(sendmsg HAVE_SENDMSG)
|
||||||
|
check_function_exists(setregid HAVE_SETREGID)
|
||||||
|
check_function_exists(setresgid HAVE_SETRESGID)
|
||||||
|
check_function_exists(setresuid HAVE_SETRESUID)
|
||||||
|
check_function_exists(setreuid HAVE_SETREUID)
|
||||||
|
check_function_exists(setrlimit HAVE_SETRLIMIT)
|
||||||
|
check_function_exists(setsid HAVE_SETSID)
|
||||||
|
check_function_exists(setusercontent HAVE_SETUSERCONTENT)
|
||||||
|
check_function_exists(sigprocmask HAVE_SIGPROCMASK)
|
||||||
|
check_function_exists(sleep HAVE_SLEEP)
|
||||||
|
check_function_exists(snprintf HAVE_SNPRINTF)
|
||||||
|
check_function_exists(socketpair HAVE_SOCKETPAIR)
|
||||||
|
check_function_exists(srandom HAVE_SRANDOM)
|
||||||
|
check_function_exists(strftime HAVE_STRFTIME)
|
||||||
|
check_function_exists(strlcat HAVE_STRLCAT)
|
||||||
|
check_function_exists(strlcpy HAVE_STRLCPY)
|
||||||
|
check_function_exists(strptime HAVE_STRPTIME)
|
||||||
|
check_function_exists(strlcpy HAVE_STRLCPY)
|
||||||
|
check_function_exists(tzset HAVE_TZSET)
|
||||||
|
check_function_exists(usleep HAVE_USLEEP)
|
||||||
|
check_function_exists(writev HAVE_WRITEV)
|
||||||
|
check_function_exists(_beginthreadex HAVE__BEGINTHREADEX)
|
||||||
|
|
||||||
|
set(getaddrinfo_headers)
|
||||||
|
if (HAVE_NETDB_H)
|
||||||
|
list(APPEND getaddrinfo_headers "netdb.h")
|
||||||
|
endif ()
|
||||||
|
if (HAVE_WS2TCPIP_H)
|
||||||
|
list(APPEND getaddrinfo_headers "ws2tcpip.h")
|
||||||
|
endif ()
|
||||||
|
check_symbol_exists(getaddrinfo "${getaddrinfo_headers}" HAVE_GETADDRINFO)
|
||||||
|
|
||||||
|
check_function_exists(getaddrinfo HAVE_GETADDRINFO)
|
||||||
|
|
||||||
|
function (check_type_exists type variable header default)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "${header}")
|
||||||
|
check_type_size("${type}" "${variable}")
|
||||||
|
|
||||||
|
if (NOT HAVE_${type})
|
||||||
|
set("${variable}" "${default}" PARENT_SCOPE)
|
||||||
|
else ()
|
||||||
|
set("${variable}" "FALSE" PARENT_SCOPE)
|
||||||
|
endif ()
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "time.h")
|
||||||
|
check_type_size(time_t SIZEOF_TIME_T)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES)
|
||||||
|
|
||||||
|
check_type_exists(gid_t gid_t "sys/types.h" int)
|
||||||
|
check_type_exists(in_addr_t in_addr_t "netinet/in.h" uint32_t)
|
||||||
|
check_type_exists(in_port_t in_port_t "netinet/in.h" uint16_t)
|
||||||
|
check_type_exists(int16_t int16_t "sys/types.h" short)
|
||||||
|
check_type_exists(int32_t int32_t "sys/types.h" int)
|
||||||
|
check_type_exists(int64_t int64_t "sys/types.h" __int64)
|
||||||
|
check_type_exists(int8_t int8_t "sys/types.h" char)
|
||||||
|
check_type_exists(pid_t pid_t "sys/types.h" int)
|
||||||
|
check_type_exists(rlim_t rlim_t "sys/resource.h" "unsigned long")
|
||||||
|
check_type_exists(ssize_t ssize_t "sys/types.h" int)
|
||||||
|
check_type_exists(uid_t uid_t "sys/types.h" int)
|
||||||
|
check_type_exists(uint16_t uint16_t "sys/types.h" "unsigned short")
|
||||||
|
check_type_exists(uint32_t uint32_t "sys/types.h" "unsigned int")
|
||||||
|
check_type_exists(uint64_t uint64_t "sys/types.h" "unsigned long long")
|
||||||
|
check_type_exists(uint8_t uint8_t "sys/types.h" "unsigned char")
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
set(UB_ON_WINDOWS 1)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
set(inline __inline)
|
||||||
|
set(__func__ __FUNCTION__)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (NOT HAVE_VFORK)
|
||||||
|
set(vfork fork)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# XXX: Check for broken malloc()?
|
||||||
|
# XXX: Check for broken memcmp()?
|
||||||
|
# XXX: Check for broken vfork()?
|
||||||
|
# XXX: Check for one-arg mkdir?
|
||||||
|
|
||||||
|
check_symbol_exists(PTHREAD_PRIO_INHERIT "pthread.h" HAVE_PTHREAD_PRIO_INHERIT)
|
||||||
|
check_symbol_exists(pthread_rwlock_t "pthread.h" HAVE_PTHREAD_RWLOCK_T)
|
||||||
|
check_symbol_exists(pthread_spinlock_t "pthread.h" HAVE_PTHREAD_SPINLOCK_T)
|
||||||
|
|
||||||
|
# openssl
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES
|
||||||
|
${OPENSSL_INCLUDE_DIR})
|
||||||
|
|
||||||
|
check_include_file(openssl/conf.h HAVE_OPENSSL_CONF_H)
|
||||||
|
check_include_file(openssl/engine.h HAVE_OPENSSL_ENGINE_H)
|
||||||
|
check_include_file(openssl/err.h HAVE_OPENSSL_ERR_H)
|
||||||
|
check_include_file(openssl/rand.h HAVE_OPENSSL_RAND_H)
|
||||||
|
check_include_file(openssl/ssl.h HAVE_OPENSSL_SSL_H)
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
|
||||||
|
check_symbol_exists(NID_secp384r1 "openssl/evp.h" HAVE_DECL_NID_SECP384R1)
|
||||||
|
check_symbol_exists(NID_X9_62_prime256v1 "openssl/evp.h" HAVE_DECL_NID_X9_62_PRIME256V1)
|
||||||
|
check_symbol_exists(sk_SSL_COMP_pop_free "openssl/ssl.h" HAVE_DECL_SK_SSL_COMP_POP_FREE)
|
||||||
|
check_symbol_exists(SSL_COMP_get_compression_methods "openssl/ssl.h" HAVE_DECL_SSL_COMP_GET_COMPRESSION_METHODS)
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES
|
||||||
|
${OPENSSL_LIBRARIES})
|
||||||
|
|
||||||
|
check_function_exists(EVP_sha1 HAVE_EVP_SHA1)
|
||||||
|
check_function_exists(EVP_sha256 HAVE_EVP_SHA256)
|
||||||
|
check_function_exists(EVP_sha512 HAVE_EVP_SHA512)
|
||||||
|
check_function_exists(FIPS_mode HAVE_FIPS_MODE)
|
||||||
|
check_function_exists(HMAC_CTX_init HAVE_HMAC_CTX_INIT)
|
||||||
|
check_function_exists(OPENSSL_config HAVE_OPENSSL_CONFIG)
|
||||||
|
check_function_exists(SHA512_Update HAVE_SHA512_UPDATE)
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
|
||||||
|
set(UNBOUND_CONFIGFILE "${CMAKE_INSTALL_PREFIX}/etc/unbound/unbound.conf"
|
||||||
|
CACHE STRING "default configuration file")
|
||||||
|
set(UNBOUND_USERNAME "unbound"
|
||||||
|
CACHE STRING "default user that unbound changes to")
|
||||||
|
set(UNBOUND_CHROOT_DIR "${CMAKE_INSTALL_PREFIX}/etc/unbound"
|
||||||
|
CACHE STRING "default directory to chroot to")
|
||||||
|
set(UNBOUND_RUN_DIR "${CMAKE_INSTALL_PREFIX}/etc/unbound"
|
||||||
|
CACHE STRING "default directory to chroot to")
|
||||||
|
set(UNBOUND_SHARE_DIR "${CMAKE_INSTALL_PREFIX}/etc/unbound"
|
||||||
|
CACHE STRING "default directory with shared data")
|
||||||
|
set(UNBOUND_PIDFILE "${CMAKE_INSTALL_PREFIX}/etc/unbound/unbound.pid"
|
||||||
|
CACHE STRING "default pathname to the pidfile")
|
||||||
|
|
||||||
|
# Copied from configure.ac.
|
||||||
|
set(WINVER 0x0502)
|
||||||
|
set(PACKAGE_VERSION "1.4.23")
|
||||||
|
set(PACKAGE_NAME "${PROJECT_NAME}")
|
||||||
|
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||||
|
set(MAXSYSLOGMSGLEN 10240)
|
||||||
|
|
||||||
|
# Make assumptions.
|
||||||
|
set(HAVE_WORKING_FORK ${HAVE_FORK})
|
||||||
|
set(HAVE_WORKING_VFORK ${HAVE_VFORK})
|
|
@ -28,59 +28,72 @@
|
||||||
#
|
#
|
||||||
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
||||||
|
|
||||||
add_definitions(-DSTATICLIB)
|
if (WIN32 OR STATIC)
|
||||||
# miniupnp changed their static define
|
add_definitions(-DSTATICLIB)
|
||||||
add_definitions(-DMINIUPNP_STATICLIB)
|
# miniupnp changed their static define
|
||||||
|
add_definitions(-DMINIUPNP_STATICLIB)
|
||||||
|
endif ()
|
||||||
|
|
||||||
file(GLOB_RECURSE COMMON common/*)
|
function (bitmonero_private_headers group)
|
||||||
file(GLOB_RECURSE CRYPTO crypto/*)
|
source_group("${group}\\Private"
|
||||||
file(GLOB_RECURSE CRYPTONOTE_CORE cryptonote_core/*)
|
FILES
|
||||||
file(GLOB_RECURSE CRYPTONOTE_PROTOCOL cryptonote_protocol/*)
|
${ARGN})
|
||||||
file(GLOB_RECURSE DAEMON daemon/*)
|
endfunction ()
|
||||||
file(GLOB_RECURSE P2P p2p/*)
|
|
||||||
file(GLOB_RECURSE RPC rpc/*)
|
|
||||||
file(GLOB_RECURSE SIMPLEWALLET simplewallet/*)
|
|
||||||
file(GLOB_RECURSE CONN_TOOL connectivity_tool/*)
|
|
||||||
file(GLOB_RECURSE WALLET wallet/*)
|
|
||||||
file(GLOB_RECURSE MINER miner/*)
|
|
||||||
file(GLOB MNEMONICS mnemonics/*)
|
|
||||||
|
|
||||||
source_group(common FILES ${COMMON})
|
function (bitmonero_install_headers subdir)
|
||||||
source_group(crypto FILES ${CRYPTO})
|
install(
|
||||||
source_group(cryptonote_core FILES ${CRYPTONOTE_CORE})
|
FILES ${ARGN}
|
||||||
source_group(cryptonote_protocol FILES ${CRYPTONOTE_PROTOCOL})
|
DESTINATION "include/${subdir}"
|
||||||
source_group(daemon FILES ${DAEMON})
|
COMPONENT development)
|
||||||
source_group(p2p FILES ${P2P})
|
endfunction ()
|
||||||
source_group(rpc FILES ${RPC})
|
|
||||||
source_group(simplewallet FILES ${SIMPLEWALLET})
|
|
||||||
source_group(connectivity-tool FILES ${CONN_TOOL})
|
|
||||||
source_group(wallet FILES ${WALLET})
|
|
||||||
source_group(simpleminer FILES ${MINER})
|
|
||||||
source_group(mnemonics FILES ${MNEMONICS})
|
|
||||||
|
|
||||||
add_library(common ${COMMON})
|
function (bitmonero_add_executable name)
|
||||||
add_library(crypto ${CRYPTO})
|
source_group("${name}"
|
||||||
add_library(cryptonote_core ${CRYPTONOTE_CORE})
|
FILES
|
||||||
add_library(mnemonics ${MNEMONICS})
|
${ARGN})
|
||||||
add_executable(daemon ${DAEMON} ${P2P} ${CRYPTONOTE_PROTOCOL})
|
|
||||||
add_executable(connectivity_tool ${CONN_TOOL})
|
|
||||||
add_executable(simpleminer ${MINER})
|
|
||||||
target_link_libraries(daemon rpc cryptonote_core crypto common ${UNBOUND_LIBRARY} ${UPNP_LIBRARIES} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(connectivity_tool cryptonote_core crypto common ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(simpleminer cryptonote_core crypto common ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
add_library(rpc ${RPC})
|
|
||||||
add_library(wallet ${WALLET})
|
|
||||||
target_link_libraries(wallet mnemonics)
|
|
||||||
add_executable(simplewallet ${SIMPLEWALLET} )
|
|
||||||
target_link_libraries(simplewallet wallet rpc cryptonote_core crypto common mnemonics ${UNBOUND_LIBRARY} ${UPNP_LIBRARIES} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
add_dependencies(daemon version)
|
|
||||||
add_dependencies(rpc version)
|
|
||||||
add_dependencies(simplewallet version)
|
|
||||||
|
|
||||||
set_property(TARGET common crypto cryptonote_core rpc wallet PROPERTY FOLDER "libs")
|
add_executable("${name}"
|
||||||
set_property(TARGET daemon simplewallet connectivity_tool simpleminer PROPERTY FOLDER "prog")
|
${ARGN})
|
||||||
if (STATIC)
|
target_link_libraries("${name}"
|
||||||
set_property(TARGET daemon simplewallet connectivity_tool simpleminer PROPERTY LINK_SEARCH_START_STATIC 1)
|
LINK_PRIVATE
|
||||||
set_property(TARGET daemon simplewallet connectivity_tool simpleminer PROPERTY LINK_SEARCH_END_STATIC 1)
|
${EXTRA_LIBRARIES})
|
||||||
endif()
|
set_property(TARGET "${name}"
|
||||||
set_property(TARGET daemon PROPERTY OUTPUT_NAME "bitmonerod")
|
PROPERTY
|
||||||
|
FOLDER "prog")
|
||||||
|
set_property(TARGET "${name}"
|
||||||
|
PROPERTY
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||||
|
|
||||||
|
if (STATIC)
|
||||||
|
set_property(TARGET "${name}"
|
||||||
|
PROPERTY
|
||||||
|
LINK_SEARCH_START_STATIC 1)
|
||||||
|
set_property(TARGET "${name}"
|
||||||
|
PROPERTY
|
||||||
|
LINK_SEARCH_END_STATIC 1)
|
||||||
|
endif ()
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
function (bitmonero_add_library name)
|
||||||
|
source_group("${name}"
|
||||||
|
FILES
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
add_library("${name}"
|
||||||
|
${ARGN})
|
||||||
|
set_property(TARGET "${name}"
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "libs")
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
add_subdirectory(common)
|
||||||
|
add_subdirectory(crypto)
|
||||||
|
add_subdirectory(cryptonote_core)
|
||||||
|
add_subdirectory(mnemonics)
|
||||||
|
add_subdirectory(rpc)
|
||||||
|
add_subdirectory(wallet)
|
||||||
|
|
||||||
|
add_subdirectory(connectivity_tool)
|
||||||
|
add_subdirectory(miner)
|
||||||
|
add_subdirectory(simplewallet)
|
||||||
|
add_subdirectory(daemon)
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(common_sources
|
||||||
|
base58.cpp
|
||||||
|
command_line.cpp
|
||||||
|
dns_utils.cpp
|
||||||
|
util.cpp)
|
||||||
|
|
||||||
|
set(common_headers)
|
||||||
|
|
||||||
|
set(common_private_headers
|
||||||
|
base58.h
|
||||||
|
boost_serialization_helper.h
|
||||||
|
command_line.h
|
||||||
|
dns_utils.h
|
||||||
|
int-util.h
|
||||||
|
pod-class.h
|
||||||
|
unordered_containers_boost_serialization.h
|
||||||
|
util.h
|
||||||
|
varint.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(common
|
||||||
|
${common_private_headers})
|
||||||
|
bitmonero_add_library(common
|
||||||
|
${common_sources}
|
||||||
|
${common_headers}
|
||||||
|
${common_private_headers})
|
||||||
|
target_link_libraries(common
|
||||||
|
LINK_PRIVATE
|
||||||
|
crypto
|
||||||
|
${UNBOUND_LIBRARY}
|
||||||
|
${Boost_DATE_TIME_LIBRARY}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
|
||||||
|
#bitmonero_install_headers(common
|
||||||
|
# ${common_headers})
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(connectivity_tool_sources
|
||||||
|
conn_tool.cpp)
|
||||||
|
|
||||||
|
set(connectivity_tool_private_headers)
|
||||||
|
|
||||||
|
bitmonero_add_executable(connectivity_tool
|
||||||
|
${connectivity_tool_sources}
|
||||||
|
${connectivity_tool_private_headers})
|
||||||
|
target_link_libraries(connectivity_tool
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
crypto
|
||||||
|
common
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY})
|
|
@ -0,0 +1,76 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(crypto_sources
|
||||||
|
aesb.c
|
||||||
|
blake256.c
|
||||||
|
chacha8.c
|
||||||
|
crypto-ops-data.c
|
||||||
|
crypto-ops.c
|
||||||
|
crypto.cpp
|
||||||
|
groestl.c
|
||||||
|
hash-extra-blake.c
|
||||||
|
hash-extra-groestl.c
|
||||||
|
hash-extra-jh.c
|
||||||
|
hash-extra-skein.c
|
||||||
|
hash.c
|
||||||
|
jh.c
|
||||||
|
keccak.c
|
||||||
|
oaes_lib.c
|
||||||
|
random.c
|
||||||
|
skein.c
|
||||||
|
slow-hash.c
|
||||||
|
tree-hash.c)
|
||||||
|
|
||||||
|
set(crypto_headers)
|
||||||
|
|
||||||
|
set(crypto_private_headers
|
||||||
|
blake256.h
|
||||||
|
chacha8.h
|
||||||
|
crypto-ops.h
|
||||||
|
crypto.h
|
||||||
|
generic-ops.h
|
||||||
|
groestl.h
|
||||||
|
groestl_tables.h
|
||||||
|
hash-ops.h
|
||||||
|
hash.h
|
||||||
|
initializer.h
|
||||||
|
jh.h
|
||||||
|
keccak.h
|
||||||
|
oaes_config.h
|
||||||
|
oaes_lib.h
|
||||||
|
random.h
|
||||||
|
skein.h
|
||||||
|
skein_port.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(crypto
|
||||||
|
${crypto_private_headers})
|
||||||
|
bitmonero_add_library(crypto
|
||||||
|
${crypto_sources}
|
||||||
|
${crypto_headers}
|
||||||
|
${crypto_private_headers})
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(cryptonote_core_sources
|
||||||
|
account.cpp
|
||||||
|
blockchain_storage.cpp
|
||||||
|
checkpoints.cpp
|
||||||
|
checkpoints_create.cpp
|
||||||
|
cryptonote_basic_impl.cpp
|
||||||
|
cryptonote_core.cpp
|
||||||
|
cryptonote_format_utils.cpp
|
||||||
|
difficulty.cpp
|
||||||
|
miner.cpp
|
||||||
|
tx_pool.cpp)
|
||||||
|
|
||||||
|
set(cryptonote_core_headers)
|
||||||
|
|
||||||
|
set(cryptonote_core_private_headers
|
||||||
|
account.h
|
||||||
|
account_boost_serialization.h
|
||||||
|
blockchain_storage.h
|
||||||
|
blockchain_storage_boost_serialization.h
|
||||||
|
checkpoints.h
|
||||||
|
checkpoints_create.h
|
||||||
|
connection_context.h
|
||||||
|
cryptonote_basic.h
|
||||||
|
cryptonote_basic_impl.h
|
||||||
|
cryptonote_boost_serialization.h
|
||||||
|
cryptonote_core.h
|
||||||
|
cryptonote_format_utils.h
|
||||||
|
cryptonote_stat_info.h
|
||||||
|
difficulty.h
|
||||||
|
miner.h
|
||||||
|
tx_extra.h
|
||||||
|
tx_pool.h
|
||||||
|
verification_context.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(cryptonote_core
|
||||||
|
${crypto_private_headers})
|
||||||
|
bitmonero_add_library(cryptonote_core
|
||||||
|
${cryptonote_core_sources}
|
||||||
|
${cryptonote_core_headers}
|
||||||
|
${cryptonote_core_private_headers})
|
||||||
|
target_link_libraries(cryptonote_core
|
||||||
|
LINK_PUBLIC
|
||||||
|
common
|
||||||
|
crypto
|
||||||
|
${Boost_DATE_TIME_LIBRARY}
|
||||||
|
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||||
|
${Boost_SERIALIZATION_LIBRARY}
|
||||||
|
LINK_PRIVATE
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
|
@ -0,0 +1,78 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(daemon_sources
|
||||||
|
daemon.cpp)
|
||||||
|
|
||||||
|
set(daemon_headers)
|
||||||
|
|
||||||
|
set(daemon_private_headers
|
||||||
|
daemon_commands_handler.h
|
||||||
|
|
||||||
|
# cryptonote_protocol
|
||||||
|
../cryptonote_protocol/blobdatatype.h
|
||||||
|
../cryptonote_protocol/cryptonote_protocol_defs.h
|
||||||
|
../cryptonote_protocol/cryptonote_protocol_handler.h
|
||||||
|
../cryptonote_protocol/cryptonote_protocol_handler.inl
|
||||||
|
../cryptonote_protocol/cryptonote_protocol_handler_common.h
|
||||||
|
|
||||||
|
# p2p
|
||||||
|
../p2p/net_node.h
|
||||||
|
../p2p/net_node.inl
|
||||||
|
../p2p/net_node_common.h
|
||||||
|
../p2p/net_peerlist.h
|
||||||
|
../p2p/net_peerlist_boost_serialization.h
|
||||||
|
../p2p/p2p_protocol_defs.h
|
||||||
|
../p2p/stdafx.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(daemon
|
||||||
|
${daemon_private_headers})
|
||||||
|
bitmonero_add_executable(daemon
|
||||||
|
${daemon_sources}
|
||||||
|
${daemon_headers}
|
||||||
|
${daemon_private_headers})
|
||||||
|
target_link_libraries(daemon
|
||||||
|
LINK_PRIVATE
|
||||||
|
rpc
|
||||||
|
cryptonote_core
|
||||||
|
crypto
|
||||||
|
common
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${UPNP_LIBRARIES}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
add_dependencies(daemon
|
||||||
|
version)
|
||||||
|
set_property(TARGET daemon
|
||||||
|
PROPERTY
|
||||||
|
OUTPUT_NAME "bitmonerod")
|
|
@ -0,0 +1,55 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(simpleminer_sources
|
||||||
|
simpleminer.cpp)
|
||||||
|
|
||||||
|
set(simpleminer_headers)
|
||||||
|
|
||||||
|
set(simpleminer_private_headers
|
||||||
|
simpleminer.h
|
||||||
|
simpleminer_protocol_defs.h
|
||||||
|
target_helper.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(simpleminer
|
||||||
|
${simpleminer_private_headers})
|
||||||
|
bitmonero_add_executable(simpleminer
|
||||||
|
${simpleminer_sources}
|
||||||
|
${simpleminer_headers}
|
||||||
|
${simpleminer_private_headers})
|
||||||
|
target_link_libraries(simpleminer
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
common
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXTRA_LIBRARIES})
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(mnemonics_sources
|
||||||
|
electrum-words.cpp)
|
||||||
|
|
||||||
|
set(mnemonics_headers)
|
||||||
|
|
||||||
|
set(mnemonics_private_headers
|
||||||
|
electrum-words.h
|
||||||
|
english.h
|
||||||
|
japanese.h
|
||||||
|
language_base.h
|
||||||
|
old_english.h
|
||||||
|
portuguese.h
|
||||||
|
singleton.h
|
||||||
|
spanish.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(mnemonics
|
||||||
|
${mnemonics_private_headers})
|
||||||
|
bitmonero_add_library(mnemonics
|
||||||
|
${mnemonics_sources}
|
||||||
|
${mnemonics_headers}
|
||||||
|
${mnemonics_private_headers})
|
||||||
|
target_link_libraries(mnemonics
|
||||||
|
LINK_PRIVATE
|
||||||
|
${Boost_SYSTEM_LIBRARY})
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(rpc_sources
|
||||||
|
core_rpc_server.cpp)
|
||||||
|
|
||||||
|
set(rpc_headers)
|
||||||
|
|
||||||
|
set(rpc_private_headers
|
||||||
|
core_rpc_server.h
|
||||||
|
core_rpc_server_commands_defs.h
|
||||||
|
core_rpc_server_error_codes.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(rpc
|
||||||
|
${rpc_private_headers})
|
||||||
|
bitmonero_add_library(rpc
|
||||||
|
${rpc_sources}
|
||||||
|
${rpc_headers}
|
||||||
|
${rpc_private_headers})
|
||||||
|
target_link_libraries(rpc
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
add_dependencies(rpc
|
||||||
|
version)
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(simplewallet_sources
|
||||||
|
simplewallet.cpp
|
||||||
|
password_container.cpp)
|
||||||
|
|
||||||
|
set(simplewallet_headers)
|
||||||
|
|
||||||
|
set(simplewallet_private_headers
|
||||||
|
simplewallet.h
|
||||||
|
password_container.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(simplewallet
|
||||||
|
${simplewallet_private_headers})
|
||||||
|
bitmonero_add_executable(simplewallet
|
||||||
|
${simplewallet_sources}
|
||||||
|
${simplewallet_headers}
|
||||||
|
${simplewallet_private_headers})
|
||||||
|
target_link_libraries(simplewallet
|
||||||
|
LINK_PRIVATE
|
||||||
|
wallet
|
||||||
|
rpc
|
||||||
|
cryptonote_core
|
||||||
|
crypto
|
||||||
|
common
|
||||||
|
mnemonics
|
||||||
|
${UNBOUND_LIBRARY}
|
||||||
|
${UPNP_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
add_dependencies(simplewallet
|
||||||
|
version)
|
|
@ -68,7 +68,7 @@ else()
|
||||||
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
|
message(STATUS "The most recent tag was at ${TAGGEDCOMMIT}")
|
||||||
|
|
||||||
# Check if we're building that tagged commit or a different one
|
# Check if we're building that tagged commit or a different one
|
||||||
if(${COMMIT} MATCHES ${TAGGEDCOMMIT})
|
if(COMMIT MATCHES TAGGEDCOMMIT)
|
||||||
message(STATUS "You are building a tagged release")
|
message(STATUS "You are building a tagged release")
|
||||||
set(VERSIONTAG "release")
|
set(VERSIONTAG "release")
|
||||||
else()
|
else()
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(wallet_sources
|
||||||
|
wallet2.cpp
|
||||||
|
wallet_rpc_server.cpp)
|
||||||
|
|
||||||
|
set(wallet_headers)
|
||||||
|
|
||||||
|
set(wallet_private_headers
|
||||||
|
wallet2.h
|
||||||
|
wallet_errors.h
|
||||||
|
wallet_rpc_server.h
|
||||||
|
wallet_rpc_server_commands_defs.h
|
||||||
|
wallet_rpc_server_error_codes.h)
|
||||||
|
|
||||||
|
bitmonero_private_headers(wallet
|
||||||
|
${wallet_private_headers})
|
||||||
|
bitmonero_add_library(wallet
|
||||||
|
${wallet_sources}
|
||||||
|
${wallet_headers}
|
||||||
|
${wallet_private_headers})
|
||||||
|
target_link_libraries(wallet
|
||||||
|
LINK_PUBLIC
|
||||||
|
cryptonote_core
|
||||||
|
mnemonics
|
||||||
|
LINK_PRIVATE
|
||||||
|
${Boost_SERIALIZATION_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
|
@ -28,64 +28,62 @@
|
||||||
#
|
#
|
||||||
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
# Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
||||||
|
|
||||||
add_definitions(-DSTATICLIB)
|
if (WIN32 AND STATIC)
|
||||||
# miniupnp changed their static define
|
add_definitions(-DSTATICLIB)
|
||||||
add_definitions(-DMINIUPNP_STATICLIB)
|
# miniupnp changed their static define
|
||||||
|
add_definitions(-DMINIUPNP_STATICLIB)
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_subdirectory(gtest)
|
find_package(GTest)
|
||||||
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
|
|
||||||
|
|
||||||
file(GLOB_RECURSE CORE_TESTS core_tests/*)
|
if (GTest_FOUND)
|
||||||
file(GLOB_RECURSE CRYPTO_TESTS crypto/*)
|
include_directories(SYSTEM ${GTEST_INCLUDE_DIRS})
|
||||||
file(GLOB_RECURSE FUNC_TESTS functional_tests/*)
|
else ()
|
||||||
file(GLOB_RECURSE PERFORMANCE_TESTS performance_tests/*)
|
add_subdirectory(gtest)
|
||||||
file(GLOB_RECURSE CORE_PROXY core_proxy/*)
|
include_directories(SYSTEM "${gtest_SOURCE_DIR}/include" "${gtest_SOURCE_DIR}")
|
||||||
file(GLOB_RECURSE UNIT_TESTS unit_tests/*)
|
|
||||||
|
|
||||||
source_group(core_tests FILES ${CORE_TESTS})
|
# Emulate the FindGTest module's variable.
|
||||||
source_group(crypto_tests FILES ${CRYPTO_TESTS})
|
set(GTEST_MAIN_LIBRARIES gtest_main)
|
||||||
source_group(functional_tests FILES ${FUNC_TESTS})
|
|
||||||
source_group(performance_tests FILES ${PERFORMANCE_TESTS})
|
# Ignore some warnings when building gtest binaries.
|
||||||
source_group(core_proxy FILES ${CORE_PROXY})
|
if(NOT MSVC)
|
||||||
source_group(unit_tests FILES ${UNIT_TESTS})
|
set_property(TARGET gtest gtest_main
|
||||||
|
APPEND_STRING
|
||||||
|
PROPERTY
|
||||||
|
COMPILE_FLAGS " -Wno-undef -Wno-sign-compare")
|
||||||
|
endif()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
add_subdirectory(core_tests)
|
||||||
|
add_subdirectory(crypto)
|
||||||
|
add_subdirectory(functional_tests)
|
||||||
|
add_subdirectory(performance_tests)
|
||||||
|
add_subdirectory(core_proxy)
|
||||||
|
add_subdirectory(unit_tests)
|
||||||
|
add_subdirectory(difficulty)
|
||||||
|
add_subdirectory(hash)
|
||||||
|
add_subdirectory(net_load_tests)
|
||||||
|
|
||||||
# add_subdirectory(daemon_tests)
|
# add_subdirectory(daemon_tests)
|
||||||
|
|
||||||
add_executable(coretests ${CORE_TESTS})
|
set(hash_targets_sources
|
||||||
add_executable(crypto-tests ${CRYPTO_TESTS})
|
hash-target.cpp)
|
||||||
add_executable(difficulty-tests difficulty/difficulty.cpp)
|
|
||||||
add_executable(hash-tests hash/main.cpp)
|
|
||||||
add_executable(hash-target-tests hash-target.cpp)
|
|
||||||
add_executable(functional_tests ${FUNC_TESTS})
|
|
||||||
add_executable(performance_tests ${PERFORMANCE_TESTS})
|
|
||||||
add_executable(core_proxy ${CORE_PROXY})
|
|
||||||
add_executable(unit_tests ${UNIT_TESTS})
|
|
||||||
add_executable(net_load_tests_clt net_load_tests/clt.cpp)
|
|
||||||
add_executable(net_load_tests_srv net_load_tests/srv.cpp)
|
|
||||||
|
|
||||||
target_link_libraries(core_proxy cryptonote_core common crypto ${UNBOUND_LIBRARY} ${UPNP_LIBRARIES} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
set(hash_targets_headers)
|
||||||
target_link_libraries(coretests cryptonote_core common crypto ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(difficulty-tests cryptonote_core)
|
|
||||||
target_link_libraries(functional_tests cryptonote_core wallet common crypto ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(hash-tests crypto)
|
|
||||||
target_link_libraries(hash-target-tests crypto cryptonote_core)
|
|
||||||
target_link_libraries(performance_tests cryptonote_core common crypto ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(unit_tests gtest_main rpc cryptonote_core wallet crypto common ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(net_load_tests_clt cryptonote_core common crypto gtest_main ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
target_link_libraries(net_load_tests_srv cryptonote_core common crypto gtest_main ${UNBOUND_LIBRARY} ${Boost_LIBRARIES} ${EXTRA_LIBRARIES})
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
add_executable(hash-target-tests
|
||||||
set_property(TARGET gtest gtest_main unit_tests net_load_tests_clt net_load_tests_srv APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-sign-compare")
|
${hash_targets_sources}
|
||||||
endif()
|
${hash_targets_headers})
|
||||||
|
target_link_libraries(hash-target-tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core)
|
||||||
|
set_property(TARGET hash-target-tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME hash-target
|
||||||
|
COMMAND hash-target-tests)
|
||||||
|
|
||||||
add_custom_target(tests DEPENDS coretests difficulty hash performance_tests core_proxy unit_tests)
|
add_custom_target(tests DEPENDS coretests difficulty hash performance_tests core_proxy unit_tests)
|
||||||
set_property(TARGET coretests crypto-tests functional_tests difficulty-tests gtest gtest_main hash-tests hash-target-tests performance_tests core_proxy unit_tests tests net_load_tests_clt net_load_tests_srv PROPERTY FOLDER "tests")
|
set_property(TARGET gtest gtest_main hash-target-tests tests PROPERTY FOLDER "tests")
|
||||||
|
|
||||||
add_test(coretests coretests --generate_and_play_test_data)
|
|
||||||
add_test(crypto crypto-tests ${CMAKE_CURRENT_SOURCE_DIR}/crypto/tests.txt)
|
|
||||||
add_test(difficulty difficulty-tests ${CMAKE_CURRENT_SOURCE_DIR}/difficulty/data.txt)
|
|
||||||
foreach(hash IN ITEMS fast slow tree extra-blake extra-groestl extra-jh extra-skein)
|
|
||||||
add_test(hash-${hash} hash-tests ${hash} ${CMAKE_CURRENT_SOURCE_DIR}/hash/tests-${hash}.txt)
|
|
||||||
endforeach(hash)
|
|
||||||
add_test(hash-target hash-target-tests)
|
|
||||||
add_test(unit_tests unit_tests)
|
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(core_proxy_sources
|
||||||
|
core_proxy.cpp)
|
||||||
|
|
||||||
|
set(core_proxy_headers
|
||||||
|
core_proxy.h)
|
||||||
|
|
||||||
|
add_executable(core_proxy
|
||||||
|
${core_proxy_sources}
|
||||||
|
${core_proxy_headers})
|
||||||
|
target_link_libraries(core_proxy
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
${UPNP_LIBRARIES}
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXPAT_LIBRARIES})
|
||||||
|
set_property(TARGET core_proxy
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
|
@ -0,0 +1,74 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(core_tests_sources
|
||||||
|
block_reward.cpp
|
||||||
|
block_validation.cpp
|
||||||
|
chain_split_1.cpp
|
||||||
|
chain_switch_1.cpp
|
||||||
|
chaingen.cpp
|
||||||
|
chaingen001.cpp
|
||||||
|
chaingen_main.cpp
|
||||||
|
double_spend.cpp
|
||||||
|
integer_overflow.cpp
|
||||||
|
ring_signature_1.cpp
|
||||||
|
transaction_tests.cpp
|
||||||
|
tx_validation.cpp)
|
||||||
|
|
||||||
|
set(core_tests_headers
|
||||||
|
block_reward.h
|
||||||
|
block_validation.h
|
||||||
|
chain_split_1.h
|
||||||
|
chain_switch_1.h
|
||||||
|
chaingen.h
|
||||||
|
chaingen_tests_list.h
|
||||||
|
double_spend.h
|
||||||
|
double_spend.inl
|
||||||
|
integer_overflow.h
|
||||||
|
ring_signature_1.h
|
||||||
|
transaction_tests.h
|
||||||
|
tx_validation.h)
|
||||||
|
|
||||||
|
add_executable(coretests
|
||||||
|
${core_tests_sources}
|
||||||
|
${core_tests_headers})
|
||||||
|
target_link_libraries(coretests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXPAT_LIBRARIES}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
set_property(TARGET coretests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME coretests
|
||||||
|
COMMAND coretests --generate_and_play_test_data)
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(crypto_sources
|
||||||
|
crypto-ops-data.c
|
||||||
|
crypto-ops.c
|
||||||
|
crypto.cpp
|
||||||
|
hash.c
|
||||||
|
main.cpp
|
||||||
|
random.c)
|
||||||
|
|
||||||
|
set(crypto_headers
|
||||||
|
crypto-tests.h)
|
||||||
|
|
||||||
|
add_executable(crypto-tests
|
||||||
|
${crypto_sources}
|
||||||
|
${crypto_headers})
|
||||||
|
target_link_libraries(crypto-tests)
|
||||||
|
set_property(TARGET crypto-tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME crypto
|
||||||
|
COMMAND crypto-tests "${CMAKE_CURRENT_SOURCE_DIR}/tests.txt")
|
|
@ -1,5 +1,51 @@
|
||||||
add_executable(transfers transfers.cpp)
|
# Copyright (c) 2014, The Monero Project
|
||||||
target_link_libraries(transfers useragent rpc cryptonote_core crypto common epee gtest_main ${Boost_LIBRARIES})
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test_transfers)
|
set(transfers_sources
|
||||||
add_custom_target(test_transfers COMMAND transfers WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test_transfers)
|
transfers.cpp)
|
||||||
|
|
||||||
|
set(transfers_headers)
|
||||||
|
|
||||||
|
add_executable(transfers
|
||||||
|
${transfers_sources}
|
||||||
|
${transfers_headers})
|
||||||
|
target_link_libraries(transfers
|
||||||
|
LINK_PRIVATE
|
||||||
|
useragent
|
||||||
|
rpc
|
||||||
|
cryptonote_core
|
||||||
|
crypto
|
||||||
|
common
|
||||||
|
epee
|
||||||
|
${GTEST_MAIN_LIBRARIES}
|
||||||
|
${Boost_LIBRARIES})
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_transfers")
|
||||||
|
add_custom_target(test_transfers
|
||||||
|
COMMAND transfers
|
||||||
|
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_transfers")
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(difficulty_sources
|
||||||
|
difficulty.cpp)
|
||||||
|
|
||||||
|
set(difficulty_headers)
|
||||||
|
|
||||||
|
add_executable(difficulty-tests
|
||||||
|
${difficulty_sources}
|
||||||
|
${difficulty_headers})
|
||||||
|
target_link_libraries(difficulty-tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core)
|
||||||
|
set_property(TARGET difficulty-tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME difficulty
|
||||||
|
COMMAND difficulty-tests "${CMAKE_CURRENT_SOURCE_DIR}/data.txt")
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(functional_tests_sources
|
||||||
|
main.cpp
|
||||||
|
transactions_flow_test.cpp
|
||||||
|
transactions_generation_from_blockchain.cpp)
|
||||||
|
|
||||||
|
set(functional_tests_headers
|
||||||
|
transactions_flow_test.h
|
||||||
|
transactions_generation_from_blockchain.h)
|
||||||
|
|
||||||
|
add_executable(functional_tests
|
||||||
|
${functional_tests_sources}
|
||||||
|
${functional_tests_headers})
|
||||||
|
target_link_libraries(functional_tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
wallet
|
||||||
|
common
|
||||||
|
crypto
|
||||||
|
${UNBOUND_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
set_property(TARGET functional_tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(hash_sources
|
||||||
|
main.cpp)
|
||||||
|
|
||||||
|
set(hash_headers)
|
||||||
|
|
||||||
|
add_executable(hash-tests
|
||||||
|
${hash_sources}
|
||||||
|
${hash_headers})
|
||||||
|
target_link_libraries(hash-tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
crypto)
|
||||||
|
set_property(TARGET hash-tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
foreach (hash IN ITEMS fast slow tree extra-blake extra-groestl extra-jh extra-skein)
|
||||||
|
add_test(
|
||||||
|
NAME "hash-${hash}"
|
||||||
|
COMMAND hash-tests "${hash}" "${CMAKE_CURRENT_SOURCE_DIR}/tests-${hash}.txt")
|
||||||
|
endforeach ()
|
|
@ -0,0 +1,74 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(clt_sources
|
||||||
|
clt.cpp)
|
||||||
|
|
||||||
|
set(clt_headers
|
||||||
|
net_load_tests.h)
|
||||||
|
|
||||||
|
add_executable(net_load_tests_clt
|
||||||
|
${clt_sources}
|
||||||
|
${clt_headers})
|
||||||
|
target_link_libraries(net_load_tests_clt
|
||||||
|
LINK_PRIVATE
|
||||||
|
${GTEST_MAIN_LIBRARIES}
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_DATE_TIME_LIBRARY}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
|
||||||
|
set(srv_sources
|
||||||
|
srv.cpp)
|
||||||
|
|
||||||
|
set(srv_headers
|
||||||
|
net_load_tests.h)
|
||||||
|
|
||||||
|
add_executable(net_load_tests_srv
|
||||||
|
${srv_sources}
|
||||||
|
${srv_headers})
|
||||||
|
target_link_libraries(net_load_tests_srv
|
||||||
|
LINK_PRIVATE
|
||||||
|
${GTEST_MAIN_LIBRARIES}
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_DATE_TIME_LIBRARY}
|
||||||
|
${Boost_FILESYSTEM_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
|
||||||
|
set_property(TARGET net_load_tests_clt net_load_tests_srv
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
if(NOT MSVC)
|
||||||
|
set_property(TARGET net_load_tests_clt net_load_tests_srv APPEND_STRING
|
||||||
|
PROPERTY
|
||||||
|
COMPILE_FLAGS " -Wno-undef -Wno-sign-compare")
|
||||||
|
endif()
|
|
@ -0,0 +1,61 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(performance_tests_sources
|
||||||
|
main.cpp)
|
||||||
|
|
||||||
|
set(performance_tests_headers
|
||||||
|
check_ring_signature.h
|
||||||
|
cn_slow_hash.h
|
||||||
|
construct_tx.h
|
||||||
|
derive_public_key.h
|
||||||
|
derive_secret_key.h
|
||||||
|
generate_key_derivation.h
|
||||||
|
generate_key_image.h
|
||||||
|
generate_key_image_helper.h
|
||||||
|
is_out_to_acc.h
|
||||||
|
multi_tx_test_base.h
|
||||||
|
performance_tests.h
|
||||||
|
performance_utils.h
|
||||||
|
single_tx_test_base.h)
|
||||||
|
|
||||||
|
add_executable(performance_tests
|
||||||
|
${performance_tests_sources}
|
||||||
|
${performance_tests_headers})
|
||||||
|
target_link_libraries(performance_tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
common
|
||||||
|
crypto
|
||||||
|
${UNBOUND_LIBRARY}
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
set_property(TARGET performance_tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Copyright (c) 2014, The Monero Project
|
||||||
|
#
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
# permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
# conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer in the documentation and/or other
|
||||||
|
# materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# 3. Neither the name of the copyright holder nor the names of its contributors may be
|
||||||
|
# used to endorse or promote products derived from this software without specific
|
||||||
|
# prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||||
|
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||||
|
# THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
set(unit_tests_sources
|
||||||
|
address_from_url.cpp
|
||||||
|
base58.cpp
|
||||||
|
block_reward.cpp
|
||||||
|
chacha8.cpp
|
||||||
|
checkpoints.cpp
|
||||||
|
decompose_amount_into_digits.cpp
|
||||||
|
dns_resolver.cpp
|
||||||
|
epee_boosted_tcp_server.cpp
|
||||||
|
epee_levin_protocol_handler_async.cpp
|
||||||
|
get_xtype_from_string.cpp
|
||||||
|
main.cpp
|
||||||
|
mnemonics.cpp
|
||||||
|
mul_div.cpp
|
||||||
|
parse_amount.cpp
|
||||||
|
serialization.cpp
|
||||||
|
slow_memmem.cpp
|
||||||
|
test_format_utils.cpp
|
||||||
|
test_peerlist.cpp
|
||||||
|
test_protocol_pack.cpp)
|
||||||
|
|
||||||
|
set(unit_tests_headers
|
||||||
|
unit_tests_utils.h)
|
||||||
|
|
||||||
|
add_executable(unit_tests
|
||||||
|
${unit_tests_sources}
|
||||||
|
${unit_tests_headers})
|
||||||
|
target_link_libraries(unit_tests
|
||||||
|
LINK_PRIVATE
|
||||||
|
cryptonote_core
|
||||||
|
rpc
|
||||||
|
wallet
|
||||||
|
${GTEST_MAIN_LIBRARIES}
|
||||||
|
${Boost_CHRONO_LIBRARY}
|
||||||
|
${Boost_REGEX_LIBRARY}
|
||||||
|
${Boost_SYSTEM_LIBRARY}
|
||||||
|
${Boost_THREAD_LIBRARY}
|
||||||
|
${EXTRA_LIBRARIES})
|
||||||
|
set_property(TARGET unit_tests
|
||||||
|
PROPERTY
|
||||||
|
FOLDER "tests")
|
||||||
|
|
||||||
|
if (NOT MSVC)
|
||||||
|
set_property(TARGET unit_tests
|
||||||
|
APPEND_STRING
|
||||||
|
PROPERTY
|
||||||
|
COMPILE_FLAGS " -Wno-undef -Wno-sign-compare")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
add_test(
|
||||||
|
NAME unit_tests
|
||||||
|
COMMAND unit_tests)
|
|
@ -0,0 +1,33 @@
|
||||||
|
function (write_static_version_header hash)
|
||||||
|
set(VERSIONTAG "${hash}")
|
||||||
|
configure_file("src/version.h.in" "version/version.h")
|
||||||
|
add_custom_target(version ALL)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/version")
|
||||||
|
find_package(Git QUIET)
|
||||||
|
if ("$Format:$" STREQUAL "")
|
||||||
|
# We're in a tarball; use hard-coded variables.
|
||||||
|
write_static_version_header("release")
|
||||||
|
elseif (GIT_FOUND OR Git_FOUND)
|
||||||
|
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
|
||||||
|
set(extra_output)
|
||||||
|
if (CMAKE_GENERATOR MATCHES "Ninja")
|
||||||
|
# Ninja will not rerun the command every time if the file doesn't change,
|
||||||
|
# so inject this bogus output so that it always runs.
|
||||||
|
set(extra_output "${CMAKE_SOURCE_DIR}/.force-git-version-check")
|
||||||
|
endif ()
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_BINARY_DIR}/version/version.h"
|
||||||
|
${extra_output}
|
||||||
|
COMMAND "${CMAKE_COMMAND}"
|
||||||
|
"-D" "GIT=${GIT_EXECUTABLE}"
|
||||||
|
"-D" "TO=${CMAKE_BINARY_DIR}/version/version.h"
|
||||||
|
"-P" "src/version.cmake"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||||
|
add_custom_target(version ALL
|
||||||
|
DEPENDS "${CMAKE_BINARY_DIR}/version/version.h")
|
||||||
|
else()
|
||||||
|
message(STATUS "WARNING: Git was not found!")
|
||||||
|
write_static_version_header("unknown")
|
||||||
|
endif ()
|
Loading…
Reference in New Issue