# distribution.
EXTRA_DIST = \
+ compile.mk \
config.mk \
exe.mk \
lib.mk
--- /dev/null
+# FLAC - Free Lossless Audio Codec
+# Copyright (C) 2001,2002,2003,2004,2005,2006,2007,2008 Josh Coalson
+#
+# This file is part the FLAC project. FLAC is comprised of several
+# components distributed under difference licenses. The codec libraries
+# are distributed under Xiph.Org's BSD-like license (see the file
+# COPYING.Xiph in this distribution). All other programs, libraries, and
+# plugins are distributed under the GPL (see COPYING.GPL). The documentation
+# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the
+# FLAC distribution contains at the top the terms under which it may be
+# distributed.
+#
+# Since this particular file is relevant to all components of FLAC,
+# it may be distributed under the Xiph.Org license, which is the least
+# restrictive of those mentioned above. See the file COPYING.Xiph in this
+# distribution.
+
+#
+# GNU makefile fragment for building a library
+#
+
+%.debug.o %.release.o : %.c
+ $(CC) $(CFLAGS) -c $< -o $@
+%.debug.o %.release.o : %.cc
+ $(CCC) $(CFLAGS) -c $< -o $@
+%.debug.o %.release.o : %.cpp
+ $(CCC) $(CFLAGS) -c $< -o $@
+%.debug.pic.o %.release.pic.o : %.c
+ $(CC) $(CFLAGS) -fPIC -DPIC -c $< -o $@
+%.debug.pic.o %.release.pic.o : %.cc
+ $(CCC) $(CFLAGS) -fPIC -DPIC -c $< -o $@
+%.debug.pic.o %.release.pic.o : %.cpp
+ $(CCC) $(CFLAGS) -fPIC -DPIC -c $< -o $@
+%.debug.i %.release.i : %.c
+ $(CC) $(CFLAGS) -E $< -o $@
+%.debug.i %.release.i : %.cc
+ $(CCC) $(CFLAGS) -E $< -o $@
+%.debug.i %.release.i : %.cpp
+ $(CCC) $(CFLAGS) -E $< -o $@
+
+%.debug.o %.release.o : %.s
+ifeq ($(OS),Darwin)
+ #$(CC) -c -arch ppc -Wall -force_cpusubtype_ALL $< -o $@
+ $(AS) -arch ppc -force_cpusubtype_ALL $< -o $@
+else
+ $(AS) $< -o $@
+endif
+%.debug.pic.o %.release.pic.o : %.s
+ifeq ($(OS),Darwin)
+ #$(CC) -c -arch ppc -Wall -force_cpusubtype_ALL $< -o $@
+ $(AS) -arch ppc -force_cpusubtype_ALL $< -o $@
+else
+ $(AS) $< -o $@
+endif
+
+%.debug.o : %.nasm
+ $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@
+%.release.o : %.nasm
+ $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@
+%.debug.pic.o : %.nasm
+ $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@
+%.release.pic.o : %.nasm
+ $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@
DEFAULT_BUILD = release
+# returns i386, x86_64, powerpc, etc.
+PROC := $(shell uname -p)
+# returns Linux, Darwin, FreeBSD, etc.
+OS := $(shell uname -s)
+
debug : BUILD = debug
valgrind : BUILD = debug
release : BUILD = release
# override LINKAGE on OS X until we figure out how to get 'cc -static' to work
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
LINKAGE =
else
debug : LINKAGE = -static
VERSION=\"1.2.1\"
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
CONFIG_CFLAGS=-DHAVE_INTTYPES_H -DHAVE_ICONV -DHAVE_LANGINFO_CODESET -DFLAC__HAS_OGG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFLAC__SYS_DARWIN -DWORDS_BIGENDIAN
else
CONFIG_CFLAGS=-DHAVE_INTTYPES_H -DHAVE_ICONV -DHAVE_LANGINFO_CODESET -DHAVE_SOCKLEN_T -DFLAC__HAS_OGG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
include $(topdir)/build/config.mk
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
CC = cc
CCC = c++
else
LFLAGS = -L$(LIBPATH)
-DEBUG_OBJS = $(SRCS_C:%.c=%.debug.o) $(SRCS_CC:%.cc=%.debug.o) $(SRCS_CPP:%.cpp=%.debug.o) $(SRCS_NASM:%.nasm=%.debug.o)
-RELEASE_OBJS = $(SRCS_C:%.c=%.release.o) $(SRCS_CC:%.cc=%.release.o) $(SRCS_CPP:%.cpp=%.release.o) $(SRCS_NASM:%.nasm=%.release.o)
+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)
+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)
+ifeq ($(PROC),x86_64)
+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) $(SRCS_S:%.s=%.debug.pic.o)
+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) $(SRCS_S:%.s=%.release.pic.o)
+endif
debug : $(DEBUG_PROGRAM)
valgrind: $(DEBUG_PROGRAM)
# by default on OS X we link with static libs as much as possible
-$(DEBUG_PROGRAM) : $(DEBUG_OBJS)
-ifeq ($(DARWIN_BUILD),yes)
+$(DEBUG_PROGRAM) : $(DEBUG_OBJS) $(DEBUG_PIC_OBJS)
+ifeq ($(OS),Darwin)
$(LINK) -o $@ $(DEBUG_OBJS) $(EXPLICIT_LIBS)
else
$(LINK) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS)
endif
-$(RELEASE_PROGRAM) : $(RELEASE_OBJS)
-ifeq ($(DARWIN_BUILD),yes)
+$(RELEASE_PROGRAM) : $(RELEASE_OBJS) $(RELEASE_PIC_OBJS)
+ifeq ($(OS),Darwin)
$(LINK) -o $@ $(RELEASE_OBJS) $(EXPLICIT_LIBS)
else
$(LINK) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS)
endif
-%.debug.o %.release.o : %.c
- $(CC) $(CFLAGS) -c $< -o $@
-%.debug.o %.release.o : %.cc
- $(CCC) $(CFLAGS) -c $< -o $@
-%.debug.o %.release.o : %.cpp
- $(CCC) $(CFLAGS) -c $< -o $@
-%.debug.i %.release.i : %.c
- $(CC) $(CFLAGS) -E $< -o $@
-%.debug.i %.release.i : %.cc
- $(CCC) $(CFLAGS) -E $< -o $@
-%.debug.i %.release.i : %.cpp
- $(CCC) $(CFLAGS) -E $< -o $@
-
-%.debug.o : %.nasm
- $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@
-%.release.o : %.nasm
- $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@
+include $(topdir)/build/compile.mk
.PHONY : clean
clean :
- -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/bin/$(PROGRAM_NAME)
+ -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(DEBUG_PIC_OBJS) $(RELEASE_PIC_OBJS) $(OBJPATH)/*/bin/$(PROGRAM_NAME)
.PHONY : depend
depend:
include $(topdir)/build/config.mk
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
CC = cc
CCC = c++
else
LIBPATH = $(OBJPATH)/$(BUILD)/lib
DEBUG_LIBPATH = $(OBJPATH)/debug/lib
RELEASE_LIBPATH = $(OBJPATH)/release/lib
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
STATIC_LIB_SUFFIX = a
DYNAMIC_LIB_SUFFIX = dylib
else
DEBUG_DYNAMIC_LIB = $(DEBUG_LIBPATH)/$(DYNAMIC_LIB_NAME)
RELEASE_STATIC_LIB = $(RELEASE_LIBPATH)/$(STATIC_LIB_NAME)
RELEASE_DYNAMIC_LIB = $(RELEASE_LIBPATH)/$(DYNAMIC_LIB_NAME)
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
LINKD = $(CC) -dynamiclib -flat_namespace -undefined suppress -install_name $(DYNAMIC_LIB)
else
LINKD = $(CC) -shared
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)
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)
+ifeq ($(PROC),x86_64)
+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) $(SRCS_S:%.s=%.debug.pic.o)
+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) $(SRCS_S:%.s=%.release.pic.o)
+endif
debug : $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB)
valgrind: $(DEBUG_STATIC_LIB) $(DEBUG_DYNAMIC_LIB)
$(RELEASE_STATIC_LIB): $(RELEASE_OBJS)
$(LINK) $@ $(RELEASE_OBJS) && ranlib $@
-$(DEBUG_DYNAMIC_LIB) : $(DEBUG_OBJS)
-ifeq ($(DARWIN_BUILD),yes)
+$(DEBUG_DYNAMIC_LIB) : $(DEBUG_OBJS) $(DEBUG_PIC_OBJS)
+ifeq ($(OS),Darwin)
echo Not building dynamic lib, command is: $(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS) -lc
else
+ifeq ($(PROC),x86_64)
+ $(LINKD) -o $@ $(DEBUG_PIC_OBJS) $(LFLAGS) $(LIBS)
+else
$(LINKD) -o $@ $(DEBUG_OBJS) $(LFLAGS) $(LIBS)
endif
+endif
-$(RELEASE_DYNAMIC_LIB) : $(RELEASE_OBJS)
-ifeq ($(DARWIN_BUILD),yes)
+$(RELEASE_DYNAMIC_LIB) : $(RELEASE_OBJS) $(RELEASE_PIC_OBJS)
+ifeq ($(OS),Darwin)
echo Not building dynamic lib, command is: $(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS) -lc
else
+ifeq ($(PROC),x86_64)
+ $(LINKD) -o $@ $(RELEASE_PIC_OBJS) $(LFLAGS) $(LIBS)
+else
$(LINKD) -o $@ $(RELEASE_OBJS) $(LFLAGS) $(LIBS)
endif
-
-%.debug.o %.release.o : %.c
- $(CC) $(CFLAGS) -c $< -o $@
-%.debug.o %.release.o : %.cc
- $(CCC) $(CFLAGS) -c $< -o $@
-%.debug.o %.release.o : %.cpp
- $(CCC) $(CFLAGS) -c $< -o $@
-%.debug.i %.release.i : %.c
- $(CC) $(CFLAGS) -E $< -o $@
-%.debug.i %.release.i : %.cc
- $(CCC) $(CFLAGS) -E $< -o $@
-%.debug.i %.release.i : %.cpp
- $(CCC) $(CFLAGS) -E $< -o $@
-
-%.debug.o %.release.o : %.s
-ifeq ($(DARWIN_BUILD),yes)
- #$(CC) -c -arch ppc -Wall -force_cpusubtype_ALL $< -o $@
- $(AS) -arch ppc -force_cpusubtype_ALL $< -o $@
-else
- $(AS) $< -o $@
endif
-%.debug.o : %.nasm
- $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ -g $< -o $@
-%.release.o : %.nasm
- $(NASM) -f elf -d OBJ_FORMAT_elf -i ia32/ $< -o $@
+include $(topdir)/build/compile.mk
.PHONY : clean
clean :
- -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(OBJPATH)/*/lib/$(STATIC_LIB_NAME) $(OBJPATH)/*/lib/$(DYNAMIC_LIB_NAME)
+ -rm -f $(DEBUG_OBJS) $(RELEASE_OBJS) $(DEBUG_PIC_OBJS) $(RELEASE_PIC_OBJS) $(OBJPATH)/*/lib/$(STATIC_LIB_NAME) $(OBJPATH)/*/lib/$(DYNAMIC_LIB_NAME)
.PHONY : depend
depend:
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC++.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC++ -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC++.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC++ -lFLAC -L$(OGG_LIB_DIR) -logg -lm
# restrictive of those mentioned above. See the file COPYING.Xiph in this
# distribution.
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXTRA_TARGETS =
else
EXTRA_TARGETS = plugin_xmms
INCLUDES = -I./include -I$(topdir)/include -I$(OGG_INCLUDE_DIR)
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libFLAC.a $(libdir)/libreplaygain_analysis.a $(libdir)/libreplaygain_synthesis.a $(libdir)/libgetopt.a $(libdir)/libutf8.a $(OGG_LIB_DIR)/libogg.a -liconv -lm
else
LIBS = -lgrabbag -lFLAC -lreplaygain_analysis -lreplaygain_synthesis -lgetopt -lutf8 -L$(OGG_LIB_DIR) -logg -lm
topdir = ../..
LIB_NAME = libFLAC
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
DEFINES = -DFLAC__CPU_PPC -DFLAC__USE_ALTIVEC -DFLAC__ALIGN_MALLOC_DATA
else
-ifeq ($(SOLARIS_BUILD),yes)
+ifeq ($(OS),Solaris)
DEFINES = -DFLAC__NO_ASM -DFLAC__ALIGN_MALLOC_DATA
else
+ifeq ($(PROC),i386)
DEFINES = -DFLAC__CPU_IA32 -DFLAC__USE_3DNOW -DFLAC__HAS_NASM -DFLAC__ALIGN_MALLOC_DATA
+else
+DEFINES = -DFLAC__ALIGN_MALLOC_DATA
+endif
endif
endif
INCLUDES = -I./include -I$(topdir)/include -I$(OGG_INCLUDE_DIR)
DEBUG_CFLAGS = -DFLAC__OVERFLOW_DETECT
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
SRCS_S = \
ppc/as/lpc_asm.s
else
-ifeq ($(SOLARIS_BUILD),yes)
-else
+ifeq ($(PROC),i386)
SRCS_NASM = \
ia32/bitreader_asm.nasm \
ia32/cpu_asm.nasm \
INCLUDES = -I./include -I$(topdir)/include -I$(OGG_INCLUDE_DIR)
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libFLAC.a $(libdir)/libreplaygain_analysis.a $(libdir)/libgetopt.a $(libdir)/libutf8.a $(OGG_LIB_DIR)/libogg.a -liconv -lm
else
LIBS = -lgrabbag -lFLAC -lreplaygain_analysis -lgetopt -lutf8 -L$(OGG_LIB_DIR) -logg -lm
LIB_NAME = libxmms-flac
INCLUDES = -I./include -I$(topdir)/include -I.. $(shell xmms-config --cflags)
# refer to the static libs explicitly
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
LIBS = $(topdir)/obj/$(BUILD)/lib/libFLAC.a $(topdir)/obj/$(BUILD)/lib/libplugin_common.a $(topdir)/obj/$(BUILD)/lib/libgrabbag.a $(topdir)/obj/$(BUILD)/lib/libreplaygain_analysis.a $(topdir)/obj/$(BUILD)/lib/libreplaygain_synthesis.a $(OGG_LIB_DIR)/libogg.a -liconv -lstdc++ -lz
else
LIBS = $(topdir)/obj/$(BUILD)/lib/libFLAC.a $(topdir)/obj/$(BUILD)/lib/libplugin_common.a $(topdir)/obj/$(BUILD)/lib/libgrabbag.a $(topdir)/obj/$(BUILD)/lib/libreplaygain_analysis.a $(topdir)/obj/$(BUILD)/lib/libreplaygain_synthesis.a -L$(OGG_LIB_DIR) -logg -lstdc++ -lz
INCLUDES = -I./include -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libreplaygain_analysis.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lgrabbag -lreplaygain_analysis -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I./include -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libreplaygain_analysis.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lgrabbag -lreplaygain_analysis -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libreplaygain_analysis.a $(libdir)/libtest_libs_common.a $(libdir)/libFLAC++.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lgrabbag -lreplaygain_analysis -ltest_libs_common -lFLAC++ -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I../libFLAC/include -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libgrabbag.a $(libdir)/libreplaygain_analysis.a $(libdir)/libtest_libs_common.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lgrabbag -lreplaygain_analysis -ltest_libs_common -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I../libFLAC/include -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC -L$(OGG_LIB_DIR) -logg -lm
INCLUDES = -I$(topdir)/include
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
EXPLICIT_LIBS = $(libdir)/libFLAC++.a $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -lm
else
LIBS = -lFLAC++ -lFLAC -L$(OGG_LIB_DIR) -logg -lm