1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# src/gallium/Makefile.template
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Template makefile for gallium libraries.
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Usage:
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#   The minimum that the including makefile needs to define
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#   is TOP, LIBNAME and one of of the *_SOURCES.
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Optional defines:
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#   LIBRARY_INCLUDES are appended to the list of includes directories.
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#   LIBRARY_DEFINES is not used for makedepend, but for compilation.
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org### Basic defines ###
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgOBJECTS = $(C_SOURCES:.c=.o) \
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(CPP_SOURCES:.cpp=.o) \
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(ASM_SOURCES:.S=.o)
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgINCLUDES = \
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	-I. \
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	-I$(TOP)/src/gallium/include \
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	-I$(TOP)/src/gallium/auxiliary \
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	-I$(TOP)/src/gallium/drivers \
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(LIBRARY_INCLUDES)
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgifeq ($(MESA_LLVM),1)
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgLIBRARY_DEFINES += $(LLVM_CFLAGS)
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgendif
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org##### TARGETS #####
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdefault: depend lib$(LIBNAME).a $(PROGS)
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orglib$(LIBNAME).a: $(OBJECTS) $(EXTRA_OBJECTS) Makefile $(TOP)/src/gallium/Makefile.template
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(MKLIB) -o $(LIBNAME) -static $(OBJECTS) $(EXTRA_OBJECTS)
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdepend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	rm -f depend
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	touch depend
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org$(PROGS): % : %.o $(PROGS_DEPS)
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group  $(LIBS) -Wl,--end-group
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Emacs tags
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgtags:
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	etags `find . -name \*.[ch]` `find $(TOP)/src/gallium/include -name \*.h`
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Remove .o and backup files
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclean:
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	rm -f $(OBJECTS) $(GENERATED_SOURCES) $(PROGS) lib$(LIBNAME).a depend depend.bak $(CLEAN_EXTRA)
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org# Dummy target
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orginstall:
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	@echo -n ""
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org##### RULES #####
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org%.s: %.c
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(CC) -S $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org%.o: %.c
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org%.o: %.cpp
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org%.o: %.S
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES)  $< -o $@
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgsinclude depend
74