xref: /llvm-project/flang/lib/Decimal/CMakeLists.txt (revision 2704ebaf2885a16155ab7144f8dd0dd459d77089)
1if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
2  cmake_minimum_required(VERSION 3.20.0)
3
4  project(FortranDecimal C CXX)
5
6  set(CMAKE_CXX_STANDARD 17)
7  set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
8  set(CMAKE_CXX_EXTENSIONS OFF)
9
10  set(FLANG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
11
12  set(LLVM_COMMON_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../cmake")
13  set(LLVM_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../llvm/cmake")
14  set(CLANG_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../clang/cmake")
15
16  # Add path for custom modules
17  list(INSERT CMAKE_MODULE_PATH 0
18    "${FLANG_SOURCE_DIR}/cmake"
19    "${FLANG_SOURCE_DIR}/cmake/modules"
20    "${LLVM_COMMON_CMAKE_UTILS}"
21    "${LLVM_COMMON_CMAKE_UTILS}/Modules"
22    "${LLVM_CMAKE_UTILS}"
23    "${LLVM_CMAKE_UTILS}/modules"
24    "${CLANG_CMAKE_UTILS}/modules"
25    )
26
27  include(AddClang)
28  include(AddLLVM)
29  include(AddFlang)
30  include(HandleLLVMOptions)
31
32  include(TestBigEndian)
33  test_big_endian(IS_BIGENDIAN)
34  if (IS_BIGENDIAN)
35    add_compile_definitions(FLANG_BIG_ENDIAN=1)
36  else ()
37    add_compile_definitions(FLANG_LITTLE_ENDIAN=1)
38  endif ()
39  include_directories(BEFORE
40    ${FLANG_SOURCE_DIR}/include)
41endif()
42
43check_cxx_compiler_flag(-fno-lto FLANG_RUNTIME_HAS_FNO_LTO_FLAG)
44if (FLANG_RUNTIME_HAS_FNO_LTO_FLAG)
45  append("-fno-lto" CMAKE_CXX_FLAGS)
46endif()
47
48# Disable libstdc++ assertions, even in an LLVM_ENABLE_ASSERTIONS build, to
49# avoid an unwanted dependency on libstdc++.so.
50add_definitions(-U_GLIBCXX_ASSERTIONS)
51
52set(sources
53  binary-to-decimal.cpp
54  decimal-to-binary.cpp
55)
56
57include(AddFlangOffloadRuntime)
58enable_cuda_compilation(FortranDecimal "${sources}")
59enable_omp_offload_compilation("${sources}")
60
61add_flang_library(FortranDecimal INSTALL_WITH_TOOLCHAIN ${sources})
62
63if (DEFINED MSVC)
64  set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
65  add_flang_library(FortranDecimal.static INSTALL_WITH_TOOLCHAIN
66          binary-to-decimal.cpp
67          decimal-to-binary.cpp
68  )
69  set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
70  add_flang_library(FortranDecimal.dynamic INSTALL_WITH_TOOLCHAIN
71    binary-to-decimal.cpp
72    decimal-to-binary.cpp
73  )
74  set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
75  add_flang_library(FortranDecimal.static_dbg INSTALL_WITH_TOOLCHAIN
76          binary-to-decimal.cpp
77          decimal-to-binary.cpp
78  )
79  set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
80  add_flang_library(FortranDecimal.dynamic_dbg INSTALL_WITH_TOOLCHAIN
81    binary-to-decimal.cpp
82    decimal-to-binary.cpp
83  )
84  add_dependencies(FortranDecimal FortranDecimal.static FortranDecimal.dynamic
85    FortranDecimal.static_dbg FortranDecimal.dynamic_dbg)
86endif()
87