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
INCLUDE ( VersionMacros )
INCLUDE ( SetupTargetMacros )
2014-02-12 11:45:03 +00:00
INCLUDE ( GetGitRevisionDescription )
2012-09-08 02:50:37 +00:00
2014-01-12 14:34:29 +00:00
get_git_head_revision ( GIT_REFSPEC GIT_SHA3 )
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 )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
SET ( ORIGINAL_LIB_SUFFIXES ${ CMAKE_FIND_LIBRARY_SUFFIXES } )
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
2014-02-12 11:45:03 +00:00
#You need to set OPENSSL_ROOT environment variable for your system on WIN32
message ( STATUS "Setting up OpenSSL root and include vars on Win32 platform" )
set ( OPENSSL_ROOT_DIR $ENV{ OPENSSL_ROOT } )
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 } )
set ( Boost_USE_DEBUG_PYTHON ON )
set ( Boost_USE_MULTITHREADED ON )
set ( Boost_USE_STATIC_LIBS OFF )
set ( BOOST_ALL_DYN_LINK ON ) # force dynamic linking for all libraries
FIND_PACKAGE ( Boost 1.53 REQUIRED COMPONENTS thread date_time system filesystem program_options signals serialization chrono unit_test_framework context )
# 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-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-01-22 13:28:21 +00:00
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-02-12 11:45:03 +00:00
SET ( Boost_USE_STATIC_LIBS ON )
FIND_PACKAGE ( Boost 1.53 REQUIRED COMPONENTS thread date_time system filesystem program_options signals serialization chrono unit_test_framework context coroutine )
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-02-13 05:21:08 +00:00
include_directories ( ${ Boost_INCLUDE_DIR } )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /vendor/salsa20 )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /include )
include_directories ( ${ CMAKE_CURRENT_SOURCE_DIR } /vendor/easylzma/src )
IF ( NOT APPLE ) # then unix
2014-02-12 11:45:03 +00:00
# Unix build:
SET ( SALSA_SRC vendor/salsa20/salsa20.s )
SET ( rt_library rt )
SET ( pthread_library pthread )
ENDIF ( NOT APPLE )
ENDIF ( WIN32 )
2013-06-05 19:19:00 +00:00
2013-10-11 02:19:01 +00:00
FIND_PACKAGE ( OpenSSL )
2014-02-12 11:45:03 +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
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
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
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
s r c / t h r e a d / m u t e x . c p p
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
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
2013-06-05 19:19:00 +00:00
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 / l o g / l o g _ m e s s a g e . c p p
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
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
2013-06-07 00:37:04 +00:00
s r c / c r y p t o / e l l i p t i c . c p p
2013-08-24 08:25:03 +00:00
s r c / c r y p t o / s a l s a 2 0 . 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
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
s r c / n e t w o r k / i p . c p p
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
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
2014-01-22 13:28:21 +00:00
s r c / c o m p r e s s / l z m a . 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-08-24 08:25:03 +00:00
# vendor/salsa20/ecrypt.c
2013-10-11 02:19:01 +00:00
$ { S A L S A _ S R C }
2013-06-05 19:19:00 +00:00
)
2014-01-12 14:34:29 +00:00
2013-08-24 08:25:03 +00:00
SET_PROPERTY ( SOURCE
v e n d o r / s a l s a 2 0 / s a l s a 2 0 . s
P R O P E R T Y L A N G U A G E C )
2012-09-08 02:50:37 +00:00
2014-02-12 11:45:03 +00:00
file ( GLOB_RECURSE fc_headers ${ CMAKE_CURRENT_SOURCE_DIR }
* . h p p * . h )
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
configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/GitSHA3.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/GitSHA3.cpp" @ONLY )
list ( APPEND sources "${CMAKE_CURRENT_BINARY_DIR}/GitSHA3.cpp" GitSHA3.h )
2014-02-12 11:45:03 +00:00
list ( APPEND sources ${ fc_headers } )
2014-01-12 14:34:29 +00:00
2013-08-13 17:28:53 +00:00
add_subdirectory ( vendor/easylzma )
2012-10-26 05:03:47 +00:00
2013-06-05 19:19:00 +00:00
setup_library ( fc SOURCES ${ sources } LIBRARY_TYPE STATIC )
2013-02-05 04:08:48 +00:00
2014-02-12 11:45:03 +00:00
IF ( WIN32 )
target_compile_definitions ( fc PUBLIC WIN32 NOMINMAX _WIN32_WINNT=0x0501 _CRT_SECURE_NO_WARNINGS
_ S C L _ S E R C U R E _ N O _ W A R N I N G S
# Needed to disable MSVC autolinking feature (#pragma comment)
B O O S T _ A L L _ N O _ L I B
)
# Activate C++ exception handling inc. SEH to catch GPFs
target_compile_options ( fc PUBLIC /EHa )
ELSE ( )
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-02-15 01:07:39 +00:00
SET ( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -stdlib=libc++ -Wall" )
2014-02-12 11:45:03 +00:00
ELSE ( )
target_compile_options ( fc PUBLIC -std=c++11 -Wall -fnon-call-exceptions -Wno-unused-local-typedefs -fmax-errors=3 )
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-local-typedefs -fmax-errors=3 " )
ENDIF ( )
ENDIF ( )
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 }
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 / c y o e n c o d e - 1 . 0 . 2 / s r c
$ { 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
$ { 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 a l s a 2 0
$ { 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 / e a s y l z m a / s r c
)
target_link_libraries ( fc easylzma_static ${ Boost_LIBRARIES } ${ OPENSSL_LIBRARIES } )
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 )
MESSAGE ( STATUS "Finished fc module configuration..." )
2012-09-08 02:50:37 +00:00