Misc Minix-specific changes to clang:
. move compiler-rt to a separate directory so the -L argument only includes compiler-rt (thanks joerg) . build all clang subdirs . switches the Minix platform to ELF . normalizes toolchain invocation Patch by Ben Gras. llvm-svn: 146206
This commit is contained in:
parent
202cf2f6fc
commit
83de51301a
|
@ -298,6 +298,7 @@ protected:
|
|||
Builder.defineMacro("_EM_LSIZE", "4");
|
||||
Builder.defineMacro("_EM_FSIZE", "4");
|
||||
Builder.defineMacro("_EM_DSIZE", "8");
|
||||
Builder.defineMacro("__ELF__");
|
||||
DefineStd(Builder, "unix", Opts);
|
||||
}
|
||||
public:
|
||||
|
|
|
@ -1612,11 +1612,9 @@ Tool &NetBSD::SelectTool(const Compilation &C, const JobAction &JA,
|
|||
/// Minix - Minix tool chain which can call as(1) and ld(1) directly.
|
||||
|
||||
Minix::Minix(const HostInfo &Host, const llvm::Triple& Triple)
|
||||
: Generic_GCC(Host, Triple) {
|
||||
: Generic_ELF(Host, Triple) {
|
||||
getFilePaths().push_back(getDriver().Dir + "/../lib");
|
||||
getFilePaths().push_back("/usr/lib");
|
||||
getFilePaths().push_back("/usr/gnu/lib");
|
||||
getFilePaths().push_back("/usr/gnu/lib/gcc/i686-pc-minix/4.4.3");
|
||||
}
|
||||
|
||||
Tool &Minix::SelectTool(const Compilation &C, const JobAction &JA,
|
||||
|
|
|
@ -453,7 +453,7 @@ public:
|
|||
const ActionList &Inputs) const;
|
||||
};
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY Minix : public Generic_GCC {
|
||||
class LLVM_LIBRARY_VISIBILITY Minix : public Generic_ELF {
|
||||
public:
|
||||
Minix(const HostInfo &Host, const llvm::Triple& Triple);
|
||||
|
||||
|
|
|
@ -4575,7 +4575,7 @@ void minix::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
}
|
||||
|
||||
const char *Exec =
|
||||
Args.MakeArgString(getToolChain().GetProgramPath("gas"));
|
||||
Args.MakeArgString(getToolChain().GetProgramPath("as"));
|
||||
C.addCommand(new Command(JA, *this, Exec, CmdArgs));
|
||||
}
|
||||
|
||||
|
@ -4595,9 +4595,12 @@ void minix::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib) &&
|
||||
!Args.hasArg(options::OPT_nostartfiles))
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
|
||||
"/usr/gnu/lib/crtso.o")));
|
||||
!Args.hasArg(options::OPT_nostartfiles)) {
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crt1.o")));
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
|
||||
}
|
||||
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_L);
|
||||
Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
|
||||
|
@ -4605,33 +4608,28 @@ void minix::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
|
||||
|
||||
addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib) &&
|
||||
!Args.hasArg(options::OPT_nodefaultlibs)) {
|
||||
if (D.CCCIsCXX) {
|
||||
getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
|
||||
CmdArgs.push_back("-lm");
|
||||
}
|
||||
|
||||
if (Args.hasArg(options::OPT_pthread))
|
||||
CmdArgs.push_back("-lpthread");
|
||||
CmdArgs.push_back("-lc");
|
||||
CmdArgs.push_back("-lgcc");
|
||||
CmdArgs.push_back("-L/usr/gnu/lib");
|
||||
// FIXME: fill in the correct search path for the final
|
||||
// support libraries.
|
||||
CmdArgs.push_back("-L/usr/gnu/lib/gcc/i686-pc-minix/4.4.3");
|
||||
}
|
||||
|
||||
if (!Args.hasArg(options::OPT_nostdlib) &&
|
||||
!Args.hasArg(options::OPT_nostartfiles)) {
|
||||
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
|
||||
"/usr/gnu/lib/libend.a")));
|
||||
if (Args.hasArg(options::OPT_pthread))
|
||||
CmdArgs.push_back("-lpthread");
|
||||
CmdArgs.push_back("-lc");
|
||||
CmdArgs.push_back("-lCompilerRT-Generic");
|
||||
CmdArgs.push_back("-L/usr/pkg/compiler-rt/lib");
|
||||
CmdArgs.push_back(
|
||||
Args.MakeArgString(getToolChain().GetFilePath("crtend.o")));
|
||||
}
|
||||
|
||||
addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
|
||||
|
||||
const char *Exec =
|
||||
Args.MakeArgString(getToolChain().GetProgramPath("/usr/gnu/bin/gld"));
|
||||
const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("ld"));
|
||||
C.addCommand(new Command(JA, *this, Exec, CmdArgs));
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,4 @@ DIRS := driver libclang c-index-test arcmt-test c-arcmt-test diagtool
|
|||
|
||||
include $(CLANG_LEVEL)/../../Makefile.config
|
||||
|
||||
ifeq ($(OS), $(filter $(OS), Minix))
|
||||
DIRS := $(filter-out libclang c-index-test, arcmt-test, $(DIRS))
|
||||
endif
|
||||
|
||||
include $(CLANG_LEVEL)/Makefile
|
||||
|
|
Loading…
Reference in New Issue