# Makefile for building pipe driver shared libraries. # # Input variables: PIPE_INSTALL_DIR, PIPE_PREFIX (optional) # TOP = ../../../.. include $(TOP)/configs/current PIPE_PREFIX ?= pipe_ PIPE_CPPFLAGS = \ -DGALLIUM_RBUG \ -DGALLIUM_TRACE \ -DGALLIUM_GALAHAD \ -I$(TOP)/include \ -I$(TOP)/src/gallium/auxiliary \ -I$(TOP)/src/gallium/drivers \ -I$(TOP)/src/gallium/include \ -I$(TOP)/src/gallium/winsys PIPE_LIBS = \ $(TOP)/src/gallium/drivers/identity/libidentity.a \ $(TOP)/src/gallium/drivers/galahad/libgalahad.a \ $(TOP)/src/gallium/drivers/trace/libtrace.a \ $(TOP)/src/gallium/drivers/rbug/librbug.a \ $(GALLIUM_AUXILIARIES) PIPE_SYS = $(LIBDRM_LIB) -lm -lpthread $(DLOPEN_LIBS) PIPE_CFLAGS = $(LIBDRM_CFLAGS) PIPE_LDFLAGS = -Wl,--no-undefined # i915 pipe driver i915_LIBS = \ $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \ $(TOP)/src/gallium/drivers/i915/libi915.a i915_SYS = -ldrm_intel # nouveau pipe driver nouveau_LIBS = \ $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \ $(TOP)/src/gallium/drivers/nv30/libnv30.a \ $(TOP)/src/gallium/drivers/nv50/libnv50.a \ $(TOP)/src/gallium/drivers/nvc0/libnvc0.a \ $(TOP)/src/gallium/drivers/nouveau/libnouveau.a nouveau_SYS = -ldrm_nouveau # r300 pipe driver r300_LIBS = \ $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ $(TOP)/src/gallium/drivers/r300/libr300.a r300_SYS += -ldrm_radeon # r600 pipe driver r600_LIBS = \ $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ $(TOP)/src/gallium/drivers/r600/libr600.a r600_SYS += -ldrm_radeon # vmwgfx pipe driver vmwgfx_LIBS = \ $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \ $(TOP)/src/gallium/drivers/svga/libsvga.a ifneq ($(findstring llvmpipe,$(GALLIUM_DRIVERS_DIRS)),) swrast_LIBS = $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a PIPE_CFLAGS += -DGALLIUM_LLVMPIPE else ifneq ($(findstring softpipe,$(GALLIUM_DRIVERS_DIRS)),) swrast_LIBS = $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a PIPE_CFLAGS += -DGALLIUM_SOFTPIPE endif # LLVM ifeq ($(MESA_LLVM),1) PIPE_SYS += $(LLVM_LIBS) PIPE_LDFLAGS += $(LLVM_LDFLAGS) endif # determine the targets/sources _PIPE_TARGETS_CC = _PIPE_TARGETS_CXX = PIPE_SOURCES = ifneq ($(findstring i915/drm,$(GALLIUM_WINSYS_DIRS)),) _PIPE_TARGETS_CC += $(PIPE_PREFIX)i915.so PIPE_SOURCES += pipe_i915.c endif ifneq ($(findstring nouveau/drm,$(GALLIUM_WINSYS_DIRS)),) _PIPE_TARGETS_CXX += $(PIPE_PREFIX)nouveau.so PIPE_SOURCES += pipe_nouveau.c endif ifneq ($(findstring radeon/drm,$(GALLIUM_WINSYS_DIRS)),) ifneq ($(findstring r300,$(GALLIUM_DRIVERS_DIRS)),) _PIPE_TARGETS_CC += $(PIPE_PREFIX)r300.so PIPE_SOURCES += pipe_r300.c endif endif ifneq ($(findstring radeon/drm,$(GALLIUM_WINSYS_DIRS)),) ifneq ($(findstring r600,$(GALLIUM_DRIVERS_DIRS)),) _PIPE_TARGETS_CC += $(PIPE_PREFIX)r600.so PIPE_SOURCES += pipe_r600.c endif endif ifneq ($(findstring svga/drm,$(GALLIUM_WINSYS_DIRS)),) _PIPE_TARGETS_CC += $(PIPE_PREFIX)vmwgfx.so PIPE_SOURCES += pipe_vmwgfx.c endif ifneq ($(filter llvmpipe softpipe,$(GALLIUM_DRIVERS_DIRS)),) _PIPE_TARGETS_CC += $(PIPE_PREFIX)swrast.so PIPE_SOURCES += pipe_swrast.c endif PIPE_OBJECTS := $(PIPE_SOURCES:.c=.o) ifeq ($(MESA_LLVM),1) PIPE_TARGETS_CXX = $(_PIPE_TARGETS_CXX) $(_PIPE_TARGETS_CC) PIPE_TARGETS_CC = else PIPE_TARGETS_CXX = $(_PIPE_TARGETS_CXX) PIPE_TARGETS_CC = $(_PIPE_TARGETS_CC) endif PIPE_TARGETS = $(PIPE_TARGETS_CC) $(PIPE_TARGETS_CXX) default: depend $(PIPE_TARGETS) .SECONDEXPANSION: $(PIPE_TARGETS_CC): $(PIPE_PREFIX)%.so: pipe_%.o $(PIPE_LIBS) $$(%_LIBS) $(MKLIB) -o $@ -noprefix -linker '$(CC)' \ -ldflags '-L$(TOP)/$(LIB_DIR) $(PIPE_LDFLAGS) $(LDFLAGS)' \ $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(PIPE_LIBS) $($*_LIBS) -Wl,--end-group \ $(PIPE_SYS) $($*_SYS) $(PIPE_TARGETS_CXX): $(PIPE_PREFIX)%.so: pipe_%.o $(PIPE_LIBS) $$(%_LIBS) $(MKLIB) -o $@ -noprefix -linker '$(CXX)' \ -ldflags '-L$(TOP)/$(LIB_DIR) $(PIPE_LDFLAGS) $(LDFLAGS)' \ $(MKLIB_OPTIONS) $< \ -Wl,--start-group $(PIPE_LIBS) $($*_LIBS) -Wl,--end-group \ $(PIPE_SYS) $($*_SYS) $(PIPE_OBJECTS): %.o: %.c $(CC) -c -o $@ $< $(PIPE_CPPFLAGS) $(PIPE_CFLAGS) $(CFLAGS) install: $(PIPE_TARGETS) $(INSTALL) -d $(DESTDIR)/$(PIPE_INSTALL_DIR) for tgt in $(PIPE_TARGETS); do \ $(MINSTALL) "$$tgt" $(DESTDIR)/$(PIPE_INSTALL_DIR); \ done clean: rm -f $(PIPE_TARGETS) $(PIPE_OBJECTS) depend depend.bak depend: $(PIPE_SOURCES) rm -f depend touch depend $(MKDEP) $(MKDEP_OPTIONS) $(PIPE_CPPFLAGS) $(PIPE_SOURCES) 2>/dev/null sinclude depend