scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

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:
Mdriver/posix/Makefile | 1+
Mdriver/posix/scc.c | 6++++++
Minc/Makefile | 8+++++++-
Ainc/syscrts.def.h | 5+++++
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 +};