TLUSTY/new/CMakeLists.txt

86 lines
3.1 KiB
CMake

# ==============================================================================
# TLUSTY 和 SYNSPEC 套件顶层 CMake 配置文件
# ==============================================================================
cmake_minimum_required(VERSION 3.15)
project(TLUSTY_SYNSPEC_SUITE Fortran)
# 项目版本
set(PROJECT_VERSION "208.54")
# CMake 策略
cmake_policy(SET CMP0048 NEW)
# ==============================================================================
# 编译选项
# ==============================================================================
option(BUILD_TLUSTY "Build TLUSTY" ON)
option(BUILD_SYNSPEC "Build SYNSPEC" ON)
option(BUILD_TESTS "Build and enable tests" OFF)
option(ENABLE_LARGE_MODEL "Enable large memory model" ON)
# ==============================================================================
# 全局编译设置
# ==============================================================================
set(CMAKE_FORTRAN_COMPILER gfortran)
# 基础编译标志
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
# 大内存模型选项(如果需要)
if(ENABLE_LARGE_MODEL)
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel=medium")
endif()
# 调试标志
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall -Wextra")
# Release 标志
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -funroll-loops")
# ==============================================================================
# 子目录配置
# ==============================================================================
if(BUILD_TLUSTY)
message(STATUS "Building TLUSTY...")
add_subdirectory(tlusty)
endif()
if(BUILD_SYNSPEC)
message(STATUS "Building SYNSPEC...")
add_subdirectory(synspec)
endif()
# ==============================================================================
# 测试配置
# ==============================================================================
if(BUILD_TESTS)
enable_testing()
message(STATUS "Building tests...")
# add_subdirectory(tests)
endif()
# ==============================================================================
# 安装配置
# ==============================================================================
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/data)
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/tests)
# ==============================================================================
# 打印总结信息
# ==============================================================================
message(STATUS "")
message(STATUS "========================================")
message(STATUS "TLUSTY/SYNSPEC 套件配置总结")
message(STATUS "========================================")
message(STATUS " 版本:${PROJECT_VERSION}")
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
message(STATUS " 安装前缀:${CMAKE_INSTALL_PREFIX}")
message(STATUS " 构建 TLUSTY: ${BUILD_TLUSTY}")
message(STATUS " 构建 SYNSPEC: ${BUILD_SYNSPEC}")
message(STATUS " 构建测试:${BUILD_TESTS}")
message(STATUS " 大内存模型:${ENABLE_LARGE_MODEL}")
message(STATUS "========================================")
message(STATUS "")