Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
project(canoe
LANGUAGES CXX C Fortran
)

# search for <Package>_ROOT
cmake_policy(SET CMP0074 NEW)

Expand All @@ -27,11 +28,12 @@ endif()
add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=${_ABI_OUTPUT})

# Set MacOS deployment target
set(CMAKE_OSX_DEPLOYMENT_TARGET "15.0")
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.0")

string(ASCII 27 Esc)
set(ColorReset "${Esc}[m")
set(Green "${Esc}[32m")
set(Blue "${Esc}[34m")

message(STATUS "")
message(STATUS "${Green}==== ${PROJECT_NAME} configure begin ====${ColorReset}")
Expand All @@ -54,12 +56,12 @@ foreach(_file ${_macro_files})
endforeach()

## 1. set up compiler flags ##
message(STATUS "${PROJECT_NAME}-1. Setting up project compiler flags ...")
message(STATUS "${Blue}${PROJECT_NAME}-1. Setting up project compiler flags ...${ColorReset}")
message(STATUS "Include ${CMAKE_SOURCE_DIR}/cmake/compilers.cmake")
include(${CMAKE_SOURCE_DIR}/cmake/compilers.cmake)

## 2. set up project specific configuration ##
message(STATUS "${PROJECT_NAME}-2. Setting up project parameters ...")
message(STATUS "${Blue}${PROJECT_NAME}-2. Setting up project parameters ...${ColorReset}")

# load custom task
message(STATUS "Load custom task = ${TASK}")
Expand All @@ -80,17 +82,21 @@ message(STATUS "Include ${CMAKE_CURRENT_SOURCE_DIR}/cmake/parameters.cmake")
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/parameters.cmake)

## 3. set up project system libraries ##
message(STATUS "${PROJECT_NAME}-3. Setting up system libraries")
message(STATUS "${Blue}${PROJECT_NAME}-3. Setting up system libraries ...${ColorReset}")
find_package(Torch REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(Cantera)
find_package(Torch)
find_package(Disort REQUIRED)
find_package(Harp REQUIRED)
find_package(Kintera REQUIRED)
find_package(Snap REQUIRED)

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/fmt.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/gtest.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/yamlpp.cmake)

include(${CMAKE_SOURCE_DIR}/cmake/yamlpp.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/gtest.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/athena.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/application.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/rfm.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/disort.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/rrtmg.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/pvfmm.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/minichem.cmake)
Expand All @@ -99,20 +105,20 @@ include(${CMAKE_SOURCE_DIR}/cmake/pybind11.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/c3m.cmake)

## 4. set up project configure file and library ##
message(STATUS "${PROJECT_NAME}-4. Setting up project libraries")
configure_file(${CMAKE_SOURCE_DIR}/configure.hpp.in configure.hpp @ONLY)
message(STATUS "${Blue}${PROJECT_NAME}-4. Setting up project libraries ...${ColorReset}")
configure_file(${CMAKE_SOURCE_DIR}/configure.h.in configure.h @ONLY)
add_subdirectory(src)
add_subdirectory(tools)
add_subdirectory(data)

## 5. set up examples and tests
message(STATUS "${PROJECT_NAME}-5. Setting up unit tests")
message(STATUS "${Blue}${PROJECT_NAME}-5. Setting up unit tests ..${ColorReset}")

add_subdirectory(examples)
add_subdirectory(tests)
#add_subdirectory(tests)

## 6. set up python binding ##
add_subdirectory(python)
#add_subdirectory(python)

## 7. add uninstall targets ##
configure_file(
Expand Down
2 changes: 1 addition & 1 deletion cmake/athena.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ set(patch_command

set(PACKAGE_NAME athenapp)
set(REPO_URL "https://github.com/chengcli/athenapp")
set(REPO_TAG "6a612f4039ac08eacf92ce1644657fd0f340834f")
set(REPO_TAG "f9d3ae8bb84cac6954e6a224cb84bc917450e43d")
add_package(${PACKAGE_NAME} ${REPO_URL} ${REPO_TAG} "${patch_command}" ON)
11 changes: 0 additions & 11 deletions cmake/disort.cmake

This file was deleted.

11 changes: 11 additions & 0 deletions cmake/fmt.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
include(FetchContent)
set(FETCHCONTENT_QUIET TRUE)

set(PACKAGE_NAME fmt)
set(REPO_URL "https://github.com/fmtlib/fmt")
set(REPO_TAG "11.1.2")

add_package(${PACKAGE_NAME} ${REPO_URL} ${REPO_TAG} "" ON)
set(FMT_INCLUDE_DIR
"${CMAKE_CURRENT_BINARY_DIR}/_deps/${PACKAGE_NAME}-src/include"
CACHE PATH "fmt include directory")
2 changes: 2 additions & 0 deletions cmake/gtest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ set(REPO_TAG "v1.13.0")
set(INSTALL_GTEST OFF)

add_package(${PACKAGE_NAME} ${REPO_URL} ${REPO_TAG} "" ON)
include_directories(${gtest_SOURCE_DIR}/include
${gtest_SOURCE_DIR}/googletest/include)
18 changes: 13 additions & 5 deletions cmake/macros/macro_setup_problem.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,24 @@ macro(setup_problem namel)
${namel}.${buildl}
PRIVATE ${CMAKE_BINARY_DIR}
${CANOE_INCLUDE_DIR}
SYSTEM
${CANTERA_INCLUDE_DIR}
${EIGEN3_INCLUDE_DIR}
${MPI_CXX_HEADER_DIR}
${MPI_CXX_INCLUDE_PATH}
${NETCDF_INCLUDES}
${PNETCDF_INCLUDE_DIR}
SYSTEM
${TORCH_API_INCLUDE_DIR}
SYSTEM
${TORCH_INCLUDE_DIR}
SYSTEM
${EIGEN3_INCLUDE_DIR}
SYSTEM
${MPI_CXX_HEADER_DIR}
${DISORT_INCLUDE_DIR}
SYSTEM
${MPI_CXX_INCLUDE_PATH}
${HARP_INCLUDE_DIR}
SYSTEM
${NETCDF_INCLUDES}
${KINTERA_INCLUDE_DIR}
SYSTEM
${PNETCDF_INCLUDE_DIR})
${SNAP_INCLUDE_DIR})
endmacro()
13 changes: 4 additions & 9 deletions cmake/macros/macro_setup_test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@ macro(setup_test namel)
string(TOLOWER ${CMAKE_BUILD_TYPE} buildl)
string(TOUPPER ${CMAKE_BUILD_TYPE} buildu)

add_executable(${namel}.${buildl} ${namel}.cpp globals.cpp)
add_executable(${namel}.${buildl} ${namel}.cpp)

set_target_properties(${namel}.${buildl}
PROPERTIES COMPILE_FLAGS ${CMAKE_CXX_FLAGS_${buildu}})

target_include_directories(
${namel}.${buildl}
PRIVATE $<$<BOOL:${PVFMM}>:${PVFMM_SOURCE_DIR}/SCTL/include>
${CMAKE_BINARY_DIR}
PRIVATE ${CMAKE_BINARY_DIR}
${CANOE_INCLUDE_DIR}
${EIGEN3_INCLUDE_DIR}
${MPI_CXX_INCLUDE_PATH}
Expand All @@ -23,16 +22,12 @@ macro(setup_test namel)
${PNETCDF_INCLUDE_DIR}
${OpenMP_CXX_INCLUDE_DIR}
${FFTW_INCLUDE_DIRS}
SYSTEM
${CANTERA_INCLUDE_DIR}
SYSTEM
${TORCH_INCLUDE_DIR}
SYSTEM
${TORCH_API_INCLUDE_DIR})

target_link_libraries(
${namel}.${buildl} gtest_main $<$<BOOL:${PVFMM}>:pvfmmStatic>
${CANOE_LIBRARY_${buildu}})
target_link_libraries(${namel}.${buildl} gtest_main
${CANOE_LIBRARY_${buildu}})

add_test(NAME ${namel}.${buildl} COMMAND ${namel}.${buildl})
endmacro()
57 changes: 0 additions & 57 deletions cmake/modules/FindCantera.cmake

This file was deleted.

103 changes: 103 additions & 0 deletions cmake/modules/FindDisort.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Find the disort includes and library
#
# DISORT_INCLUDE_DIR - where to find disort.hpp
#
# DISORT_LIBRARY - Link these libraries when using DISORT
#
# DISORT_FOUND - True if DISORT found
#
# Normal usage would be:
#
# find_package(Disort REQUIRED) include_directories(${DISORT_INCLUDE_DIR})
# target_link_libraries(${DISORT_LIBRARY})

include(FindPackageHandleStandardArgs)

macro(__disort_determine_version)
execute_process(
COMMAND ${Python3_EXECUTABLE} -c
"import pydisort; print(pydisort.__version__)"
OUTPUT_VARIABLE DISORT_PEP440_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE result)

if(result GREATER 0)
message(FATAL_ERROR "cannot determine PEP 440 version of Pydisort!")
endif()

if(DISORT_PEP440_VERSION MATCHES "^[0-9]+\.[0-9]+(\.[0-9]+)?")
set(DISORT_VERSION ${CMAKE_MATCH_0})
endif()

unset(result)
endmacro()

# Find Python
set(Python3_FIND_VIRTUALENV ONLY)
find_package(Python3 QUIET COMPONENTS Interpreter)
if(Python3_Interpreter_FOUND)
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import pydisort; print(pydisort.__file__)"
OUTPUT_VARIABLE disort_init_file
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)

cmake_path(CONVERT ${disort_init_file} TO_CMAKE_PATH_LIST disort_init_file
NORMALIZE)

cmake_path(REPLACE_FILENAME disort_init_file lib OUTPUT_VARIABLE
disort_lib_dir)
cmake_path(REPLACE_FILENAME disort_init_file disort OUTPUT_VARIABLE
disort_include_dir)

unset(disort_init_file)
endif()

# Step 1: Find header
find_path(
_DISORT_HEADER_DIR disort.hpp
HINTS ${disort_include_dir}
/opt/homebrew/include
/usr/include
DISORT_DIR/include
DISORT_INC
$ENV{DISORT_INC}
$ENV{DISORT_DIR}/include
$ENV{DISORT_ROOT}/include)

# Step 2: Go one level up from the header location
get_filename_component(DISORT_INCLUDE_DIR ${_DISORT_HEADER_DIR} DIRECTORY)

# Step 3: Save to cache
set(DISORT_INCLUDE_DIR
"${DISORT_INCLUDE_DIR}"
CACHE FILEPATH "Path to a file.")

# Step 4: unset the internal temp variable
unset(_DISORT_HEADER_DIR CACHE)

find_library(
DISORT_LIBRARY disort_release
HINTS ${disort_lib_dir}
/opt/homebrew/lib
/usr/lib/x86_64-linux-gnu/
DISORT_DIR/lib
DISORT_LIB
$ENV{DISORT_LIB}
$ENV{DISORT_DIR}/lib
$ENV{DISORT_ROOT}/lib)

set(disort_required_vars DISORT_LIBRARY DISORT_INCLUDE_DIR)
mark_as_advanced(${disort_required_vars})

if(DISORT_LIBRARY)
__disort_determine_version()
endif()

find_package_handle_standard_args(
Disort
REQUIRED_VARS ${disort_required_vars}
VERSION_VAR DISORT_VERSION)

unset(disort_lib_dir)
unset(disort_include_dir)
unset(disort_required_vars)
Loading
Loading