# Detect whether the current target platform is 32-bit or 64-bit, and setup
# the correct commandline flags needed to attempt to target 32-bit and 64-bit.
if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR LLVM_BUILD_32_BITS)
- set(TARGET_X86_64_CFLAGS "-m64")
- set(TARGET_I386_CFLAGS "")
+ set(TARGET_x86_64_CFLAGS "-m64")
+ set(TARGET_i386_CFLAGS "")
else()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(FATAL_ERROR "Please use a sane architecture with 4 or 8 byte pointers.")
endif()
- set(TARGET_X86_64_CFLAGS "")
- set(TARGET_I386_CFLAGS "-m32")
+ set(TARGET_x86_64_CFLAGS "")
+ set(TARGET_i386_CFLAGS "-m32")
endif()
function(get_target_flags_for_arch arch out_var)
if(${arch} STREQUAL "x86_64")
- set(${out_var} ${TARGET_X86_64_CFLAGS} PARENT_SCOPE)
+ set(${out_var} ${TARGET_x86_64_CFLAGS} PARENT_SCOPE)
elseif(${arch} STREQUAL "i386")
- set(${out_var} ${TARGET_I386_CFLAGS} PARENT_SCOPE)
+ set(${out_var} ${TARGET_i386_CFLAGS} PARENT_SCOPE)
else()
message(FATAL_ERROR "Unsupported architecture: ${arch}")
endif()
# abilities.
set(SIMPLE_SOURCE64 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple64.c)
file(WRITE ${SIMPLE_SOURCE64} "#include <stdlib.h>\nint main() {}")
-try_compile(CAN_TARGET_X86_64 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE64}
- COMPILE_DEFINITIONS "${TARGET_X86_64_CFLAGS}"
- CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_X86_64_CFLAGS}")
+try_compile(CAN_TARGET_x86_64 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE64}
+ COMPILE_DEFINITIONS "${TARGET_x86_64_CFLAGS}"
+ CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_x86_64_CFLAGS}")
set(SIMPLE_SOURCE32 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/simple32.c)
file(WRITE ${SIMPLE_SOURCE32} "#include <stdlib.h>\nint main() {}")
-try_compile(CAN_TARGET_I386 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE32}
- COMPILE_DEFINITIONS "${TARGET_I386_CFLAGS}"
- CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_I386_CFLAGS}")
+try_compile(CAN_TARGET_i386 ${CMAKE_BINARY_DIR} ${SIMPLE_SOURCE32}
+ COMPILE_DEFINITIONS "${TARGET_i386_CFLAGS}"
+ CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${TARGET_i386_CFLAGS}")
# We only support running instrumented tests when we're not cross compiling
# and target a unix-like system. On Android we define the rules for building
function(filter_available_targets out_var)
set(archs)
foreach(arch ${ARGN})
- if(${arch} STREQUAL "x86_64" AND CAN_TARGET_X86_64)
+ if(${arch} STREQUAL "x86_64" AND CAN_TARGET_x86_64)
list(APPEND archs ${arch})
- elseif (${arch} STREQUAL "i386" AND CAN_TARGET_I386)
+ elseif (${arch} STREQUAL "i386" AND CAN_TARGET_i386)
list(APPEND archs ${arch})
endif()
endforeach()
umodti3.c
)
-if(CAN_TARGET_X86_64)
+if(CAN_TARGET_x86_64)
add_library(clang_rt.x86_64 STATIC
x86_64/floatdidf.c
x86_64/floatdisf.c
x86_64/floatundixf.S
${GENERIC_SOURCES}
)
- set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_X86_64_CFLAGS}")
+ set_target_properties(clang_rt.x86_64 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_x86_64_CFLAGS}")
add_clang_compiler_rt_libraries(clang_rt.x86_64)
endif()
-if(CAN_TARGET_I386)
+if(CAN_TARGET_i386)
add_library(clang_rt.i386 STATIC
i386/ashldi3.S
i386/ashrdi3.S
i386/umoddi3.S
${GENERIC_SOURCES}
)
- set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_I386_CFLAGS}")
+ set_target_properties(clang_rt.i386 PROPERTIES COMPILE_FLAGS "-std=c99 ${TARGET_i386_CFLAGS}")
add_clang_compiler_rt_libraries(clang_rt.i386)
endif()
list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-arm-android)
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_library(clang_rt.asan-x86_64 STATIC
${ASAN_SOURCES}
$<TARGET_OBJECTS:RTInterception.x86_64>
$<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
)
set_target_compile_flags(clang_rt.asan-x86_64
- ${ASAN_CFLAGS} ${TARGET_X86_64_CFLAGS}
+ ${ASAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
)
list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-x86_64)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_library(clang_rt.asan-i386 STATIC
${ASAN_SOURCES}
$<TARGET_OBJECTS:RTInterception.i386>
$<TARGET_OBJECTS:RTSanitizerCommon.i386>
)
set_target_compile_flags(clang_rt.asan-i386
- ${ASAN_CFLAGS} ${TARGET_I386_CFLAGS}
+ ${ASAN_CFLAGS} ${TARGET_i386_CFLAGS}
)
list(APPEND ASAN_RUNTIME_LIBRARIES clang_rt.asan-i386)
endif()
# passing -fsanitize=address flag.
list(APPEND ASAN_LINK_FLAGS -fsanitize=address)
endif()
+
# Unit tests on Mac depend on Foundation.
if(APPLE)
list(APPEND ASAN_LINK_FLAGS -framework Foundation)
endmacro()
if(COMPILER_RT_CAN_EXECUTE_TESTS)
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_asan_tests_for_arch(x86_64)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_asan_tests_for_arch(i386)
endif()
endif()
OSX_ARCHITECTURES "${INTERCEPTION_TARGETS}")
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_library(RTInterception.x86_64 OBJECT ${INTERCEPTION_SOURCES})
set_target_compile_flags(RTInterception.x86_64
- ${INTERCEPTION_CFLAGS} ${TARGET_X86_64_CFLAGS})
+ ${INTERCEPTION_CFLAGS} ${TARGET_x86_64_CFLAGS})
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_library(RTInterception.i386 OBJECT ${INTERCEPTION_SOURCES})
set_target_compile_flags(RTInterception.i386
- ${INTERCEPTION_CFLAGS} ${TARGET_I386_CFLAGS})
+ ${INTERCEPTION_CFLAGS} ${TARGET_i386_CFLAGS})
endif()
if(ANDROID)
add_library(RTInterception.arm.android OBJECT ${INTERCEPTION_SOURCES})
$<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
)
set_target_compile_flags(clang_rt.msan-x86_64
- ${MSAN_RTL_CFLAGS} ${TARGET_X86_64_CFLAGS}
+ ${MSAN_RTL_CFLAGS} ${TARGET_x86_64_CFLAGS}
)
list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-x86_64)
endmacro()
if(COMPILER_RT_CAN_EXECUTE_TESTS AND EXISTS ${MSAN_LIBCXX_PATH}/)
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_msan_tests_for_arch(x86_64)
endif()
list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
else()
# Otherwise, build separate libraries for each target.
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_library(RTSanitizerCommon.x86_64 OBJECT ${SANITIZER_SOURCES})
set_target_compile_flags(RTSanitizerCommon.x86_64
- ${SANITIZER_CFLAGS} ${TARGET_X86_64_CFLAGS})
+ ${SANITIZER_CFLAGS} ${TARGET_x86_64_CFLAGS})
list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_library(RTSanitizerCommon.i386 OBJECT ${SANITIZER_SOURCES})
set_target_compile_flags(RTSanitizerCommon.i386
- ${SANITIZER_CFLAGS} ${TARGET_I386_CFLAGS})
+ ${SANITIZER_CFLAGS} ${TARGET_i386_CFLAGS})
list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386)
endif()
if(ANDROID)
add_sanitizer_common_lib("RTSanitizerCommon.test.osx"
$<TARGET_OBJECTS:RTSanitizerCommon.osx>)
else()
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_sanitizer_common_lib("RTSanitizerCommon.test.x86_64"
$<TARGET_OBJECTS:RTSanitizerCommon.x86_64>)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_sanitizer_common_lib("RTSanitizerCommon.test.i386"
$<TARGET_OBJECTS:RTSanitizerCommon.i386>)
endif()
endif()
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_sanitizer_tests_for_arch(x86_64)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_sanitizer_tests_for_arch(i386)
endif()
set(TSAN_RUNTIME_LIBRARIES)
# TSan is currently supported on 64-bit Linux only.
-if(CAN_TARGET_X86_64 AND UNIX AND NOT APPLE)
+if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE)
set(TSAN_ASM_SOURCES tsan_rtl_amd64.S)
# Pass ASM file directly to the C++ compiler.
set_source_files_properties(${TSAN_ASM_SOURCES} PROPERTIES
$<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
)
set_target_compile_flags(clang_rt.tsan-x86_64
- ${TSAN_CFLAGS} ${TARGET_X86_64_CFLAGS}
+ ${TSAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
)
list(APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-x86_64)
endif()
function(add_tsan_unittest testname)
# Build unit tests only on 64-bit Linux.
if(UNIX AND NOT APPLE
- AND CAN_TARGET_X86_64
+ AND CAN_TARGET_x86_64
AND CMAKE_SIZEOF_VOID_P EQUAL 8
AND NOT LLVM_BUILD_32_BITS)
add_unittest(TsanUnitTests ${testname} ${ARGN})
list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan_osx)
else()
# Build separate libraries for each target.
- if(CAN_TARGET_X86_64)
+ if(CAN_TARGET_x86_64)
add_library(clang_rt.ubsan-x86_64 STATIC
${UBSAN_SOURCES}
$<TARGET_OBJECTS:RTSanitizerCommon.x86_64>
)
set_target_compile_flags(clang_rt.ubsan-x86_64
- ${UBSAN_CFLAGS} ${TARGET_X86_64_CFLAGS}
+ ${UBSAN_CFLAGS} ${TARGET_x86_64_CFLAGS}
)
list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-x86_64)
endif()
- if(CAN_TARGET_I386)
+ if(CAN_TARGET_i386)
add_library(clang_rt.ubsan-i386 STATIC
${UBSAN_SOURCES}
$<TARGET_OBJECTS:RTSanitizerCommon.i386>
)
set_target_compile_flags(clang_rt.ubsan-i386
- ${UBSAN_CFLAGS} ${TARGET_I386_CFLAGS}
+ ${UBSAN_CFLAGS} ${TARGET_i386_CFLAGS}
)
list(APPEND UBSAN_RUNTIME_LIBRARIES clang_rt.ubsan-i386)
endif()