prototype IR and parser
[henge/webcc.git] / src / Makefile
index 89aba0e..8e0c926 100644 (file)
@@ -15,7 +15,7 @@ APPFLAGS  :=
 APPOBJ    :=
 #Dependencies which must be built before the executable
 APPDEPS   :=
-#Directories containing independent tools
+#Directories containing independent tools for GNU
 TOOLS     := apc
 ##################################################
 #Emscripten Info
@@ -58,28 +58,28 @@ push: $(APPTARG)
 dox doc:
        doxygen dox.conf
 
-#clean up intermediate dependency files and binaries
-clean:
-       @echo "Cleaning build targets"
-       rm -f $(APPTARG) $(WEBTARG) $(CTARG)
-
-#Scrub down to minimal distribution
-scrub: | clean
-
 ################## DEFAULTS #####################
 #cancel default %.o behavior for %.d dependency
 %.o : %.c
 
 #construct list of make rules for tools
 ifdef TOOLS
-TOOLTARGS := $(foreach tool,$(TOOLS),$(tool)/$(tool))
+TOOLTRG := $(foreach tool,$(TOOLS),$(tool)/$(tool))
 .phony: $(TOOLS)
-$(TOOLS): $(TOOLTARGS)
+$(TOOLS): $(TOOLTRG)
 
 T = $(notdir $@)
-$(TOOLTARGS): $(TOOLOBJ)
+D = $(dir $@)
+B = $(basename $D)
+$(TOOLTRG): $(TOOLOBJ)
        $($TCC) $($TFLG) $($TSRC:.c=.o) -o $@
 
+#Tools only work on whatever system they're designed for
+#(typically GNU), so their creation rules are dependent
+#on each tool (define in .make/.buildtools.mk)
+$(foreach tool,$(TOOLS),$(tool)/%.o): $(dir $@)%.c
+       $($BCC) $(BFLG) $< -c -o $@
+
 #Put our toolsrc on the ctarg list for generating deps
 CTARG := $(CTARG) $(TOOLOBJ)
 endif
@@ -110,3 +110,11 @@ ifdef APPTARGS
 include $(foreach app,$(APPTARGS),.make/app$(app).mk)
 endif
 
+#clean up intermediate dependency files and binaries
+clean:
+       @echo "Cleaning build targets"
+       rm -f $(APPTARG) $(WEBTARG) $(CTARG)
+
+#Scrub down to minimal distribution
+scrub: | clean
+