summaryrefslogtreecommitdiff
path: root/audio_codec/libfaad/Makefile (plain)
blob: 551d047e6b257085cb5948792484e32103298aed
1#****************************************************************************
2# 通用的生成动态库?c/c++ GNU Makefile
3# Writen By ZhuFeng,2007.2
4# 功能:自动从所有的.c?cpp文件列表中生成输出文件,可以生成动态库
5#****************************************************************************
6
7#常用定义选项
8DW_NAME = faad
9DW_VERSION = 1.1.0
10MACHINE = $(shell uname -m)
11OUTPUT_BIN_PATH = ../bin/
12OUTPUT_INCLUDE_PATH = ./include/
13SRC_PATH = ./
14
15SRC_FILES = $(wildcard $(SRC_PATH)*.c)
16
17EXPORT_INCLUDE_FILES = $(wildcard $(SRC_PATH)*.h) $(wildcard $(SRC_PATH)codebook/*.h)
18
19USING_LIBS =
20USING_INCLUDES_PATH =
21
22#将会自动附加$(MACHINE)/$DEBUG
23USING_LIBS_PATH =
24DEBUG = YES
25DEFINES =
26
27#通用定义
28G++ = g++
29GCC = gcc
30LD = g++
31
32DEBUG_CFLAGS := -c -Wall -shared -fPIC -Wno-format -g -DDEBUG -fexceptions -fnon-call-exceptions
33RELEASE_CFLAGS := -c -Wall -shared -fPIC -Wno-unknown-pragmas -Wno-format -O3 -fexceptions -fnon-call-exceptions
34
35DEBUG_LDFLAGS := -g -shared -fPIC -Wl,-soname,lib$(DW_NAME).so
36RELEASE_LDFLAGS := -shared -fPIC -Wl,-soname,lib$(DW_NAME).so
37
38
39ifeq (YES, ${DEBUG})
40 CFLAGS := ${DEBUG_CFLAGS}
41 LDFLAGS := ${DEBUG_LDFLAGS}
42 USING_LIBS_PATH := $(addsuffix $(MACHINE)/debug/,$(USING_LIBS_PATH))
43 OUTPUT_PATH := $(OUTPUT_BIN_PATH)
44else
45 CFLAGS := ${RELEASE_CFLAGS}
46 LDFLAGS := ${RELEASE_LDFLAGS}
47 USING_LIBS_PATH := $(addsuffix $(MACHINE)/release/,$(USING_LIBS_PATH))
48 OUTPUT_PATH := $(OUTPUT_BIN_PATH)$(MACHINE)/release/
49endif
50
51#****************************************************************************
52# Makefile code common to all platforms
53#****************************************************************************
54
55CFLAGS += $(DEFINES)
56CFLAGS += $(USING_INCLUDES_PATH)
57
58#****************************************************************************
59# 定义自动化编译宏,使用GCC方式
60#****************************************************************************
61# $(call make-depend,source-file,object-file,depend-file)
62define make-depend
63 $(GCC) -MM -MF $3 -MP -MT $2 $(CFLAGS) $1
64endef
65
66OBJS = $(addsuffix .o,$(basename $(SRC_FILES)))
67DEPENDS = $(addsuffix .d,$(basename $(SRC_FILES)))
68
69DW_SVNVER = $(shell svnversion . | sed "s/.*://")
70DW_BUILD_DATE = $(shell date)
71
72OUTPUT = $(OUTPUT_PATH)lib$(DW_NAME).so.$(DW_VERSION)
73CFLAGS += -DDW_SVNVER="\"$(DW_SVNVER)\"" -DDW_BUILD_DATE="\"$(DW_BUILD_DATE)\"" -DDW_VERSION="\"$(DW_VERSION)\""
74
75VPATH = $(SRC_PATH)
76EXPORT_INCLUDE_FILES := $(addprefix $(SRC_PATH),$(EXPORT_INCLUDE_FILES))
77
78
79default:$(OUTPUT)
80 @echo "Build_Version: $(DW_VERSION)"
81 @ln -sf ./lib$(DW_NAME).so.$(DW_VERSION) $(OUTPUT_PATH)lib$(DW_NAME).so
82 @cp $(EXPORT_INCLUDE_FILES) $(OUTPUT_INCLUDE_PATH)
83 @echo "$(OUTPUT) MAKE 处理完毕"
84 @echo "\\033[32m\\033[1m[生成]\\033[21m 执行完毕!"
85 @echo "$(OUTPUT) 被生?\\12$(EXPORT_INCLUDE_FILES)被复制到$(OUTPUT_INCLUDE_PATH)\\033[0m"
86
87$(OUTPUT):$(OBJS)
88 @mkdir -p $(OUTPUT_PATH)
89 $(LD) $(LDFLAGS) -o $@ $^ $(USING_LIBS_PATH) $(USING_LIBS)
90 @echo "\\033[35m\\033[1m[链接]\\033[21m $@ 执行完毕,总计更新处理?(words $?) 个文件\\033[0m"
91
92%.o:%.c
93 @$(call make-depend,$<,$@,$(subst .o,.d,$@))
94 @$(GCC) $(CFLAGS) $< -o $@
95 @echo "\\033[32m\\033[1m[编译]\\033[21m $< 执行完毕\\033[0m"
96
97%.o:%.cpp
98 @$(call make-depend,$<,$@,$(subst .o,.d,$@))
99 @$(G++) $(CFLAGS) $< -o $@
100 @echo "\\033[32m\\033[1m[编译]\\033[21m $< 执行完毕\\033[0m"
101
102-include $(DEPENDS)
103
104help:
105 @echo "\\033[1m\\033[33m============== 通用动态库MAKEFILE ==============\\033[0m"
106 @echo "\\033[33m 2007.2 Writen By ZhuFeng \\033[0m"
107 @echo "\\033[32m\\033[1mmake :\\033[21m 缺省调用方式,使用debug模式进行编译与连接,输出二进制文件到指定目录\\033[0m"
108 @echo "\\033[32m\\033[1mmake DEBUG=NO :\\033[21m 使用release模式进行编译与连接,输出二进制文件到指定目录 \\033[0m"
109 @echo "\\033[32m\\033[1mmake help :\\033[21m显示帮助信息\\033[0m"
110 @echo "\\033[32m\\033[1mmake rebuild :\\033[21m重新生成所有文件\\033[0m"
111 @echo "\\033[32m\\033[1mmake clean :\\033[21m清除生成的中间文件\\033[0m"
112 @echo "\\033[32m\\033[1mmake install :\\033[21m安装生成的文件到/usr/local/lib目录,拷贝头文件?usr/local/include目录\\033[0m"
113
114
115rebuild:clean default
116 @echo "\\033[34m\\033[1m[rebuild]\\033[21m 执行完毕\\033[0m"
117clean:
118 @rm -f *.o
119 @rm -f *.d
120 @echo "\\033[34m\\033[1m[clean]\\033[21m 执行完毕\\033[0m"
121test:
122 @echo "SVN_VERSION:$(SVN_VERSION)"
123 @echo "DW_VERSION:$(DW_VERSION)"
124 @echo "OUTPUT:$(OUTPUT)"
125
126
127
128
129
130
131