BINDIR = $(OUTDIR)/bin
CC = cc
-CFLAGS = -O2 -g --std=c99 -pedantic -Wall -Wextra -Werror
+CFLAGS = -O2 --std=c99 -pedantic -Wall -Wextra -Werror
CPPFLAGS = -Iinc/ -I/usr/include/freetype2
AR = ar
ARFLAGS = rs
-LDFLAGS = -Lbuild/lib/ $(LIBS)
+LDFLAGS = -flto -Lbuild/lib/ $(LIBS)
LIBS = -la
ARCHIVE = $(AR) $(ARFLAGS) $@ $^
-BINARY = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS)
+BINARY = $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) && strip $@
OBJECT = $(CC) $(CFLAGS) $(CPPFLAGS) -MMD -c -o $@ $<
{
mkdir -p "$OUTDIR/bin/"
mkdir -p "$OUTDIR/lib/"
+ mkdir -p "$OUTDIR/obj/"
# Generate rules for all libraries
for lib in lib/*; do
# Generate rules for simple binaries
for bin in bin/*.c; do
- puts "\$(OUTDIR)/${bin%.c}.o: $bin"
+ puts "\$(OUTDIR)/obj/${bin%.c}.o: $bin"
printf "\t\$(OBJECT)\n"
puts "\$(OUTDIR)/${bin%.c}: | \$(libs)"
- puts "\$(OUTDIR)/${bin%.c}: \$(OUTDIR)/${bin%.c}.o"
+ puts "\$(OUTDIR)/${bin%.c}: \$(OUTDIR)/obj/${bin%.c}.o"
printf "\t\$(BINARY)\n"
puts "bins: \$(OUTDIR)/${bin%.c}"
done