X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FMakefile.in;h=ea65a689703d479f40cd0d6e314ddd566fc3cbd3;hb=024f3c6ed19758bb991e41644b2b3f9415c47894;hp=dc6aa1fe695b2470dbb18c93238b717b140772b6;hpb=a3d1759c37fa399c45561eda23f696dd25cd5b62;p=fw%2Fsdcc diff --git a/src/Makefile.in b/src/Makefile.in index dc6aa1fe..ea65a689 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -6,34 +6,56 @@ PRJDIR = .. include $(PRJDIR)/Makefile.common -LIBS = $(PORT)/port.a -lgc @LIBS@ -LIBDIRS = -L$(PRJDIR)/support/gc +USE_ALT_LEX = 0 -OBJECTS = SDCCy.o SDCClex.o SDCCerr.o SDCChasht.o SDCCmain.o \ +PORTS = $(shell cat ../ports.build) +ALLPORTS = $(shell cat ../ports.all) +PORT_LIBS = $(PORTS:%=%/port.a) + +LIBS = -lm @LIBS@ + +#CFLAGS += -Werror + +ifdef SDCC_SUB_VERSION +CFLAGS += -DSDCC_SUB_VERSION_STR=\"$(SDCC_SUB_VERSION)\" +endif + +SLIBOBJS = SDCCerr.o NewAlloc.o MySystem.o BuildCmd.o + +OBJECTS = SDCCy.o SDCChasht.o SDCCmain.o \ SDCCsymt.o SDCCopt.o SDCCast.o SDCCmem.o SDCCval.o \ SDCCicode.o SDCCbitv.o SDCCset.o SDCClabel.o \ SDCCBBlock.o SDCCloop.o SDCCcse.o SDCCcflow.o SDCCdflow.o \ - SDCClrange.o SDCCptropt.o SDCCpeeph.o SDCCglue.o spawn.o -SOURCES = $(patsubst %.o,%.c,$(OBJECTS)) + SDCClrange.o SDCCptropt.o SDCCpeeph.o SDCCglue.o spawn.o \ + asm.o -TARGET = $(PRJDIR)/bin/sdcc +SPECIAL = SDCCy.h +ifeq ($(USE_ALT_LEX), 1) +OBJECTS += altlex.o +SPECIAL += reswords.h +else +OBJECTS += SDCClex.o +endif + +SOURCES = $(patsubst %.o,%.c,$(OBJECTS)) +TARGET = $(PRJDIR)/bin/sdcc$(EXEEXT) # Compiling entire program or any subproject # ------------------------------------------ -all: port checkconf $(PRJDIR)/support/gc/libgc.a $(TARGET) +all: ports checkconf $(TARGET) -port: - $(MAKE) -C $(PORT) +ports: + for i in $(PORTS); do $(MAKE) -C $$i; done $(PRJDIR)/support/gc/libgc.a: cd $(PRJDIR)/support/gc && $(MAKE) - # Compiling and installing everything and runing test # --------------------------------------------------- install: all installdirs - $(INSTALL) -s $(TARGET) $(bindir)/sdcc + $(INSTALL) $(TARGET) `echo $(bindir)/sdcc|sed '$(transform)'` + $(STRIP) -s `echo $(bindir)/sdcc|sed '$(transform)'` # Deleting all the installed files @@ -41,7 +63,6 @@ install: all installdirs uninstall: rm -f $(bindir)/sdcc - # Performing self-test # -------------------- check: @@ -62,7 +83,7 @@ installdirs: # --------------------- dep: Makefile.dep -Makefile.dep: $(SOURCES) *.h $(PRJDIR)/*.h +Makefile.dep: $(SOURCES) $(SPECIAL) *.h $(PRJDIR)/*.h $(CPP) $(CPPFLAGS) $(M_OR_MM) $(SOURCES) >Makefile.dep include Makefile.dep @@ -71,21 +92,28 @@ include clean.mk # My rules # -------- -$(TARGET): $(OBJECTS) - $(CC) -o $@ $(OBJECTS) $(LIBDIRS) $(LIBS) +$(TARGET): $(SLIBOBJS) $(OBJECTS) $(PORT_LIBS) + $(CC) -o $@ $(SLIBOBJS) $(OBJECTS) $(PORT_LIBS) $(LIBDIRS) $(LIBS) .c.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ +$(SLIBOBJS):%.o:$(SLIB)/%.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ + +reswords.h: reswords.gperf Makefile + gperf -o -k1,2,4 -t -C -N is_reserved_word $< > $@ + +altlex.o: altlex.c SDCCy.h reswords.h + +SDCCy.h: SDCCy.c + SDCCy.c: SDCC.y $(YACC) -d -v -o $@ $< SDCClex.c: SDCC.lex SDCCy.h $(LEX) -t $< >$@ -SDCCpeeph.rul: SDCCpeeph.def - $(AWK) -f SDCCpeeph.awk SDCCpeeph.def > SDCCpeeph.rul - .y.c: rm -f $*.cc $*.h $(YACC) -d $<