Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 1 | # FLAC - Free Lossless Audio Codec |
Josh Coalson | a78fac6 | 2005-01-25 04:17:55 +0000 | [diff] [blame] | 2 | # Copyright (C) 2001,2002,2003,2004,2005 Josh Coalson |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 3 | # |
Josh Coalson | e8a7601 | 2003-02-07 00:14:32 +0000 | [diff] [blame] | 4 | # This file is part the FLAC project. FLAC is comprised of several |
| 5 | # components distributed under difference licenses. The codec libraries |
| 6 | # are distributed under Xiph.Org's BSD-like license (see the file |
| 7 | # COPYING.Xiph in this distribution). All other programs, libraries, and |
| 8 | # plugins are distributed under the GPL (see COPYING.GPL). The documentation |
| 9 | # is distributed under the Gnu FDL (see COPYING.FDL). Each file in the |
| 10 | # FLAC distribution contains at the top the terms under which it may be |
| 11 | # distributed. |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 12 | # |
Josh Coalson | e8a7601 | 2003-02-07 00:14:32 +0000 | [diff] [blame] | 13 | # Since this particular file is relevant to all components of FLAC, |
| 14 | # it may be distributed under the Xiph.Org license, which is the least |
| 15 | # restrictive of those mentioned above. See the file COPYING.Xiph in this |
| 16 | # distribution. |
Josh Coalson | 6b05bc5 | 2001-06-08 00:13:21 +0000 | [diff] [blame] | 17 | |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 18 | # |
| 19 | # GNU makefile fragment for building a library |
| 20 | # |
| 21 | |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 22 | include $(topdir)/build/config.mk |
| 23 | |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 24 | ifeq ($(DARWIN_BUILD),yes) |
| 25 | CC = cc |
Josh Coalson | b7557fd | 2002-05-17 06:08:44 +0000 | [diff] [blame] | 26 | CCC = c++ |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 27 | else |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 28 | CC = gcc |
Josh Coalson | b7557fd | 2002-05-17 06:08:44 +0000 | [diff] [blame] | 29 | CCC = g++ |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 30 | endif |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 31 | AS = as |
Josh Coalson | 955a767 | 2001-05-03 02:24:39 +0000 | [diff] [blame] | 32 | NASM = nasm |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 33 | LINK = ar cru |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 34 | OBJPATH = $(topdir)/obj |
| 35 | LIBPATH = $(OBJPATH)/$(BUILD)/lib |
| 36 | DEBUG_LIBPATH = $(OBJPATH)/debug/lib |
| 37 | RELEASE_LIBPATH = $(OBJPATH)/release/lib |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 38 | ifeq ($(DARWIN_BUILD),yes) |
Josh Coalson | 1ce20ee | 2002-08-14 00:50:48 +0000 | [diff] [blame] | 39 | STATIC_LIB_SUFFIX = a |
| 40 | DYNAMIC_LIB_SUFFIX = dylib |
| 41 | else |
| 42 | STATIC_LIB_SUFFIX = a |
| 43 | DYNAMIC_LIB_SUFFIX = so |
| 44 | endif |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 45 | STATIC_LIB_NAME = $(LIB_NAME).$(STATIC_LIB_SUFFIX) |
| 46 | DYNAMIC_LIB_NAME = $(LIB_NAME).$(DYNAMIC_LIB_SUFFIX) |
| 47 | STATIC_LIB = $(LIBPATH)/$(STATIC_LIB_NAME) |
| 48 | DYNAMIC_LIB = $(LIBPATH)/$(DYNAMIC_LIB_NAME) |
| 49 | DEBUG_STATIC_LIB = $(DEBUG_LIBPATH)/$(STATIC_LIB_NAME) |
| 50 | DEBUG_DYNAMIC_LIB = $(DEBUG_LIBPATH)/$(DYNAMIC_LIB_NAME) |
| 51 | RELEASE_STATIC_LIB = $(RELEASE_LIBPATH)/$(STATIC_LIB_NAME) |
| 52 | RELEASE_DYNAMIC_LIB = $(RELEASE_LIBPATH)/$(DYNAMIC_LIB_NAME) |
Josh Coalson | 1ce20ee | 2002-08-14 00:50:48 +0000 | [diff] [blame] | 53 | ifeq ($(DARWIN_BUILD),yes) |
| 54 | LINKD = $(CC) -dynamiclib -flat_namespace -undefined suppress -install_name $(DYNAMIC_LIB) |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 55 | else |
Josh Coalson | 0eb674c | 2002-09-12 06:40:55 +0000 | [diff] [blame] | 56 | LINKD = $(CC) -shared |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 57 | endif |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 58 | |
Josh Coalson | 5b782b4 | 2003-09-15 21:14:26 +0000 | [diff] [blame] | 59 | debug : CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) |
Josh Coalson | f8ecdde | 2004-12-30 03:56:08 +0000 | [diff] [blame] | 60 | valgrind: CFLAGS = -g -O0 -DDEBUG $(CONFIG_CFLAGS) $(DEBUG_CFLAGS) -DFLAC__VALGRIND_TESTING -Wall -W -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) |
Josh Coalson | 5b782b4 | 2003-09-15 21:14:26 +0000 | [diff] [blame] | 61 | release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -DNDEBUG $(CONFIG_CFLAGS) $(RELEASE_CFLAGS) -Wall -W -Winline -DFLaC__INLINE=__inline__ -DVERSION=$(VERSION) $(DEFINES) $(INCLUDES) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 62 | |
| 63 | LFLAGS = -L$(LIBPATH) |
| 64 | |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 65 | DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o) $(SRCS_S:%.s=%.debug.o) |
| 66 | RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o) $(SRCS_S:%.s=%.release.o) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 67 | |
Josh Coalson | f8ecdde | 2004-12-30 03:56:08 +0000 | [diff] [blame] | 68 | debug : $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB) |
| 69 | valgrind: $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB) |
| 70 | release : $(RELEASE_STATIC_LIB) $(RELEASE_DYNAMIC_LIB) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 71 | |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 72 | $(DEBUG_STATIC_LIB): $(DEBUG_OBJS) |
| 73 | $(LINK) $@ $(DEBUG_OBJS) && ranlib $@ |
| 74 | |
| 75 | $(RELEASE_STATIC_LIB): $(RELEASE_OBJS) |
| 76 | $(LINK) $@ $(RELEASE_OBJS) && ranlib $@ |
| 77 | |
| 78 | $(DEBUG_DYNAMIC_LIB) : $(DEBUG_OBJS) |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 79 | ifeq ($(DARWIN_BUILD),yes) |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 80 | echo Not building dynamic lib, command is: $(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) -lc |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 81 | else |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 82 | $(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) |
Josh Coalson | 6e14490 | 2001-12-07 19:28:25 +0000 | [diff] [blame] | 83 | endif |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 84 | |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 85 | $(RELEASE_DYNAMIC_LIB) : $(RELEASE_OBJS) |
| 86 | ifeq ($(DARWIN_BUILD),yes) |
Josh Coalson | 28306cc | 2004-12-30 03:48:25 +0000 | [diff] [blame] | 87 | echo Not building dynamic lib, command is: $(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) -lc |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 88 | else |
| 89 | $(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) |
| 90 | endif |
| 91 | |
| 92 | %.debug.o %.release.o : %.c |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 93 | $(CC) $(CFLAGS) -c $< -o $@ |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 94 | %.debug.o %.release.o : %.cc |
Josh Coalson | b7557fd | 2002-05-17 06:08:44 +0000 | [diff] [blame] | 95 | $(CCC) $(CFLAGS) -c $< -o $@ |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 96 | %.debug.o %.release.o : %.cpp |
Josh Coalson | 5601bca | 2002-10-16 22:33:56 +0000 | [diff] [blame] | 97 | $(CCC) $(CFLAGS) -c $< -o $@ |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 98 | %.debug.i %.release.i : %.c |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 99 | $(CC) $(CFLAGS) -E $< -o $@ |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 100 | %.debug.i %.release.i : %.cc |
Josh Coalson | b7557fd | 2002-05-17 06:08:44 +0000 | [diff] [blame] | 101 | $(CCC) $(CFLAGS) -E $< -o $@ |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 102 | %.debug.i %.release.i : %.cpp |
Josh Coalson | 5601bca | 2002-10-16 22:33:56 +0000 | [diff] [blame] | 103 | $(CCC) $(CFLAGS) -E $< -o $@ |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 104 | |
Josh Coalson | 2757af6 | 2004-10-30 00:03:21 +0000 | [diff] [blame] | 105 | %.debug.o %.release.o : %.s |
| 106 | ifeq ($(DARWIN_BUILD),yes) |
| 107 | #$(CC) -c -arch ppc -Wall -force_cpusubtype_ALL $< -o $@ |
| 108 | $(AS) -arch ppc -force_cpusubtype_ALL $< -o $@ |
| 109 | else |
| 110 | $(AS) $< -o $@ |
| 111 | endif |
| 112 | |
Josh Coalson | b74fc98 | 2002-11-20 06:40:08 +0000 | [diff] [blame] | 113 | %.debug.o %.release.o : %.nasm |
Josh Coalson | 1162f18 | 2001-06-19 06:48:21 +0000 | [diff] [blame] | 114 | $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@ |
Josh Coalson | 955a767 | 2001-05-03 02:24:39 +0000 | [diff] [blame] | 115 | |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 116 | .PHONY : clean |
| 117 | clean : |
Josh Coalson | f8ecdde | 2004-12-30 03:56:08 +0000 | [diff] [blame] | 118 | -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/lib/$(STATIC_LIB_NAME) $(OBJPATH)/*/lib/$(DYNAMIC_LIB_NAME) |
Josh Coalson | bb7f6b9 | 2000-12-10 04:09:52 +0000 | [diff] [blame] | 119 | |
| 120 | .PHONY : depend |
| 121 | depend: |
Josh Coalson | 5601bca | 2002-10-16 22:33:56 +0000 | [diff] [blame] | 122 | makedepend -fMakefile.lite -- $(CFLAGS) $(INCLUDES) -- *.c *.cc *.cpp |