commit ae95ee0a924a2be58604ed5d422c0ae8519789c2
parent 2fffade4b692dbdfb1208ace946645f4120c1c45
Author: Quentin Rameau <quinq@fifth.space>
Date: Wed, 21 Feb 2018 18:00:16 +0100
Let the user configure system crts
Diffstat:
4 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/driver/posix/Makefile b/driver/posix/Makefile
@@ -9,6 +9,7 @@ OBJ = scc.o
HDR = config.h \
$(PROJECTDIR)/inc/scc.h \
$(PROJECTDIR)/inc/arg.h \
+ $(PROJECTDIR)/inc/syscrts.h \
$(PROJECTDIR)/inc/sysincludes.h \
$(PROJECTDIR)/inc/syslibs.h \
$(PROJECTDIR)/inc/ldflags.h
diff --git a/driver/posix/scc.c b/driver/posix/scc.c
@@ -16,6 +16,7 @@ static char sccsid[] = "@(#) ./driver/posix/scc.c";
#include "config.h"
#include "../../inc/arg.h"
#include "../../inc/scc.h"
+#include "../../inc/syscrts.h"
#include "../../inc/sysincludes.h"
#include "../../inc/syslibs.h"
#include "../../inc/ldflags.h"
@@ -144,6 +145,11 @@ inittool(int tool)
addarg(tool, "-L");
addarg(tool, syslibs[n]);
}
+ if (syscrts[0]) {
+ for (n = 0; syscrts[n]; ++n)
+ addarg(tool, syscrts[n]);
+ break;
+ }
n = snprintf(NULL, 0,
"%s/lib/scc/crt/%s-%s-%s/crt.o",
prefix, arch, abi, sys);
diff --git a/inc/Makefile b/inc/Makefile
@@ -4,7 +4,7 @@ PROJECTDIR = ..
include $(PROJECTDIR)/rules.mk
-HDR = ldflags.h sysincludes.h syslibs.h
+HDR = ldflags.h syscrts.h sysincludes.h syslibs.h
all:
@@ -16,6 +16,12 @@ ldflags.h:
cat < ldflags.def.h > $$$$.h; \
mv $$$$.h $@
+syscrts.h:
+ rm -f $@ ; \
+ trap "rm -f $$$$.h" 0 2 3; \
+ sed 's,PREFIX,"$(PREFIX)",g' < syscrts.def.h > $$$$.h && \
+ mv $$$$.h $@
+
sysincludes.h:
rm -f $@ ; \
trap "rm -f $$$$.h" 0 2 3; \
diff --git a/inc/syscrts.def.h b/inc/syscrts.def.h
@@ -0,0 +1,5 @@
+char *syscrts[] = {
+ /* configure below your system crts */
+ /* PREFIX "/lib/scc/crt0.o", */
+ NULL
+};