Bug 683975 - Need infra for developer contributed compilers. r=rail.

Don't build the c++ compiler on the first stage, saving some time

Build glibc with the compiler we just built (i.e. same stage). With this we
only have to worry about glibc building with one gcc version.

--HG--
extra : rebase_source : 917f2ec49da8f1d9e5e0c036258b4cd6b0189192
This commit is contained in:
Rafael Ávila de Espíndola 2012-01-26 09:02:15 -05:00
Родитель 84d30592e9
Коммит a9d5084251
1 изменённых файлов: 42 добавлений и 21 удалений

Просмотреть файл

@ -45,9 +45,33 @@ def build_tar(base_dir, tar_inst_dir):
build_package(tar_source_dir, tar_build_dir,
["--prefix=%s" % tar_inst_dir])
def build_one_stage(env, stage_dir):
def with_env(env, f):
old_env = os.environ.copy()
os.environ.update(env)
f()
os.environ.clear()
os.environ.update(old_env)
def build_glibc(env, stage_dir, inst_dir):
def f():
build_glibc_aux(stage_dir, inst_dir)
with_env(env, f)
def build_glibc_aux(stage_dir, inst_dir):
glibc_build_dir = stage_dir + '/glibc'
build_package(glibc_source_dir, glibc_build_dir,
["--disable-profile",
"--enable-add-ons=nptl",
"--without-selinux",
"--enable-kernel=2.6.18",
"--prefix=%s" % inst_dir])
def build_one_stage(env, stage_dir, is_stage_one):
def f():
build_one_stage_aux(stage_dir, is_stage_one)
with_env(env, f)
def build_one_stage_aux(stage_dir, is_stage_one):
os.mkdir(stage_dir)
lib_inst_dir = stage_dir + '/libinst'
@ -71,25 +95,22 @@ def build_one_stage(env, stage_dir):
build_package(binutils_source_dir, binutils_build_dir,
["--prefix=%s" % tool_inst_dir])
glibc_build_dir = stage_dir + '/glibc'
build_package(glibc_source_dir, glibc_build_dir,
["--disable-profile",
"--enable-add-ons=nptl",
"--without-selinux",
"--enable-kernel=2.6.25",
"--prefix=%s" % tool_inst_dir])
gcc_build_dir = stage_dir + '/gcc'
build_package(gcc_source_dir, gcc_build_dir,
["--prefix=%s" % tool_inst_dir,
"--enable-__cxa_atexit",
"--with-gmp=%s" % lib_inst_dir,
"--with-mpfr=%s" % lib_inst_dir,
"--with-mpc=%s" % lib_inst_dir,
"--enable-languages=c,c++",
"--disable-bootstrap"])
os.environ.clear()
os.environ.update(old_env)
gcc_configure_args = ["--prefix=%s" % tool_inst_dir,
"--enable-__cxa_atexit",
"--with-gmp=%s" % lib_inst_dir,
"--with-mpfr=%s" % lib_inst_dir,
"--with-mpc=%s" % lib_inst_dir,
"--disable-bootstrap"]
if is_stage_one:
gcc_configure_args.append("--enable-languages=c")
else:
gcc_configure_args.append("--enable-languages=c,c++")
build_package(gcc_source_dir, gcc_build_dir, gcc_configure_args)
build_glibc({"CC" : tool_inst_dir + "/bin/gcc",
"CXX" : tool_inst_dir + "/bin/g++"},
stage_dir, tool_inst_dir)
def build_tar_package(tar, name, base, directory):
name = os.path.realpath(name)
@ -171,7 +192,7 @@ tar_inst_dir = build_dir + '/tar_inst'
build_tar(build_dir, tar_inst_dir)
stage1_dir = build_dir + '/stage1'
build_one_stage({"CC": "gcc", "CXX" : "g++"}, stage1_dir)
build_one_stage({"CC": "gcc", "CXX" : "g++"}, stage1_dir, True)
stage1_tool_inst_dir = stage1_dir + '/inst'
stage2_dir = build_dir + '/stage2'
@ -179,7 +200,7 @@ build_one_stage({"CC" : stage1_tool_inst_dir + "/bin/gcc",
"CXX" : stage1_tool_inst_dir + "/bin/g++",
"AR" : stage1_tool_inst_dir + "/bin/ar",
"RANLIB" : "true" },
stage2_dir)
stage2_dir, False)
build_tar_package(tar_inst_dir + "/bin/tar",
"toolchain.tar", stage2_dir, "inst")