Mesa (master): gallium: Create a Xorg driver template Makefile

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Thu Jun 3 07:29:00 PDT 2010


Module: Mesa
Branch: master
Commit: d212a4d41478c29158a3c440176318fb166ad647
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d212a4d41478c29158a3c440176318fb166ad647

Author: Jakob Bornecrantz <jakob at vmware.com>
Date:   Tue Jun  1 09:04:29 2010 +0100

gallium: Create a Xorg driver template Makefile

---

 src/gallium/targets/Makefile.xorg        |   72 ++++++++++++++++++++++++++++++
 src/gallium/targets/xorg-vmwgfx/Makefile |   62 ++++---------------------
 2 files changed, 82 insertions(+), 52 deletions(-)

diff --git a/src/gallium/targets/Makefile.xorg b/src/gallium/targets/Makefile.xorg
new file mode 100644
index 0000000..610cf45
--- /dev/null
+++ b/src/gallium/targets/Makefile.xorg
@@ -0,0 +1,72 @@
+# src/gallium/targets/Makefile.xorg
+
+# Template makefile for gallium xorg drivers.
+#
+# Usage:
+#   The minimum that the including makefile needs to define
+#   is TOP, LIBNAME and one of of the *_SOURCES.
+#
+# Optional defines:
+#   DRIVER_INCLUDES are appended to the list of includes directories.
+#   DRIVER_DEFINES is not used for makedepend, but for compilation.
+#   DRIVER_LINKS are flags given to the linker
+
+### Basic defines ###
+
+OBJECTS = $(C_SOURCES:.c=.o) \
+	$(CPP_SOURCES:.cpp=.o) \
+	$(ASM_SOURCES:.S=.o)
+
+INCLUDES = \
+	$(shell pkg-config --cflags-only-I pixman-1 xorg-server libdrm xproto) \
+	-I$(TOP)/src/gallium/include \
+	-I$(TOP)/src/gallium/drivers \
+	-I$(TOP)/src/gallium/auxiliary \
+	$(DRIVER_INCLUDES)
+
+LIBNAME_STAGING = $(TOP)/$(LIB_DIR)/gallium/$(TARGET)
+
+
+##### TARGETS #####
+
+default: depend $(LIBNAME) $(LIBNAME_STAGING)
+
+$(LIBNAME): $(OBJECTS) Makefile $(LIBS)
+	$(MKLIB) -noprefix -o $@ $(OBJECTS) $(DRIVER_LINKS)
+
+depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
+	rm -f depend
+	touch depend
+	$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
+
+$(LIBNAME_STAGING): $(LIBNAME) $(TOP)/$(LIB_DIR)/gallium
+	$(INSTALL) $(LIBNAME) $(TOP)/$(LIB_DIR)/gallium
+
+$(TOP)/$(LIB_DIR)/gallium:
+	mkdir -p $@
+
+clean:
+	rm -f $(OBJECTS) $(GENERATED_SOURCES) $(LIBNAME).a depend depend.bak
+
+install:
+	$(INSTALL) -d $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
+	$(MINSTALL) -m 755 $(LIBNAME) $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
+
+
+##### RULES #####
+
+%.s: %.c
+	$(CC) -S $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.c
+	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.cpp
+	$(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.S
+	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES)  $< -o $@
+
+sinclude depend
+
+.PHONY: default clean install
diff --git a/src/gallium/targets/xorg-vmwgfx/Makefile b/src/gallium/targets/xorg-vmwgfx/Makefile
index 01a10b6..c0ff999 100644
--- a/src/gallium/targets/xorg-vmwgfx/Makefile
+++ b/src/gallium/targets/xorg-vmwgfx/Makefile
@@ -1,72 +1,30 @@
 TOP = ../../../..
 include $(TOP)/configs/current
 
-TARGET = vmwgfx_drv.so
+LIBNAME = vmwgfx_drv.so
 
-CFILES = \
+C_SOURCES = \
 	vmw_xorg.c \
 	vmw_video.c \
 	vmw_ioctl.c \
 	vmw_ctrl.c \
 	vmw_screen.c
 
-OBJECTS = $(patsubst %.c,%.o,$(CFILES))
-
-INCLUDES = \
-	$(shell pkg-config --cflags-only-I pixman-1 xorg-server libdrm xproto) \
-	-I$(TOP)/src/gallium/include \
-	-I$(TOP)/src/gallium/drivers \
-	-I$(TOP)/src/gallium/auxiliary \
+DRIVER_INCLUDES = \
 	-I$(TOP)/src/gallium
 
-LIBS = \
+DRIVER_DEFINES = \
+	-std=gnu99 \
+	-DHAVE_CONFIG_H
+
+DRIVER_LINKS = \
 	$(TOP)/src/gallium/state_trackers/xorg/libxorgtracker.a \
 	$(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
 	$(TOP)/src/gallium/drivers/trace/libtrace.a \
 	$(TOP)/src/gallium/drivers/rbug/librbug.a \
 	$(TOP)/src/gallium/drivers/svga/libsvga.a \
-	$(GALLIUM_AUXILIARIES)
-
-LINKS = \
+	$(GALLIUM_AUXILIARIES) \
 	$(shell pkg-config --libs --silence-errors libkms) \
 	$(shell pkg-config --libs libdrm)
 
-DRIVER_DEFINES = \
-	-std=gnu99 \
-	-DHAVE_CONFIG_H
-
-TARGET_STAGING = $(TOP)/$(LIB_DIR)/gallium/$(TARGET)
-
-#############################################
-
-
-
-all default: $(TARGET) $(TARGET_STAGING)
-
-$(TARGET): $(OBJECTS) Makefile $(LIBS)
-	$(MKLIB) -noprefix -o $@ $(OBJECTS) $(LIBS) $(LINKS)
-
-$(TOP)/$(LIB_DIR)/gallium:
-	mkdir -p $@
-
-$(TARGET_STAGING): $(TARGET) $(TOP)/$(LIB_DIR)/gallium
-	$(INSTALL) $(TARGET) $(TOP)/$(LIB_DIR)/gallium
-
-clean:
-	rm -rf $(OBJECTS) $(TARGET)
-
-install:
-	$(INSTALL) -d $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
-	$(MINSTALL) -m 755 $(TARGET) $(DESTDIR)/$(XORG_DRIVER_INSTALL_DIR)
-
-
-##############################################
-
-
-.c.o:
-	$(CC) -c $(CFLAGS) $(INCLUDES) $(DRIVER_DEFINES) $< -o $@
-
-
-##############################################
-
-.PHONY	= all clean install
+include ../Makefile.xorg



More information about the mesa-commit mailing list