cmake_minimum_required(VERSION 3.26)

project(libc++-modules LANGUAGES CXX)

# Enable CMake's module support
if(CMAKE_VERSION VERSION_LESS "3.27.0")
  set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "2182bf5c-ef0d-489a-91da-49dbc3090d2a")
else()
  set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "aa1f7df0-828a-4fcd-9afc-2dc80491aca7")
endif()
set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)

# Default to C++ extensions being off. Libc++'s modules support have trouble
# with extensions right now.
set(CMAKE_CXX_EXTENSIONS OFF)

# Propagates the CMake options to the modules.
#
# This uses the std module hard-coded since the std.compat module does not
# depend on these flags.
macro(compile_define_if_not condition def)
  if (NOT ${condition})
    target_compile_definitions(std PRIVATE ${def})
  endif()
endmacro()
macro(compile_define_if condition def)
  if (${condition})
    target_compile_definitions(std PRIVATE ${def})
  endif()
endmacro()

add_library(std)
target_sources(std
  PUBLIC FILE_SET cxx_modules TYPE CXX_MODULES FILES
    std.cppm
)

target_include_directories(std SYSTEM PRIVATE @LIBCXX_CONFIGURED_INCLUDE_DIRS@)

if (NOT @LIBCXX_ENABLE_EXCEPTIONS@)
  target_compile_options(std PUBLIC -fno-exceptions)
endif()

target_compile_options(std
  PUBLIC
    -nostdinc++
    -Wno-reserved-module-identifier
    -Wno-reserved-user-defined-literal
    @LIBCXX_COMPILE_FLAGS@
)
set_target_properties(std
  PROPERTIES
    OUTPUT_NAME   "c++std"
)
