[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 11:29:27 PDT 2015


I’ve put in a proper fix in r248523.

Thanks,
-Chris

> On Sep 24, 2015, at 9:46 AM, Chris Bieneman via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> 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
> 
> _______________________________________________
> 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