quicktex/CMakeLists.txt

76 lines
2.3 KiB
CMake
Raw Normal View History

2022-04-11 05:03:17 +00:00
cmake_minimum_required(VERSION 3.18)
2021-02-14 10:42:21 +00:00
include(CheckIPOSupported)
include(tools/CompilerWarnings.cmake)
2021-03-13 12:14:04 +00:00
project(quicktex)
2021-01-28 22:40:01 +00:00
2021-03-10 11:42:31 +00:00
# Find dependencies
2022-04-11 05:03:17 +00:00
find_package(Python COMPONENTS Interpreter Development.Module)
find_package(pybind11 CONFIG REQUIRED)
2021-03-10 11:42:31 +00:00
find_package(OpenMP)
2021-02-02 07:31:27 +00:00
# Collect source files
2021-03-13 12:14:04 +00:00
file(GLOB SOURCE_FILES
"quicktex/*.cpp"
2021-03-14 04:47:53 +00:00
"quicktex/s3tc/*.cpp"
"quicktex/s3tc/bc1/*.cpp"
"quicktex/s3tc/bc3/*.cpp"
"quicktex/s3tc/bc4/*.cpp"
"quicktex/s3tc/bc5/*.cpp"
2021-03-16 02:01:42 +00:00
"quicktex/s3tc/interpolator/*.cpp"
2021-03-13 12:14:04 +00:00
)
file(GLOB HEADER_FILES
"quicktex/*.h"
2021-03-14 04:47:53 +00:00
"quicktex/s3tc/*.h"
"quicktex/s3tc/bc1/*.h"
"quicktex/s3tc/bc3/*.h"
"quicktex/s3tc/bc4/*.h"
"quicktex/s3tc/bc5/*.h"
2021-03-16 02:01:42 +00:00
"quicktex/s3tc/interpolator/*.h"
2021-03-13 12:14:04 +00:00
)
2021-03-08 10:23:04 +00:00
file(GLOB TEST_FILES "tests/*.cpp")
2021-03-14 08:59:16 +00:00
file(GLOB_RECURSE PYTHON_FILES "src/**/*.py")
2021-03-13 12:14:04 +00:00
2021-02-02 07:31:27 +00:00
# Organize source files together for some IDEs
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SOURCE_FILES} ${HEADER_FILES} ${PYTHON_FILES})
# Add python module
2021-03-13 12:14:04 +00:00
pybind11_add_module(_quicktex
2021-02-02 07:31:27 +00:00
${SOURCE_FILES}
2021-03-14 08:59:16 +00:00
${HEADER_FILES})
2021-01-29 00:24:30 +00:00
2021-03-13 12:14:04 +00:00
add_executable(test_quicktex
${SOURCE_FILES}
${HEADER_FILES}
${TEST_FILES})
2021-03-13 12:14:04 +00:00
target_link_libraries(test_quicktex PRIVATE pybind11::embed)
2021-03-08 10:23:04 +00:00
2021-03-30 02:38:57 +00:00
target_compile_definitions(test_quicktex PRIVATE -DCUSTOM_SYS_PATH="${CMAKE_HOME_DIRECTORY}/env/lib/python3.9/site-packages")
2021-04-10 19:15:20 +00:00
target_compile_definitions(_quicktex PRIVATE VERSION_INFO=${QUICKTEX_VERSION_INFO})
2021-03-08 10:23:04 +00:00
2021-03-10 11:42:31 +00:00
# enable openMP if available
2021-03-13 12:14:04 +00:00
if (OpenMP_CXX_FOUND)
target_link_libraries(_quicktex PUBLIC OpenMP::OpenMP_CXX)
2021-04-03 01:34:14 +00:00
target_link_libraries(test_quicktex PUBLIC OpenMP::OpenMP_CXX)
2021-03-13 12:14:04 +00:00
endif ()
2021-03-10 11:42:31 +00:00
2021-02-14 10:42:21 +00:00
# Set module features, like C/C++ standards
2021-05-08 23:50:05 +00:00
target_compile_features(_quicktex PUBLIC cxx_std_17 c_std_11)
target_compile_features(test_quicktex PUBLIC cxx_std_17 c_std_11)
2021-02-06 03:44:19 +00:00
2021-03-13 12:14:04 +00:00
set_project_warnings(_quicktex)
set_project_warnings(test_quicktex)
set(CMAKE_VERBOSE_MAKEFILE ON)
2021-02-14 10:42:21 +00:00
if (CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
2021-03-19 21:36:45 +00:00
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")
2021-03-06 22:18:08 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -stdlib=libc++ -fsanitize=undefined")
set(PROJECT_WARNINGS ${CLANG_WARNINGS})
2021-02-06 07:35:06 +00:00
endif ()