Parent Directory | Revision Log
Revision 2199 - (view) (download)
1 : | edgomez | 824 | ############################################################################## |
2 : | # | ||
3 : | Isibaar | 1797 | # - Unified Makefile for Xvid for *nix environments - |
4 : | edgomez | 824 | # |
5 : | edgomez | 1451 | # Copyright(C) 2003-2004 Edouard Gomez <ed.gomez@free.fr> |
6 : | edgomez | 824 | # |
7 : | # | ||
8 : | # Description: | ||
9 : | Isibaar | 1797 | # This Makefile allows building Xvid sources to obtain a shared library |
10 : | edgomez | 1382 | # and a static library. This Makefile uses variables defined in the |
11 : | edgomez | 824 | # platform.inc file. This platform.inc file is usually created by the |
12 : | # ./configure script whenever a unix shell is available. | ||
13 : | # | ||
14 : | edgomez | 1451 | # Makefile functional dependencies: |
15 : | edgomez | 1382 | # - echo |
16 : | # - rm (with option -r and -f) | ||
17 : | # - cd | ||
18 : | # - make VPATH support (eg: GNU make, solaris 8 make) | ||
19 : | edgomez | 1451 | # - ar |
20 : | edgomez | 824 | # |
21 : | edgomez | 1382 | # Building output: |
22 : | # - C means "_C_ompiling" | ||
23 : | # - A means "_A_ssembling" | ||
24 : | # - I means "_I_nstalling" | ||
25 : | # - D means "creating _D_irectory" | ||
26 : | # - Cl means "_Cl_eaning" | ||
27 : | edgomez | 824 | # |
28 : | edgomez | 1382 | # NB: (for mingw32/djgpp users) |
29 : | # These 2 environments do not provide a shell by default. So it's impossible | ||
30 : | # to use the configure script to generate a platform.inc file suitable for | ||
31 : | # your machine. You have two choices: | ||
32 : | # - install minsys from the mingw project or install cygwin and then use | ||
33 : | # the configure script as on a unix system. | ||
34 : | # - write a platform.inc file by hand. | ||
35 : | # | ||
36 : | # PS: default build directory is "=build", it fits naming conventions that | ||
37 : | # make the arch/tla revision control program ignore files contained in | ||
38 : | # this directory during commits operations. This choice is completly | ||
39 : | # arbitrary, but try not to change it. | ||
40 : | # | ||
41 : | edgomez | 824 | ############################################################################## |
42 : | |||
43 : | include sources.inc | ||
44 : | Isibaar | 1997 | ifeq ($(findstring $(MAKECMDGOALS), clean distclean mrproper),) |
45 : | edgomez | 824 | include platform.inc |
46 : | Isibaar | 1997 | endif |
47 : | edgomez | 824 | |
48 : | Isibaar | 2199 | ifeq ($(V),1) |
49 : | SILENT = | ||
50 : | else | ||
51 : | SILENT = @ | ||
52 : | endif | ||
53 : | |||
54 : | edgomez | 824 | RM = rm -rf |
55 : | |||
56 : | ############################################################################## | ||
57 : | # | ||
58 : | # Build rules | ||
59 : | # | ||
60 : | ############################################################################## | ||
61 : | |||
62 : | # Their Objects | ||
63 : | edgomez | 1382 | OBJECTS = $(GENERIC_OBJECTS) |
64 : | OBJECTS += $(ASSEMBLY_OBJECTS) | ||
65 : | OBJECTS += $(DCT_IA64_OBJECTS) | ||
66 : | edgomez | 1412 | OBJECTS += $(PPC_ALTIVEC_OBJECTS) |
67 : | edgomez | 824 | |
68 : | edgomez | 1451 | # The VPATH mechanism could use a "per target" build directory |
69 : | edgomez | 1382 | # To keep it simple at the moment, the directory is fixed to "build" |
70 : | BUILD_DIR = =build | ||
71 : | VPATH = $(SRC_DIR):$(BUILD_DIR) | ||
72 : | |||
73 : | edgomez | 824 | #----------------------------------------------------------------------------- |
74 : | # The default rule | ||
75 : | #----------------------------------------------------------------------------- | ||
76 : | |||
77 : | .SUFFIXES: .$(OBJECT_EXTENSION) .$(ASSEMBLY_EXTENSION) .c | ||
78 : | |||
79 : | Isibaar | 1973 | all: info $(STATIC_LIB) $(SHARED_LIB) |
80 : | edgomez | 830 | @echo |
81 : | @echo "---------------------------------------------------------------" | ||
82 : | Isibaar | 1797 | @echo " Xvid has been successfully built." |
83 : | edgomez | 1382 | @echo |
84 : | @echo " * Binaries are currently located in the '$(BUILD_DIR)' directory" | ||
85 : | @echo " * To install them on your system, you can run '# make install'" | ||
86 : | @echo " as root." | ||
87 : | edgomez | 830 | @echo "---------------------------------------------------------------" |
88 : | @echo | ||
89 : | edgomez | 824 | |
90 : | edgomez | 1382 | $(OBJECTS): platform.inc |
91 : | |||
92 : | $(BUILD_DIR): | ||
93 : | @echo " D: $(BUILD_DIR)" | ||
94 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -d $(BUILD_DIR) |
95 : | edgomez | 1382 | |
96 : | edgomez | 824 | #----------------------------------------------------------------------------- |
97 : | # Generic assembly rule | ||
98 : | #----------------------------------------------------------------------------- | ||
99 : | |||
100 : | .$(ASSEMBLY_EXTENSION).$(OBJECT_EXTENSION): | ||
101 : | edgomez | 1382 | @echo " A: $(@D)/$(<F)" |
102 : | @$(INSTALL) -d $(BUILD_DIR)/$(@D) | ||
103 : | Isibaar | 2199 | $(SILENT)$(AS) $(AFLAGS) $< -o $(BUILD_DIR)/$@ |
104 : | edgomez | 824 | |
105 : | #----------------------------------------------------------------------------- | ||
106 : | # Generic C rule | ||
107 : | #----------------------------------------------------------------------------- | ||
108 : | |||
109 : | Isibaar | 1875 | $(PPC_ALTIVEC_OBJECTS): CFLAGS+= $(ALTIVEC_CFLAGS) |
110 : | |||
111 : | edgomez | 824 | .c.$(OBJECT_EXTENSION): |
112 : | edgomez | 1382 | @echo " C: $(@D)/$(<F)" |
113 : | @$(INSTALL) -d $(BUILD_DIR)/$(@D) | ||
114 : | Isibaar | 2199 | $(SILENT)$(CC) -c $(ARCHITECTURE) $(BUS) $(ENDIANNESS) $(FEATURES) $(SPECIFIC_CFLAGS) $(CFLAGS) $< -o $(BUILD_DIR)/$@ |
115 : | edgomez | 824 | |
116 : | #----------------------------------------------------------------------------- | ||
117 : | # Static Library | ||
118 : | #----------------------------------------------------------------------------- | ||
119 : | |||
120 : | edgomez | 1382 | $(STATIC_LIB): $(BUILD_DIR) $(OBJECTS) |
121 : | @echo " L: $(@F)" | ||
122 : | Isibaar | 2199 | $(SILENT)cd $(BUILD_DIR) && $(AR) rc $(@F) $(OBJECTS) && $(RANLIB) $(@F) |
123 : | edgomez | 824 | |
124 : | #----------------------------------------------------------------------------- | ||
125 : | # Shared Library | ||
126 : | edgomez | 1382 | # |
127 : | # NB: This rule is used a nasty way by the MacOSX module build process | ||
128 : | # In this only case, it uses the SPECIFIC_LDFLAGS to append an additionnal | ||
129 : | # linking step: | ||
130 : | # 1/ it links a pre shared lib (libxvidcore.so-temp.4) | ||
131 : | # 2/ it links that pre shared lib outputing the real shared lib (module) | ||
132 : | # In all other cases this rule is straight forward and simple. | ||
133 : | # PRE_SHARED_LIB == SHARED_LIB and no nasty command appending. | ||
134 : | # | ||
135 : | # NB': we copy the def file for the win32 target, the file is unused on other | ||
136 : | # platforms | ||
137 : | edgomez | 824 | #----------------------------------------------------------------------------- |
138 : | |||
139 : | edgomez | 1382 | $(SHARED_LIB): $(BUILD_DIR) $(OBJECTS) |
140 : | @echo " L: $(@F)" | ||
141 : | @$(INSTALL) -m 644 libxvidcore.def $(BUILD_DIR)/libxvidcore.def | ||
142 : | Skal | 1617 | @$(INSTALL) -m 644 libxvidcore.ld $(BUILD_DIR)/libxvidcore.ld |
143 : | Isibaar | 2199 | $(SILENT)cd $(BUILD_DIR) && $(CC) $(LDFLAGS) $(OBJECTS) -o $(PRE_SHARED_LIB) $(SPECIFIC_LDFLAGS) |
144 : | edgomez | 824 | |
145 : | #----------------------------------------------------------------------------- | ||
146 : | # Installation | ||
147 : | #----------------------------------------------------------------------------- | ||
148 : | |||
149 : | edgomez | 1382 | install: $(BUILD_DIR)/$(STATIC_LIB) $(BUILD_DIR)/$(SHARED_LIB) |
150 : | Isibaar | 2036 | @echo " D: $(includedir)" |
151 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -d $(DESTDIR)$(includedir) |
152 : | Isibaar | 2036 | @echo " I: $(includedir)/xvid.h" |
153 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -m 644 $(SRC_DIR)/xvid.h $(DESTDIR)$(includedir)/xvid.h |
154 : | edgomez | 1382 | @echo " D: $(libdir)" |
155 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -d $(DESTDIR)$(libdir) |
156 : | Isibaar | 2036 | @echo " I: $(libdir)/$(STATIC_LIB)" |
157 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -m 644 $(BUILD_DIR)/$(STATIC_LIB) $(DESTDIR)$(libdir)/$(STATIC_LIB) |
158 : | Isibaar | 2036 | ifeq ($(SHARED_EXTENSION),dll) |
159 : | Isibaar | 2044 | @echo " I: $(libdir)/$(IMPORT_LIB)" |
160 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -m 644 $(BUILD_DIR)/$(SHARED_LIB).a $(DESTDIR)$(libdir)/$(IMPORT_LIB) |
161 : | Isibaar | 2036 | @echo " D: $(bindir)" |
162 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -d $(DESTDIR)$(bindir) |
163 : | Isibaar | 2036 | @echo " I: $(bindir)/$(SHARED_LIB)" |
164 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -m 755 $(BUILD_DIR)/$(SHARED_LIB) $(DESTDIR)$(bindir)/$(SHARED_LIB) |
165 : | Isibaar | 2036 | else |
166 : | edgomez | 1382 | @echo " I: $(libdir)/$(SHARED_LIB)" |
167 : | Isibaar | 2199 | $(SILENT)$(INSTALL) -m 644 $(BUILD_DIR)/$(SHARED_LIB) $(DESTDIR)$(libdir)/$(SHARED_LIB) |
168 : | Isibaar | 2042 | @test -z "$(SO_API_MAJOR_LINK)" || \ |
169 : | $(LN_S) $(SHARED_LIB) $(DESTDIR)$(libdir)/$(SO_API_MAJOR_LINK) | ||
170 : | @test -z "$(SO_LINK)" || \ | ||
171 : | $(LN_S) $(SHARED_LIB) $(DESTDIR)$(libdir)/$(SO_LINK) | ||
172 : | Isibaar | 2036 | endif |
173 : | edgomez | 824 | |
174 : | #----------------------------------------------------------------------------- | ||
175 : | edgomez | 1382 | # Platorm specific file -- dumb rules for people executing make before |
176 : | # ./configure or even ./bootstrap.sh | ||
177 : | edgomez | 824 | #----------------------------------------------------------------------------- |
178 : | |||
179 : | edgomez | 1382 | platform.inc: configure platform.inc.in |
180 : | edgomez | 824 | ./configure |
181 : | |||
182 : | edgomez | 1382 | configure: |
183 : | ./bootstrap.sh | ||
184 : | |||
185 : | edgomez | 824 | #----------------------------------------------------------------------------- |
186 : | # .PHONY targets | ||
187 : | #----------------------------------------------------------------------------- | ||
188 : | |||
189 : | edgomez | 1382 | .PHONY: mrproper distclean clean info \ |
190 : | list-objects list-targets list-install-path list-cflags | ||
191 : | edgomez | 824 | |
192 : | clean: | ||
193 : | edgomez | 1382 | @echo " Cl: Build directory" |
194 : | @$(RM) $(BUILD_DIR) | ||
195 : | edgomez | 824 | |
196 : | distclean: clean | ||
197 : | edgomez | 1382 | @echo " Cl: Generated build files" |
198 : | edgomez | 830 | @$(RM) platform.inc |
199 : | @$(RM) config.log | ||
200 : | edgomez | 1009 | @$(RM) config.status |
201 : | edgomez | 830 | @$(RM) autom4te.cache |
202 : | edgomez | 824 | |
203 : | edgomez | 1382 | mrproper: distclean |
204 : | edgomez | 1451 | @echo " Cl: Bootstrapped build files" |
205 : | edgomez | 1382 | @$(RM) configure |
206 : | @$(RM) install-sh | ||
207 : | @$(RM) missing | ||
208 : | @$(RM) config.guess | ||
209 : | @$(RM) mkinstalldirs | ||
210 : | @$(RM) config.sub | ||
211 : | |||
212 : | edgomez | 824 | list-objects: |
213 : | @echo | ||
214 : | edgomez | 1382 | @echo "---------------------------------------------------------------" |
215 : | edgomez | 824 | @echo "Object files used for this build" |
216 : | @echo "---------------------------------------------------------------" | ||
217 : | @echo | ||
218 : | @echo $(OBJECTS) | ||
219 : | @echo | ||
220 : | |||
221 : | list-targets: | ||
222 : | @echo | ||
223 : | edgomez | 1382 | @echo "---------------------------------------------------------------" |
224 : | edgomez | 824 | @echo "Target Libraries" |
225 : | @echo "---------------------------------------------------------------" | ||
226 : | @echo | ||
227 : | @echo Shared library: $(SHARED_LIB) | ||
228 : | @echo Static library: $(STATIC_LIB) | ||
229 : | @echo | ||
230 : | |||
231 : | list-install-path: | ||
232 : | @echo | ||
233 : | edgomez | 1382 | @echo "---------------------------------------------------------------" |
234 : | edgomez | 824 | @echo "Install Paths" |
235 : | @echo "---------------------------------------------------------------" | ||
236 : | @echo | ||
237 : | edgomez | 1382 | @echo Include Directory: $(includedir) |
238 : | @echo Library Directory: $(libdir) | ||
239 : | edgomez | 824 | @echo |
240 : | |||
241 : | edgomez | 845 | list-cflags: |
242 : | @echo | ||
243 : | edgomez | 1382 | @echo "---------------------------------------------------------------" |
244 : | edgomez | 845 | @echo "Using CFLAGS" |
245 : | @echo "---------------------------------------------------------------" | ||
246 : | @echo | ||
247 : | @echo CFLAGS=$(CFLAGS) | ||
248 : | @echo | ||
249 : | |||
250 : | info: list-objects list-cflags list-targets list-install-path |
No admin address has been configured | ViewVC Help |
Powered by ViewVC 1.0.4 |