2014-02-12 11:45:03 +00:00
#
# Defines fc library target.
2012-09-08 02:50:37 +00:00
PROJECT ( fc )
2014-02-12 11:45:03 +00:00
CMAKE_MINIMUM_REQUIRED ( VERSION 2.8.12 )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
MESSAGE ( STATUS "Configuring project fc located in: ${CMAKE_CURRENT_SOURCE_DIR}" )
SET ( CMAKE_AUTOMOC OFF )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
# Setup module path to make visible used CMake extensions
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/GitVersionGen" )
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
2012-09-08 02:50:37 +00:00
2014-04-01 11:54:54 +00:00
INCLUDE ( GetPrerequisites )
2012-09-08 02:50:37 +00:00
INCLUDE ( VersionMacros )
INCLUDE ( SetupTargetMacros )
2014-02-12 11:45:03 +00:00
INCLUDE ( GetGitRevisionDescription )
2012-09-08 02:50:37 +00:00
2014-05-20 22:02:20 +00:00
get_git_head_revision ( GIT_REFSPEC FC_GIT_REVISION_SHA )
get_git_unix_timestamp ( FC_GIT_REVISION_UNIX_TIMESTAMP )
2014-01-12 14:34:29 +00:00
2012-09-08 02:50:37 +00:00
SET ( DEFAULT_HEADER_INSTALL_DIR include/\ ${ target } )
SET ( DEFAULT_LIBRARY_INSTALL_DIR lib/ )
SET ( DEFAULT_EXECUTABLE_INSTALL_DIR bin/ )
SET ( CMAKE_DEBUG_POSTFIX _debug )
2013-06-05 19:19:00 +00:00
SET ( BUILD_SHARED_LIBS NO )
2015-06-12 13:50:56 +00:00
SET ( ECC_IMPL secp256k1 CACHE STRING "secp256k1 or openssl or mixed" )
2012-09-08 02:50:37 +00:00
2014-04-01 11:54:54 +00:00
set ( platformBitness 32 )
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( platformBitness 64 )
endif ( )
2014-02-12 11:45:03 +00:00
SET ( ORIGINAL_LIB_SUFFIXES ${ CMAKE_FIND_LIBRARY_SUFFIXES } )
2012-09-08 02:50:37 +00:00
2014-04-01 11:54:54 +00:00
SET ( BOOST_COMPONENTS )
2014-07-03 02:36:10 +00:00
LIST ( APPEND BOOST_COMPONENTS thread date_time system filesystem program_options signals serialization chrono unit_test_framework context locale iostreams )
2015-04-27 12:57:45 +00:00
SET ( Boost_USE_STATIC_LIBS ON CACHE STRING "ON or OFF" )
2014-04-01 11:54:54 +00:00
2015-05-27 15:26:04 +00:00
2015-03-10 20:15:55 +00:00
IF ( ECC_IMPL STREQUAL openssl )
2015-06-15 18:38:33 +00:00
SET ( ECC_REST src/crypto/elliptic_impl_pub.cpp )
2015-03-10 20:15:55 +00:00
ELSE ( ECC_IMPL STREQUAL openssl )
2015-06-15 18:38:33 +00:00
SET ( ECC_LIB secp256k1 )
IF ( ECC_IMPL STREQUAL mixed )
SET ( ECC_REST src/crypto/elliptic_impl_priv.cpp src/crypto/elliptic_impl_pub.cpp )
ELSE ( ECC_IMPL STREQUAL mixed )
SET ( ECC_REST src/crypto/elliptic_impl_priv.cpp )
ENDIF ( ECC_IMPL STREQUAL mixed )
2015-03-10 20:15:55 +00:00
ENDIF ( ECC_IMPL STREQUAL openssl )
2015-03-07 13:48:45 +00:00
2015-06-13 17:39:43 +00:00
# Configure secp256k1-zkp
2015-06-25 17:57:10 +00:00
if ( WIN32 )
# autoconf won't work here, hard code the defines
set ( SECP256K1_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/secp256k1-zkp" )
2015-06-26 15:14:02 +00:00
2015-06-25 17:57:10 +00:00
file ( GLOB SECP256K1_SOURCES "${SECP256K1_DIR}/src/secp256k1.c" )
add_library ( secp256k1 ${ SECP256K1_SOURCES } )
2015-06-26 15:14:02 +00:00
2015-06-25 17:57:10 +00:00
target_include_directories ( secp256k1 PRIVATE "${SECP256K1_DIR}" PUBLIC "${SECP256K1_DIR}/include" )
2015-06-26 15:14:02 +00:00
2015-06-25 17:57:10 +00:00
set ( SECP256K1_BUILD_DEFINES
U S E _ F I E L D _ 1 0 X 2 6
U S E _ F I E L D _ I N V _ B U I L T I N
U S E _ N U M _ N O N E
U S E _ S C A L A R _ 8 X 3 2
U S E _ S C A L A R _ I N V _ B U I L T I N )
set_target_properties ( secp256k1 PROPERTIES COMPILE_DEFINITIONS "${SECP256K1_BUILD_DEFINES}" LINKER_LANGUAGE C )
else ( WIN32 )
include ( ExternalProject )
ExternalProject_Add ( project_secp256k1
P R E F I X $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p
S O U R C E _ D I R $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p
2015-06-25 18:28:01 +00:00
C O N F I G U R E _ C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p / c o n f i g u r e - - p r e f i x = $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p - - w i t h - b i g n u m = n o
2015-06-25 17:57:10 +00:00
B U I L D _ C O M M A N D m a k e
2015-06-25 23:34:25 +00:00
I N S T A L L _ C O M M A N D t r u e
2015-06-26 15:14:02 +00:00
B U I L D _ B Y P R O D U C T S $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p / s r c / p r o j e c t _ s e c p 2 5 6 k 1 - b u i l d / . l i b s / l i b s e c p 2 5 6 k 1 . a
2015-06-25 17:57:10 +00:00
)
ExternalProject_Add_Step ( project_secp256k1 autogen
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p
2015-06-25 23:34:25 +00:00
C O M M A N D $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p / a u t o g e n . s h
2015-06-25 17:57:10 +00:00
D E P E N D E R S c o n f i g u r e
)
2015-06-25 23:34:25 +00:00
ExternalProject_Get_Property ( project_secp256k1 binary_dir )
2015-06-25 17:57:10 +00:00
add_library ( secp256k1 STATIC IMPORTED )
2015-06-25 23:34:25 +00:00
set_property ( TARGET secp256k1 PROPERTY IMPORTED_LOCATION ${ binary_dir } /.libs/libsecp256k1 ${ CMAKE_STATIC_LIBRARY_SUFFIX } )
2015-06-25 17:57:10 +00:00
set_property ( TARGET secp256k1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${ CMAKE_CURRENT_SOURCE_DIR } /vendor/secp256k1-zkp/include )
add_dependencies ( secp256k1 project_secp256k1 )
endif ( WIN32 )
2015-06-13 17:39:43 +00:00
# End configure secp256k1-zkp
2012-09-08 02:50:37 +00:00
IF ( WIN32 )
2014-02-12 11:45:03 +00:00
MESSAGE ( STATUS "Configuring fc to build on Win32" )
2012-09-08 02:50:37 +00:00
2013-12-08 00:09:54 +00:00
set ( RPCRT4 Rpcrt4 )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
#boost
SET ( BOOST_ROOT $ENV{ BOOST_ROOT } )
2014-04-09 10:41:33 +00:00
# set(Boost_USE_DEBUG_PYTHON ON)
2014-02-12 11:45:03 +00:00
set ( Boost_USE_MULTITHREADED ON )
2014-04-10 11:23:13 +00:00
set ( BOOST_ALL_DYN_LINK OFF ) # force dynamic linking for all libraries
2014-04-01 11:54:54 +00:00
FIND_PACKAGE ( Boost 1.53 REQUIRED COMPONENTS ${ BOOST_COMPONENTS } )
2014-02-12 11:45:03 +00:00
# For Boost 1.53 on windows, coroutine was not in BOOST_LIBRARYDIR and do not need it to build, but if boost versin >= 1.54, find coroutine otherwise will cause link errors
IF ( NOT "${Boost_VERSION}" MATCHES "1.53(.*)" )
2014-02-13 03:40:47 +00:00
SET ( BOOST_LIBRARIES_TEMP ${ Boost_LIBRARIES } )
2014-02-12 11:45:03 +00:00
FIND_PACKAGE ( Boost 1.54 REQUIRED COMPONENTS coroutine )
2014-04-01 11:54:54 +00:00
LIST ( APPEND BOOST_COMPONENTS coroutine )
2014-02-13 03:40:47 +00:00
SET ( Boost_LIBRARIES ${ BOOST_LIBRARIES_TEMP } ${ Boost_LIBRARIES } )
2014-02-12 11:45:03 +00:00
ENDIF ( )
2014-06-17 14:05:46 +00:00
2014-09-20 23:15:28 +00:00
set ( PLATFORM_SPECIFIC_LIBS WS2_32.lib Userenv.lib )
2014-06-17 14:05:46 +00:00
# iphlpapi.lib
2012-09-08 02:50:37 +00:00
ELSE ( WIN32 )
2014-02-12 11:45:03 +00:00
MESSAGE ( STATUS "Configuring fc to build on Unix/Apple" )
2012-09-08 02:50:37 +00:00
2014-04-01 11:54:54 +00:00
LIST ( APPEND BOOST_COMPONENTS coroutine )
2015-06-13 17:39:43 +00:00
FIND_PACKAGE ( Boost 1.53 REQUIRED COMPONENTS ${ BOOST_COMPONENTS } )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
SET ( CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so" )
2012-09-08 02:50:37 +00:00
2014-12-08 13:57:36 +00:00
IF ( NOT APPLE )
# Linux or other unix
2014-02-12 11:45:03 +00:00
SET ( rt_library rt )
SET ( pthread_library pthread )
ENDIF ( NOT APPLE )
ENDIF ( WIN32 )
2013-06-05 19:19:00 +00:00
2015-04-29 19:41:55 +00:00
2014-06-17 15:35:13 +00:00
IF ( NOT "$ENV{OPENSSL_ROOT_DIR}" STREQUAL "" )
2014-05-23 15:37:20 +00:00
set ( OPENSSL_ROOT_DIR $ENV{ OPENSSL_ROOT_DIR } )
set ( OPENSSL_INCLUDE_DIR ${ OPENSSL_ROOT_DIR } /include )
message ( STATUS "Setting up OpenSSL root and include vars to ${OPENSSL_ROOT_DIR}, ${OPENSSL_INCLUDE_DIR}" )
2014-06-17 14:58:57 +00:00
ENDIF ( )
2014-05-23 15:37:20 +00:00
2014-06-17 15:35:13 +00:00
2015-03-26 20:51:10 +00:00
find_package ( OpenSSL REQUIRED )
2013-10-11 02:19:01 +00:00
2014-03-11 15:29:29 +00:00
set ( CMAKE_FIND_LIBRARY_SUFFIXES ${ ORIGINAL_LIB_SUFFIXES } )
2013-10-11 02:19:01 +00:00
2014-02-12 11:45:03 +00:00
option ( UNITY_BUILD OFF )
2013-10-11 02:19:01 +00:00
2013-06-05 19:19:00 +00:00
set ( fc_sources
2013-07-27 03:20:06 +00:00
s r c / u i n t 1 2 8 . c p p
2014-10-15 21:00:49 +00:00
s r c / r e a l 1 2 8 . c p p
2013-06-05 19:19:00 +00:00
s r c / v a r i a n t . c p p
s r c / e x c e p t i o n . c p p
s r c / v a r i a n t _ o b j e c t . c p p
s r c / t h r e a d / t h r e a d . c p p
2014-08-27 16:20:19 +00:00
s r c / t h r e a d / t h r e a d _ s p e c i f i c . c p p
2013-06-05 19:19:00 +00:00
s r c / t h r e a d / f u t u r e . c p p
s r c / t h r e a d / t a s k . c p p
2015-06-13 17:39:43 +00:00
s r c / t h r e a d / s p i n _ l o c k . c p p
s r c / t h r e a d / s p i n _ y i e l d _ l o c k . c p p
2013-06-05 19:19:00 +00:00
s r c / t h r e a d / m u t e x . c p p
2014-08-02 23:43:28 +00:00
s r c / t h r e a d / n o n _ p r e e m p t a b l e _ s c o p e _ c h e c k . c p p
2013-06-05 19:19:00 +00:00
s r c / a s i o . c p p
s r c / s t r i n g . c p p
2014-01-09 23:01:47 +00:00
s r c / s h a r e d _ p t r . c p p
s r c / t i m e . c p p
s r c / u t f 8 . c p p
2013-06-05 19:19:00 +00:00
s r c / i o / i o s t r e a m . c p p
s r c / i o / d a t a s t r e a m . c p p
s r c / i o / b u f f e r e d _ i o s t r e a m . c p p
s r c / i o / f s t r e a m . c p p
s r c / i o / s s t r e a m . c p p
s r c / i o / j s o n . c p p
s r c / i o / v a r i n t . c p p
2014-02-16 06:17:31 +00:00
s r c / i o / c o n s o l e . c p p
2013-06-05 19:19:00 +00:00
s r c / f i l e s y s t e m . c p p
s r c / i n t e r p r o c e s s / p r o c e s s . c p p
2013-11-24 18:00:21 +00:00
s r c / i n t e r p r o c e s s / s i g n a l s . c p p
2013-06-05 19:19:00 +00:00
s r c / i n t e r p r o c e s s / f i l e _ m a p p i n g . c p p
2013-07-04 01:35:30 +00:00
s r c / i n t e r p r o c e s s / m m a p _ s t r u c t . c p p
2015-04-29 19:41:55 +00:00
s r c / r p c / c l i . c p p
2015-06-30 19:28:12 +00:00
s r c / r p c / h t t p _ a p i . c p p
s r c / r p c / j s o n _ c o n n e c t i o n . c p p
s r c / r p c / s t a t e . c p p
s r c / r p c / w e b s o c k e t _ a p i . c p p
2015-06-13 17:39:43 +00:00
s r c / l o g / l o g _ m e s s a g e . c p p
2013-06-05 19:19:00 +00:00
s r c / l o g / l o g g e r . c p p
s r c / l o g / a p p e n d e r . c p p
s r c / l o g / c o n s o l e _ a p p e n d e r . c p p
s r c / l o g / f i l e _ a p p e n d e r . c p p
2015-01-20 21:13:26 +00:00
s r c / l o g / g e l f _ a p p e n d e r . c p p
2013-06-05 19:19:00 +00:00
s r c / l o g / l o g g e r _ c o n f i g . c p p
2013-08-13 16:58:55 +00:00
s r c / c r y p t o / o p e n s s l . c p p
s r c / c r y p t o / a e s . c p p
2013-07-17 15:50:45 +00:00
s r c / c r y p t o / c r c . c p p
s r c / c r y p t o / c i t y . c p p
2013-06-27 18:19:08 +00:00
s r c / c r y p t o / b a s e 3 2 . c p p
2013-07-17 19:00:13 +00:00
s r c / c r y p t o / b a s e 3 6 . c p p
2013-06-05 19:19:00 +00:00
s r c / c r y p t o / b a s e 5 8 . c p p
2013-07-17 19:00:13 +00:00
s r c / c r y p t o / b a s e 6 4 . c p p
2013-06-27 18:19:08 +00:00
s r c / c r y p t o / b i g i n t . c p p
2013-06-05 19:19:00 +00:00
s r c / c r y p t o / h e x . c p p
s r c / c r y p t o / s h a 1 . c p p
2013-07-28 14:49:45 +00:00
s r c / c r y p t o / r i p e m d 1 6 0 . c p p
2013-06-05 19:19:00 +00:00
s r c / c r y p t o / s h a 2 5 6 . c p p
2013-06-27 18:19:08 +00:00
s r c / c r y p t o / s h a 2 2 4 . c p p
s r c / c r y p t o / s h a 5 1 2 . c p p
2013-06-05 19:19:00 +00:00
s r c / c r y p t o / d h . c p p
s r c / c r y p t o / b l o w f i s h . c p p
2015-03-13 17:47:31 +00:00
s r c / c r y p t o / e l l i p t i c _ c o m m o n . c p p
$ { E C C _ R E S T }
2015-03-06 13:28:25 +00:00
s r c / c r y p t o / e l l i p t i c _ $ { E C C _ I M P L } . c p p
2014-04-06 23:16:14 +00:00
s r c / c r y p t o / r a n d . c p p
2013-06-05 19:19:00 +00:00
s r c / n e t w o r k / t c p _ s o c k e t . c p p
s r c / n e t w o r k / u d p _ s o c k e t . c p p
2014-06-26 03:32:09 +00:00
s r c / n e t w o r k / u d t _ s o c k e t . c p p
2013-06-05 19:19:00 +00:00
s r c / n e t w o r k / h t t p / h t t p _ c o n n e c t i o n . c p p
s r c / n e t w o r k / h t t p / h t t p _ s e r v e r . c p p
2015-03-26 20:51:10 +00:00
s r c / n e t w o r k / h t t p / w e b s o c k e t . c p p
2014-06-11 19:17:28 +00:00
s r c / n e t w o r k / n t p . c p p
2013-06-05 19:19:00 +00:00
s r c / n e t w o r k / i p . c p p
2014-04-17 16:00:52 +00:00
s r c / n e t w o r k / r a t e _ l i m i t i n g . c p p
2013-06-05 19:19:00 +00:00
s r c / n e t w o r k / r e s o l v e . c p p
s r c / n e t w o r k / u r l . c p p
2014-08-15 21:02:02 +00:00
s r c / n e t w o r k / g n t p . c p p
2013-08-13 16:58:55 +00:00
s r c / c o m p r e s s / s m a z . c p p
2015-02-16 20:07:24 +00:00
s r c / c o m p r e s s / z l i b . c p p
2013-06-27 18:45:11 +00:00
v e n d o r / c y o e n c o d e - 1 . 0 . 2 / s r c / C y o D e c o d e . c
v e n d o r / c y o e n c o d e - 1 . 0 . 2 / s r c / C y o E n c o d e . c
2013-06-05 19:19:00 +00:00
)
2014-01-12 14:34:29 +00:00
2015-06-13 17:39:43 +00:00
file ( GLOB_RECURSE fc_headers ${ CMAKE_CURRENT_SOURCE_DIR } *.hpp *.h )
2014-02-12 11:45:03 +00:00
2013-06-05 19:19:00 +00:00
set ( sources
$ { f c _ s o u r c e s }
)
2014-01-12 14:34:29 +00:00
2014-05-20 22:02:20 +00:00
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/src/git_revision.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp" @ONLY )
list ( APPEND sources "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp" )
2014-02-12 11:45:03 +00:00
list ( APPEND sources ${ fc_headers } )
2014-01-12 14:34:29 +00:00
2015-03-26 20:51:10 +00:00
add_subdirectory ( vendor/websocketpp )
2014-06-26 15:25:07 +00:00
add_subdirectory ( vendor/udt4 )
2012-10-26 05:03:47 +00:00
2014-03-14 15:04:37 +00:00
setup_library ( fc SOURCES ${ sources } LIBRARY_TYPE STATIC DONT_INSTALL_LIBRARY )
2013-02-05 04:08:48 +00:00
2015-04-29 19:41:55 +00:00
# begin readline stuff
find_package ( Curses )
find_package ( Readline )
file ( GLOB HEADERS "include/bts/cli/*.hpp" )
if ( READLINE_FOUND )
target_compile_definitions ( fc PRIVATE HAVE_READLINE )
set ( readline_libraries ${ Readline_LIBRARY } )
if ( CURSES_FOUND )
list ( APPEND readline_libraries ${ CURSES_LIBRARY } )
endif ( )
set ( readline_includes ${ Readline_INCLUDE_DIR } )
endif ( )
if ( WIN32 )
target_compile_definitions ( fc PRIVATE _CRT_NONSTDC_NO_DEPRECATE )
endif ( WIN32 )
# end readline stuff
2014-02-12 11:45:03 +00:00
IF ( WIN32 )
target_compile_definitions ( fc PUBLIC WIN32 NOMINMAX _WIN32_WINNT=0x0501 _CRT_SECURE_NO_WARNINGS
2015-06-13 17:39:43 +00:00
_ S C L _ S E R C U R E _ N O _ W A R N I N G S
2014-02-12 11:45:03 +00:00
# Needed to disable MSVC autolinking feature (#pragma comment)
B O O S T _ A L L _ N O _ L I B
2015-06-23 19:32:33 +00:00
# The current version of websockets doesn't correctly guess what 'chrono' implementation boost::asio uses
2015-06-17 15:03:45 +00:00
# on the recommended build platform of VC++12/boost_1.58. Force it here until websocket gets their
# autodetecting code to do the right thing.
_ W E B S O C K E T P P _ C P P 1 1 _ C H R O N O _
2014-02-12 11:45:03 +00:00
)
2014-03-08 23:48:19 +00:00
# Activate C++ exception handling, assume extern C calls don't throw
2015-06-13 17:39:43 +00:00
# Add /U options to be sure settings specific to dynamic boost link are ineffective
2014-04-10 11:23:13 +00:00
target_compile_options ( fc PUBLIC /EHsc /UBOOST_ALL_DYN_LINK /UBOOST_LINKING_PYTHON /UBOOST_DEBUG_PYTHON )
2014-02-12 11:45:03 +00:00
ELSE ( )
2014-05-22 08:52:30 +00:00
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall" )
2014-02-13 11:55:26 +00:00
2014-02-12 11:45:03 +00:00
IF ( APPLE )
2014-07-12 21:29:19 +00:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++ -Wall" )
2014-02-12 11:45:03 +00:00
ELSE ( )
2014-07-24 19:33:56 +00:00
if ( NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
target_compile_options ( fc PUBLIC -std=c++11 -Wall -fnon-call-exceptions )
endif ( )
2014-07-12 21:29:19 +00:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -fnon-call-exceptions" )
2014-02-12 11:45:03 +00:00
ENDIF ( )
ENDIF ( )
2015-06-13 17:39:43 +00:00
2014-02-12 11:45:03 +00:00
target_include_directories ( fc
P U B L I C $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / i n c l u d e
$ { B o o s t _ I N C L U D E _ D I R }
$ { O P E N S S L _ I N C L U D E _ D I R }
2015-04-29 19:41:55 +00:00
" $ { r e a d l i n e _ i n c l u d e s } "
2014-02-12 11:45:03 +00:00
P R I V A T E $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R }
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / b o o s t _ 1 . 5 1 / i n c l u d e
2015-06-13 17:39:43 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / c y o e n c o d e - 1 . 0 . 2 / s r c
2014-06-25 01:57:25 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / u d t 4 / s r c
2015-03-26 20:51:10 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / w e b s o c k e t p p
2015-06-13 17:39:43 +00:00
$ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / v e n d o r / s e c p 2 5 6 k 1 - z k p
2014-02-12 11:45:03 +00:00
)
2015-06-23 20:19:36 +00:00
#target_link_libraries( fc PUBLIC udt ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${ECC_LIB} )
target_link_libraries ( fc PUBLIC -L/usr/local/lib udt ${ Boost_LIBRARIES } ${ OPENSSL_LIBRARIES } ${ ZLIB_LIBRARIES } ${ PLATFORM_SPECIFIC_LIBS } ${ RPCRT4 } ${ CMAKE_DL_LIBS } ${ rt_library } ${ readline_libraries } ${ ECC_LIB } )
2013-08-13 16:58:55 +00:00
2015-05-19 14:02:37 +00:00
if ( MSVC )
set_source_files_properties ( src/network/http/websocket.cpp PROPERTIES COMPILE_FLAGS "/bigobj" )
endif ( MSVC )
2015-04-19 08:14:53 +00:00
IF ( NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY MATCHES "\\.(a|lib)$" )
2015-04-14 08:37:50 +00:00
IF ( WIN32 )
add_definitions ( /DBOOST_TEST_DYN_LINK )
ELSE ( WIN32 )
add_definitions ( -DBOOST_TEST_DYN_LINK )
ENDIF ( WIN32 )
ENDIF ( )
2015-03-09 22:50:20 +00:00
add_executable ( api tests/api.cpp )
target_link_libraries ( api fc )
2015-06-15 18:38:33 +00:00
if ( ECC_IMPL STREQUAL secp256k1 )
add_executable ( blind tests/blind.cpp )
target_link_libraries ( blind fc )
endif ( )
2015-06-10 22:34:19 +00:00
2015-03-26 20:51:10 +00:00
include_directories ( vendor/websocketpp )
2014-06-11 19:17:28 +00:00
add_executable ( ntp_test ntp_test.cpp )
2014-06-14 17:48:28 +00:00
target_link_libraries ( ntp_test fc )
2014-06-11 19:17:28 +00:00
2014-06-29 01:46:10 +00:00
add_executable ( task_cancel_test tests/task_cancel.cpp )
target_link_libraries ( task_cancel_test fc )
2015-03-09 22:50:20 +00:00
2015-05-12 16:58:47 +00:00
add_executable ( bloom_test tests/bloom_test.cpp )
target_link_libraries ( bloom_test fc )
2014-10-15 21:53:15 +00:00
add_executable ( real128_test tests/real128_test.cpp )
target_link_libraries ( real128_test fc )
2014-06-25 01:57:25 +00:00
2014-06-26 15:25:07 +00:00
add_executable ( udt_server tests/udts.cpp )
target_link_libraries ( udt_server fc udt )
2014-06-25 01:57:25 +00:00
2014-06-26 15:25:07 +00:00
add_executable ( udt_client tests/udtc.cpp )
target_link_libraries ( udt_client fc udt )
2014-06-25 01:57:25 +00:00
2014-12-11 06:43:37 +00:00
add_executable ( ecc_test tests/ecc_test.cpp )
target_link_libraries ( ecc_test fc )
2013-08-13 16:58:55 +00:00
#add_executable( test_compress tests/compress.cpp )
2014-02-12 11:45:03 +00:00
#target_link_libraries( test_compress fc )
2013-11-13 19:51:29 +00:00
#add_executable( test_aes tests/aes_test.cpp )
2014-02-12 11:45:03 +00:00
#target_link_libraries( test_aes fc ${rt_library} ${pthread_library} )
2013-08-19 18:44:13 +00:00
#add_executable( test_sleep tests/sleep.cpp )
2014-02-12 11:45:03 +00:00
#target_link_libraries( test_sleep fc )
2014-05-23 22:09:44 +00:00
#add_executable( test_rate_limiting tests/rate_limiting.cpp )
#target_link_libraries( test_rate_limiting fc )
2014-02-12 11:45:03 +00:00
2014-03-14 15:04:37 +00:00
if ( WIN32 )
2014-04-11 11:32:34 +00:00
# add addtional import library on windows platform
target_link_libraries ( fc PUBLIC crypt32.lib )
2014-03-14 15:04:37 +00:00
# now generate a list of the DLLs we're using to use during the install process
include ( ParseLibraryList )
PARSE_LIBRARY_LIST ( ${ Boost_LIBRARIES }
F O U N D p a r s e O k
D E B U G B o o s t _ L I B R A R I E S _ D E B U G
O P T B o o s t _ L I B R A R I E S _ R E L E A S E
G E N E R A L B o o s t _ L I B R A R I E S _ G E N E R A L )
2014-04-01 11:54:54 +00:00
#Variable will hold list of .pdb files generated for libraries the 'fc' module is linked to
set ( INTERFACE_LINK_PDB_RELEASE )
2014-03-14 15:04:37 +00:00
set ( SHARED_LIBRARIES_RELEASE )
foreach ( boost_import_lib ${ Boost_LIBRARIES_RELEASE } )
get_filename_component ( import_lib_name_root ${ boost_import_lib } NAME_WE )
get_filename_component ( import_lib_path ${ boost_import_lib } PATH )
set ( boost_dll "${import_lib_path}/${import_lib_name_root}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
2014-04-01 11:54:54 +00:00
set ( boost_lib_pdb "${import_lib_name_root}.pdb" )
FILE ( GLOB_RECURSE boost_pdb_paths "${import_lib_path}/../../bin.v2/*/${boost_lib_pdb}" )
foreach ( p ${ boost_pdb_paths } )
if ( p MATCHES ".*/address-model-${platformBitness}/" )
GP_APPEND_UNIQUE ( INTERFACE_LINK_PDB_RELEASE ${ p } )
endif ( )
endforeach ( )
2014-04-10 11:23:13 +00:00
if ( EXISTS "${boost_dll}" )
set ( SHARED_LIBRARIES_RELEASE ${ SHARED_LIBRARIES_RELEASE } "${boost_dll}" )
endif ( )
2014-03-14 15:04:37 +00:00
endforeach ( )
2015-06-13 17:39:43 +00:00
2014-04-01 11:54:54 +00:00
set ( INTERFACE_LINK_PDB_DEBUG )
2014-03-14 15:04:37 +00:00
set ( SHARED_LIBRARIES_DEBUG )
foreach ( boost_import_lib ${ Boost_LIBRARIES_DEBUG } )
get_filename_component ( import_lib_name_root ${ boost_import_lib } NAME_WE )
get_filename_component ( import_lib_path ${ boost_import_lib } PATH )
set ( boost_dll "${import_lib_path}/${import_lib_name_root}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
2014-04-01 11:54:54 +00:00
set ( boost_lib_pdb "${import_lib_name_root}.pdb" )
FILE ( GLOB_RECURSE boost_pdb_paths "${import_lib_path}/../../bin.v2/*/${boost_lib_pdb}" )
foreach ( p ${ boost_pdb_paths } )
if ( p MATCHES ".*/address-model-${platformBitness}/" )
GP_APPEND_UNIQUE ( INTERFACE_LINK_PDB_DEBUG ${ p } )
endif ( )
endforeach ( )
2014-04-10 11:23:13 +00:00
if ( EXISTS "${boost_dll}" )
set ( SHARED_LIBRARIES_DEBUG ${ SHARED_LIBRARIES_DEBUG } "${boost_dll}" )
endif ( )
2014-03-14 15:04:37 +00:00
endforeach ( )
2014-09-11 20:30:03 +00:00
# message(STATUS "openssl_libraries=${OPENSSL_LIBRARIES}")
2014-03-14 15:04:37 +00:00
foreach ( lib ${ OPENSSL_LIBRARIES } )
get_filename_component ( lib_name ${ lib } NAME_WE )
if ( ${ lib_name } STREQUAL "libeay32" )
get_filename_component ( lib_dir ${ lib } DIRECTORY )
2014-03-14 21:14:02 +00:00
get_filename_component ( openssl_dir "${lib_dir}/.." REALPATH )
set ( eaydll "${openssl_dir}/bin/${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
2014-04-01 11:54:54 +00:00
set ( eay_pdb "${openssl_dir}/bin/${lib_name}.pdb" )
message ( STATUS "eay=${eaydll}" )
if ( EXISTS ${ eay_pdb } )
GP_APPEND_UNIQUE ( INTERFACE_LINK_PDB_RELEASE ${ eay_pdb } )
GP_APPEND_UNIQUE ( INTERFACE_LINK_PDB_DEBUG ${ eay_pdb } )
endif ( )
2014-03-14 21:14:02 +00:00
set ( SHARED_LIBRARIES_DEBUG ${ SHARED_LIBRARIES_DEBUG } "${eaydll}" )
set ( SHARED_LIBRARIES_RELEASE ${ SHARED_LIBRARIES_RELEASE } "${eaydll}" )
2014-03-14 15:04:37 +00:00
endif ( )
endforeach ( )
2014-04-01 11:54:54 +00:00
set_property ( TARGET fc PROPERTY INTERFACE_LINK_PDB_RELEASE ${ INTERFACE_LINK_PDB_RELEASE } )
set_property ( TARGET fc PROPERTY INTERFACE_LINK_PDB_DEBUG ${ INTERFACE_LINK_PDB_DEBUG } )
2014-03-14 15:04:37 +00:00
set_property ( TARGET fc PROPERTY SHARED_LIBRARIES_DEBUG ${ SHARED_LIBRARIES_DEBUG } )
set_property ( TARGET fc PROPERTY SHARED_LIBRARIES_RELEASE ${ SHARED_LIBRARIES_RELEASE } )
2014-04-01 11:54:54 +00:00
2014-03-14 15:04:37 +00:00
endif ( WIN32 )
2015-01-23 08:37:18 +00:00
IF ( APPLE )
# As of 10.10 yosemite, the OpenSSL static libraries shipped with os x have a dependency
# on zlib, so any time you link in openssl you also need to link zlib. . We really want to detect whether openssl was configured with the --no-zlib
# option or not when it was built, but that's difficult to do in practice, so we
# just always try to link it in on mac.
find_package ( ZLIB REQUIRED )
ENDIF ( APPLE )
2014-06-03 13:55:33 +00:00
SET ( OPENSSL_CONF_TARGET )
IF ( DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY )
SET ( OPENSSL_CONF_TARGET ${ CMAKE_RUNTIME_OUTPUT_DIRECTORY } )
ELSE ( )
SET ( OPENSSL_CONF_TARGET ${ CMAKE_CURRENT_BINARY_DIR } )
ENDIF ( )
2014-06-03 15:16:29 +00:00
IF ( WIN32 )
2014-06-02 15:31:28 +00:00
SET ( POST_BUILD_STEP_COMMANDS ${ POST_BUILD_STEP_COMMANDS }
2014-06-03 15:16:29 +00:00
C O M M A N D $ { C M A K E _ C O M M A N D } - E c o p y _ i f _ d i f f e r e n t " $ { O P E N S S L _ R O O T _ D I R } / s s l / o p e n s s l . c n f " " $ { O P E N S S L _ C O N F _ T A R G E T } / o p e n s s l . c n f " )
ENDIF ( WIN32 )
2014-06-02 15:31:28 +00:00
2015-06-13 17:39:43 +00:00
ADD_CUSTOM_COMMAND ( TARGET fc POST_BUILD ${ POST_BUILD_STEP_COMMANDS }
2014-06-02 15:31:28 +00:00
C O M M E N T " C o p y i n g O p e n S S L / s s l / o p e n s s l . c n f i n t o t a r g e t d i r e c t o r y . "
)
2014-02-12 11:45:03 +00:00
MESSAGE ( STATUS "Finished fc module configuration..." )