[compiler-rt] r248443 - [CMake] [Darwin] Bug 21562 - Add a CMake equivalent for make/platform/clang_darwin.mk in compiler_rt

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 23 23:08:43 PDT 2015


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