You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

39 lines
1.4 KiB

cmake_minimum_required(VERSION 3.25)
project(top3d)
option(PROJECT_WITH_SIMD "Enable SIMD" ON)
set(CMAKE_CXX_STANDARD 17)
list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_CURRENT_SOURCE_DIR}/cmake/find)
add_executable(${PROJECT_NAME} main.cpp)
File(GLOB CPP_FILES
src/*.cpp
)
add_library(${PROJECT_NAME}_lib ${CPP_FILES})
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_lib)
## SIMD support
if (PROJECT_WITH_SIMD)
# Figure out SSE level support
message(STATUS "Seaching for SSE...")
find_package(SSE)
# Apple broke AVX instructions with clang:
# https://gitlab.com/libeigen/eigen/-/commit/71aa53dd6dfdc497324d9e87f59c4ba820191856
if (NOT APPLE)
# Figure out AVX level support
message(STATUS "Searching for AVX...")
find_package(AVX)
# Figure out FMA level support
message(STATUS "Searching for FMA...")
find_package(FMA)
else ()
message(WARNING "Disabling AVX support: clang compiler shipped with XCode 11.[012] generates broken assembly with -macosx-version-min=10.15 and AVX enabled.")
endif ()
# Add SSE, AVX, and FMA flags to compiler flags
string(REPLACE " " ";" SIMD_FLAGS "${SSE_FLAGS} ${AVX_FLAGS} ${FMA_FLAGS}")
target_compile_options(${PROJECT_NAME} PUBLIC ${SIMD_FLAGS})
endif ()
# Eigen3
include(eigen)
target_link_libraries(${PROJECT_NAME}_lib PUBLIC Eigen3::Eigen)