Fix try_compile madness

This commit is contained in:
Xaymar
2025-04-20 15:49:33 +02:00
parent e57f229c77
commit 5b3a47076d
6 changed files with 251 additions and 199 deletions
+8
View File
@@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}
-1
View File
@@ -9,7 +9,6 @@
{ {
"name": "default", "name": "default",
"cacheVariables": { "cacheVariables": {
"__CMAKE_VERBOSE_MAKEFILE": "ON",
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "ON" "CMAKE_INTERPROCEDURAL_OPTIMIZATION": "ON"
}, },
"hidden": true "hidden": true
+2 -2
View File
@@ -27,7 +27,7 @@ foreach(_T IN ITEMS CMAKE_MAKE_PROGRAM)
endif() endif()
endforeach() endforeach()
if(NOT IS_EXECUTABLE CMAKE_MAKE_PROGRAM) if(NOT CMAKE_MAKE_PROGRAM)
# Try and figure out what processor we need to get binaries for. # Try and figure out what processor we need to get binaries for.
if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows") if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH) string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH)
@@ -137,7 +137,7 @@ endforeach()
# Delete the archive itself. # Delete the archive itself.
message(STATUS "Cleaning...") message(STATUS "Cleaning...")
file(REMOVE "${NINJA_DIR}.${_FILE_EXT}") #file(REMOVE "${NINJA_DIR}.${_FILE_EXT}")
# Check if Ninja is present and if it is up to date. # Check if Ninja is present and if it is up to date.
message(STATUS "Testing...") message(STATUS "Testing...")
+237 -194
View File
@@ -15,33 +15,196 @@
# This is a (mostly) self-contained toolchain file that sets up everything necessary to compile with LLVM/Clang. # This is a (mostly) self-contained toolchain file that sets up everything necessary to compile with LLVM/Clang.
# cmake --fresh -C cmake/generators/ninja.cmake --preset windows-x64-llvm # cmake --fresh -C cmake/generators/ninja.cmake --preset windows-x64-llvm
# !BUG: try_compile downloads the whole thing again, which it shouldn't. Why is CMake not passing the compiler stuff on?
# Which version of LLVM do we want to have (or newer)?
set(LLVM_VERSION "19.1.7")
cmake_minimum_required(VERSION 4.0 FATAL_ERROR) cmake_minimum_required(VERSION 4.0 FATAL_ERROR)
include_guard(GLOBAL) include_guard(GLOBAL)
list(APPEND CMAKE_MESSAGE_INDENT "[LLVM] ") list(APPEND CMAKE_MESSAGE_INDENT "[LLVM] ")
# Necessary for propagation into the try_compile CMake subprocesses. It's unclear why this is not the default behavior. # CMake 3.6: Force variables to be propagated to try_compile sub-processes.
foreach(_T IN ITEMS CMAKE_AR CMAKE_RANLIB CMAKE_LINKER CMAKE_C_COMPILER CMAKE_C_COMPILER_AR CMAKE_C_COMPILER_RANLIB CMAKE_C_COMPILER_LINKER CMAKE_C_COMPILER_LINKER_ID CMAKE_C_COMPILER_LINKER_VERSION CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER_AR CMAKE_CXX_COMPILER_RANLIB CMAKE_CXX_COMPILER_LINKER CMAKE_CXX_COMPILER_LINKER_ID CMAKE_CXX_COMPILER_LINKER_VERSION CMAKE_ASM_COMPILER CMAKE_ASM_COMPILER_AR CMAKE_ASM_COMPILER_RANLIB CMAKE_ASM_COMPILER_LINKER CMAKE_ASM_COMPILER_LINKER_ID CMAKE_ASM_COMPILER_LINKER_VERSION CMAKE_RC_COMPILER CMAKE_RC_COMPILER_AR CMAKE_RC_COMPILER_RANLIB CMAKE_RC_COMPILER_LINKER CMAKE_RC_COMPILER_LINKER_ID CMAKE_RC_COMPILER_LINKER_VERSION) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
if(DEFINED ENV{${_T}}) LLVM_CLANG
set(${_T} "$ENV{${_T}}") LLVM_CLANGPP
endif() LLVM_AR
endforeach() LLVM_RANLIB
LLVM_NM
if( LLVM_READELF
(NOT IS_EXECUTABLE CMAKE_C_COMPILER) OR LLVM_OBJCOPY
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_AR) OR LLVM_OBJDUMP
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_RANLIB) OR LLVM_STRIP
(NOT IS_EXECUTABLE CMAKE_C_COMPILER_LINKER) OR LLVM_DIR
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER) OR CMAKE_CXX_COMPILER
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_AR) OR CMAKE_C_COMPILER
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_RANLIB) OR CMAKE_ASM_COMPILER
(NOT IS_EXECUTABLE CMAKE_CXX_COMPILER_LINKER) OR CMAKE_RC_COMPILER
(NOT IS_EXECUTABLE CMAKE_LINKER) OR CMAKE_LINKER
(NOT IS_EXECUTABLE CMAKE_RANLIB) OR CMAKE_C_COMPILER_LINKER
(NOT IS_EXECUTABLE CMAKE_AR) CMAKE_CXX_COMPILER_LINKER
CMAKE_RC_COMPILER_LINKER
CMAKE_ASM_COMPILER_LINKER
CMAKE_NM
CMAKE_OBJDUMP
CMAKE_OBJCOPY
CMAKE_RANLIB
CMAKE_C_COMPILER_RANLIB
CMAKE_CXX_COMPILER_RANLIB
CMAKE_RC_COMPILER_RANLIB
CMAKE_ASM_COMPILER_RANLIB
CMAKE_AR
CMAKE_C_COMPILER_AR
CMAKE_CXX_COMPILER_AR
CMAKE_RC_COMPILER_AR
CMAKE_ASM_COMPILER_AR
) )
set(CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES OFF)
# Macro for common stuff
macro(find_llvm)
set(LLVM_FOUND "FALSE")
# - AR
find_program(
LLVM_AR
NAMES
llvm-ar
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Library Randomizer
find_program(
LLVM_RANLIB
NAMES
llvm-ranlib
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Linker
if(_ARCH MATCHES "[xX]64")
find_program(
LLVM_LD
NAMES
ld64.lld
ld.lld
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
else()
find_program(
LLVM_LD
NAMES
ld.lld
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
endif()
# - Object Copy
find_program(
LLVM_OBJCOPY
NAMES
llvm-objcopy
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Object Dump
find_program(
LLVM_OBJDUMP
NAMES
llvm-objdump
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - NM
find_program(
LLVM_NM
NAMES
llvm-nm
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - ReadELF
find_program(
LLVM_READELF
NAMES
llvm-readelf
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Strip Debug Info
find_program(
LLVM_STRIP
NAMES
llvm-strip
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - C Compiler
find_program(
LLVM_CLANG
NAMES
clang
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - C++ Compiler
find_program(
LLVM_CLANGPP
NAMES
clang++
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
set(LLVM_FOUND TRUE)
foreach(_TEST IN ITEMS
"LLVM_AR"
"LLVM_LD"
"LLVM_CLANG"
"LLVM_CLANGPP")
if(NOT IS_EXECUTABLE ${${_TEST}})
set(LLVM_FOUND FALSE)
break()
else()
execute_process(
COMMAND "${${_TEST}}" --version
OUTPUT_VARIABLE ${_TEST}_VERSION
RESULT_VARIABLE _RES
)
if(NOT _RES EQUAL 0)
set(LLVM_FOUND FALSE)
break()
endif()
string(REGEX MATCH "[1-9+]?[0-9+]\.[1-9+]?[0-9+]\.[1-9+]?[0-9+]\." "${_TEST}_VERSION" "${${_TEST}_VERSION}")
string(REGEX REPLACE "[\r\n]+" "" "${_TEST}_VERSION" "${${_TEST}_VERSION}")
endif()
endforeach()
endmacro()
if(NOT CMAKE_C_COMPILER OR NOT CMAKE_CXX_COMPILER OR NOT CMAKE_LINKER OR NOT CMAKE_AR)
# Try and figure out what processor we need to get binaries for. # Try and figure out what processor we need to get binaries for.
set(LLVM_VERSION "19.1.7")
if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows") if(CMAKE_HOST_SYSTEM_NAME MATCHES "[Ww]indows")
set(_OS "windows") set(_OS "windows")
string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH) string(TOLOWER "$ENV{PROCESSOR_ARCHITECTURE}" _ARCH)
@@ -121,138 +284,6 @@ if(
endif() endif()
set(LLVM_DIR "${CMAKE_SOURCE_DIR}/extra/llvm-${LLVM_VERSION}-${_OS}-${_ARCH}") set(LLVM_DIR "${CMAKE_SOURCE_DIR}/extra/llvm-${LLVM_VERSION}-${_OS}-${_ARCH}")
macro(find_llvm)
set(LLVM_FOUND "FALSE")
# - AR
find_program(
LLVM_AR
NAMES
llvm-ar
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Library Randomizer
find_program(
LLVM_RANLIB
NAMES
llvm-ranlib
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Linker
if(_ARCH MATCHES "[xX]64")
find_program(
LLVM_LD
NAMES
ld64.lld
ld.lld
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
else()
find_program(
LLVM_LD
NAMES
ld.lld
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
endif()
# - Object Copy
find_program(
LLVM_OBJCOPY
NAMES
llvm-objcopy
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Object Dump
find_program(
LLVM_OBJDUMP
NAMES
llvm-objdump
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - Strip Debug Info
find_program(
LLVM_STRIP
NAMES
llvm-strip
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - C Compiler
find_program(
LLVM_CLANG
NAMES
clang
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
# - C++ Compiler
find_program(
LLVM_CLANGPP
NAMES
clang++
PATHS
"${LLVM_DIR}/bin/"
NO_CACHE
)
set(LLVM_FOUND TRUE)
foreach(_TEST IN ITEMS
"LLVM_AR"
"LLVM_LD"
"LLVM_RANLIB"
"LLVM_OBJCOPY"
"LLVM_OBJDUMP"
"LLVM_STRIP"
"LLVM_CLANG"
"LLVM_CLANGPP")
if(NOT IS_EXECUTABLE ${${_TEST}})
set(LLVM_FOUND FALSE)
break()
else()
execute_process(
COMMAND "${${_TEST}}" --version
OUTPUT_VARIABLE ${_TEST}_VERSION
RESULT_VARIABLE _RES
)
if(NOT _RES EQUAL 0)
set(LLVM_FOUND FALSE)
break()
endif()
string(REGEX MATCH "[1-9+]?[0-9+]\.[1-9+]?[0-9+]\.[1-9+]?[0-9+]\." "${_TEST}_VERSION" "${${_TEST}_VERSION}")
string(REGEX REPLACE "[\r\n]+" "" "${_TEST}_VERSION" "${${_TEST}_VERSION}")
if(${_TEST}_VERSION VERSION_LESS LLVM_VERSION)
set(LLVM_FOUND FALSE)
endif()
endif()
endforeach()
# foreach(_T IN ITEMS LLVM_VERSION LLVM_DIR LLVM_AR LLVM_LD LLVM_RANLIB LLVM_OBJCOPY LLVM_OBJDUMP LLVM_STRIP LLVM_CLANG LLVM_CLANGPP LLVM_AR_VERSION LLVM_LD_VERSION LLVM_RANLIB_VERSION LLVM_OBJCOPY_VERSION LLVM_OBJDUMP_VERSION LLVM_STRIP_VERSION LLVM_CLANG_VERSION LLVM_CLANGPP)
# message(STATUS "${_T}=${${_T}}")
# endforeach()
endmacro()
# Try and find an existing LLVM installation. # Try and find an existing LLVM installation.
find_llvm() find_llvm()
if(LLVM_CLANG_VERSION AND LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION) if(LLVM_CLANG_VERSION AND LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION)
@@ -261,7 +292,7 @@ if(
message(STATUS "No installed LLVM found.") message(STATUS "No installed LLVM found.")
endif() endif()
if(NOT LLVM_FOUND OR (LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION)) if((NOT LLVM_FOUND) OR (LLVM_CLANG_VERSION VERSION_LESS LLVM_VERSION))
# It isn't up to date or doesn't exist, so try to download the latest version. # It isn't up to date or doesn't exist, so try to download the latest version.
if((_FILE_EXT MATCHES "exe") AND NOT 7ZIP_BIN) if((_FILE_EXT MATCHES "exe") AND NOT 7ZIP_BIN)
message(FATAL_ERROR "7-Zip is required to continue setting up LLVM. Please provide '7z.exe' in PATH or by installing the latest version from https://www.7-zip.org/.") message(FATAL_ERROR "7-Zip is required to continue setting up LLVM. Please provide '7z.exe' in PATH or by installing the latest version from https://www.7-zip.org/.")
@@ -297,7 +328,7 @@ if(
# Delete the archive itself. # Delete the archive itself.
message(STATUS "Cleaning...") message(STATUS "Cleaning...")
file(REMOVE "${LLVM_DIR}.${_FILE_EXT}") #file(REMOVE "${LLVM_DIR}.${_FILE_EXT}")
# Final stuff # Final stuff
#message(STATUS "Testing...") #message(STATUS "Testing...")
@@ -307,47 +338,59 @@ if(
if(LLVM_FOUND AND (LLVM_CLANG_VERSION VERSION_GREATER_EQUAL LLVM_VERSION)) if(LLVM_FOUND AND (LLVM_CLANG_VERSION VERSION_GREATER_EQUAL LLVM_VERSION))
message(STATUS "Found v${LLVM_CLANG_VERSION}.") message(STATUS "Found v${LLVM_CLANG_VERSION}.")
set(CMAKE_AR "${LLVM_AR}" CACHE STRING "" FORCE) foreach(_T IN ITEMS CMAKE_AR CMAKE_C_COMPILER_AR CMAKE_CXX_COMPILER_AR CMAKE_RC_COMPILER_AR CMAKE_ASM_COMPILER_AR)
set(CMAKE_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE) set(${_T} "${LLVM_AR}")
set(CMAKE_LINKER "${LLVM_LD}" CACHE STRING "" FORCE) #set(${_T} "${LLVM_AR}" PARENT_SCOPE)
set(${_T} "${LLVM_AR}" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE) set(ENV{${_T}} "${LLVM_AR}")
set(CMAKE_C_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
set(CMAKE_C_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER "${LLVM_CLANGPP}" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
set(CMAKE_CXX_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
set(CMAKE_ASM_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER "${LLVM_CLANG}" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER_AR "${LLVM_AR}" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER_RANLIB "${LLVM_RANLIB}" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER_LINKER "${LLVM_LD}" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER_LINKER_ID "LLD" CACHE STRING "" FORCE)
set(CMAKE_RC_COMPILER_LINKER_VERSION "${LLVM_LD_VERSION}" CACHE STRING "" FORCE)
# Needed otherwise CMake will attempt to use GNU ld, MSVC link.exe, or AppleClangs lld
# set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
# set(CMAKE_STATIC_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
# set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
# set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=\"${LLVM_LD}\"")
foreach(_T IN ITEMS CMAKE_AR CMAKE_RANLIB CMAKE_LINKER CMAKE_C_COMPILER CMAKE_C_COMPILER_AR CMAKE_C_COMPILER_RANLIB CMAKE_C_COMPILER_LINKER CMAKE_C_COMPILER_LINKER_ID CMAKE_C_COMPILER_LINKER_VERSION CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER_AR CMAKE_CXX_COMPILER_RANLIB CMAKE_CXX_COMPILER_LINKER CMAKE_CXX_COMPILER_LINKER_ID CMAKE_CXX_COMPILER_LINKER_VERSION CMAKE_ASM_COMPILER CMAKE_ASM_COMPILER_AR CMAKE_ASM_COMPILER_RANLIB CMAKE_ASM_COMPILER_LINKER CMAKE_ASM_COMPILER_LINKER_ID CMAKE_ASM_COMPILER_LINKER_VERSION CMAKE_RC_COMPILER CMAKE_RC_COMPILER_AR CMAKE_RC_COMPILER_RANLIB CMAKE_RC_COMPILER_LINKER CMAKE_RC_COMPILER_LINKER_ID CMAKE_RC_COMPILER_LINKER_VERSION)
set(ENV{${_T}} "${${_T}}")
endforeach() endforeach()
foreach(_T IN ITEMS CMAKE_RANLIB CMAKE_C_COMPILER_RANLIB CMAKE_CXX_COMPILER_RANLIB CMAKE_RC_COMPILER_RANLIB CMAKE_ASM_COMPILER_RANLIB)
set(${_T} "${LLVM_RANLIB}")
#set(${_T} "${LLVM_RANLIB}" PARENT_SCOPE)
set(${_T} "${LLVM_RANLIB}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_RANLIB}")
endforeach()
foreach(_T IN ITEMS CMAKE_OBJCOPY)
set(${_T} "${LLVM_OBJCOPY}")
#set(${_T} "${LLVM_OBJCOPY}" PARENT_SCOPE)
set(${_T} "${LLVM_OBJCOPY}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_OBJCOPY}")
endforeach()
foreach(_T IN ITEMS CMAKE_OBJDUMP)
set(${_T} "${LLVM_OBJDUMP}")
#set(${_T} "${LLVM_OBJDUMP}" PARENT_SCOPE)
set(${_T} "${LLVM_OBJDUMP}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_OBJDUMP}")
endforeach()
foreach(_T IN ITEMS CMAKE_NM)
set(${_T} "${LLVM_NM}")
#set(${_T} "${LLVM_NM}" PARENT_SCOPE)
set(${_T} "${LLVM_NM}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_NM}")
endforeach()
foreach(_T IN ITEMS CMAKE_LINKER CMAKE_C_COMPILER_LINKER CMAKE_CXX_COMPILER_LINKER CMAKE_RC_COMPILER_LINKER CMAKE_ASM_COMPILER_LINKER)
set(${_T} "${LLVM_LD}")
#set(${_T} "${LLVM_LD}" PARENT_SCOPE)
set(${_T} "${LLVM_LD}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_LD}")
endforeach()
foreach(_T IN ITEMS CMAKE_C_COMPILER CMAKE_ASM_COMPILER CMAKE_RC_COMPILER)
set(${_T} "${LLVM_CLANG}")
#set(${_T} "${LLVM_CLANG}" PARENT_SCOPE)
set(${_T} "${LLVM_CLANG}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_CLANG}")
endforeach()
foreach(_T IN ITEMS CMAKE_CXX_COMPILER)
set(${_T} "${LLVM_CLANGPP}")
#set(${_T} "${LLVM_CLANGPP}" PARENT_SCOPE)
set(${_T} "${LLVM_CLANGPP}" CACHE STRING "" FORCE)
set(ENV{${_T}} "${LLVM_CLANGPP}")
endforeach()
foreach(_T IN ITEMS LLVM_CLANG LLVM_CLANGPP LLVM_AR LLVM_RANLIB LLVM_NM LLVM_READELF LLVM_OBJCOPY LLVM_OBJDUMP LLVM_STRIP LLVM_DIR)
set(${_T} "${${_T}}" CACHE STRING "" FORCE)
set(ENV${_T} "${${_T}}")
endforeach()
else() else()
message(FATAL_ERROR "Failed to find or provide a compatible LLVM installation.") message(FATAL_ERROR "Failed to find or provide a compatible LLVM installation.")
endif() endif()
+3 -1
View File
@@ -53,7 +53,7 @@ blitz::ast::variable::~variable()
* - Struct Variable * - Struct Variable
* Variable.StructName * Variable.StructName
* Variable:StructName * Variable:StructName
* *
* Access: * Access:
* - Struct Access: * - Struct Access:
* Variable\Key * Variable\Key
@@ -165,6 +165,8 @@ bool blitz::ast::value::can_parse(std::shared_ptr<blitz::lexer> lexer)
} }
break; break;
} }
default:
break;
} }
return false; return false;
+1 -1
View File
@@ -85,4 +85,4 @@ int main(int argc, char** argv)
// Print Int(myName) ; <- Prints the address of the object contained in myName. // Print Int(myName) ; <- Prints the address of the object contained in myName.
// ``` // ```
// //
// As this is a Basic language, there is no concept of undefined or uninitialized anything. Every behavior is well defined. // As this is a Basic language, there is no concept of undefined or uninitialized anything. Every behavior is "well" defined even if confusing.