Disable build burden (LLVM) locally

This commit is contained in:
David Gonzalez Martin 2024-11-09 06:02:54 -06:00 committed by David
parent ea56f55629
commit 969f9a3700

View File

@ -32,6 +32,8 @@ else()
message(STATUS "CMake is not run on CI") message(STATUS "CMake is not run on CI")
endif() endif()
set (USE_LLVM ${BB_IS_CI} CACHE BOOL "Variable that determines if LLVM should be linked to the target")
add_compile_options( add_compile_options(
-pedantic -pedantic
-Wall -Wextra -Wpedantic -Wall -Wextra -Wpedantic
@ -43,9 +45,29 @@ add_compile_options(
) )
include_directories("bootstrap/include") include_directories("bootstrap/include")
find_package(LLVM REQUIRED CONFIG) add_library("${LIBRARY_NAME}"
"bootstrap/std/base.c"
"bootstrap/std/string.c"
"bootstrap/std/os.c"
"bootstrap/std/entry_point.c"
"bootstrap/std/virtual_buffer.c"
"bootstrap/std/md5.c"
"bootstrap/std/sha1.c"
)
add_executable("${RUNNER_NAME}" "bootstrap/runner/runner.c")
target_link_libraries(${RUNNER_NAME} PRIVATE ${LIBRARY_NAME})
find_program(LLVM_CONFIG_EXE add_executable("${COMPILER_NAME}"
"bootstrap/bloat-buster/main.c"
"bootstrap/bloat-buster/pdb_image.c"
"bootstrap/bloat-buster/gui.c"
)
target_link_libraries(${COMPILER_NAME} PRIVATE ${LIBRARY_NAME})
if (USE_LLVM)
find_package(LLVM REQUIRED CONFIG)
find_program(LLVM_CONFIG_EXE
NAMES llvm-config-19 llvm-config-19.0 llvm-config190 llvm-config19 llvm-config NAMES_PER_DIR NAMES llvm-config-19 llvm-config-19.0 llvm-config190 llvm-config19 llvm-config NAMES_PER_DIR
PATHS PATHS
"/mingw64/bin" "/mingw64/bin"
@ -53,44 +75,44 @@ find_program(LLVM_CONFIG_EXE
"c:/msys64/mingw64/bin" "c:/msys64/mingw64/bin"
"C:/Libraries/llvm-19.0.0/bin") "C:/Libraries/llvm-19.0.0/bin")
if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND")
if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "") if (NOT LLVM_CONFIG_ERROR_MESSAGES STREQUAL "")
list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE) list(JOIN LLVM_CONFIG_ERROR_MESSAGES "\n" LLVM_CONFIG_ERROR_MESSAGE)
message(FATAL_ERROR ${LLVM_CONFIG_ERROR_MESSAGE}) message(FATAL_ERROR ${LLVM_CONFIG_ERROR_MESSAGE})
else() else()
message(FATAL_ERROR "unable to find llvm-config") message(FATAL_ERROR "unable to find llvm-config")
endif() endif()
endif() endif()
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --libs COMMAND ${LLVM_CONFIG_EXE} --libs
OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES OUTPUT_VARIABLE LLVM_LIBRARIES_SPACES
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}") string(REPLACE " " ";" LLVM_LIBRARIES "${LLVM_LIBRARIES_SPACES}")
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --libdir COMMAND ${LLVM_CONFIG_EXE} --libdir
OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES OUTPUT_VARIABLE LLVM_LIBDIRS_SPACES
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}") string(REPLACE " " ";" LLVM_LIBDIRS "${LLVM_LIBDIRS_SPACES}")
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --system-libs COMMAND ${LLVM_CONFIG_EXE} --system-libs
OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_SPACES
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}") string(REPLACE " " ";" LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS_SPACES}")
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --shared-mode COMMAND ${LLVM_CONFIG_EXE} --shared-mode
OUTPUT_VARIABLE LLVM_LINK_MODE OUTPUT_VARIABLE LLVM_LINK_MODE
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
cmake_print_variables("LLVM libs: ${LLVM_LIBRARIES}") cmake_print_variables("LLVM libs: ${LLVM_LIBRARIES}")
cmake_print_variables("LLVM libdirs: ${LLVM_LIBDIRS}") cmake_print_variables("LLVM libdirs: ${LLVM_LIBDIRS}")
cmake_print_variables("LLVM system libs: ${LLVM_SYSTEM_LIBS}") cmake_print_variables("LLVM system libs: ${LLVM_SYSTEM_LIBS}")
cmake_print_variables("LLVM link mode: ${LLVM_LINK_MODE}") cmake_print_variables("LLVM link mode: ${LLVM_LINK_MODE}")
if (${LLVM_LINK_MODE} STREQUAL "shared") if (${LLVM_LINK_MODE} STREQUAL "shared")
# We always ask for the system libs corresponding to static linking, # We always ask for the system libs corresponding to static linking,
# since on some distros LLD is only available as a static library # since on some distros LLD is only available as a static library
# and we need these libraries to link it successfully # and we need these libraries to link it successfully
@ -108,7 +130,7 @@ if (${LLVM_LINK_MODE} STREQUAL "shared")
find_library(LLD_WASM NAMES liblldWasm.so PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH) find_library(LLD_WASM NAMES liblldWasm.so PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS}) set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS} ${LLVM_STATIC_SYSTEM_LIBS})
else() else()
find_library(LLD_COFF NAMES lldCOFF.lib lldCOFF.a liblldCOFF.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH) find_library(LLD_COFF NAMES lldCOFF.lib lldCOFF.a liblldCOFF.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH)
find_library(LLD_COMMON NAMES lldCommon.lib lldCommon.a liblldCommon.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH) find_library(LLD_COMMON NAMES lldCommon.lib lldCommon.a liblldCommon.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH)
find_library(LLD_ELF NAMES lldELF.lib lldELF.a liblldELF.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH) find_library(LLD_ELF NAMES lldELF.lib lldELF.a liblldELF.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH)
@ -117,24 +139,24 @@ else()
find_library(LLD_WASM NAMES lldWasm.lib lldWasm.a liblldWasm.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH) find_library(LLD_WASM NAMES lldWasm.lib lldWasm.a liblldWasm.a PATHS ${LLVM_LIBRARY_DIRS} NO_DEFAULT_PATH)
set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
endif() endif()
set(lld_libs set(lld_libs
${LLD_COFF} ${LLD_COFF}
${LLD_ELF} ${LLD_ELF}
${LLD_COMMON} ${LLD_COMMON}
${LLD_MINGW} ${LLD_MINGW}
${LLD_MACHO} ${LLD_MACHO}
${LLD_WASM} ${LLD_WASM}
) )
execute_process( execute_process(
COMMAND ${LLVM_CONFIG_EXE} --includedir COMMAND ${LLVM_CONFIG_EXE} --includedir
OUTPUT_VARIABLE LLVM_INCLUDE_DIRS_SPACES OUTPUT_VARIABLE LLVM_INCLUDE_DIRS_SPACES
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}") string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}")
if (APPLE) if (APPLE)
if (MSVC) if (MSVC)
list(REMOVE_ITEM LLVM_LIBRARIES "zstd.lib") list(REMOVE_ITEM LLVM_LIBRARIES "zstd.lib")
else() else()
@ -143,36 +165,22 @@ if (APPLE)
find_library(ZSTD NAMES libzstd.a libzstdstatic.a zstd NAMES_PER_DIR) find_library(ZSTD NAMES libzstd.a libzstdstatic.a zstd NAMES_PER_DIR)
list(APPEND LLVM_LIBRARIES "${ZSTD}") list(APPEND LLVM_LIBRARIES "${ZSTD}")
endif() endif()
link_directories("${LLVM_LIBDIRS}") link_directories("${LLVM_LIBDIRS}")
add_library("${LIBRARY_NAME}" target_compile_definitions(${COMPILER_NAME} PRIVATE ${LLVM_DEFINITIONS})
"bootstrap/std/base.c" cmake_print_variables("LLVM definitions: ${LLVM_DEFINITIONS}")
"bootstrap/std/string.c" target_include_directories(${COMPILER_NAME} PRIVATE ${LLVM_INCLUDE_DIRS})
"bootstrap/std/os.c" target_link_directories(${COMPILER_NAME} PRIVATE ${LLVM_LIBRARY_DIRS})
"bootstrap/std/entry_point.c" target_link_libraries(${COMPILER_NAME} PRIVATE ${LLVM_LIBRARIES} ${lld_libs})
"bootstrap/std/virtual_buffer.c" target_sources(${COMPILER_NAME} PRIVATE
"bootstrap/std/md5.c"
"bootstrap/std/sha1.c"
)
add_executable("${RUNNER_NAME}" "bootstrap/runner/runner.c")
target_link_libraries(${RUNNER_NAME} PRIVATE ${LIBRARY_NAME})
add_executable("${COMPILER_NAME}"
"bootstrap/bloat-buster/main.c"
"bootstrap/bloat-buster/pdb_image.c"
"bootstrap/bloat-buster/llvm.cpp" "bootstrap/bloat-buster/llvm.cpp"
"bootstrap/bloat-buster/lld_driver.c" "bootstrap/bloat-buster/lld_driver.c"
"bootstrap/bloat-buster/lld_api.cpp" "bootstrap/bloat-buster/lld_api.cpp"
"bootstrap/bloat-buster/gui.c" )
) endif()
target_compile_definitions(${COMPILER_NAME} PRIVATE ${LLVM_DEFINITIONS})
cmake_print_variables("LLVM definitions: ${LLVM_DEFINITIONS}")
target_include_directories(${COMPILER_NAME} PRIVATE ${LLVM_INCLUDE_DIRS})
target_link_directories(${COMPILER_NAME} PRIVATE ${LLVM_LIBRARY_DIRS})
target_link_libraries(${COMPILER_NAME} PRIVATE ${LIBRARY_NAME} ${LLVM_LIBRARIES} ${lld_libs})
if (NOT BB_IS_CI) if (NOT BB_IS_CI)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)