X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=Makefile;h=81db02c1f59985c2c495b9afe2fcf1a41e29f493;hb=c30de480b8005935e247b2d22adfd00a37e50df9;hp=87aaac95fe4cf39e20830f715597ef0c36a13188;hpb=2dd8bf050d8c65abdd6da8f6bfb9b41f6c683309;p=fw%2Fsdcc diff --git a/Makefile b/Makefile index 87aaac95..81db02c1 100644 --- a/Makefile +++ b/Makefile @@ -6,27 +6,54 @@ SHELL = /bin/sh AUTOCONF = autoconf PRJDIR = . -PKGS = support/gc support/cpp \ - src as/mcs51 debugger/mcs51 \ - device/include device/lib sim/mcs51 -PRJS = sim/mcs51 +SDCC_MISC = debugger/mcs51 sim/ucsim +SDCC_LIBS = support/cpp +SDCC_ASLINK = as/mcs51 as link -srcdir = . +PKGS = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \ + src device/include device/lib + +PORTS = mcs51 z80 +srcdir = . # Compiling entire program or any subproject # ------------------------------------------ -all: checkconf - for pkg in $(PKGS); do $(MAKE) -C $$pkg; done +all: checkconf sdcc + +sdcc-libs: +ifeq ($(CROSS_LIBGC),1) + $(MAKE) -C support/gc -f Makefile.cross +else + $(MAKE) -C support/gc +endif + for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done + +sdcc-cc: sdcc-libs + $(MAKE) -C src + +sdcc-aslink: + for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done + +sdcc-misc: + for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done + +sdcc-device: + $(MAKE) -C device/include + $(MAKE) -C device/lib + +sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device $(MAKE) -f main.mk all +# Some interesting sub rules +sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc # Compiling and installing everything and runing test # --------------------------------------------------- install: $(MAKE) -f main.mk install @for pkg in $(PKGS); do\ - cd $$pkg && $(MAKE) install; cd ..;\ + $(MAKE) -C $$pkg install ;\ done @@ -35,41 +62,38 @@ install: uninstall: $(MAKE) -f main.mk uninstall @for pkg in $(PKGS); do\ - cd cmd && $(MAKE) uninstall; cd ..;\ + $(MAKE) -C $$pkg uninstall ;\ done # Deleting all files created by building the program # -------------------------------------------------- clean: + @echo "+ Cleaning root of the project..." $(MAKE) -f clean.mk clean - for pkg in $(PKGS); do $(MAKE) -C $$pkg clean; done - @for prj in $(PRJS); do\ - cd $$prj && $(MAKE) clean; cd ..;\ + @echo "+ Cleaning packages in their directories..." + for pkg in $(PKGS); do\ + $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\ done - + # Deleting all files created by configuring or building the program # ----------------------------------------------------------------- -distclean: clean +distclean: + @echo "+ DistCleaning root of the project..." $(MAKE) -f clean.mk distclean - @for pkg in $(PKGS); do\ - cd $$pkg && $(MAKE) -f clean.mk distclean; cd ..;\ - done - @for prj in $(PRJS); do\ - cd $$prj && $(MAKE) distclean; cd ..;\ + @echo "+ DistCleaning packages using clean.mk..." + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\ done - + # Like clean but some files may still exist # ----------------------------------------- mostlyclean: clean $(MAKE) -f clean.mk mostlyclean - @for pkg in $(PKGS); do\ - cd $$pkg && $(MAKE) -f clean.mk mostlyclean; cd ..;\ - done - @for prj in $(PRJS); do\ - cd $$prj && $(MAKE) mostlyclean; cd ..;\ + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\ done @@ -78,11 +102,8 @@ mostlyclean: clean # ----------------------------------------------------------------------- realclean: distclean $(MAKE) -f clean.mk realclean - @for pkg in $(PKGS); do\ - cd $$pkg && $(MAKE) -f clean.mk realclean; cd ..;\ - done - @for prj in $(PRJS); do\ - cd $$prj && $(MAKE) realclean; cd ..;\ + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\ done @@ -111,12 +132,21 @@ installcheck: dep: $(MAKE) -f main.mk dep @for pkg in $(PKGS); do\ - cd $$pkg && $(MAKE) dep; cd ..;\ + $(MAKE) -C $$pkg dep ;\ done # My rules # -------- +newer: distclean + @if [ -f start ]; then \ + tar cvf - \ + `find . -newer start -type f -print` |\ + gzip -9c >`date '+%m%d%H%M'`.tgz; \ + else \ + echo "start file not found.\n"; \ + exit 1; \ + fi putcopyright: 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l