forked from MartinPdeS/SuPyMode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
49 lines (40 loc) · 1.92 KB
/
CMakeLists.txt
File metadata and controls
49 lines (40 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
cmake_minimum_required(VERSION 3.20)
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.0" CACHE STRING "Minimum OS X deployment version")
project(SuPyMode VERSION "${SUPYMODE_VERSION}" LANGUAGES CXX)
# CMake settings
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Type of build" FORCE)
# Set the output directory for libraries
set(LOCAL_CXX_DIR "${PROJECT_NAME}/cpp")
set(LOCAL_BIN_DIR "${CMAKE_SOURCE_DIR}/${PROJECT_NAME}/binary")
# Include directories
include_directories("${LOCAL_CXX_DIR}")
# Find dependencies
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
include_directories("/opt/homebrew/opt/libomp/include") # for if compiler was installed through brew
endif()
find_package(OpenMP REQUIRED)
find_package(Python REQUIRED COMPONENTS Interpreter Development.Module)
find_package(pybind11 CONFIG REQUIRED)
# Platform-specific settings for static linking
if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
message("MinGW detected on Windows")
set(STATIC_LINK_OPTIONS "-static")
add_compile_options(-fopenmp)
add_link_options(-static -fopenmp -Wl,--whole-archive -lgomp -Wl,--no-whole-archive)
endif()
# Compiler and linker options
add_compile_options(-Wall -Wextra -pedantic-errors)
# Print some messages
message(STATUS "OPENMP flags: ${OpenMP_CXX_FLAGS}")
message(STATUS "SuPyMode version is: ${SUPYMODE_VERSION}")
message(STATUS "SuPyMode includes directory is: ${SUPYMODE_CXX_DIR}")
message(STATUS "Python version to be compiled against: ${PYBIND11_PYTHON_VERSION}")
message(STATUS "Binary will be installed in location: ${LOCAL_BIN_DIR}")
add_subdirectory(SuPyMode/cpp/mesh) # mesh
add_subdirectory(SuPyMode/cpp/model_parameters) # model_parameters
add_subdirectory(SuPyMode/cpp/supermode) # supermode
add_subdirectory(SuPyMode/cpp/eigensolver) # eigen_solver