This commit is contained in:
Efim Beshmenev
2026-07-10 22:26:37 +03:00
parent 7f9dc067a1
commit 8614dfe22a
3757 changed files with 95267 additions and 663 deletions
+30 -1
View File
@@ -6,12 +6,16 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
option(SZILASSI_ENABLE_CUDA "Build the FP32 CUDA global-search backend" ON)
set(EIGEN_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/external/eigen-3.4.0" CACHE PATH "Eigen include root")
if(NOT EXISTS "${EIGEN_ROOT}/Eigen/Dense")
message(FATAL_ERROR "Eigen not found at ${EIGEN_ROOT}. Download Eigen 3.4.0 into external/eigen-3.4.0 or pass -DEIGEN_ROOT=...")
endif()
add_library(neighborly_core
src/Checkpoint/GlobalCheckpoint.cpp
src/Checkpoint/GlobalCheckpoint.h
src/NeighborlyCore/plane.h
src/NeighborlyCore/precise_geometry.h
src/NeighborlyCore/util.cpp
@@ -21,9 +25,33 @@ add_library(neighborly_core
projects/Szilassi/solver.h
)
include(CheckLanguage)
if(SZILASSI_ENABLE_CUDA)
check_language(CUDA)
endif()
if(SZILASSI_ENABLE_CUDA AND CMAKE_CUDA_COMPILER)
enable_language(CUDA)
add_library(neighborly_cuda src/CudaSearch/cuda_search.cu)
set_target_properties(neighborly_cuda PROPERTIES
CUDA_ARCHITECTURES "89-real;120-real;120-virtual"
CUDA_STANDARD 17
CUDA_STANDARD_REQUIRED ON
)
target_compile_definitions(neighborly_cuda PUBLIC SZILASSI_HAS_CUDA=1)
else()
add_library(neighborly_cuda src/CudaSearch/cuda_search_stub.cpp)
message(STATUS "CUDA Toolkit not found: building a diagnostic stub backend")
endif()
target_include_directories(neighborly_cuda PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/src/CudaSearch"
)
target_include_directories(neighborly_core
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/src/NeighborlyCore"
"${CMAKE_CURRENT_SOURCE_DIR}/src/Checkpoint"
"${CMAKE_CURRENT_SOURCE_DIR}/projects/Szilassi"
"${EIGEN_ROOT}"
)
@@ -36,7 +64,7 @@ else()
endif()
add_executable(neighborly_main projects/Szilassi/main.cpp)
target_link_libraries(neighborly_main PRIVATE neighborly_core)
target_link_libraries(neighborly_main PRIVATE neighborly_core neighborly_cuda)
add_executable(verify_cpp projects/VerifyCpp/verify_cpp.cpp)
target_link_libraries(verify_cpp PRIVATE neighborly_core)
@@ -44,5 +72,6 @@ target_link_libraries(verify_cpp PRIVATE neighborly_core)
add_executable(polyhedron_gui WIN32 projects/PolyhedronGui/launcher_gui.cpp)
if(MSVC)
target_compile_definitions(polyhedron_gui PRIVATE UNICODE _UNICODE NOMINMAX)
target_compile_options(polyhedron_gui PRIVATE /utf-8)
target_link_libraries(polyhedron_gui PRIVATE shell32)
endif()