nodemcu-firmware/app/lua/luac_cross/Makefile

89 lines
2.1 KiB
Makefile

#
# This Make file is called from the core Makefile hierarchy with is a hierarchical
# make wwhich uses parent callbacks to implement inheritance. However is luac_cross
# build stands outside this and uses the host toolchain to implement a separate
# host build of the luac.cross image.
#
.NOTPARALLEL:
CCFLAGS:= -I.. -I../../include -I../../../include -I ../../libc
LDFLAGS:= -L$(SDK_DIR)/lib -L$(SDK_DIR)/ld -lm
CCFLAGS += -Wall
DEFINES += -DLUA_CROSS_COMPILER
TARGET = host
ifeq ($(FLAVOR),release)
CCFLAGS += -O2
TARGET_LDFLAGS += -O2
else
FLAVOR = debug
CCFLAGS += -O2 -g
TARGET_LDFLAGS += -O2 -g
endif
LUACSRC := luac.c lflashimg.c loslib.c print.c
LUASRC := lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c \
ldebug.c ldo.c ldump.c lfunc.c lgc.c \
llex.c lmathlib.c lmem.c loadlib.c lobject.c \
lopcodes.c lparser.c lrotable.c lstate.c lstring.c \
lstrlib.c ltable.c ltablib.c ltm.c lundump.c \
lvm.c lzio.c
LIBCSRC := c_stdlib.c
#
# This relies on the files being unique on the vpath
#
SRC := $(LUACSRC) $(LUASRC) $(LIBCSRC)
vpath %.c .:..:../../libc
ODIR := .output/$(TARGET)/$(FLAVOR)/obj
OBJS := $(SRC:%.c=$(ODIR)/%.o)
DEPS := $(SRC:%.c=$(ODIR)/%.d)
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(STD_CFLAGS) $(INCLUDES)
DFLAGS = $(CCFLAGS) $(DDEFINES) $(EXTRA_CCFLAGS) $(STD_CFLAGS) $(INCLUDES)
CC := gcc
ECHO := echo
IMAGE := ../../../luac.cross
.PHONY: test clean all
all: $(DEPS) $(IMAGE)
$(IMAGE) : $(OBJS)
$(CC) $(OBJS) -o $@ $(LDFLAGS)
test :
@echo CC: $(CC)
@echo SRC: $(SRC)
@echo OBJS: $(OBJS)
@echo DEPS: $(DEPS)
clean :
$(RM) -r $(ODIR)
-include $(DEPS)
$(ODIR)/%.o: %.c
@mkdir -p $(ODIR);
$(CC) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
$(ODIR)/%.d: %.c
@mkdir -p $(ODIR);
@echo DEPEND: $(CC) -M $(CFLAGS) $<
@set -e; rm -f $@; \
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
sed 's,\($*\.o\)[ :]*,$(ODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
# echo 's,\($*\.o\)[ :]*,$(ODIR)/\1 $@ : ,g'; \