Bug 1262735 - Don't pass --gcc-toolchain to build clang. r?ehsan draft
authorMike Hommey <mh+mozilla@glandium.org>
Fri, 08 Apr 2016 13:18:02 +0900
changeset 349604 3708ab93d4008ecaba89458afb1ca366a1623118
parent 349603 459850ec13a75aa3ff569503419e71087ee27b62
child 349605 139159cca8f75873e699779946c815b47cf1f87e
push id15145
push userbmo:mh+mozilla@glandium.org
push dateTue, 12 Apr 2016 01:01:37 +0000
reviewersehsan
bugs1262735
milestone48.0a1
Bug 1262735 - Don't pass --gcc-toolchain to build clang. r?ehsan Instead, copy libgcc from the GCC used to build clang at each stage. When passing --gcc-toolchain, the flag ends up appearing in the output of llvm-config, and completely defeats the purpose of copying libgcc in clang/lib/gcc.
build/build-clang/build-clang.py
--- a/build/build-clang/build-clang.py
+++ b/build/build-clang/build-clang.py
@@ -339,18 +339,18 @@ if __name__ == "__main__":
     if is_darwin():
         extra_cflags = []
         extra_cxxflags = ["-stdlib=libc++"]
         extra_cflags2 = []
         extra_cxxflags2 = ["-stdlib=libc++"]
     elif is_linux():
         extra_cflags = ["-static-libgcc"]
         extra_cxxflags = ["-static-libgcc", "-static-libstdc++"]
-        extra_cflags2 = ["-fPIC", "--gcc-toolchain=%s" % gcc_dir]
-        extra_cxxflags2 = ["-fPIC", "--gcc-toolchain=%s" % gcc_dir]
+        extra_cflags2 = ["-fPIC"]
+        extra_cxxflags2 = ["-fPIC"]
 
         if os.environ.has_key('LD_LIBRARY_PATH'):
             os.environ['LD_LIBRARY_PATH'] = '%s/lib64/:%s' % (gcc_dir, os.environ['LD_LIBRARY_PATH']);
         else:
             os.environ['LD_LIBRARY_PATH'] = '%s/lib64/' % gcc_dir
     elif is_windows():
         extra_cflags = []
         extra_cxxflags = []
@@ -358,38 +358,44 @@ if __name__ == "__main__":
         extra_cxxflags2 = []
 
     build_one_stage(
         [cc] + extra_cflags,
         [cxx] + extra_cxxflags,
         llvm_source_dir, stage1_dir, build_libcxx,
         build_type, assertions, python_path)
 
+    if is_linux():
+        install_libgcc(gcc_dir, final_stage_dir + '/clang')
+
     if stages > 1:
         stage2_dir = build_dir + '/stage2'
         stage2_inst_dir = stage2_dir + '/clang'
         final_stage_dir = stage2_dir
         build_one_stage(
             [stage1_inst_dir + "/bin/%s%s" %
                 (cc_name, exe_ext)] + extra_cflags2,
             [stage1_inst_dir + "/bin/%s%s" %
                 (cxx_name, exe_ext)] + extra_cxxflags2,
             llvm_source_dir, stage2_dir, build_libcxx,
             build_type, assertions, python_path)
 
-        if stages > 2:
-            stage3_dir = build_dir + '/stage3'
-            final_stage_dir = stage3_dir
-            build_one_stage(
-                [stage2_inst_dir + "/bin/%s%s" %
-                    (cc_name, exe_ext)] + extra_cflags2,
-                [stage2_inst_dir + "/bin/%s%s" %
-                    (cxx_name, exe_ext)] + extra_cxxflags2,
-                llvm_source_dir, stage3_dir, build_libcxx,
-                build_type, assertions, python_path)
+        if is_linux():
+            install_libgcc(gcc_dir, final_stage_dir + '/clang')
 
-    if is_linux():
-        install_libgcc(gcc_dir, final_stage_dir + '/clang')
+    if stages > 2:
+        stage3_dir = build_dir + '/stage3'
+        final_stage_dir = stage3_dir
+        build_one_stage(
+            [stage2_inst_dir + "/bin/%s%s" %
+                (cc_name, exe_ext)] + extra_cflags2,
+            [stage2_inst_dir + "/bin/%s%s" %
+                (cxx_name, exe_ext)] + extra_cxxflags2,
+            llvm_source_dir, stage3_dir, build_libcxx,
+            build_type, assertions, python_path)
+
+        if is_linux():
+            install_libgcc(gcc_dir, final_stage_dir + '/clang')
 
     if is_darwin() or is_windows():
         build_tar_package("tar", "clang.tar.bz2", final_stage_dir, "clang")
     else:
         build_tar_package("tar", "clang.tar.xz", final_stage_dir, "clang")