-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCMakeLists.txt
59 lines (42 loc) · 1.38 KB
/
CMakeLists.txt
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
50
51
52
53
54
55
56
57
58
59
cmake_minimum_required(VERSION 3.25...3.30)
# 3.19 for CheckSourceCompiles
# 3.25 for block()
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "Please use out-of-source build:
cmake -Bbuild")
endif()
project(Fortran_C_CXX_interface
LANGUAGES C CXX Fortran
)
enable_testing()
include(CheckSourceCompiles)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
# This project isn't using C++ modules; avoid bugs in module scanning CMake 3.28, 3.29 with GCC >= 14.
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 20)
# we use c++20 features in some examples
option(dev "developer mode")
message(STATUS "${PROJECT_NAME} CMake ${CMAKE_VERSION}")
include(cmake/compilers.cmake)
option(cppcheck "Run cppcheck")
# CPPcheck
if(cppcheck)
find_program(cppcheck_exe NAMES cppcheck REQUIRED)
set(cppcheck_opts --enable=all --inline-suppr --quiet --suppressions-list=${PROJECT_SOURCE_DIR}/cppcheck.supp)
set(CMAKE_C_CPPCHECK ${cppcheck_exe} --std=c${CMAKE_C_STANDARD} ${cppcheck_opts})
set(CMAKE_CXX_CPPCHECK ${cppcheck_exe} --std=c++${CMAKE_CXX_STANDARD} ${cppcheck_opts})
endif()
# Targets
foreach(a IN ITEMS
iso_fortran_binding
allocate contiguous
array bool error exception
iterator
glibc malloc
nullptr
opaque pointer poly_function poly_type real struct
sleep string submodule
time vector)
add_subdirectory(test/${a})
endforeach()
file(GENERATE OUTPUT .gitignore CONTENT "*")