Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 1 | # FLAC - Free Lossless Audio Codec |
Erik de Castro Lopo | b1982fb | 2013-05-25 17:11:19 +1000 | [diff] [blame] | 2 | # Copyright (C) 2001-2009 Josh Coalson |
Erik de Castro Lopo | 6a5fe43 | 2016-12-05 06:35:39 +1100 | [diff] [blame] | 3 | # Copyright (C) 2011-2016 Xiph.Org Foundation |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 4 | # |
Josh Coalson | e8a7601 | 2003-02-07 00:14:32 +0000 | [diff] [blame] | 5 | # This file is part the FLAC project. FLAC is comprised of several |
Ulrich Klauer | cd4ddab | 2013-05-26 22:53:43 +0200 | [diff] [blame] | 6 | # components distributed under different licenses. The codec libraries |
Josh Coalson | e8a7601 | 2003-02-07 00:14:32 +0000 | [diff] [blame] | 7 | # are distributed under Xiph.Org's BSD-like license (see the file |
| 8 | # COPYING.Xiph in this distribution). All other programs, libraries, and |
| 9 | # plugins are distributed under the GPL (see COPYING.GPL). The documentation |
| 10 | # is distributed under the Gnu FDL (see COPYING.FDL). Each file in the |
| 11 | # FLAC distribution contains at the top the terms under which it may be |
| 12 | # distributed. |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 13 | # |
Josh Coalson | e8a7601 | 2003-02-07 00:14:32 +0000 | [diff] [blame] | 14 | # Since this particular file is relevant to all components of FLAC, |
| 15 | # it may be distributed under the Xiph.Org license, which is the least |
| 16 | # restrictive of those mentioned above. See the file COPYING.Xiph in this |
| 17 | # distribution. |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 18 | |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 19 | # |
| 20 | # GNU makefile fragment for building an executable |
| 21 | # |
| 22 | |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 23 | include $(topdir)/build/config.mk |
| 24 | |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 25 | ifeq ($(OS),Darwin) |
Hendricks266 | 96d081c | 2012-12-29 04:22:59 -0600 | [diff] [blame] | 26 | CC = cc |
| 27 | CCC = c++ |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 28 | else |
Thomas Zander | d20a79a | 2015-10-11 17:56:13 +0200 | [diff] [blame] | 29 | ifeq ($(OS),FreeBSD) |
| 30 | CC = cc |
| 31 | CCC = c++ |
| 32 | else |
Hendricks266 | 96d081c | 2012-12-29 04:22:59 -0600 | [diff] [blame] | 33 | CC = gcc |
| 34 | CCC = g++ |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 35 | endif |
Thomas Zander | d20a79a | 2015-10-11 17:56:13 +0200 | [diff] [blame] | 36 | endif |
Thomas Zander | 8f4dffe | 2017-06-22 19:12:25 +0200 | [diff] [blame] | 37 | ifeq ($(CC),gcc) |
| 38 | GCC_INLINE = -finline-functions |
| 39 | endif |
Josh Coalson | 955a767 | 2001-05-03 02:24:39 +0000 | [diff] [blame] | 40 | NASM = nasm |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 41 | LINK = $(CC) $(LINKAGE) |
Erik de Castro Lopo | 85d5c53 | 2013-01-02 22:37:42 +1100 | [diff] [blame] | 42 | OBJPATH = $(topdir)/objs |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 43 | BINPATH = $(OBJPATH)/$(BUILD)/bin |
| 44 | LIBPATH = $(OBJPATH)/$(BUILD)/lib |
| 45 | DEBUG_BINPATH = $(OBJPATH)/debug/bin |
| 46 | DEBUG_LIBPATH = $(OBJPATH)/debug/lib |
| 47 | RELEASE_BINPATH = $(OBJPATH)/release/bin |
| 48 | RELEASE_LIBPATH = $(OBJPATH)/release/lib |
| 49 | PROGRAM = $(BINPATH)/$(PROGRAM_NAME) |
| 50 | DEBUG_PROGRAM = $(DEBUG_BINPATH)/$(PROGRAM_NAME) |
| 51 | RELEASE_PROGRAM = $(RELEASE_BINPATH)/$(PROGRAM_NAME) |
Josh Coalson | 6ca4b1b | 2001-06-29 02:54:59 +0000 | [diff] [blame] | 52 | |
Erik de Castro Lopo | 089caea | 2016-05-12 06:33:22 +1000 | [diff] [blame] | 53 | BASE_CFLAGS = -Wall -Wextra $(CONFIG_CFLAGS) -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 54 | |
Erik de Castro Lopo | 089caea | 2016-05-12 06:33:22 +1000 | [diff] [blame] | 55 | ifeq ($(DEFAULT_BUILD),debug) |
| 56 | CFLAGS := -g -O0 -DDEBUG $(CFLAGS) $(BASE_CFLAGS) -Wmissing-prototypes -Wstrict-prototypes |
| 57 | CXXFLAGS := -g -O0 -DDEBUG $(CXXFLAGS) $(BASE_CFLAGS) |
| 58 | endif |
| 59 | |
| 60 | ifeq ($(DEFAULT_BUILD),valgrind) |
| 61 | CFLAGS := -g -O0 -DDEBUG -DDEBUG -DFLAC__VALGRIND_TESTING $(CFLAGS) $(BASE_CFLAGS) -Wmissing-prototypes -Wstrict-prototypes |
| 62 | CXXFLAGS := -g -O0 -DDEBUG -DDEBUG -DFLAC__VALGRIND_TESTING $(CXXFLAGS) $(BASE_CFLAGS) |
| 63 | endif |
| 64 | |
| 65 | ifeq ($(DEFAULT_BUILD),release) |
Thomas Zander | 8f4dffe | 2017-06-22 19:12:25 +0200 | [diff] [blame] | 66 | CFLAGS := -O3 -fomit-frame-pointer -funroll-loops $(GCC_INLINE) -DFLaC__INLINE=__inline__ -DNDEBUG $(CFLAGS) $(BASE_CFLAGS) -Wmissing-prototypes -Wstrict-prototypes |
| 67 | CXXFLAGS := -O3 -fomit-frame-pointer -funroll-loops $(GCC_INLINE) -DFLaC__INLINE=__inline__ -DNDEBUG $(CXXFLAGS) $(BASE_CFLAGS) |
Erik de Castro Lopo | 089caea | 2016-05-12 06:33:22 +1000 | [diff] [blame] | 68 | endif |
Evan Ramos | 9df6736 | 2014-06-23 16:24:49 -0500 | [diff] [blame] | 69 | |
| 70 | LFLAGS = -L$(LIBPATH) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 71 | |
Erik de Castro Lopo | b60f16b | 2014-07-13 21:19:48 +1000 | [diff] [blame] | 72 | DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o) |
| 73 | RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o) |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 74 | ifeq ($(PROC),x86_64) |
Erik de Castro Lopo | b60f16b | 2014-07-13 21:19:48 +1000 | [diff] [blame] | 75 | DEBUG_PIC_OBJS = $(SRCS_C:%.c=%.debug.pic.o) $(SRCS_CC:%.cc=%.debug.pic.o) $(SRCS_CPP:%.cpp=%.debug.pic.o) $(SRCS_NASM:%.nasm=%.debug.pic.o) |
| 76 | RELEASE_PIC_OBJS = $(SRCS_C:%.c=%.release.pic.o) $(SRCS_CC:%.cc=%.release.pic.o) $(SRCS_CPP:%.cpp=%.release.pic.o) $(SRCS_NASM:%.nasm=%.release.pic.o) |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 77 | endif |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 78 | |
Josh Coalson | f8ecdde | 2004-12-30 03:56:08 +0000 | [diff] [blame] | 79 | debug : $(DEBUG_PROGRAM) |
| 80 | valgrind: $(DEBUG_PROGRAM) |
| 81 | release : $(RELEASE_PROGRAM) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 82 | |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 83 | # by default on OS X we link with static libs as much as possible |
| 84 | |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 85 | $(DEBUG_PROGRAM) : $(DEBUG_OBJS) $(DEBUG_PIC_OBJS) |
| 86 | ifeq ($(OS),Darwin) |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 87 | $(LINK) -o $@ $(DEBUG_OBJS) $(EXPLICIT_LIBS) |
| 88 | else |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 89 | $(LINK) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 90 | endif |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 91 | |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 92 | $(RELEASE_PROGRAM) : $(RELEASE_OBJS) $(RELEASE_PIC_OBJS) |
| 93 | ifeq ($(OS),Darwin) |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 94 | $(LINK) -o $@ $(RELEASE_OBJS) $(EXPLICIT_LIBS) |
| 95 | else |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 96 | $(LINK) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 97 | endif |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 98 | |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 99 | include $(topdir)/build/compile.mk |
Josh Coalson | 955a767 | 2001-05-03 02:24:39 +0000 | [diff] [blame] | 100 | |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 101 | .PHONY : clean |
| 102 | clean : |
Josh Coalson | c10f978 | 2008-09-14 19:59:52 +0000 | [diff] [blame] | 103 | -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(DEBUG_PIC_OBJS) $(RELEASE_PIC_OBJS) $(OBJPATH)/*/bin/$(PROGRAM_NAME) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 104 | |
| 105 | .PHONY : depend |
| 106 | depend: |
Josh Coalson | 5601bca | 2002-10-16 22:33:56 +0000 | [diff] [blame] | 107 | makedepend -fMakefile.lite -- $(CFLAGS) $(INCLUDES) -- *.c *.cc *.cpp |