Replace Perl version of packihx with C version
[fw/sdcc] / Makefile
index 01c94352db2a16d6e63e6104a3b846a5509ae9ec..1b3c8d2378e7a097ebe4a7343c07192924e642e5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,21 +6,63 @@ SHELL         = /bin/sh
 AUTOCONF       = autoconf
 
 PRJDIR         = .
-PKGS           = support/gc support/cpp \
-                 src as/mcs51 as/z80 link/z80 debugger/mcs51 \
-                 device/include device/lib sim/ucsim
-PRJS           = sim/ucsim
+SDCC_MISC      = debugger/mcs51 sim/ucsim
+SDCC_LIBS      = support/cpp
+SDCC_ASLINK    = as/mcs51 as link
+SDCC_PACKIHX   = packihx
+
+PKGS           = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \
+                 src device/include device/lib $(SDCC_PACKIHX)
+PKGS_TINI      = $(SDCC_LIBS) $(SDCC_ASLINK) \
+                 src device/include $(SDCC_PACKIHX)
 PORTS          = mcs51 z80
 
 srcdir          = .
 
-
 # Compiling entire program or any subproject
 # ------------------------------------------
-all: checkconf
-       for pkg in $(PKGS); do $(MAKE) -C $$pkg; done
+all: checkconf sdcc
+
+tini: checkconf sdcc-tini
+
+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-packihx:
+       $(MAKE) -C $(SDCC_PACKIHX)
+
+sdcc-device:
+       $(MAKE) -C device/include
+       $(MAKE) -C device/lib
+
+sdcc-device-tini:
+       $(MAKE) -C device/include
+       $(MAKE) -C device/lib modelDS390
+
+sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device sdcc-packihx
+       $(MAKE) -f main.mk all
+
+sdcc-tini: sdcc-cc sdcc-aslink sdcc-device-tini sdcc-packihx
        $(MAKE) -f main.mk all
 
+# Some interesting sub rules
+sdcc-bin: sdcc-cc sdcc-aslink sdcc-misc
+
+sdcc-base: sdcc-cc sdcc-aslink
 
 # Compiling and installing everything and runing test
 # ---------------------------------------------------
@@ -30,6 +72,14 @@ install:
          $(MAKE) -C $$pkg install ;\
        done
 
+install-tini:
+       $(MAKE) -f main.mk install
+       @for pkg in $(PKGS_TINI); do\
+         $(MAKE) -C $$pkg install ;\
+       done
+       $(MAKE) -C device/lib installDS390
+
+
 
 # Deleting all the installed files
 # --------------------------------
@@ -49,10 +99,6 @@ clean:
        for pkg in $(PKGS); do\
          $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
        done
-       @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
@@ -64,10 +110,6 @@ distclean:
        for pkg in $(PKGS); do\
          $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
        done
-       @echo "+ DistCleaning sub-projects using Makefile..."
-       for prj in $(PRJS); do\
-         $(MAKE) -C $$prj distclean ;\
-       done
 
 
 # Like clean but some files may still exist
@@ -77,9 +119,6 @@ mostlyclean: clean
        for pkg in $(PKGS); do\
          $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
        done
-       for prj in $(PRJS); do\
-         $(MAKE) -C $$prj mostlyclean ;\
-       done
 
 
 # Deleting everything that can reconstructed by this Makefile. It deletes
@@ -90,9 +129,6 @@ realclean: distclean
        for pkg in $(PKGS); do\
          $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
        done
-       for prj in $(PRJS); do\
-         $(MAKE) -C $$prj realclean ;\
-       done
 
 
 # Creating distribution