summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorJosh Coalson <jcoalson@users.sourceforce.net>2008-09-14 19:59:52 +0000
committerJosh Coalson <jcoalson@users.sourceforce.net>2008-09-14 19:59:52 +0000
commitc10f978fa6ff60c859a46989cd0012b01f9e9626 (patch)
treeac1eb7b7fe2e2cc6b15493bd5c0d8e8fbb31d19b /build
parent02da5ace60e640a90dabff9a4cb024a3d87375f4 (diff)
downloadflac-c10f978fa6ff60c859a46989cd0012b01f9e9626.tar.gz
update Makefile.lite system to work on x86_64 linux
Diffstat (limited to 'build')
-rw-r--r--build/Makefile.am1
-rw-r--r--build/compile.mk63
-rw-r--r--build/config.mk9
-rw-r--r--build/exe.mk38
-rw-r--r--build/lib.mk52
5 files changed, 104 insertions, 59 deletions
diff --git a/build/Makefile.am b/build/Makefile.am
index dba93bc7..8c5b4c78 100644
--- a/build/Makefile.am
+++ b/build/Makefile.am
@@ -16,6 +16,7 @@
# distribution.
EXTRA_DIST = \
+ compile.mk \
config.mk \
exe.mk \
lib.mk
diff --git a/build/compile.mk b/build/compile.mk
new file mode 100644
index 00000000..d38f719a
--- /dev/null
+++ b/build/compile.mk
@@ -0,0 +1,63 @@
+# 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 $@
diff --git a/build/config.mk b/build/config.mk
index 67b7eca1..5ff536bc 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -21,12 +21,17 @@
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
@@ -42,7 +47,7 @@ all default: $(DEFAULT_BUILD)
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
diff --git a/build/exe.mk b/build/exe.mk
index 65a1987f..b9c1c01a 100644
--- a/build/exe.mk
+++ b/build/exe.mk
@@ -21,7 +21,7 @@
include $(topdir)/build/config.mk
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
CC = cc
CCC = c++
else
@@ -47,8 +47,12 @@ release : CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -finline-functions -D
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)
@@ -56,41 +60,25 @@ release : $(RELEASE_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:
diff --git a/build/lib.mk b/build/lib.mk
index 8b85c2d7..db6d3088 100644
--- a/build/lib.mk
+++ b/build/lib.mk
@@ -21,7 +21,7 @@
include $(topdir)/build/config.mk
-ifeq ($(DARWIN_BUILD),yes)
+ifeq ($(OS),Darwin)
CC = cc
CCC = c++
else
@@ -35,7 +35,7 @@ OBJPATH = $(topdir)/obj
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
@@ -50,7 +50,7 @@ DEBUG_STATIC_LIB = $(DEBUG_LIBPATH)/$(STATIC_LIB_NAME)
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
@@ -64,6 +64,10 @@ 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) $(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)
@@ -75,49 +79,33 @@ $(DEBUG_STATIC_LIB): $(DEBUG_OBJS)
$(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: