Skip to content

Commit 4e3aa36

Browse files
committed
Allow setting compiler_rt_default_target or guess based on compiler used
1 parent b7c2d0f commit 4e3aa36

2 files changed

Lines changed: 28 additions & 53 deletions

File tree

packages/fuzzer/CMakeLists.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,33 @@ set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
6969
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_JS_INC})
7070
target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
7171

72+
# We're not sure why but sometimes systems don't end up setting LLVM_TARGET_TRIPLE used in llvm's cmake to eventually
73+
# set COMPILER_RT_DEFAULT_TARGET which is necessary for compiler-rt to build
74+
# So this will either take it from an envvar or try to set it to a sane value until we can figure out why it's broken
75+
if(NOT DEFINED ENV{COMPILER_RT_DEFAULT_TARGET})
76+
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
77+
execute_process(COMMAND ${CMAKE_CXX_COMPILER} "-print-target-triple" OUTPUT_VARIABLE COMPILER_RT_DEFAULT_TARGET)
78+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
79+
execute_process(COMMAND ${CMAKE_CXX_COMPILER} "-print-multiarch" OUTPUT_VARIABLE COMPILER_RT_DEFAULT_TARGET)
80+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
81+
# pulled from https://github.com/llvm/llvm-project/blob/main/llvm/cmake/modules/GetHostTriple.cmake
82+
if( CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "ARM64.*" )
83+
set( COMPILER_RT_DEFAULT_TARGET "aarch64-pc-windows-msvc" )
84+
elseif( CMAKE_C_COMPILER_ARCHITECTURE_ID MATCHES "ARM.*" )
85+
set( COMPILER_RT_DEFAULT_TARGET "armv7-pc-windows-msvc" )
86+
elseif( CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "x64" )
87+
set( COMPILER_RT_DEFAULT_TARGET "x86_64-pc-windows-msvc" )
88+
elseif( CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "X86" )
89+
set( COMPILER_RT_DEFAULT_TARGET "i686-pc-windows-msvc" )
90+
elseif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
91+
set( COMPILER_RT_DEFAULT_TARGET "x86_64-pc-windows-msvc" )
92+
else()
93+
set( COMPILER_RT_DEFAULT_TARGET "i686-pc-windows-msvc" )
94+
endif()
95+
endif()
96+
message(STATUS "COMPILER_RT_DEFAULT_TARGET not set, using ${COMPILER_RT_DEFAULT_TARGET}")
97+
endif()
98+
7299
# Download and build compiler-rt, which contains libfuzzer.
73100
include(ExternalProject)
74101
ExternalProject_Add(
@@ -90,6 +117,7 @@ ExternalProject_Add(
90117
-DCOMPILER_RT_USE_LIBCXX=OFF
91118
# Use the same build type as the parent project.
92119
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
120+
# -DCOMPILER_RT_DEFAULT_TARGET=${COMPILER_RT_DEFAULT_TARGET}
93121
# We only need libfuzzer from the compiler-rt project.
94122
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target
95123
${LIBFUZZER_TARGET}

packages/fuzzer/fuzzer.test.ts

Lines changed: 0 additions & 53 deletions
This file was deleted.

0 commit comments

Comments
 (0)