1# src/gallium/targets/Makefile.xorg
2
3# Template makefile for gallium xorg drivers.
4#
5# Usage:
6#   The minimum that the including makefile needs to define
7#   is TOP, LIBNAME and one of of the *_SOURCES.
8#
9# Optional defines:
10#   DRIVER_INCLUDES are appended to the list of includes directories.
11#   DRIVER_DEFINES is not used for makedepend, but for compilation.
12#   DRIVER_PIPES are pipe drivers and modules that the driver depends on.
13#   DRIVER_LINKS are flags given to the linker.
14
15### Basic defines ###
16
17OBJECTS = $(C_SOURCES:.c=.o) \
18	$(CPP_SOURCES:.cpp=.o) \
19	$(ASM_SOURCES:.S=.o)
20
21INCLUDES = \
22	$(shell $(PKG_CONFIG) --cflags-only-I pixman-1 xorg-server libdrm xproto) \
23	-I$(TOP)/src/gallium/include \
24	-I$(TOP)/src/gallium/drivers \
25	-I$(TOP)/src/gallium/auxiliary \
26	-I$(TOP)/src/gallium/winsys \
27	$(DRIVER_INCLUDES)
28
29LIBNAME_STAGING = $(TOP)/$(LIB_DIR)/gallium/$(LIBNAME)
30
31ifeq ($(MESA_LLVM),1)
32LDFLAGS += $(LLVM_LDFLAGS)
33DRIVER_LINKS += $(LLVM_LIBS) -lm -ldl
34LD=$(CXX)
35else
36  ifeq ($(LINK_WITH_CXX),1)
37    LD=$(CXX)
38  else
39    LD=$(CC)
40  endif
41endif
42
43
44##### TARGETS #####
45
46default: depend $(TOP)/$(LIB_DIR)/gallium $(LIBNAME) $(LIBNAME_STAGING)
47
48$(LIBNAME): $(OBJECTS) Makefile ../Makefile.xorg $(LIBS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES)
49	$(MKLIB) -linker '$(LD)' -noprefix -o $@ -ldflags '$(LDFLAGS)' $(OBJECTS) $(DRIVER_PIPES) $(GALLIUM_AUXILIARIES) $(DRIVER_LINKS)
50
51depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
52	rm -f depend
53	touch depend
54	$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
55
56$(LIBNAME_STAGING): $(LIBNAME)
57	$(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR)/gallium
58
59$(TOP)/$(LIB_DIR)/gallium:
60	mkdir -p $@
61
62clean:
63	rm -f $(OBJECTS) $(GENERATED_SOURCES) $(LIBNAME) depend depend.bak
64
65install:
66	$(INSTALL) -d $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
67	$(MINSTALL) -m 755 $(LIBNAME) $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
68
69
70##### RULES #####
71
72%.s: %.c
73	$(CC) -S $(INCLUDES) $(CFLAGS) $(DRIVER_DEFINES) $< -o $@
74
75%.o: %.c
76	$(CC) -c $(INCLUDES) $(CFLAGS) $(DRIVER_DEFINES) $< -o $@
77
78%.o: %.cpp
79	$(CXX) -c $(INCLUDES) $(CXXFLAGS) $(DRIVER_DEFINES) $< -o $@
80
81%.o: %.S
82	$(CC) -c $(INCLUDES) $(CFLAGS) $(DRIVER_DEFINES)  $< -o $@
83
84sinclude depend
85
86.PHONY: default clean install
87