[cfe-commits] r167054 - in /cfe/trunk: lib/Driver/Tools.cpp test/Driver/cpath.c test/Driver/linker-opts.c
Chad Rosier
mcrosier at apple.com
Tue Oct 30 14:44:19 PDT 2012
I forgot to mention that this patch was by Jeremy Sequoia.
On Oct 30, 2012, at 2:42 PM, Chad Rosier <mcrosier at apple.com> wrote:
> Author: mcrosier
> Date: Tue Oct 30 16:42:09 2012
> New Revision: 167054
>
> URL: http://llvm.org/viewvc/llvm-project?rev=167054&view=rev
> Log:
> [driver] Older versions of ld expect '-L<dir>' not '-L <dir>'. In Xcode4 and
> later, '-L <dir>' is allowed, but rewrite these in the driver as '-L<dir>' to
> maintain backward compatibility. The same is true for the -I option.
> rdar://12366753
>
> Modified:
> cfe/trunk/lib/Driver/Tools.cpp
> cfe/trunk/test/Driver/cpath.c
> cfe/trunk/test/Driver/linker-opts.c
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=167054&r1=167053&r2=167054&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Tue Oct 30 16:42:09 2012
> @@ -93,9 +93,15 @@
> const char *ArgName,
> const char *EnvVar) {
> const char *DirList = ::getenv(EnvVar);
> + bool CombinedArg = false;
> +
> if (!DirList)
> return; // Nothing to do.
>
> + StringRef Name(ArgName);
> + if (Name.equals("-I") || Name.equals("-L"))
> + CombinedArg = true;
> +
> StringRef Dirs(DirList);
> if (Dirs.empty()) // Empty string should not add '.'.
> return;
> @@ -103,21 +109,37 @@
> StringRef::size_type Delim;
> while ((Delim = Dirs.find(llvm::sys::PathSeparator)) != StringRef::npos) {
> if (Delim == 0) { // Leading colon.
> - CmdArgs.push_back(ArgName);
> - CmdArgs.push_back(".");
> + if (CombinedArg) {
> + CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
> + } else {
> + CmdArgs.push_back(ArgName);
> + CmdArgs.push_back(".");
> + }
> } else {
> - CmdArgs.push_back(ArgName);
> - CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
> + if (CombinedArg) {
> + CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs.substr(0, Delim)));
> + } else {
> + CmdArgs.push_back(ArgName);
> + CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
> + }
> }
> Dirs = Dirs.substr(Delim + 1);
> }
>
> if (Dirs.empty()) { // Trailing colon.
> - CmdArgs.push_back(ArgName);
> - CmdArgs.push_back(".");
> + if (CombinedArg) {
> + CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
> + } else {
> + CmdArgs.push_back(ArgName);
> + CmdArgs.push_back(".");
> + }
> } else { // Add the last path.
> - CmdArgs.push_back(ArgName);
> - CmdArgs.push_back(Args.MakeArgString(Dirs));
> + if (CombinedArg) {
> + CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs));
> + } else {
> + CmdArgs.push_back(ArgName);
> + CmdArgs.push_back(Args.MakeArgString(Dirs));
> + }
> }
> }
>
>
> Modified: cfe/trunk/test/Driver/cpath.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cpath.c?rev=167054&r1=167053&r2=167054&view=diff
> ==============================================================================
> --- cfe/trunk/test/Driver/cpath.c (original)
> +++ cfe/trunk/test/Driver/cpath.c Tue Oct 30 16:42:09 2012
> @@ -1,8 +1,8 @@
> // RUN: mkdir -p %T/test1 %T/test2 %T/test3
>
> // RUN: env "CPATH=%T/test1%{pathsep}%T/test2" %clang -x c -E -v %s 2>&1 | FileCheck %s -check-prefix=CPATH
> -// CPATH: -I {{.*}}/test1
> -// CPATH: -I {{.*}}/test2
> +// CPATH: -I{{.*}}/test1
> +// CPATH: -I{{.*}}/test2
> // CPATH: search starts here
> // CPATH: test1
> // CPATH: test2
>
> Modified: cfe/trunk/test/Driver/linker-opts.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linker-opts.c?rev=167054&r1=167053&r2=167054&view=diff
> ==============================================================================
> --- cfe/trunk/test/Driver/linker-opts.c (original)
> +++ cfe/trunk/test/Driver/linker-opts.c Tue Oct 30 16:42:09 2012
> @@ -1,5 +1,5 @@
> // RUN: env LIBRARY_PATH=%T/test1 %clang -x c %s -### 2>&1 | FileCheck %s
> -// CHECK: "-L" "{{.*}}/test1"
> +// CHECK: "-L{{.*}}/test1"
>
> // GCC driver is used as linker on cygming. It should be aware of LIBRARY_PATH.
> // XFAIL: cygwin,mingw32,win32
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list