1 # FLAC - Free Lossless Audio Codec
2 # Copyright (C) 2001-2009 Josh Coalson
3 # Copyright (C) 2011-2013 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 a library
23 include $(topdir
)/build
/config.mk
34 OBJPATH
= $(topdir
)/objs
35 LIBPATH
= $(OBJPATH
)/$(BUILD
)/lib
36 DEBUG_LIBPATH
= $(OBJPATH
)/debug
/lib
37 RELEASE_LIBPATH
= $(OBJPATH
)/release
/lib
40 DYNAMIC_LIB_SUFFIX
= dylib
42 ifeq ($(findstring Windows
,$(OS
)),Windows
)
44 DYNAMIC_LIB_SUFFIX
= dll
47 DYNAMIC_LIB_SUFFIX
= so
50 STATIC_LIB_NAME
= $(LIB_NAME
).
$(STATIC_LIB_SUFFIX
)
51 DYNAMIC_LIB_NAME
= $(LIB_NAME
).
$(DYNAMIC_LIB_SUFFIX
)
52 STATIC_LIB
= $(LIBPATH
)/$(STATIC_LIB_NAME
)
53 DYNAMIC_LIB
= $(LIBPATH
)/$(DYNAMIC_LIB_NAME
)
54 DEBUG_STATIC_LIB
= $(DEBUG_LIBPATH
)/$(STATIC_LIB_NAME
)
55 DEBUG_DYNAMIC_LIB
= $(DEBUG_LIBPATH
)/$(DYNAMIC_LIB_NAME
)
56 RELEASE_STATIC_LIB
= $(RELEASE_LIBPATH
)/$(STATIC_LIB_NAME
)
57 RELEASE_DYNAMIC_LIB
= $(RELEASE_LIBPATH
)/$(DYNAMIC_LIB_NAME
)
59 LINKD
= $(CC
) -dynamiclib
-flat_namespace
-undefined suppress
-install_name
$(DYNAMIC_LIB
)
64 debug
: CFLAGS
= -g
-O0
-DDEBUG
$(CONFIG_CFLAGS
) $(DEBUG_CFLAGS
) -W
-Wall
-DVERSION
=$(VERSION
) $(DEFINES
) $(INCLUDES
)
65 valgrind
: CFLAGS
= -g
-O0
-DDEBUG
$(CONFIG_CFLAGS
) $(DEBUG_CFLAGS
) -DFLAC__VALGRIND_TESTING
-W
-Wall
-DVERSION
=$(VERSION
) $(DEFINES
) $(INCLUDES
)
66 release
: CFLAGS
= -O3
-fomit-frame-pointer
-funroll-loops
-finline-functions
-DNDEBUG
$(CONFIG_CFLAGS
) $(RELEASE_CFLAGS
) -W
-Wall
-Winline
-DFLaC__INLINE
=__inline__
-DVERSION
=$(VERSION
) $(DEFINES
) $(INCLUDES
)
68 CFLAGS
= $(CFLAGS
) -Wmissing-prototypes
-Wstrict-prototypes
73 DEBUG_OBJS
= $(SRCS_C
:%.c
=%.debug.o
) $(SRCS_CC
:%.
cc=%.debug.o
) $(SRCS_CPP
:%.
cpp=%.debug.o
) $(SRCS_NASM
:%.nasm
=%.debug.o
)
74 RELEASE_OBJS
= $(SRCS_C
:%.c
=%.release.o
) $(SRCS_CC
:%.
cc=%.release.o
) $(SRCS_CPP
:%.
cpp=%.release.o
) $(SRCS_NASM
:%.nasm
=%.release.o
)
76 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
)
77 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
)
80 debug
: $(DEBUG_STATIC_LIB
) $(DEBUG_DYNAMIC_LIB
)
81 valgrind
: $(DEBUG_STATIC_LIB
) $(DEBUG_DYNAMIC_LIB
)
82 release
: $(RELEASE_STATIC_LIB
) $(RELEASE_DYNAMIC_LIB
)
84 $(DEBUG_STATIC_LIB
): $(DEBUG_OBJS
)
85 $(LINK
) $@
$(DEBUG_OBJS
) && ranlib
$@
87 $(RELEASE_STATIC_LIB
): $(RELEASE_OBJS
)
88 $(LINK
) $@
$(RELEASE_OBJS
) && ranlib
$@
90 $(DEBUG_DYNAMIC_LIB
) : $(DEBUG_OBJS
) $(DEBUG_PIC_OBJS
)
92 echo Not building dynamic lib
, command is
: $(LINKD
) -o
$@
$(DEBUG_OBJS
) $(LFLAGS
) $(LIBS
) -lc
95 $(LINKD
) -o
$@
$(DEBUG_PIC_OBJS
) $(LFLAGS
) $(LIBS
)
97 $(LINKD
) -o
$@
$(DEBUG_OBJS
) $(LFLAGS
) $(LIBS
)
101 $(RELEASE_DYNAMIC_LIB
) : $(RELEASE_OBJS
) $(RELEASE_PIC_OBJS
)
103 echo Not building dynamic lib
, command is
: $(LINKD
) -o
$@
$(RELEASE_OBJS
) $(LFLAGS
) $(LIBS
) -lc
105 ifeq ($(PROC
),x86_64
)
106 $(LINKD
) -o
$@
$(RELEASE_PIC_OBJS
) $(LFLAGS
) $(LIBS
)
108 $(LINKD
) -o
$@
$(RELEASE_OBJS
) $(LFLAGS
) $(LIBS
)
112 include $(topdir
)/build
/compile.mk
116 -rm -f
$(DEBUG_OBJS
) $(RELEASE_OBJS
) $(DEBUG_PIC_OBJS
) $(RELEASE_PIC_OBJS
) $(OBJPATH
)/*/lib
/$(STATIC_LIB_NAME
) $(OBJPATH
)/*/lib
/$(DYNAMIC_LIB_NAME
)
120 makedepend
-fMakefile.lite
-- $(CFLAGS
) $(INCLUDES
) -- *.c
*.
cc *.
cpp