Files
edge_lab/CMakeLists.txt
T

69 lines
2.8 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.18)
project(edge_engine CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# ── Release build optimisations ──────────────────────────────
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if(MSVC)
add_compile_options(/O2 /Ob2 /Oi /GL /arch:AVX2 /fp:fast /W3)
add_link_options(/LTCG)
else()
add_compile_options(-O3 -march=native -ffast-math -funroll-loops -Wall)
endif()
# ── pybind11 ─────────────────────────────────────────────────
find_package(Python COMPONENTS Interpreter Development REQUIRED)
find_package(pybind11 CONFIG)
if(NOT pybind11_FOUND)
include(FetchContent)
FetchContent_Declare(
pybind11
GIT_REPOSITORY https://github.com/pybind/pybind11.git
GIT_TAG v2.13.1
)
FetchContent_MakeAvailable(pybind11)
endif()
# ── Shared include path ────────────────────────────────────────
set(ENGINE_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/core/include)
# ── General-Purpose MT5 Strategy Tester API ──────────────────
pybind11_add_module(edge_tester
core/src/tester_bindings.cpp
)
target_include_directories(edge_tester PRIVATE ${ENGINE_INCLUDES})
# ── Optional: Parallel STL via TBB ───────────────────────────
find_package(TBB QUIET)
if(TBB_FOUND)
target_link_libraries(edge_tester PRIVATE TBB::tbb)
target_compile_definitions(edge_tester PRIVATE EDGE_USE_TBB=1)
message(STATUS "TBB found — parallel STL enabled")
endif()
# ── Threading ─────────────────────────────────────────────────
find_package(Threads REQUIRED)
target_link_libraries(edge_tester PRIVATE Threads::Threads)
# ── Visibility ────────────────────────────────────────────────
set_target_properties(edge_tester PROPERTIES
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON
)
# ── Install ───────────────────────────────────────────────────
install(TARGETS edge_tester DESTINATION edge_engine)
install(TARGETS edge_tester DESTINATION .)
message(STATUS "EdgeEngine build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "Python: ${Python_EXECUTABLE}")
message(STATUS "Module: edge_tester (general-purpose MT5 Strategy Tester replica)")