CMakeLists.txt (2248B)
1 # Copyright (c) 2020 tevador <tevador@gmail.com> 2 # See LICENSE for licensing information 3 4 cmake_minimum_required(VERSION 2.8.8) 5 6 set(EQUIX_VERSION 1) 7 set(EQUIX_VERSION_MINOR 0) 8 set(EQUIX_VERSION_PATCH 0) 9 set(EQUIX_VERSION_STR "${EQUIX_VERSION}.${EQUIX_VERSION_MINOR}.${EQUIX_VERSION_PATCH}") 10 11 project(equix) 12 13 add_definitions(-DHASHX_SIZE=8) 14 add_definitions(-DEQUIX_SUPPORT_HUGEPAGES) 15 16 add_subdirectory("hashx") 17 18 set(equix_sources 19 src/context.c 20 src/equix.c 21 src/solver.c) 22 23 if(NOT CMAKE_BUILD_TYPE) 24 set(CMAKE_BUILD_TYPE Release) 25 message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}") 26 endif() 27 28 include_directories( 29 include/ 30 hashx/include/ 31 hashx/src/) 32 33 add_library(equix SHARED ${equix_sources}) 34 set_property(TARGET equix PROPERTY POSITION_INDEPENDENT_CODE ON) 35 set_property(TARGET equix PROPERTY PUBLIC_HEADER include/equix.h) 36 target_compile_definitions(equix PRIVATE HASHX_STATIC) 37 target_compile_definitions(equix PRIVATE EQUIX_SHARED) 38 target_link_libraries(equix 39 PRIVATE hashx_static) 40 set_target_properties(equix PROPERTIES VERSION ${EQUIX_VERSION_STR} 41 SOVERSION ${EQUIX_VERSION}) 42 43 add_library(equix_static STATIC ${equix_sources}) 44 set_property(TARGET equix_static PROPERTY POSITION_INDEPENDENT_CODE ON) 45 set_target_properties(equix_static PROPERTIES OUTPUT_NAME equix) 46 target_compile_definitions(equix_static PRIVATE HASHX_STATIC) 47 target_compile_definitions(equix_static PRIVATE EQUIX_STATIC) 48 target_link_libraries(equix_static 49 PRIVATE hashx_static) 50 51 include(GNUInstallDirs) 52 install(TARGETS equix equix_static 53 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 54 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 55 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 56 57 add_executable(equix-tests 58 src/tests.c) 59 target_compile_definitions(equix-tests PRIVATE EQUIX_STATIC) 60 target_link_libraries(equix-tests 61 PRIVATE equix_static) 62 63 if(NOT Threads_FOUND AND UNIX AND NOT APPLE) 64 set(THREADS_PREFER_PTHREAD_FLAG ON) 65 find_package(Threads) 66 endif() 67 68 add_executable(equix-bench 69 src/bench.c 70 hashx/src/hashx_thread.c 71 hashx/src/hashx_time.c) 72 target_compile_definitions(equix-bench PRIVATE EQUIX_STATIC) 73 target_link_libraries(equix-bench 74 PRIVATE equix_static 75 PRIVATE ${CMAKE_THREAD_LIBS_INIT})