diff --git a/CMakeLists.txt b/CMakeLists.txt index 557609a..54e56d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,6 +102,54 @@ else ( MSVC ) endif ( MSVC ) # End configure secp256k1-zkp +# Configure editline +if ( MSVC ) + # autoconf won't work here, hard code the defines + set( EDITLINE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline" ) + + file( GLOB EDITLINE_SOURCES "${EDITLINE_DIR}/src/editline.c" ) + add_library( editline ${EDITLINE_SOURCES} ) + + target_include_directories( editline PRIVATE "${EDITLINE_DIR}" PUBLIC "${EDITLINE_DIR}/include" ) + + set_target_properties( editline PROPERTIES COMPILE_DEFINITIONS LINKER_LANGUAGE C ) +else ( MSVC ) + include(ExternalProject) + if ( MINGW ) + ExternalProject_Add( project_editline + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/editline --host=x86_64-w64-mingw32 + BUILD_COMMAND make + INSTALL_COMMAND true + BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline/src/project_editline-build/.libs/libeditline.a + ) + else ( MINGW ) + ExternalProject_Add( project_editline + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/vendor/editline + BUILD_COMMAND make + INSTALL_COMMAND true + BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/vendor/editline/src/project_editline-build/.libs/libeditline.a + ) + endif ( MINGW ) + ExternalProject_Add_Step(project_editline autogen + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/autogen.sh + DEPENDERS configure + ) + + ExternalProject_Get_Property(project_editline binary_dir) + + add_library(editline STATIC IMPORTED) + set_property(TARGET editline PROPERTY IMPORTED_LOCATION ${binary_dir}/src/.libs/libeditline${CMAKE_STATIC_LIBRARY_SUFFIX}) + set_property(TARGET editline PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline/include) + add_dependencies(editline project_editline) + install( FILES ${binary_dir}/src/.libs/libeditline${CMAKE_STATIC_LIBRARY_SUFFIX} DESTINATION lib/cryptonomex ) +endif ( MSVC ) +# End configure editline + IF( WIN32 ) MESSAGE(STATUS "Configuring fc to build on Win32") @@ -252,20 +300,8 @@ setup_library( fc SOURCES ${sources} LIBRARY_TYPE STATIC ) install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include ) # begin editline stuff -#find_package(Curses) -set(EDITLINE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vendor/editline" ) -find_package(Editline) - -file(GLOB HEADERS "include/bts/cli/*.hpp") - -if (EDITLINE_FOUND) - target_compile_definitions (fc PRIVATE HAVE_EDITLINE) - set(editline_libraries ${Editline_LIBRARY}) - #if (CURSES_FOUND) - # list(APPEND editline_libraries ${CURSES_LIBRARY}) - #endif() - set(editline_includes ${Editline_INCLUDE_DIR}) -endif() +target_compile_definitions (fc PRIVATE HAVE_EDITLINE) +set(editline_libraries editline) if(WIN32) target_compile_definitions( fc PRIVATE _CRT_NONSTDC_NO_DEPRECATE ) endif(WIN32) @@ -363,7 +399,6 @@ target_include_directories(fc ${OPENSSL_INCLUDE_DIR} "vendor/diff-match-patch-cpp-stl" ${CMAKE_CURRENT_SOURCE_DIR}/vendor/websocketpp - "${editline_includes}" PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/vendor/boost_1.51/include @@ -374,7 +409,7 @@ target_include_directories(fc IF(NOT WIN32) set(LINK_USR_LOCAL_LIB -L/usr/local/lib) ENDIF() -target_link_libraries( fc PUBLIC ${LINK_USR_LOCAL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${readline_libraries} ${ECC_LIB} ) +target_link_libraries( fc PUBLIC ${LINK_USR_LOCAL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${BZIP2_LIBRARIES} ${PLATFORM_SPECIFIC_LIBS} ${RPCRT4} ${CMAKE_DL_LIBS} ${rt_library} ${editline_libraries} ${ECC_LIB} ) if(MSVC) set_source_files_properties( src/network/http/websocket.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) diff --git a/CMakeModules/FindEditline.cmake b/CMakeModules/FindEditline.cmake deleted file mode 100644 index 3508fe1..0000000 --- a/CMakeModules/FindEditline.cmake +++ /dev/null @@ -1,50 +0,0 @@ -# - Try to find editline include dirs and libraries -# -# Usage of this module as follows: -# -# find_package(Editline) -# -# Variables used by this module, they can change the default behaviour and need -# to be set before calling find_package: -# -# Editline_ROOT_DIR Set this variable to the root installation of -# editline if the module has problems finding the -# proper installation path. -# -# Variables defined by this module: -# -# EDITLINE_FOUND System has editline, include and lib dirs found -# Editline_INCLUDE_DIR The editline include directories. -# Editline_LIBRARY The editline library. - -find_path(Editline_ROOT_DIR - NAMES include/editline.h - HINTS ${EDITLINE_DIR} -) - -find_path(Editline_INCLUDE_DIR - NAMES editline.h - HINTS ${Editline_ROOT_DIR}/include -) - -find_library(Editline_LIBRARY - NAMES libeditline.a - HINTS ${Editline_ROOT_DIR}/src/.libs -) - -if(Editline_INCLUDE_DIR AND Editline_LIBRARY) - set(EDITLINE_FOUND TRUE) -else(Editline_INCLUDE_DIR AND Editline_LIBRARY) - FIND_LIBRARY(Editline_LIBRARY NAMES editline) - include(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(Editline DEFAULT_MSG Editline_INCLUDE_DIR Editline_LIBRARY ) - MARK_AS_ADVANCED(Editline_INCLUDE_DIR Editline_LIBRARY) -endif(Editline_INCLUDE_DIR AND Editline_LIBRARY) - -mark_as_advanced( - Editline_ROOT_DIR - Editline_INCLUDE_DIR - Editline_LIBRARY -) - -MESSAGE( STATUS "Found Editline: ${Editline_LIBRARY}" )