summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-10-06 05:06:16 -0400
committerLLLL Colonq <llll@colonq>2025-10-06 05:06:41 -0400
commit09435bffe025a96e0d9c3b44ee9c505973b383bd (patch)
treed352772edc096a374d42c50ffa4a7b2b8dad59dd /Makefile
parent063ab38ce78c370c698e5d148bb9f993ee731ddb (diff)
Cleanup, fix bugs
Ensure everything builds on C89
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile30
1 files changed, 24 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 1de4ff4..619da0f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,32 @@
-SRCS := src/main.c src/utils.c src/lexer.c src/parser.c src/runtime.c src/library.c
+SRCS := src/utils.c src/lexer.c src/parser.c src/runtime.c src/library.c
+HEADERS := $(wildcard src/*.h)
OBJECTS := $(SRCS:src/%.c=build/%.o)
EXE := pit
+LIB := libcolonq-pit.a
CC ?= gcc
-CHK_SOURCES ?= $(SRCS)
+AR ?= ar
+CHK_SOURCES ?= src/main.c $(SRCS)
CPPFLAGS ?= -MMD -MP
-CFLAGS ?= -Ideps/ -Isrc/ -Wall -Wextra -Wpedantic -ftrapv --std=c23 -g
+CFLAGS ?= --std=c89 -g -Ideps/ -Isrc/ -Wall -Wextra -Wpedantic -Wconversion -Wformat-security -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wnull-dereference -Wfloat-equal -Wundef -Wpointer-arith -Wbad-function-cast -Wlogical-op -Wmissing-braces -Wcast-align -Wstrict-overflow=5 -ftrapv
LDFLAGS ?= -g -static
-.PHONY: all clean check-syntax
+prefix ?= /usr/local
+exec_prefix ?= $(prefix)
+bindir ?= $(exec_prefix)/bin
+includedir ?= $(prefix)/include
+libdir ?= $(exec_prefix)/lib
-all: $(EXE)
+.PHONY: all clean install check-syntax
-$(EXE): $(OBJECTS)
+all: $(EXE) $(LIB)
+
+$(EXE): build/main.o $(LIB)
$(CC) -o $@ $^ $(LDFLAGS)
+$(LIB): $(OBJECTS)
+ ar rcs $@ $^
+
build:
mkdir build/
@@ -28,6 +40,12 @@ clean:
TAGS: $(SRCS)
etags $^
+install: $(EXE) $(LIB)
+ mkdir -p $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
+ install $(EXE) $(DESTDIR)$(bindir)/pit
+ install $(LIB) $(DESTDIR)$(libdir)/libpit.a
+ install $(HEADERS) $(DESTDIR)$(includedir)
+
check-syntax: TAGS
gcc $(CFLAGS) -fsyntax-only $(CHK_SOURCES)