1 # FLAC - Free Lossless Audio Codec
2 # Copyright (C) 2001-2009 Josh Coalson
3 # Copyright (C) 2011-2016 Xiph.Org Foundation
5 # This file is part the FLAC project. FLAC is comprised of several
6 # components distributed under different licenses. The codec libraries
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
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
20 # GNU makefile fragment for building an executable
23 include $(topdir
)/build
/config.mk
38 GCC_INLINE
= -finline-functions
41 LINK
= $(CC
) $(LINKAGE
)
42 OBJPATH
= $(topdir
)/objs
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
)
53 BASE_CFLAGS
= -Wall
-Wextra
$(CONFIG_CFLAGS
) -DVERSION
=$(VERSION
) $(DEFINES
) $(INCLUDES
)
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
)
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
)
65 ifeq ($(DEFAULT_BUILD
),release
)
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
)
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
)
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
)
79 debug
: $(DEBUG_PROGRAM
)
80 valgrind
: $(DEBUG_PROGRAM
)
81 release
: $(RELEASE_PROGRAM
)
83 # by default on OS X we link with static libs as much as possible
85 $(DEBUG_PROGRAM
) : $(DEBUG_OBJS
) $(DEBUG_PIC_OBJS
)
87 $(LINK
) -o
$@
$(DEBUG_OBJS
) $(EXPLICIT_LIBS
)
89 $(LINK
) -o
$@
$(DEBUG_OBJS
) $(LFLAGS
) $(LIBS
)
92 $(RELEASE_PROGRAM
) : $(RELEASE_OBJS
) $(RELEASE_PIC_OBJS
)
94 $(LINK
) -o
$@
$(RELEASE_OBJS
) $(EXPLICIT_LIBS
)
96 $(LINK
) -o
$@
$(RELEASE_OBJS
) $(LFLAGS
) $(LIBS
)
99 include $(topdir
)/build
/compile.mk
103 -rm -f
$(DEBUG_OBJS
) $(RELEASE_OBJS
) $(DEBUG_PIC_OBJS
) $(RELEASE_PIC_OBJS
) $(OBJPATH
)/*/bin
/$(PROGRAM_NAME
)
107 makedepend
-fMakefile.lite
-- $(CFLAGS
) $(INCLUDES
) -- *.c
*.
cc *.
cpp