51 lines
1006 B
Makefile
51 lines
1006 B
Makefile
|
|
CC = gcc
|
|
|
|
CFLAGS = \
|
|
-std=c17 \
|
|
-Wall \
|
|
-Wextra \
|
|
-Wpedantic \
|
|
-Wconversion \
|
|
-Iinclude
|
|
|
|
# CFLAGS += -O3
|
|
CFLAGS += -g
|
|
|
|
all: compile_flags.txt dirs scirpt lommereimar
|
|
|
|
COMMON_SRC = string.c stringmap.c
|
|
COMMON_OBJ = $(patsubst %.c, build/common/%.o, $(COMMON_SRC))
|
|
|
|
SCIRPT_SRC = main.c lexer.c ast.c parser.c compiler.c
|
|
SCIRPT_OBJ = $(patsubst %.c, build/scirpt/%.o, $(SCIRPT_SRC))
|
|
|
|
scirpt: $(SCIRPT_OBJ) $(COMMON_OBJ)
|
|
$(CC) -o bin/$@ $(CFLAGS) $^ -lm
|
|
|
|
LOMMEREIMAR_SRC = calculator.c
|
|
LOMMEREIMAR_OBJ = $(patsubst %.c, build/lommereimar/%.o, $(LOMMEREIMAR_SRC))
|
|
|
|
lommereimar: $(LOMMEREIMAR_OBJ) $(COMMON_OBJ)
|
|
$(CC) -o bin/$@ $(CFLAGS) $^ -lm
|
|
|
|
CHP_SRC = chp.c
|
|
CHP_OBJ = $(patsubst %.c, build/chp/%.o, $(LOMMEREIMAR_SRC))
|
|
|
|
chp: $(CHP_OBJ) $(COMMON_OBJ)
|
|
$(CC) -o bin/$@ $(CFLAGS) $^ -lm
|
|
|
|
build/%.o: %.c $(shell find -name *.h)
|
|
mkdir $(@D) -p
|
|
$(CC) -c -o $@ $(CFLAGS) $<
|
|
|
|
dirs:
|
|
mkdir -p bin
|
|
|
|
compile_flags.txt:
|
|
echo -xc $(CFLAGS) | sed 's/\s\+/\n/g' > compile_flags.txt
|
|
|
|
clean:
|
|
rm -rf build/ bin/
|
|
|