Files
ANSCORE/CMakeLists.txt

107 lines
3.9 KiB
CMake
Raw Normal View History

2026-03-28 16:54:11 +11:00
cmake_minimum_required(VERSION 3.28)
cmake_policy(SET CMP0167 NEW) # Suppress FindBoost removal warning
# ── CUDA is optional (not available on macOS) ───────────────────
include(CheckLanguage)
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
project(ANSCORE LANGUAGES C CXX CUDA)
set(ANSCORE_HAS_CUDA ON)
set(CMAKE_CUDA_STANDARD 20)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
set(CMAKE_CUDA_ARCHITECTURES 75 80 86 87 88 89 90 100)
if(MSVC)
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --use-fast-math -Xcompiler=/utf-8")
else()
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --use-fast-math")
endif()
else()
project(ANSCORE LANGUAGES C CXX)
set(ANSCORE_HAS_CUDA OFF)
message(WARNING "CUDA not found — GPU-accelerated modules will be limited")
endif()
# ── Platform detection ──────────────────────────────────────────
if(WIN32)
set(ANSCORE_PLATFORM "windows")
elseif(APPLE)
set(ANSCORE_PLATFORM "macos")
else()
set(ANSCORE_PLATFORM "linux")
endif()
message(STATUS "ANSCORE platform: ${ANSCORE_PLATFORM}, CUDA: ${ANSCORE_HAS_CUDA}")
# ── Global Settings ──────────────────────────────────────────────
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# Output all binaries to a single directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
# ── Compiler Configuration ──────────────────────────────────────
if(MSVC)
# Dynamic CRT (/MD) — matches original VS projects and prebuilt libs like HWiNFO
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
# Apply MSVC flags only to C/C++ (not CUDA — nvcc doesn't understand them)
add_compile_options(
"$<$<COMPILE_LANGUAGE:C,CXX>:/W3>"
"$<$<COMPILE_LANGUAGE:C,CXX>:/utf-8>"
"$<$<AND:$<COMPILE_LANGUAGE:C,CXX>,$<NOT:$<CONFIG:MINSIZEREL>>>:/Zi>"
)
add_link_options(
"$<$<NOT:$<CONFIG:DEBUG>>:/DEBUG:FULL>"
"$<$<NOT:$<CONFIG:DEBUG>>:/OPT:REF>"
"$<$<NOT:$<CONFIG:DEBUG>>:/OPT:ICF>"
)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
add_compile_options(-Wall -Wextra -Wno-unused-parameter)
if(NOT APPLE)
add_link_options(-Wl,--as-needed)
endif()
endif()
# ── External Dependencies ───────────────────────────────────────
include(cmake/Dependencies.cmake)
# ── Subprojects (ordered by dependency) ─────────────────────────
2026-03-28 19:56:39 +11:00
# Core — licensing & infrastructure
add_subdirectory(core/anslicensing)
add_subdirectory(core/ANSLicensingSystem)
add_subdirectory(core/ANSLibsLoader)
# Modules — feature DLLs (cross-platform)
add_subdirectory(modules/ANSMOT)
add_subdirectory(modules/ANSUtilities)
add_subdirectory(modules/ANSTrainingEngine)
add_subdirectory(modules/ANSLLM)
# Integrations — hardware & protocol DLLs
2026-03-28 16:54:11 +11:00
if(WIN32)
2026-03-28 19:56:39 +11:00
add_subdirectory(integrations/ANNHUB)
add_subdirectory(integrations/ANSIO)
add_subdirectory(integrations/ANSONVIF)
2026-03-28 16:54:11 +11:00
endif()
2026-03-28 19:56:39 +11:00
add_subdirectory(integrations/ANSPulsar)
add_subdirectory(integrations/ANSRabbitMQ)
2026-03-28 16:54:11 +11:00
2026-03-28 19:56:39 +11:00
# Modules — engine layer (CUDA + inference frameworks)
2026-03-28 16:54:11 +11:00
if(ANSCORE_HAS_CUDA)
2026-03-28 19:56:39 +11:00
add_subdirectory(modules/ANSODEngine)
add_subdirectory(modules/ANSOCR)
add_subdirectory(modules/ANSFR)
add_subdirectory(modules/ANSLPR)
2026-03-28 16:54:11 +11:00
endif()
2026-03-28 19:56:39 +11:00
add_subdirectory(modules/ANSCV)
2026-03-28 16:54:11 +11:00
# Facade
add_subdirectory(ANSLIB)
2026-03-28 19:56:39 +11:00
# Tests
add_subdirectory(tests)