2022-12-23 13:50:27 -05:00
|
|
|
cmake_minimum_required(VERSION 3.24)
|
2023-01-27 09:58:51 -05:00
|
|
|
project(BLT VERSION 0.3.1)
|
2022-12-23 13:50:27 -05:00
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
|
|
|
|
option(BUILD_STD "Build the BLT standard utilities." ON)
|
|
|
|
option(BUILD_PROFILING "Build the BLT profiler extension" ON)
|
2023-01-26 00:59:36 -05:00
|
|
|
option(BUILD_NBT "Build the BLT NBT + eNBT extension" ON)
|
2023-01-11 18:56:42 -05:00
|
|
|
option(BUILD_TESTS "Build the BLT test set" OFF)
|
2022-12-23 13:50:27 -05:00
|
|
|
|
2023-01-26 12:21:19 -05:00
|
|
|
if(${BUILD_STD} OR ${BUILD_PROFILING})
|
2022-12-25 23:25:32 -05:00
|
|
|
file(GLOB_RECURSE STD_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/blt/std/*.cpp")
|
2022-12-23 13:50:27 -05:00
|
|
|
else()
|
|
|
|
set(STD_FILES "")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(${BUILD_PROFILING})
|
2022-12-25 23:25:32 -05:00
|
|
|
file(GLOB_RECURSE PROFILING_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/blt/profiling/*.cpp")
|
2022-12-23 13:50:27 -05:00
|
|
|
else()
|
|
|
|
set(PROFILING_FILES "")
|
|
|
|
endif()
|
|
|
|
|
2023-01-26 00:59:36 -05:00
|
|
|
if(${BUILD_NBT})
|
|
|
|
file(GLOB_RECURSE NBT_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/blt/nbt/*.cpp")
|
|
|
|
else()
|
|
|
|
set(NBT_FILES "")
|
|
|
|
endif()
|
|
|
|
|
2023-01-05 01:52:56 -05:00
|
|
|
#include parallel hashmaps if the user decided to download the submodule.
|
2022-12-27 00:51:37 -05:00
|
|
|
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/libraries/parallel-hashmap/CMakeLists.txt)
|
2023-01-16 14:09:27 -05:00
|
|
|
set(USE_PHMAPS)
|
2022-12-27 00:51:37 -05:00
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libraries/parallel-hashmap/)
|
|
|
|
endif()
|
|
|
|
|
2022-12-27 00:59:49 -05:00
|
|
|
include_directories(include/)
|
2022-12-23 13:50:27 -05:00
|
|
|
|
2022-12-25 23:23:12 -05:00
|
|
|
message("Standard Files ${STD_FILES}")
|
|
|
|
message("Profiler Files ${PROFILING_FILES}")
|
|
|
|
message("Source: ${CMAKE_SOURCE_DIR}")
|
2022-12-25 23:24:58 -05:00
|
|
|
message("Current Source: ${CMAKE_CURRENT_SOURCE_DIR}")
|
2022-12-25 23:23:12 -05:00
|
|
|
|
2023-01-26 00:59:36 -05:00
|
|
|
add_library(BLT ${STD_FILES} ${PROFILING_FILES} ${NBT_FILES})
|
2022-12-26 00:36:28 -05:00
|
|
|
target_include_directories(BLT PUBLIC include/)
|
2023-01-26 00:59:36 -05:00
|
|
|
|
2023-01-16 14:09:27 -05:00
|
|
|
if(${USE_PHMAPS})
|
|
|
|
target_link_libraries(BLT phmap)
|
|
|
|
endif()
|
2023-01-05 01:52:56 -05:00
|
|
|
message("BLT ${CMAKE_PROJECT_VERSION} Successfully included!")
|
2023-01-11 18:56:42 -05:00
|
|
|
|
|
|
|
if(${BUILD_TESTS})
|
|
|
|
project(BLT_TESTS)
|
|
|
|
|
2023-01-12 12:18:39 -05:00
|
|
|
add_compile_options(-fsanitize=address)
|
|
|
|
add_link_options(-fsanitize=address)
|
|
|
|
|
2023-01-11 18:56:42 -05:00
|
|
|
file(GLOB_RECURSE TESTS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/tests/*.cpp")
|
|
|
|
|
|
|
|
add_executable(BLT_TESTS ${TESTS_FILES})
|
|
|
|
|
|
|
|
target_link_libraries(BLT_TESTS BLT)
|
|
|
|
message("BLT tests included!")
|
2023-01-16 14:09:27 -05:00
|
|
|
endif()
|