EXEEXT introduces to solve Cygwin problems
[fw/sdcc] / Makefile
index 81db02c1f59985c2c495b9afe2fcf1a41e29f493..4826af1040efde1ecc7c15bb7759bd781bada64b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,30 +3,52 @@
 #
 
 SHELL          = /bin/sh
-AUTOCONF       = autoconf
 
 PRJDIR         = .
+
+include $(PRJDIR)/Makefile.common
+
 SDCC_MISC      = debugger/mcs51 sim/ucsim
-SDCC_LIBS      = support/cpp
+SDCC_LIBS      = support/cpp2 support/makebin
+SDCC_DOC        = doc
+
+# Parts that are not normally compiled but need to be cleaned
+SDCC_EXTRA      = support/regression
+
 SDCC_ASLINK    = as/mcs51 as link
+SDCC_PACKIHX   = packihx
 
-PKGS           = $(SDCC_MISC) $(SDCC_LIBS) $(SDCC_ASLINK) \
-                 src device/include device/lib
+TARGETS         = sdcc-libs sdcc-cc sdcc-aslink sdcc-doc
 
-PORTS          = mcs51 z80
+PKGS           = $(SDCC_LIBS) src $(SDCC_ASLINK) $(SDCC_DOC)
 
-srcdir          = .
+ifneq ($(OPT_ENABLE_UCSIM), no)
+TARGETS         += sdcc-misc 
+PKGS            += $(SDCC_MISC)
+endif
+
+ifneq ($(OPT_ENABLE_DEVICE_LIB_BUILD), no)
+TARGETS         += sdcc-device
+PKGS            += device/include device/lib
+endif
+
+ifneq ($(OPT_ENABLE_PACKIHX), no)
+TARGETS         += sdcc-packihx
+PKGS            += $(SDCC_PACKIHX)
+endif
+
+PKGS_TINI      = $(SDCC_LIBS) $(SDCC_ASLINK) \
+                 src device/include $(SDCC_PACKIHX)
+PORTS          = $(shell cat ports.build)
+ALLPORTS       = $(shell cat ports.all)
 
 # Compiling entire program or any subproject
 # ------------------------------------------
 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
@@ -38,16 +60,30 @@ sdcc-aslink:
 sdcc-misc:
        for misc in $(SDCC_MISC); do $(MAKE) -C $$misc; done
 
-sdcc-device:
+sdcc-packihx:
+       $(MAKE) -C $(SDCC_PACKIHX)
+
+sdcc-device: sdcc-cc sdcc-aslink
        $(MAKE) -C device/include
        $(MAKE) -C device/lib
 
-sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc-device
+sdcc-device-tini:
+       $(MAKE) -C device/include
+       $(MAKE) -C device/lib modelDS390
+
+# Empty for now, as doc depends on latex and latex2html
+sdcc-doc:
+
+sdcc: $(TARGETS)
+
+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
 # ---------------------------------------------------
 install:
@@ -56,6 +92,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
 # --------------------------------
@@ -73,10 +117,9 @@ clean:
        $(MAKE) -f clean.mk clean
        @echo "+ Cleaning packages in their directories..."
        for pkg in $(PKGS); do\
-         $(MAKE) PORTS="$(PORTS)" -C $$pkg clean ;\
+         $(MAKE) PORTS="$(PORTS)" EXEEXT=$(EXEEXT) -C $$pkg -f clean.mk clean ;\
        done
 
-
 # Deleting all files created by configuring or building the program
 # -----------------------------------------------------------------
 distclean:
@@ -84,16 +127,18 @@ distclean:
        $(MAKE) -f clean.mk distclean
        @echo "+ DistCleaning packages using clean.mk..."
        for pkg in $(PKGS); do\
-         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" distclean ;\
+         $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) -f clean.mk distclean ;\
+       done
+       for pkg in $(SDCC_EXTRA); do \
+         $(MAKE) -C $$pkg clean; \
        done
-
 
 # Like clean but some files may still exist
 # -----------------------------------------
 mostlyclean: clean
        $(MAKE) -f clean.mk mostlyclean
        for pkg in $(PKGS); do\
-         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" mostlyclean ;\
+         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" EXEEXT=$(EXEEXT) mostlyclean ;\
        done
 
 
@@ -103,7 +148,7 @@ mostlyclean: clean
 realclean: distclean
        $(MAKE) -f clean.mk realclean
        for pkg in $(PKGS); do\
-         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" realclean ;\
+         $(MAKE) -C $$pkg -f clean.mk PORTS="$(PORTS)" EXEEXT=$(EXEEXT) realclean ;\
        done