Index: compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake =================================================================== --- compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake +++ compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake @@ -343,96 +343,94 @@ # architectures we bail here. set(DARWIN_SOFT_FLOAT_ARCHS armv6m armv7m armv7em armv7) set(DARWIN_HARD_FLOAT_ARCHS armv7em armv7) - if(NOT COMPILER_RT_SUPPORTED_ARCH MATCHES ".*armv.*") - return() - endif() - - list(FIND COMPILER_RT_SUPPORTED_ARCH i386 i386_idx) - if(i386_idx GREATER -1) - list(APPEND DARWIN_HARD_FLOAT_ARCHS i386) - endif() - - list(FIND COMPILER_RT_SUPPORTED_ARCH x86_64 x86_64_idx) - if(x86_64_idx GREATER -1) - list(APPEND DARWIN_HARD_FLOAT_ARCHS x86_64) - endif() - - set(MACHO_SYM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/macho_embedded) - - set(CFLAGS "-Oz -Wall -fomit-frame-pointer -ffreestanding") - set(CMAKE_C_FLAGS "") - set(CMAKE_CXX_FLAGS "") - set(CMAKE_ASM_FLAGS "") + if(COMPILER_RT_SUPPORTED_ARCH MATCHES ".*armv.*") + list(FIND COMPILER_RT_SUPPORTED_ARCH i386 i386_idx) + if(i386_idx GREATER -1) + list(APPEND DARWIN_HARD_FLOAT_ARCHS i386) + endif() - set(SOFT_FLOAT_FLAG -mfloat-abi=soft) - set(HARD_FLOAT_FLAG -mfloat-abi=hard) + list(FIND COMPILER_RT_SUPPORTED_ARCH x86_64 x86_64_idx) + if(x86_64_idx GREATER -1) + list(APPEND DARWIN_HARD_FLOAT_ARCHS x86_64) + endif() - set(ENABLE_PIC Off) - set(PIC_FLAG -fPIC) - set(STATIC_FLAG -static) - - set(DARWIN_macho_embedded_ARCHS armv6m armv7m armv7em armv7 i386 x86_64) - - set(DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR - ${COMPILER_RT_OUTPUT_DIR}/lib/macho_embedded) - set(DARWIN_macho_embedded_LIBRARY_INSTALL_DIR - ${COMPILER_RT_INSTALL_PATH}/lib/macho_embedded) - - set(CFLAGS_armv7 "-target thumbv7-apple-darwin-eabi") - set(CFLAGS_i386 "-march=pentium") + set(MACHO_SYM_DIR ${CMAKE_CURRENT_SOURCE_DIR}/macho_embedded) - darwin_read_list_from_file(common_FUNCTIONS ${MACHO_SYM_DIR}/common.txt) - darwin_read_list_from_file(thumb2_FUNCTIONS ${MACHO_SYM_DIR}/thumb2.txt) - darwin_read_list_from_file(thumb2_64_FUNCTIONS ${MACHO_SYM_DIR}/thumb2-64.txt) - darwin_read_list_from_file(arm_FUNCTIONS ${MACHO_SYM_DIR}/arm.txt) - darwin_read_list_from_file(i386_FUNCTIONS ${MACHO_SYM_DIR}/i386.txt) - - - set(armv6m_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS}) - set(armv7m_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS}) - set(armv7em_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS}) - set(armv7_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS} ${thumb2_64_FUNCTIONS}) - set(i386_FUNCTIONS ${common_FUNCTIONS} ${i386_FUNCTIONS}) - set(x86_64_FUNCTIONS ${common_FUNCTIONS}) - - foreach(arch ${DARWIN_macho_embedded_ARCHS}) - darwin_filter_builtin_sources(${arch}_filtered_sources - INCLUDE ${arch}_FUNCTIONS - ${${arch}_SOURCES}) - if(NOT ${arch}_filtered_sources) - message("${arch}_SOURCES: ${${arch}_SOURCES}") - message("${arch}_FUNCTIONS: ${${arch}_FUNCTIONS}") - message(FATAL_ERROR "Empty filtered sources!") - endif() - endforeach() + set(CFLAGS "-Oz -Wall -fomit-frame-pointer -ffreestanding") + set(CMAKE_C_FLAGS "") + set(CMAKE_CXX_FLAGS "") + set(CMAKE_ASM_FLAGS "") + + set(SOFT_FLOAT_FLAG -mfloat-abi=soft) + set(HARD_FLOAT_FLAG -mfloat-abi=hard) + + set(ENABLE_PIC Off) + set(PIC_FLAG -fPIC) + set(STATIC_FLAG -static) + + set(DARWIN_macho_embedded_ARCHS armv6m armv7m armv7em armv7 i386 x86_64) + + set(DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR + ${COMPILER_RT_OUTPUT_DIR}/lib/macho_embedded) + set(DARWIN_macho_embedded_LIBRARY_INSTALL_DIR + ${COMPILER_RT_INSTALL_PATH}/lib/macho_embedded) + + set(CFLAGS_armv7 "-target thumbv7-apple-darwin-eabi") + set(CFLAGS_i386 "-march=pentium") + + darwin_read_list_from_file(common_FUNCTIONS ${MACHO_SYM_DIR}/common.txt) + darwin_read_list_from_file(thumb2_FUNCTIONS ${MACHO_SYM_DIR}/thumb2.txt) + darwin_read_list_from_file(thumb2_64_FUNCTIONS ${MACHO_SYM_DIR}/thumb2-64.txt) + darwin_read_list_from_file(arm_FUNCTIONS ${MACHO_SYM_DIR}/arm.txt) + darwin_read_list_from_file(i386_FUNCTIONS ${MACHO_SYM_DIR}/i386.txt) + + + set(armv6m_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS}) + set(armv7m_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS}) + set(armv7em_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS}) + set(armv7_FUNCTIONS ${common_FUNCTIONS} ${arm_FUNCTIONS} ${thumb2_FUNCTIONS} ${thumb2_64_FUNCTIONS}) + set(i386_FUNCTIONS ${common_FUNCTIONS} ${i386_FUNCTIONS}) + set(x86_64_FUNCTIONS ${common_FUNCTIONS}) + + foreach(arch ${DARWIN_macho_embedded_ARCHS}) + darwin_filter_builtin_sources(${arch}_filtered_sources + INCLUDE ${arch}_FUNCTIONS + ${${arch}_SOURCES}) + if(NOT ${arch}_filtered_sources) + message("${arch}_SOURCES: ${${arch}_SOURCES}") + message("${arch}_FUNCTIONS: ${${arch}_FUNCTIONS}") + message(FATAL_ERROR "Empty filtered sources!") + endif() + endforeach() - foreach(float_type SOFT HARD) - foreach(type PIC STATIC) - string(TOLOWER "${float_type}_${type}" lib_suffix) - foreach(arch ${DARWIN_${float_type}_FLOAT_ARCHS}) - set(DARWIN_macho_embedded_SYSROOT ${DARWIN_osx_SYSROOT}) - set(float_flag) - if(${arch} MATCHES "^arm") - # x86 targets are hard float by default, but the complain about the - # float ABI flag, so don't pass it unless we're targeting arm. - set(float_flag ${${float_type}_FLOAT_FLAG}) - endif() - darwin_add_builtin_library(clang_rt ${lib_suffix} - OS macho_embedded - ARCH ${arch} - SOURCES ${${arch}_filtered_sources} - CFLAGS ${CFLAGS} -arch ${arch} ${${type}_FLAG} ${float_flag} ${CFLAGS_${arch}} - PARENT_TARGET builtins) - endforeach() - foreach(lib ${macho_embedded_${lib_suffix}_libs}) - set_target_properties(${lib} PROPERTIES LINKER_LANGUAGE C) + foreach(float_type SOFT HARD) + foreach(type PIC STATIC) + string(TOLOWER "${float_type}_${type}" lib_suffix) + foreach(arch ${DARWIN_${float_type}_FLOAT_ARCHS}) + set(DARWIN_macho_embedded_SYSROOT ${DARWIN_osx_SYSROOT}) + set(float_flag) + if(${arch} MATCHES "^arm") + # x86 targets are hard float by default, but the complain about the + # float ABI flag, so don't pass it unless we're targeting arm. + set(float_flag ${${float_type}_FLOAT_FLAG}) + endif() + darwin_add_builtin_library(clang_rt ${lib_suffix} + OS macho_embedded + ARCH ${arch} + SOURCES ${${arch}_filtered_sources} + CFLAGS ${CFLAGS} -arch ${arch} ${${type}_FLAG} ${float_flag} ${CFLAGS_${arch}} + PARENT_TARGET builtins) + endforeach() + foreach(lib ${macho_embedded_${lib_suffix}_libs}) + set_target_properties(${lib} PROPERTIES LINKER_LANGUAGE C) + endforeach() + darwin_lipo_libs(clang_rt.${lib_suffix} + PARENT_TARGET builtins + LIPO_FLAGS ${macho_embedded_${lib_suffix}_lipo_flags} + DEPENDS ${macho_embedded_${lib_suffix}_libs} + OUTPUT_DIR ${DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR} + INSTALL_DIR ${DARWIN_macho_embedded_LIBRARY_INSTALL_DIR}) endforeach() - darwin_lipo_libs(clang_rt.${lib_suffix} - PARENT_TARGET builtins - LIPO_FLAGS ${macho_embedded_${lib_suffix}_lipo_flags} - DEPENDS ${macho_embedded_${lib_suffix}_libs} - OUTPUT_DIR ${DARWIN_macho_embedded_LIBRARY_OUTPUT_DIR} - INSTALL_DIR ${DARWIN_macho_embedded_LIBRARY_INSTALL_DIR}) endforeach() - endforeach() + endif() endmacro()