r280169 - Driver: use the canonical static library naming

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 31 11:36:12 PDT 2016


This broke the win asan build:
http://lab.llvm.org:8011/builders/sanitizer-windows/builds/28203

More generally, though, this seems like it's a Boost convention and an
MSVCRT convention, and not a general Windows convention:
http://www.boost.org/doc/libs/1_42_0/more/getting_started/windows.html#library-naming
https://msdn.microsoft.com/en-us/library/aa272081(v=vs.60).aspx
https://cmake.org/Bug/view.php?id=10190#c19315

Our pre-existing convention was to name the dynamic library
clang_rt.${lib}_${arch}_dynamic, because that works across platforms. I
don't think we'll want to undo that convention across Windows, OS X, and
Linux. There are probably enough projects out there already using those
library names directly.

On Tue, Aug 30, 2016 at 3:10 PM, Saleem Abdulrasool via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: compnerd
> Date: Tue Aug 30 17:10:27 2016
> New Revision: 280169
>
> URL: http://llvm.org/viewvc/llvm-project?rev=280169&view=rev
> Log:
> Driver: use the canonical static library naming
>
> On Windows, static libraries are named lib<name>.lib while import
> libraries are
> named <name>.lib.  Use the appropriate naming on itanium and msvc
> environments.
> This is setup properly so that if a dynamic builtins is used on Windows, it
> would do the right thing, although this is not currently wired through the
> driver (i.e. there is no equivalent to -{shared,static}-gcc).
>
> Modified:
>     cfe/trunk/lib/Driver/ToolChain.cpp
>     cfe/trunk/test/Driver/arm-compiler-rt.c
>     cfe/trunk/test/Driver/windows-cross.c
>
> Modified: cfe/trunk/lib/Driver/ToolChain.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/
> ToolChain.cpp?rev=280169&r1=280168&r2=280169&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Driver/ToolChain.cpp (original)
> +++ cfe/trunk/lib/Driver/ToolChain.cpp Tue Aug 30 17:10:27 2016
> @@ -288,13 +288,13 @@ std::string ToolChain::getCompilerRT(con
>                                       bool Shared) const {
>    const llvm::Triple &TT = getTriple();
>    const char *Env = TT.isAndroid() ? "-android" : "";
> -  bool IsITANMSVCWindows =
> +  bool IsWindowsIAMSVC =
>        TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment();
>
>    StringRef Arch = getArchNameForCompilerRTLib(*this, Args);
> -  const char *Prefix = IsITANMSVCWindows ? "" : "lib";
> +  const char *Prefix = (IsWindowsIAMSVC && Shared) ? "" : "lib";
>    const char *Suffix = Shared ? (Triple.isOSWindows() ? ".dll" : ".so")
> -                              : (IsITANMSVCWindows ? ".lib" : ".a");
> +                              : (IsWindowsIAMSVC ? ".lib" : ".a");
>
>    SmallString<128> Path(getDriver().ResourceDir);
>    StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS();
>
> Modified: cfe/trunk/test/Driver/arm-compiler-rt.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
> arm-compiler-rt.c?rev=280169&r1=280168&r2=280169&view=diff
> ============================================================
> ==================
> --- cfe/trunk/test/Driver/arm-compiler-rt.c (original)
> +++ cfe/trunk/test/Driver/arm-compiler-rt.c Tue Aug 30 17:10:27 2016
> @@ -11,7 +11,7 @@
>  // ARM-GNUEABIHF-ABI: "{{.*[/\\]}}libclang_rt.builtins-arm.a"
>
>  // RUN: %clang -target arm-windows-itanium -rtlib=compiler-rt -### %s
> 2>&1 | FileCheck %s -check-prefix ARM-WINDOWS
> -// ARM-WINDOWS: "{{.*[/\\]}}clang_rt.builtins-arm.lib"
> +// ARM-WINDOWS: "{{.*[/\\]}}libclang_rt.builtins-arm.lib"
>
>  // RUN: %clang -target arm-linux-androideabi -rtlib=compiler-rt -### %s
> 2>&1 | FileCheck %s -check-prefix ARM-ANDROID
>  // ARM-ANDROID: "{{.*[/\\]}}libclang_rt.builtins-arm-android.a"
>
> Modified: cfe/trunk/test/Driver/windows-cross.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/
> windows-cross.c?rev=280169&r1=280168&r2=280169&view=diff
> ============================================================
> ==================
> --- cfe/trunk/test/Driver/windows-cross.c (original)
> +++ cfe/trunk/test/Driver/windows-cross.c Tue Aug 30 17:10:27 2016
> @@ -6,27 +6,27 @@
>  // RUN: %clang -### -target armv7-windows-itanium --sysroot
> %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin
> -rtlib=compiler-rt -stdlib=libstdc++ -o /dev/null %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-RTLIB
>
> -// CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
> +// CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib" "-L{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/gcc"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}libclang_rt.builtins-arm.lib"
>
>  // RUN: %clang -### -target armv7-windows-itanium --sysroot
> %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin
> -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-C-LIBCXX
>
> -// CHECK-C-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
> +// CHECK-C-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}libclang_rt.builtins-arm.lib"
>
>  // RUN: %clangxx -### -target armv7-windows-itanium --sysroot
> %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin
> -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-LIBCXX
>
> -// CHECK-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
> +// CHECK-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup"
> "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbegin.obj"
> "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}libclang_rt.builtins-arm.lib"
>
>  // RUN: %clang -### -target armv7-windows-itanium --sysroot
> %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -shared
> -rtlib=compiler-rt -stdlib=libc++ -o shared.dll %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-SHARED
>
> -// CHECK-SHARED: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry"
> "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll"
> "--out-implib" "shared.lib" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbeginS.obj"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
> +// CHECK-SHARED: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry"
> "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll"
> "--out-implib" "shared.lib" "{{.*}}/Inputs/Windows/ARM/8.1/usr/lib/crtbeginS.obj"
> "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}libclang_rt.builtins-arm.lib"
>
>  // RUN: %clang -### -target armv7-windows-itanium --sysroot
> %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -shared
> -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -o shared.dll %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-NOSTARTFILES
>
> -// CHECK-NOSTARTFILES: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry"
> "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll"
> "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt"
> "{{.*[\\/]}}clang_rt.builtins-arm.lib"
> +// CHECK-NOSTARTFILES: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1"
> "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry"
> "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll"
> "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}libclang_rt.
> builtins-arm.lib"
>
>  // RUN: %clang -### -target armv7-windows-itanium --sysroot
> %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -shared
> -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -nodefaultlibs -o
> shared.dll %s 2>&1 \
>  // RUN:   | FileCheck %s --check-prefix CHECK-STANDALONE
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160831/532aa9e9/attachment-0001.html>


More information about the cfe-commits mailing list