newest ucsim is in sim/ucsim
[fw/sdcc] / Makefile
index 4c8a097626ffd373c468411e7e805d903dc69585..5a0ee19dbee87982888615d54dc7379726cddeba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -8,8 +8,9 @@ AUTOCONF        = autoconf
 PRJDIR         = .
 PKGS           = support/gc support/cpp \
                  src as/mcs51 debugger/mcs51 \
-                 device/include device/lib
-PRJS           = simulator/mcs51
+                 device/include device/lib sim/ucsim
+PRJS           = sim/ucsim
+PORTS          = mcs51 z80
 
 srcdir          = .
 
@@ -26,7 +27,7 @@ all: checkconf
 install:
        $(MAKE) -f main.mk install
        @for pkg in $(PKGS); do\
-         cd $$pkg && $(MAKE) install; cd ..;\
+         $(MAKE) -C $$pkg install ;\
        done
 
 
@@ -35,43 +36,49 @@ 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\
-         cd $$pkg && $(MAKE) -f clean.mk clean; cd ..;\
+       @echo "+ Cleaning packages in their directories..."
+       for pkg in $(PKGS); do\
+         $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
        done
-       @for prj in $(PRJS); do\
-         cd $$prj && $(MAKE) clean; cd ..;\
+       @echo "+ Cleaning sub-projects using Makefile..."
+       for prj in $(PRJS); do\
+         $(MAKE) -C $$prj 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 ..;\
+       @echo "+ DistCleaning packages using clean.mk..."
+       for pkg in $(PKGS); do\
+         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
        done
-       @for prj in $(PRJS); do\
-         cd $$prj && $(MAKE) distclean; cd ..;\
+       @echo "+ DistCleaning sub-projects using Makefile..."
+       for prj in $(PRJS); do\
+         $(MAKE) -C $$prj 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 ..;\
+       for pkg in $(PKGS); do\
+         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
        done
-       @for prj in $(PRJS); do\
-         cd $$prj && $(MAKE) mostlyclean; cd ..;\
+       for prj in $(PRJS); do\
+         $(MAKE) -C $$prj mostlyclean ;\
        done
 
 
@@ -80,11 +87,11 @@ mostlyclean: clean
 # -----------------------------------------------------------------------
 realclean: distclean
        $(MAKE) -f clean.mk realclean
-       @for pkg in $(PKGS); do\
-         cd $$pkg && $(MAKE) -f clean.mk realclean; cd ..;\
+       for pkg in $(PKGS); do\
+         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
        done
-       @for prj in $(PRJS); do\
-         cd $$prj && $(MAKE) realclean; cd ..;\
+       for prj in $(PRJS); do\
+         $(MAKE) -C $$prj realclean ;\
        done
 
 
@@ -113,12 +120,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