Skip to content

Commit

Permalink
remove buggy execinfo impl; swap with glibc builtin impl.
Browse files Browse the repository at this point in the history
  • Loading branch information
Kracken256 committed Jul 2, 2024
1 parent 717e6cd commit 0544fb1
Show file tree
Hide file tree
Showing 9 changed files with 72 additions and 824 deletions.
29 changes: 22 additions & 7 deletions libquixcc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
cmake_minimum_required(VERSION 3.15)
project(libquixcc CXX)

add_subdirectory(deps/libexecinfo)
#================== CALCULATE BUILD ID ==================
set(ENV_CONCAT_DATA "")
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
string(CONCAT ENV_CONCAT_DATA "${ENV_CONCAT_DATA}${_variableName}=${${_variableName}}:")
endforeach()
execute_process(COMMAND find ${CMAKE_CURRENT_SOURCE_DIR} -type f -name "*.cc" -exec sha256sum {} \; COMMAND sha256sum
OUTPUT_VARIABLE SHA256SUMS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND echo ${ENV_CONCAT_DATA} ${SHA256SUMS} COMMAND sha256sum
OUTPUT_VARIABLE SHA256SUMS OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX REPLACE " .*" "" SHA256SUMS ${SHA256SUMS})
string(TOUPPER ${SHA256SUMS} SHA256SUMS)
string(SUBSTRING ${SHA256SUMS} 0 32 SHA256SUMS)
set(LIBQUIX_VERSION "\"QUIXCC_${SHA256SUMS}\"")
message(STATUS "LibQuix VersionId: ${LIBQUIX_VERSION}")

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand All @@ -20,15 +35,15 @@ string(REPLACE " " ";" LLVM_LIBS "${LLVM_LIBS}")
string(REPLACE "\n" " " LLVM_LIBS_BASH "${LLVM_LIBS_RAW}")

SET(BUILD_FLAGS_COMMON -g -O3 -Wall -Wextra -pedantic -Werror -Wno-error=unused-parameter -Wno-error=mismatched-new-delete -DLLVM_SUUPORT_ALL_TARGETS)
SET(PROJECT_RELEASE_FLAGS ${BUILD_FLAGS_COMMON} -DNDEBUG)
SET(PROJECT_DEBUG_FLAGS ${BUILD_FLAGS_COMMON} -fsanitize=address -fsanitize=undefined -Wno-error=unused-variable -Wno-unused-parameter)
SET(PROJECT_RELEASE_FLAGS ${BUILD_FLAGS_COMMON} -DNDEBUG -DLIBQUIX_VERSION=${LIBQUIX_VERSION})
SET(PROJECT_DEBUG_FLAGS ${BUILD_FLAGS_COMMON} -fsanitize=address -fsanitize=undefined -Wno-error=unused-variable -Wno-unused-parameter -DLIBQUIX_VERSION="undefined")

file(GLOB_RECURSE LIBQUIX_CXX_SOURCES "src/*.cc")

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
#================== CREATE DEBUG BUILD ==================
add_library(quixcc SHARED ${LIBQUIX_CXX_SOURCES})
target_include_directories(quixcc PUBLIC "internal" include deps/libexecinfo)
target_include_directories(quixcc PUBLIC "internal" include)
target_compile_options(quixcc PRIVATE ${PROJECT_DEBUG_FLAGS} -fprofile-arcs -ftest-coverage --coverage)
target_link_options(quixcc PRIVATE ${LLVM_LD_FLAGS} -fprofile-arcs -ftest-coverage --coverage)

Expand All @@ -37,11 +52,11 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
message(STATUS "Linking ${lib}")
endforeach()

target_link_libraries(quixcc PRIVATE libboost_serialization.a boost_filesystem libcrypto.a execinfo-static libstdc++.a z tinfo -fsanitize=address -fsanitize=undefined)
target_link_libraries(quixcc PRIVATE libboost_serialization.a boost_filesystem libcrypto.a libstdc++.a z tinfo -fsanitize=address -fsanitize=undefined)
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
#========= CREATE SHARED LIBRARY RELEASE BUILD ==========
add_library(quixcc SHARED ${LIBQUIX_CXX_SOURCES})
target_include_directories(quixcc PUBLIC "internal" include deps/libexecinfo)
target_include_directories(quixcc PUBLIC "internal" include)
target_compile_options(quixcc PRIVATE ${PROJECT_RELEASE_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -flto)
target_link_options(quixcc PRIVATE ${LLVM_LD_FLAGS} -Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/symexport.map)

Expand All @@ -51,7 +66,7 @@ elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
message(STATUS "Linking ${lib}")
endforeach()

target_link_libraries(quixcc PRIVATE libboost_serialization.a libboost_filesystem.a libcrypto.a execinfo-static libstdc++.a libz.a tinfo)
target_link_libraries(quixcc PRIVATE libboost_serialization.a libboost_filesystem.a libcrypto.a libstdc++.a libz.a tinfo)

add_custom_command(TARGET quixcc POST_BUILD COMMAND ${CMAKE_STRIP} $<TARGET_FILE:quixcc>)
endif()
Expand Down
Empty file added libquixcc/deps/.gitkeep
Empty file.
9 changes: 0 additions & 9 deletions libquixcc/deps/libexecinfo/CMakeLists.txt

This file was deleted.

145 changes: 0 additions & 145 deletions libquixcc/deps/libexecinfo/execinfo.c

This file was deleted.

44 changes: 0 additions & 44 deletions libquixcc/deps/libexecinfo/execinfo.h

This file was deleted.

49 changes: 0 additions & 49 deletions libquixcc/deps/libexecinfo/gen.py

This file was deleted.

Loading

0 comments on commit 0544fb1

Please sign in to comment.