scons --> make
[aftubes.git] / Makefile
blob6b1948ed08183a14eb8350697076850f310c70f3
1 .POSIX:
2 .SILENT:
4 ## TOOLS ##
6 CC := gcc
7 LD := gcc
8 MAKEDEPEND := makedepend
10 ## OPTIONS ##
12 BUILDDIR := build/
13 CPPDEFINE := _GNU_SOURCE _POSIX_SOURCE
14 CPPPATH := .
15 CFLAGS := -Wall -Werror -std=c99 -pedantic -O3 -g -ffunction-sections
16 LDFLAGS := -Wl,--gc-sections
18 ## SOURCES ##
20 progname := aftubes
22 subdirs := modules/
24 sources := aformat.c buffer.c errors.c graph.c main.c sound-ioctl.c soundout.c \
25 wavefile.c \
26 $(addprefix modules/,convert.c mixer.c playsink.c ringmod.c wavesource.c)
28 ## RULES ##
30 hackydir := `gcc -print-search-dirs | grep install | cut -d" " -f2`/include
31 CPPFLAGS := $(addprefix -I,$(CPPPATH)) $(addprefix -D,$(CPPDEFINE))
32 CFLAGS := $(CPPFLAGS) $(CFLAGS)
33 objects := $(addprefix $(BUILDDIR), $(sources:.c=.o))
35 green := \033[32m
36 ungreen := \033[0m
38 .PHONY: all
39 all: makedirs $(BUILDDIR)$(progname)
41 .PHONY: makedirs
42 makedirs:
43 mkdir -p $(addprefix $(BUILDDIR),$(subdirs))
45 $(BUILDDIR)$(progname): $(objects)
46 printf " Linking $(green)$@$(ungreen)\n"
47 $(LD) $(LDFLAGS) -o $@ $(objects)
49 ifneq ($(MAKECMDGOALS),clean)
50 -include .depends.mak
51 endif
53 .depends.mak:
54 printf " Scanning $(green)all source files$(ungreen)\n"
55 $(MAKEDEPEND) -I/usr/ -I$(hackydir) $(CPPFLAGS) -f- -p"$@ $(BUILDDIR)" $(sources) > $@
57 $(BUILDDIR)%.o: %.c
58 printf " Compiling $(green)$@$(ungreen)\n"
59 $(CC) $(CFLAGS) -c -o $@ $<
61 .PHONY: clean
62 clean:
63 printf " Deleting $(green)all objects$(ungreen)\n"
64 $(RM) -r $(BUILDDIR)