#
# Makefile for lil. It requires GNU Make.
#

PREFIX = /usr/local
LIL_PROGRAM = lil
LIL_LIBRARY = liblil.a
BININSTALL = $(PREFIX)/bin
MANINSTALL = $(PREFIX)/man/man1
#CFLAGS ?= -Ofast -fno-omit-frame-pointer -fno-inline-functions -fno-inline-functions-called-once -fno-inline-small-functions -fno-tree-tail-merge -fno-crossjumping -g3 -gdwarf-2 -std=c99 -pedantic -Wall -Wextra -Wno-format -Wno-long-long -Wno-unused-parameter $(EXTRA_CFLAGS)
#LDFLAGS ?= -g -L. $(EXTRA_LDFLAGS)
CFLAGS ?= -O2 -g3 -std=c99 -pedantic -Wall -Wextra -Wno-format -Wno-long-long -Wno-unused-parameter $(EXTRA_CFLAGS)
LDFLAGS ?= -O2 -L. $(EXTRA_LDFLAGS)

LIL_SOURCES = lil.c
LIL_PROGRAM_SOURCES = main.c

LIL_LIBRARY_CFLAGS = $(CFLAGS)
LIL_PROGRAM_CFLAGS = $(CFLAGS) -DLIL_ENABLE_POOLS

LIL_OBJECTS = $(patsubst %.c,%.o,$(LIL_SOURCES))

HEADERS = $(wildcard *.h)

.PHONY: all
all: $(LIL_LIBRARY) $(LIL_PROGRAM)

$(LIL_LIBRARY): $(LIL_OBJECTS)
	$(AR) rcs $(LIL_LIBRARY) $(LIL_OBJECTS)

$(LIL_PROGRAM): $(LIL_PROGRAM_SOURCES) $(LIL_SOURCES)
	$(CC) $(LIL_PROGRAM_CFLAGS) -o $(LIL_PROGRAM) $(LIL_PROGRAM_SOURCES) $(LIL_SOURCES) -Wl,--disable-dynamicbase -lm

%.o: %.c $(LIL_SOURCES)
	$(CC) $(LIL_LIBRARY_CFLAGS) -c -o $@ $<

.PHONY: clean
clean:
	$(RM) $(LIL_PROGRAM_OBJECTS) $(LIL_OBJECTS)
	$(RM) $(LIL_LIBRARY) $(LIL_PROGRAM) $(LILCGI_PROGRAM)
