`make modules debug|release MODULES...` Builds the provided list of lua modules in release/debug `make release` `make debug` Builds a debug build of the lbs program `make clean` TODO
71 lines
1.6 KiB
Makefile
71 lines
1.6 KiB
Makefile
CC=clang
|
|
CFLAGS = -Wall -Wextra
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
CFLAGS += -D WIN32
|
|
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
|
|
CFLAGS += -D AMD64
|
|
else
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
|
|
CFLAGS += -D AMD64
|
|
endif
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),x86)
|
|
CFLAGS += -D IA32
|
|
endif
|
|
endif
|
|
|
|
RELEASE_TARGET=bin/lbs.exe
|
|
DEBUG_TARGET=bin/lbs-dbg.exe
|
|
else
|
|
UNAME_S := $(shell uname -s)
|
|
ifeq ($(UNAME_S),Linux)
|
|
CFLAGS += -D LINUX
|
|
endif
|
|
ifeq ($(UNAME_S),Darwin)
|
|
CFLAGS += -D OSX
|
|
endif
|
|
UNAME_P := $(shell uname -p)
|
|
ifeq ($(UNAME_P),x86_64)
|
|
CFLAGS += -D AMD64
|
|
endif
|
|
ifneq ($(filter %86,$(UNAME_P)),)
|
|
CFLAGS += -D IA32
|
|
endif
|
|
ifneq ($(filter arm%,$(UNAME_P)),)
|
|
CFLAGS += -D ARM
|
|
endif
|
|
RELEASE_TARGET=bin/lbs
|
|
DEBUG_TARGET=bin/lbs-dbg
|
|
endif
|
|
|
|
|
|
# If the first argument is "modules"...
|
|
ifeq (modules,$(firstword $(MAKECMDGOALS)))
|
|
# use the rest as arguments for "run"
|
|
MODULE_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
|
# ...and turn them into do-nothing targets
|
|
$(eval $(MODULE_ARGS):;@:)
|
|
endif
|
|
|
|
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
|
|
|
SRC_FILES=$(call rwildcard, src, *.c)
|
|
OBJ_FILES=$(addprefix obj/, $(SRC_FILES:.c=.o))
|
|
modules:
|
|
cd modules && $(MAKE) $(MODULE_ARGS)
|
|
|
|
|
|
obj/src/%.o: src/%.c
|
|
$(CC) $(CFLAGS) -c $(@:obj/%.o=%.c) -o $@
|
|
|
|
release: $(RELEASE_TARGET)
|
|
$(RELEASE_TARGET): $(OBJ_FILES)
|
|
$(CC) $(LFLAGS) $^ -o $@
|
|
|
|
debug: $(DEBUG_TARGET)
|
|
$(DEBUG_TARGET): $(OBJ_FILES)
|
|
$(CC) $(LFLAGS) $^ -o $@
|
|
|
|
clean:
|
|
echo TODO
|