From 9f1d945585172b03bc9e5dca7048302a29239e0c Mon Sep 17 00:00:00 2001 From: ken Date: Thu, 15 Dec 2016 21:36:19 -0800 Subject: [PATCH] Makefile v0.2 --- Makefile | 62 +++++++++++++++++++++++++++++++++------------------- src/lexer.c | 2 +- src/main.o | Bin 2472 -> 0 bytes 3 files changed, 41 insertions(+), 23 deletions(-) delete mode 100644 src/main.o diff --git a/Makefile b/Makefile index d6689db..1bc47b8 100644 --- a/Makefile +++ b/Makefile @@ -5,37 +5,55 @@ ################################################################################ # This makefile builds APC, the Asset Package Compiler for Henge, on the system. ################################################################################ -# Directories (can override with env vars) -APC_ROOTDIR := $(if $(APC_ROOTDIR),$(APC_ROOTDIR),.) -APC_SRCDIR := $(if $(APC_SRCDIR),$(APC_SRCDIR),$(APC_ROOTDIR)/src) +# Yacc +YACC := bison +YFLAGS ?= -v -d -Wall +YCMD = $(YACC) $(YFLAGS) $< + +# Ragel +RLC ?= ragel +RLFALGS ?= -C +RLCMD = $(RLC) $(RLFLAGS) -o $@ $< + +# C +CC ?= gcc +CFLAGS ?= -Wall -Werror +CCMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< + +# Linker +LD ?= ld +LDFLAGS ?= +LDLIBS ?= +LDCMD = $(LD) $(LDFLAGS) $(LDLIBS) -o $@ $^ # APC is built from Ragel, Bison and C source code only. -ySRC := $(shell find $(APC_SRCDIR) -type f -name '*.y') -rlSRC := $(shell find $(APC_SRCDIR) -type f -name '*.rl') -cSRC := $(shell find $(APC_SRCDIR) -type f -name '*.c') - -# Specify the linker (allow env var override) -LD := $(if $(LD),$(LD),ld) +ySRC := $(shell find ./src -type f -name '*.y') +rlSRC := $(shell find ./src -type f -name '*.rl') +cSRC := $(shell find ./src -type f -name '*.c') # Generated files from Yacc/Bison and Ragel hGEN := $(ySRC:%.y=%.tab.h) cGEN := $(strip $(ySRC:%.y=%.tab.c) $(rlSRC:%.rl=%.c)) +# Functions +cGENDEP = $(if $(wildcard $1),$(subst src/,,$(filter-out $1 \ %:,$(shell $(CC) -MM -MG $1))),$(info fnf $1)) +ldFLAGS = $(strip $(LDFLAGS) $(LDLIBS) $(VA_ARGS)) + # Rules -apc-d: $(patsubst %.c,%-d.o,$(cSRC) $(cGEN)) | $(hGEN) - $(LD) $(LDFLAGS) $(LDLIBS) $< +apcSRC := $(patsubst %.c,%.o,$(cSRC) $(cGEN)) +apc-dSRC := $(patsubst %.o,%-d.o,$(apcSRC)) + +.SECONDEXPANSION: +apc-d apc: $$($$@SRC) | $(hGEN) + $(strip $(LDCMD)) -apc: $(patsubst %.c,%.o,$(cSRC) $(cGEN)) | $(hGEN) - $(LD) $(LDFLAGS) $(LDLIBS) $< +%-d.o: CFLAGS+= -Og -ggdb +%.o %-d.o: %.c $$(call cGENDEP,$$(dir $$@)%.c) + $(strip $(CCMD)) %.tab.h %.tab.c: %.y - bison -d $(YFLAGS) $< - -cFLAGS = $(strip $(CFLAGS) $(CPPFLAGS) $1 $2 $3 $4 $5 $6 $7 $8 $9) -GENDEP = $(filter-out \ %:,$(shell $(CC) -MM -MG $1)) -.SECONDEXPANSION: -%.o: %.c $$(call GENDEP,$$(dir $$@)%.c) - $(CC) $(call cFLAGS,-c,-o $@) $< + $(strip $(YCMD)) + mv $(notdir $(<:%.y=%.tab.[ch])) $(dir $@) -%-d.o: $$(call GENDEP,$$(dir $$@)%.c) $$(info [DEPS|$$@] $$(call GENDEP,$$(dir $$@)%.c)) - $(CC) $(call cFLAGS,-c,-Og,-ggdb,-o $@) $< +%.c: %.rl + $(strip $(RLCMD)) diff --git a/src/lexer.c b/src/lexer.c index b2bb535..1550db9 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -28,7 +28,7 @@ #include /* Local */ -#include "src/parser.tab.h" +#include "parser.tab.h" #ifndef DE_STACKSIZE #define DE_STACKSIZE 1024 #endif diff --git a/src/main.o b/src/main.o deleted file mode 100644 index db32a98866b87fa2d3ea74d470a29cd5478619a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2472 zcmb`HO-vI(6vwAj1re|yendPB2aF`LX^A1&1TB)vngAv!(S#VXl!Z37yLEPmEs60! zBx!n(g9kl&@!*M*F&@B!Moz@Uvk4wdNZ{g)Llb;&cZLqzt|wnJU%&akH?uR-_dGdv zyCD=J(n910sg5KiBz>aVPq^I#X(i2MN-zD^m-lGt*`8in+}6wE+vVimCsgRAtRFh$_gpg-CXF==L6|fJ@Y=6IWxKNO z_Xf|k4Vn&R|L&OpI|C)+NsiPP19*1;?+xJ506rMNhXS}B!0!fdk~1=vmLe&GEjaFg zESTKRa{>hzaX7QGrUmVs$rzc>vy8>(iCM^S@9oWGEa>K8(q^Ps%p1%x2{{kzp*2HM zZxPQ04UhX2l*)l;HxYs%Z-FBD7(y`QtxzPNMhNEDr#{^%w-`W~OK6nURAR^nZ*(7|d1v43GeZCjZ~w$kWO`wp~y#J0+l~ zMn%fn#Nc4~ma!|}&jo~Fm!Tl{XTEOXhZ@!V_$o|dOuv6Z2xZ=qF{tc_HU=$9kK7%M zr9b8c)#UyqyAB=nk4hlgmtuW9AJqhQeURURBAKdtUk}#NJ`l{m|25%{`B63h{wHCw z-u>-}q$KYN?+<;YzvTEI^q)PT!v|%!gKFjfEFAmyj_MsD+!ih7Jj_@A^^w(Ee^Wp_ JAJzQp{{;n_ILQD2 -- 2.18.0