1d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz# src/gallium/Makefile.template
2e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
3d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz# Template makefile for gallium libraries.
4d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz#
5d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz# Usage:
6d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz#   The minimum that the including makefile needs to define
7d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz#   is TOP, LIBNAME and one of of the *_SOURCES.
8e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell#
9d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz# Optional defines:
10d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz#   LIBRARY_INCLUDES are appended to the list of includes directories.
11d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz#   LIBRARY_DEFINES is not used for makedepend, but for compilation.
12e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
13d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz### Basic defines ###
14e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
15d9602e5144bc76b9791fa3382ca38c880df96198Jakob BornecrantzOBJECTS = $(C_SOURCES:.c=.o) \
16d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz	$(CPP_SOURCES:.cpp=.o) \
17d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz	$(ASM_SOURCES:.S=.o)
18e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
19e99b673cb062a2fead92d1d7d373926d148ade71Keith WhitwellINCLUDES = \
20e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell	-I. \
216acd63a4980951727939c0dd545a0324965b3834José Fonseca	-I$(TOP)/src/gallium/include \
2266f22aa3bf7fa546e946b45156aa578e202982c9José Fonseca	-I$(TOP)/src/gallium/auxiliary \
23ac56a44d5ee08ebfe2310113c6a04d2bc0f90e26Brian Paul	-I$(TOP)/src/gallium/drivers \
24d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz	$(LIBRARY_INCLUDES)
25e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
261874cb7e82a566079219a571d6a30a74581c611eChristopher James Halse Rogersifeq ($(MESA_LLVM),1)
271874cb7e82a566079219a571d6a30a74581c611eChristopher James Halse RogersLIBRARY_DEFINES += $(LLVM_CFLAGS)
281874cb7e82a566079219a571d6a30a74581c611eChristopher James Halse Rogersendif
291874cb7e82a566079219a571d6a30a74581c611eChristopher James Halse Rogers
30e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
31e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell##### TARGETS #####
32e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
338260e9a8217bf003f490b17cbd9df93bf0cc6675Chris Lidefault: depend lib$(LIBNAME).a $(PROGS)
34e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
35188f8c679254f193cdcfcd4ef338f3c8c5e1146dNicolai Hähnlelib$(LIBNAME).a: $(OBJECTS) $(EXTRA_OBJECTS) Makefile $(TOP)/src/gallium/Makefile.template
36188f8c679254f193cdcfcd4ef338f3c8c5e1146dNicolai Hähnle	$(MKLIB) -o $(LIBNAME) -static $(OBJECTS) $(EXTRA_OBJECTS)
37e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
38f89c237c2c35eb3ea554e8f9de036e9ead08173fBrian Pauldepend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
3995794abec4bdc5cda9f2e7d139a70c3acf372fe3Keith Whitwell	rm -f depend
40e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell	touch depend
4159629b413a7e3e3ba4b4213eb3ba4b65bdf3f9fbGeorge Sapountzis	$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
42e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
43e507e4ec05eb8dda23f7c54aaf2eea143f8e573dLuca Barbieri$(PROGS): % : %.o $(PROGS_DEPS)
4481fe19843ac2afdc4fa1e1c87bc979b295af240eDave Airlie	$(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
458260e9a8217bf003f490b17cbd9df93bf0cc6675Chris Li
46e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell# Emacs tags
47e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwelltags:
484522cdbfdd1ec8c56f40b1f876e51c3dc8e7042aBrian Paul	etags `find . -name \*.[ch]` `find $(TOP)/src/gallium/include -name \*.h`
49e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
50e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell# Remove .o and backup files
51d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantzclean:
521957bef9951e6ec6a7ac9e4ebeaa3674b37cb434Brian Paul	rm -f $(OBJECTS) $(GENERATED_SOURCES) $(PROGS) lib$(LIBNAME).a depend depend.bak $(CLEAN_EXTRA)
53d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz
54d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz# Dummy target
55d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantzinstall:
56d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz	@echo -n ""
57d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz
58d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz##### RULES #####
59d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz
60a8f4904fb33f4fe5da560f85ecf003601e0ec06aChris Li%.s: %.c
61ccd78fed880c4c8f1fccf1d10fc46442fa146359Brian Paul	$(CC) -S $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
62a8f4904fb33f4fe5da560f85ecf003601e0ec06aChris Li
6362d1e40e0d672cc84708cd8a99f26ee5917c6aefChris Li%.o: %.c
64ccd78fed880c4c8f1fccf1d10fc46442fa146359Brian Paul	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
65d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz
6662d1e40e0d672cc84708cd8a99f26ee5917c6aefChris Li%.o: %.cpp
67ccd78fed880c4c8f1fccf1d10fc46442fa146359Brian Paul	$(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@
68d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantz
6962d1e40e0d672cc84708cd8a99f26ee5917c6aefChris Li%.o: %.S
70ccd78fed880c4c8f1fccf1d10fc46442fa146359Brian Paul	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES)  $< -o $@
71e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
72e99b673cb062a2fead92d1d7d373926d148ade71Keith Whitwell
73d9602e5144bc76b9791fa3382ca38c880df96198Jakob Bornecrantzsinclude depend
74