diff --git a/CMakeLists.txt b/CMakeLists.txt index d7220da..1d5899a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,28 +37,31 @@ if(FMT_USE_MODULES) list(APPEND CPPdefinitions FMT_MODULE) # FIXME: NO! list(APPEND CPPdefinitions FMT_ATTACH_TO_GLOBAL_MODULE) - if(APPLE) - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.0) - execute_process(OUTPUT_VARIABLE LLVM_PREFIX COMMAND brew --prefix llvm@20 COMMAND_ECHO STDOUT) + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0) + if(APPLE) + execute_process(OUTPUT_VARIABLE LLVM_PREFIX COMMAND brew --prefix llvm@19 COMMAND_ECHO STDOUT) string(STRIP ${LLVM_PREFIX} LLVM_PREFIX) - message(STATUS "LLVM_PREFIX=${LLVM_PREFIX}") - - # /usr/local/opt/llvm/share/libc++/v1/std.cppm - set(LLVM_LIBC_SOURCE ${LLVM_PREFIX}/share/libc++/v1) - file(REAL_PATH ${LLVM_PREFIX} LLVM_ROOT) - message(STATUS "LLVM_ROOT=${LLVM_ROOT}") - - if(EXISTS ${LLVM_LIBC_SOURCE}/std.cppm) - message(STATUS "LLVM_LIBC_SOURCE=${LLVM_LIBC_SOURCE}") - set(ADD_STDLIB_MODULES stdlib) - endif() - - add_compile_options(-fexperimental-library) - add_link_options(-L${LLVM_ROOT}/lib/c++ -lc++experimental) - add_compile_options(-stdlib=libc++) - add_link_options(-stdlib=libc++) + elseif(LINUX) + set(LLVM_PREFIX $ENV{LLVM_ROOT}) endif() + message(STATUS "LLVM_PREFIX=${LLVM_PREFIX}") + + # /usr/local/opt/llvm/share/libc++/v1/std.cppm + set(LLVM_LIBC_SOURCE ${LLVM_PREFIX}/share/libc++/v1) + file(REAL_PATH ${LLVM_PREFIX} LLVM_ROOT) + message(STATUS "LLVM_ROOT=${LLVM_ROOT}") + + if(EXISTS ${LLVM_LIBC_SOURCE}/std.cppm) + message(STATUS "LLVM_LIBC_SOURCE=${LLVM_LIBC_SOURCE}") + set(ADD_STDLIB_MODULES stdlib) + endif() + + add_compile_options(-fexperimental-library) + add_link_options(-L${LLVM_ROOT}/lib/c++ -lc++experimental) + add_compile_options(-stdlib=libc++) + add_link_options(-stdlib=libc++) + # Build the stdlib module function(add_stdlib_module NAME) add_library(${NAME}) diff --git a/CMakePresets.json b/CMakePresets.json index 7717775..989d46e 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -66,6 +66,11 @@ "CMAKE_SHARED_LINKER_FLAGS_DEBUG": "-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now" }, + "environment": { + "CXX": "clang++-19", + "LLVM_ROOT": "/usr/lib/llvm-19", + "PATH": "$env{LLVM_ROOT}/bin:$penv{PATH}" + }, "condition": { "type": "equals", "lhs": "${hostSystemName}", diff --git a/GNUmakefile b/GNUmakefile index 5e8b24e..6e84c68 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -15,8 +15,10 @@ ifeq (${hostSystemName},Darwin) #XXX export LDFLAGS?=-L${LLVM_ROOT}/lib/c++ export PATH:=${LLVM_ROOT}/bin:${PATH} export CXX:=clang++ -else ifeq (${UNAME},Linux) +else ifeq (${hostSystemName},Linux) export LLVM_ROOT:=/usr/lib/llvm-19 + export PATH:=${LLVM_ROOT}/bin:${PATH} + export CXX:=clang++-19 endif .PHONY: all check test example format clean distclean