19
19
# GNU makefile fragment for building an executable
22
include $(topdir)/build/config.mk
24
ifeq ($(DARWIN_BUILD),yes)
24
# LINKAGE can be forced to -static or -dynamic from invocation if desired, but it defaults to -static
27
BINPATH = ../../obj/bin
28
LIBPATH = ../../obj/lib
29
PROGRAM = $(BINPATH)/$(PROGRAM_NAME)
33
include ../../build/config.mk
32
# override to -dynamic on OSX
33
ifeq ($(DARWIN_BUILD),yes)
36
LINK = $(CC) $(LINKAGE)
37
OBJPATH = $(topdir)/obj
38
BINPATH = $(OBJPATH)/$(BUILD)/bin
39
LIBPATH = $(OBJPATH)/$(BUILD)/lib
40
DEBUG_BINPATH = $(OBJPATH)/debug/bin
41
DEBUG_LIBPATH = $(OBJPATH)/debug/lib
42
RELEASE_BINPATH = $(OBJPATH)/release/bin
43
RELEASE_LIBPATH = $(OBJPATH)/release/lib
44
PROGRAM = $(BINPATH)/$(PROGRAM_NAME)
45
DEBUG_PROGRAM = $(DEBUG_BINPATH)/$(PROGRAM_NAME)
46
RELEASE_PROGRAM = $(RELEASE_BINPATH)/$(PROGRAM_NAME)
35
48
debug : CFLAGS = -g -O0 -DDEBUG $(DEBUG_CFLAGS) -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
49
valgrind: CFLAGS = -g -O0 -DDEBUG $(DEBUG_CFLAGS) -DFLAC__VALGRIND_TESTING -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
36
50
release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(RELEASE_CFLAGS) -Wall -W -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES)
38
52
LFLAGS = -L$(LIBPATH)
40
debug : $(ORDINALS_H) $(PROGRAM)
41
release : $(ORDINALS_H) $(PROGRAM)
44
$(LINK) -o $@ $(OBJS) $(LFLAGS) $(LIBS)
54
DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o)
55
RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o)
57
debug : $(ORDINALS_H) $(DEBUG_PROGRAM)
58
valgrind: $(ORDINALS_H) $(DEBUG_PROGRAM)
59
release : $(ORDINALS_H) $(RELEASE_PROGRAM)
61
$(DEBUG_PROGRAM) : $(DEBUG_OBJS)
62
$(LINK) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS)
64
$(RELEASE_PROGRAM) : $(RELEASE_OBJS)
65
$(LINK) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS)
67
%.debug.o %.release.o : %.c
47
68
$(CC) $(CFLAGS) -c $< -o $@
69
%.debug.o %.release.o : %.cc
70
$(CCC) $(CFLAGS) -c $< -o $@
71
%.debug.o %.release.o : %.cpp
72
$(CCC) $(CFLAGS) -c $< -o $@
73
%.debug.i %.release.i : %.c
49
74
$(CC) $(CFLAGS) -E $< -o $@
75
%.debug.i %.release.i : %.cc
76
$(CCC) $(CFLAGS) -E $< -o $@
77
%.debug.i %.release.i : %.cpp
78
$(CCC) $(CFLAGS) -E $< -o $@
80
%.debug.o %.release.o : %.nasm
52
81
$(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@
56
-rm -f $(OBJS) $(PROGRAM)
85
-rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/bin/$(PROGRAM_NAME)
60
makedepend -- $(CFLAGS) $(INCLUDES) -- *.c
89
makedepend -fMakefile.lite -- $(CFLAGS) $(INCLUDES) -- *.c *.cc *.cpp