[compiler-rt] r248443 - [CMake] [Darwin] Bug 21562 - Add a CMake equivalent for make/platform/clang_darwin.mk in compiler_rt
Chris Bieneman via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 24 09:46:40 PDT 2015
Turns out the makefile builds don’t use -pedantic when building the builtins…
I need to do some fixup of the C and CXX flags for builtins today, but in the meantime I’ll add -Wno-pedantic to the cc_kext builtins so that this goes away.
-Chris
> On Sep 23, 2015, at 11:08 PM, Justin Bogner <mail at justinbogner.com> wrote:
>
> Chris Bieneman via llvm-commits <llvm-commits at lists.llvm.org> writes:
>> Author: cbieneman
>> Date: Wed Sep 23 18:05:32 2015
>> New Revision: 248443
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=248443&view=rev
>> Log:
>> [CMake] [Darwin] Bug 21562 - Add a CMake equivalent for
>> make/platform/clang_darwin.mk in compiler_rt
>>
>> Summary: First pass at adding cc_kext_* builtin libraries. I need to
>> cleanup and refactor the builtin filtering so that I can use it to
>> filter the builtin symbols list, but this is the first step in the
>> right direction.
>
> There are some warnings after this change:
>
> .../llvm/projects/compiler-rt/lib/builtins/divxc3.c:21:29: error: complex numbers are an extension in a freestanding C99 implementation [-Werror,-Wpedantic]
> COMPILER_RT_ABI long double _Complex
> ^
> .../llvm/projects/compiler-rt/lib/builtins/divxc3.c:33:17: error: complex numbers are an extension in a freestanding C99 implementation [-Werror,-Wpedantic]
> long double _Complex z;
> ^
> Looks like this bot shows the whole list:
>
> http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_build/7526/warnings8Result/new/
>
> Maybe the flags we're building these with aren't quite right?
>
>> Reviewers: bob.wilson, bogner, samsonov
>>
>> Subscribers: llvm-commits
>>
>> Differential Revision: http://reviews.llvm.org/D13115
>>
>> Modified:
>> compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake
>>
>> Modified: compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake?rev=248443&r1=248442&r2=248443&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake (original)
>> +++ compiler-rt/trunk/cmake/Modules/CompilerRTDarwinUtils.cmake Wed Sep 23 18:05:32 2015
>> @@ -140,18 +140,20 @@ function(darwin_find_excluded_builtins_l
>> endfunction()
>>
>> # adds a single builtin library for a single OS & ARCH
>> -function(darwin_add_builtin_library name)
>> +macro(darwin_add_builtin_library name suffix)
>> cmake_parse_arguments(LIB
>> ""
>> "PARENT_TARGET;OS;ARCH"
>> - "SOURCES;CFLAGS"
>> + "SOURCES;CFLAGS;DEFS"
>> ${ARGN})
>> - set(libname "${name}_${LIB_ARCH}_${LIB_OS}")
>> + set(libname "${name}.${suffix}_${LIB_ARCH}_${LIB_OS}")
>> add_library(${libname} STATIC ${LIB_SOURCES})
>> set_target_compile_flags(${libname}
>> -isysroot ${DARWIN_${LIB_OS}_SYSROOT}
>> ${DARWIN_${LIB_OS}_BUILTIN_MIN_VER_FLAG}
>> ${LIB_CFLAGS})
>> + set_property(TARGET ${libname} APPEND PROPERTY
>> + COMPILE_DEFINITIONS ${LIB_DEFS})
>> set_target_properties(${libname} PROPERTIES
>> OUTPUT_NAME ${libname}${COMPILER_RT_OS_SUFFIX})
>> set_target_properties(${libname} PROPERTIES
>> @@ -160,6 +162,26 @@ function(darwin_add_builtin_library name
>> if(LIB_PARENT_TARGET)
>> add_dependencies(${LIB_PARENT_TARGET} ${libname})
>> endif()
>> +
>> + list(APPEND ${os}_${suffix}_libs ${libname})
>> + list(APPEND ${os}_${suffix}_lipo_flags -arch ${arch} $<TARGET_FILE:${libname}>)
>> +endmacro()
>> +
>> +function(darwin_lipo_libs name)
>> + cmake_parse_arguments(LIB
>> + ""
>> + "PARENT_TARGET"
>> + "LIPO_FLAGS;DEPENDS"
>> + ${ARGN})
>> + add_custom_command(OUTPUT ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/lib${name}.a
>> + COMMAND lipo -output
>> + ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/lib${name}.a
>> + -create ${LIB_LIPO_FLAGS}
>> + DEPENDS ${LIB_DEPENDS}
>> + )
>> + add_custom_target(${name}
>> + DEPENDS ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/lib${name}.a)
>> + add_dependencies(${LIB_PARENT_TARGET} ${name})
>> endfunction()
>>
>> # Generates builtin libraries for all operating systems specified in ARGN. Each
>> @@ -167,9 +189,17 @@ endfunction()
>> macro(darwin_add_builtin_libraries)
>> foreach (os ${ARGN})
>> list_union(DARWIN_BUILTIN_ARCHS DARWIN_${os}_ARCHS BUILTIN_SUPPORTED_ARCH)
>> - set(${os}_builtin_libs)
>> - set(${os}_builtin_lipo_flags)
>> foreach (arch ${DARWIN_BUILTIN_ARCHS})
>> + # do cc_kext
>> + darwin_add_builtin_library(clang_rt cc_kext
>> + OS ${os}
>> + ARCH ${arch}
>> + SOURCES ${${arch}_SOURCES}
>> + CFLAGS "-std=c99" -arch ${arch} -mkernel
>> + DEFS KERNEL_USE
>> + PARENT_TARGET builtins)
>> +
>> +
>> darwin_find_excluded_builtins_list(${os} ${arch} ${DARWIN_${os}_BUILTIN_MIN_VER})
>> # Filter out generic versions of routines that are re-implemented in
>> # architecture specific manner. This prevents multiple definitions of the
>> @@ -186,27 +216,22 @@ macro(darwin_add_builtin_libraries)
>> endif ()
>> endforeach ()
>>
>> - darwin_add_builtin_library(clang_rt.builtins
>> + darwin_add_builtin_library(clang_rt builtins
>> OS ${os}
>> ARCH ${arch}
>> SOURCES ${${arch}_SOURCES}
>> CFLAGS "-std=c99" -arch ${arch}
>> PARENT_TARGET builtins)
>> - list(APPEND ${os}_builtin_libs clang_rt.builtins_${arch}_${os})
>> - list(APPEND ${os}_builtin_lipo_flags -arch ${arch} $<TARGET_FILE:clang_rt.builtins_${arch}_${os}>)
>> endforeach()
>>
>> - if(${os}_builtin_libs)
>> - add_custom_command(OUTPUT ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/libclang_rt.${os}.a
>> - COMMAND lipo -output
>> - ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/libclang_rt.${os}.a
>> - -create ${${os}_builtin_lipo_flags}
>> - DEPENDS ${${os}_builtin_libs}
>> - )
>> - add_custom_target(clang_rt.${os}
>> - DEPENDS ${COMPILER_RT_LIBRARY_OUTPUT_DIR}/libclang_rt.${os}.a)
>> - add_dependencies(builtins clang_rt.${os})
>> - endif()
>> + darwin_lipo_libs(clang_rt.cc_kext_${os}
>> + PARENT_TARGET builtins
>> + LIPO_FLAGS ${${os}_cc_kext_lipo_flags}
>> + DEPENDS ${${os}_cc_kext_libs})
>> + darwin_lipo_libs(clang_rt.${os}
>> + PARENT_TARGET builtins
>> + LIPO_FLAGS ${${os}_builtins_lipo_flags}
>> + DEPENDS ${${os}_builtins_libs})
>> endforeach()
>> endmacro()
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list