diff options
author | Chia-I Wu <[email protected]> | 2010-06-29 14:04:27 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-06-29 17:16:20 +0800 |
commit | d8e0e114567ec19fd59f974080a418dc959cc9b6 (patch) | |
tree | e4e435f5ad82ac3c521fc595bc51895ad4dfcc1b /src | |
parent | ea05299ce54ea0463626277907cab8e849884740 (diff) |
st/egl: Reorganize targets.
Merge all targets into targets/egl/. The target produces
egl_gallium_<HW>.so for each pipe driver and st_<API>.so for each client
APIs. This enables us to further merge egl_gallium_<HW>.so into
egl_gallium.so later.
Diffstat (limited to 'src')
23 files changed, 232 insertions, 347 deletions
diff --git a/src/gallium/state_trackers/egl/Makefile b/src/gallium/state_trackers/egl/Makefile index 7bb53492b49..e117f15d930 100644 --- a/src/gallium/state_trackers/egl/Makefile +++ b/src/gallium/state_trackers/egl/Makefile @@ -40,7 +40,7 @@ ALL_INCLUDES = $(common_INCLUDES) $(x11_INCLUDES) $(kms_INCLUDES) $(fbdev_INCLUD ALL_SOURCES = $(common_SOURCES) $(x11_SOURCES) $(kms_SOURCES) $(fbdev_SOURCES) EGL_OBJECTS = $(common_OBJECTS) -EGL_CPPFLAGS = $(common_INCLUDES) +EGL_CPPFLAGS = $(common_INCLUDES) -DST_MODULE_PREFIX=\"st_\" # add backends ifneq ($(findstring x11, $(EGL_PLATFORMS)),) diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_st.c b/src/gallium/state_trackers/egl/common/egl_g3d_st.c index 683b74f62b2..0668f5c91ab 100644 --- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c +++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c @@ -133,24 +133,24 @@ egl_g3d_init_st_apis(struct st_api *stapis[ST_API_COUNT]) case ST_API_OPENGL: skip_checks[api] = "glColor4d"; symbols[api] = ST_CREATE_OPENGL_SYMBOL; - filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX; + filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX; break; case ST_API_OPENGL_ES1: skip_checks[api] = "glColor4x"; symbols[api] = ST_CREATE_OPENGL_ES1_SYMBOL; - filenames[api][count++] = "api_GLESv1_CM" ST_MODULE_SUFFIX; - filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX; + filenames[api][count++] = ST_MODULE_PREFIX "GLESv1_CM" ST_MODULE_SUFFIX; + filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX; break; case ST_API_OPENGL_ES2: skip_checks[api] = "glShaderBinary"; symbols[api] = ST_CREATE_OPENGL_ES2_SYMBOL; - filenames[api][count++] = "api_GLESv2" ST_MODULE_SUFFIX; - filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX; + filenames[api][count++] = ST_MODULE_PREFIX "GLESv2" ST_MODULE_SUFFIX; + filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX; break; case ST_API_OPENVG: skip_checks[api] = "vgClear"; symbols[api] = ST_CREATE_OPENVG_SYMBOL; - filenames[api][count++]= "api_OpenVG" ST_MODULE_SUFFIX; + filenames[api][count++]= ST_MODULE_PREFIX "OpenVG" ST_MODULE_SUFFIX; break; default: assert(!"Unknown API Type\n"); diff --git a/src/gallium/targets/Makefile.egl b/src/gallium/targets/Makefile.egl deleted file mode 100644 index 7934f257205..00000000000 --- a/src/gallium/targets/Makefile.egl +++ /dev/null @@ -1,86 +0,0 @@ -# src/gallium/winsys/drm/Makefile.egl - -# The driver Makefile should define -# -# EGL_DRIVER_NAME, the name of the driver -# EGL_DRIVER_SOURCES, the sources of the driver -# EGL_DRIVER_LIBS, extra libraries needed by the driver -# EGL_DRIVER_PIPES, the pipe drivers of the driver -# -# before including this file. - -EGL_DRIVER_OBJECTS = $(EGL_DRIVER_SOURCES:.c=.o) - -common_LIBS = -ldrm -lm -ldl -common_ST = \ - $(TOP)/src/gallium/state_trackers/egl/libegl.a \ - $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \ - $(TOP)/src/gallium/drivers/identity/libidentity.a \ - $(TOP)/src/gallium/drivers/trace/libtrace.a \ - $(TOP)/src/gallium/drivers/rbug/librbug.a - -ifeq ($(MESA_LLVM),1) -common_ST += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a -common_LIBS += $(LLVM_LIBS) -LDFLAGS += $(LLVM_LDFLAGS) -endif - -ifeq ($(findstring x11, $(EGL_PLATFORMS)),x11) -common_LIBS += -lX11 -lXext -lXfixes -common_ST += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a -endif - -ifeq ($(findstring kms, $(EGL_PLATFORMS)),kms) -endif - -ifeq ($(findstring fbdev, $(EGL_PLATFORMS)),fbdev) -common_ST += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a -endif - -### Include directories -INCLUDES = \ - -I$(TOP)/include \ - -I$(TOP)/src/gallium/include \ - -I$(TOP)/src/gallium/auxiliary \ - -I$(TOP)/src/gallium/drivers \ - -I$(TOP)/src/gallium/winsys \ - -I$(TOP)/src/egl/main \ - $(LIBDRM_CFLAGS) - -##### RULES ##### - -.c.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $(EGL_DRIVER_DEFINES) $< -o $@ - - -##### TARGETS ##### - -EGL_LIB_DIR = $(TOP)/$(LIB_DIR)/egl - -# do not build the driver if the platform is KMS only and the driver is swrast -ifneq ($(EGL_PLATFORMS)-$(EGL_DRIVER_NAME),kms-swrast) -EGL_DRIVER = egl_gallium_$(EGL_DRIVER_NAME).so -endif - -default: $(EGL_LIB_DIR)/$(EGL_DRIVER) - -$(EGL_LIB_DIR)/$(EGL_DRIVER): $(EGL_DRIVER) - @$(INSTALL) -d $(EGL_LIB_DIR) - $(INSTALL) $< $(EGL_LIB_DIR) - -$(EGL_DRIVER): $(EGL_DRIVER_OBJECTS) $(common_ST) $(EGL_DRIVER_PIPES) $(GALLIUM_AUXILIARIES) Makefile - $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - $(MKLIB_OPTIONS) $(EGL_DRIVER_OBJECTS) \ - -Wl,--start-group $(common_ST) $(EGL_DRIVER_PIPES) \ - $(GALLIUM_AUXILIARIES) -Wl,--end-group \ - $(common_LIBS) $(EGL_DRIVER_LIBS) -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB) - -clean: - -rm -f $(EGL_DRIVER_OBJECTS) - -rm -f $(EGL_DRIVER) - -install: $(EGL_LIB_DIR)/$(EGL_DRIVER) - $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) - $(MINSTALL) -m 755 $< $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) - -depend: diff --git a/src/gallium/targets/egl-apis/Makefile b/src/gallium/targets/egl-apis/Makefile deleted file mode 100644 index 1275cc79b24..00000000000 --- a/src/gallium/targets/egl-apis/Makefile +++ /dev/null @@ -1,83 +0,0 @@ -# src/gallium/targets/egl-apis - -TOP = ../../../.. -include $(TOP)/configs/current - -OUTPUT_PREFIX := api_ -OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl - -OUTPUTS := $(addsuffix .so, $(EGL_CLIENT_APIS)) -OUTPUTS := $(addprefix $(OUTPUT_PATH)/$(OUTPUT_PREFIX), $(OUTPUTS)) - -# include dirs -GL_INCLUDES := -I$(TOP)/src/mesa -I$(TOP)/src/gallium/include -GLESv1_CM_INCLUDES := $(GL_INCLUDES) -GLESv2_INCLUDES := $(GL_INCLUDES) -OpenVG_INCLUDES := -I$(TOP)/src/gallium/state_trackers/vega -I$(TOP)/src/gallium/include - -# cflags -GL_CFLAGS := $(API_DEFINES) -GLESv1_CM_CFLAGS := -GLESv2_CFLAGS := -OpenVG_CFLAGS := - -# system libs -GL_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -GLESv1_CM_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB) -GLESv2_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB) -OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB) - -# $(LLVM_LIBS) will be discarded except for OpenGL, which creates a private -# draw context for selection/feedback mode. -ifeq ($(MESA_LLVM),1) -GL_SYS += $(LLVM_LIBS) -GLESv1_CM_SYS += $(LLVM_LIBS) -GLESv2_SYS += $(LLVM_LIBS) -OpenVG_SYS += $(LLVM_LIBS) -LDFLAGS += $(LLVM_LDFLAGS) -endif - -# project libs -GL_LIBS := $(TOP)/src/mesa/libmesagallium.a -GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a -GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a -OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a - -# objects -GL_OBJECTS := api_GL.o -GLESv1_CM_OBJECTS := api_GLESv1_CM.o -GLESv2_OBJECTS := api_GLESv2.o -OpenVG_OBJECTS := api_OpenVG.o - -default: $(OUTPUTS) - -api_%.o: api_%.c - $(CC) -c -o $@ $< $($*_INCLUDES) $($*_CFLAGS) $(DEFINES) $(CFLAGS) - -define mklib -$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) \ - $($(1)_OBJECTS) $($(1)_LIBS) $(GALLIUM_AUXILIARIES) $($(1)_SYS) -endef - -$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GL_LIB).so: $(GL_OBJECTS) $(GL_LIBS) - $(call mklib,GL) - -$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv1_CM_LIB).so: $(GLESv1_CM_OBJECTS) $(GLESv1_CM_LIBS) - $(call mklib,GLESv1_CM) - -$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv2_LIB).so: $(GLESv2_OBJECTS) $(GLESv2_LIBS) - $(call mklib,GLESv2) - -$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(VG_LIB).so: $(OpenVG_OBJECTS) $(OpenVG_LIBS) - $(call mklib,OpenVG) - -install: $(OUTPUTS) - $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) - for out in $(OUTPUTS); do \ - $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \ - done - -clean: - -rm -f $(OUTPUTS) - -rm -f *.o diff --git a/src/gallium/targets/egl-i915/Makefile b/src/gallium/targets/egl-i915/Makefile deleted file mode 100644 index 43c67a49c36..00000000000 --- a/src/gallium/targets/egl-i915/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -EGL_DRIVER_NAME = i915 -EGL_DRIVER_SOURCES = target.c -EGL_DRIVER_LIBS = -ldrm_intel - -EGL_DRIVER_DEFINES = \ - -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_GALAHAD - -EGL_DRIVER_PIPES = \ - $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \ - $(TOP)/src/gallium/drivers/galahad/libgalahad.a \ - $(TOP)/src/gallium/drivers/trace/libtrace.a \ - $(TOP)/src/gallium/drivers/rbug/librbug.a \ - $(TOP)/src/gallium/drivers/i915/libi915.a - -include ../Makefile.egl diff --git a/src/gallium/targets/egl-i915/target.c b/src/gallium/targets/egl-i915/target.c deleted file mode 100644 index 070e2c09648..00000000000 --- a/src/gallium/targets/egl-i915/target.c +++ /dev/null @@ -1,30 +0,0 @@ - -#include "state_tracker/drm_driver.h" -#include "target-helpers/inline_debug_helper.h" -#include "i915/drm/i915_drm_public.h" -#include "i915/i915_public.h" - -static struct pipe_screen * -create_screen(int fd) -{ - struct i915_winsys *iws; - struct pipe_screen *screen; - - iws = i915_drm_winsys_create(fd); - if (!iws) - return NULL; - - screen = i915_screen_create(iws); - if (!screen) - return NULL; - - screen = debug_screen_wrap(screen); - - return screen; -} - -DRM_DRIVER_DESCRIPTOR("i915", "i915", create_screen) - -/* A poor man's --whole-archive for EGL drivers */ -void *_eglMain(void *); -void *_eglWholeArchive = (void *) _eglMain; diff --git a/src/gallium/targets/egl-i965/Makefile b/src/gallium/targets/egl-i965/Makefile deleted file mode 100644 index 44e435452e8..00000000000 --- a/src/gallium/targets/egl-i965/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -EGL_DRIVER_NAME = i965 -EGL_DRIVER_SOURCES = target.c -EGL_DRIVER_LIBS = -ldrm_intel - -EGL_DRIVER_DEFINES = \ - -DGALLIUM_SOFTPIPE -DGALLIUM_RBUG -DGALLIUM_TRACE - -EGL_DRIVER_PIPES = \ - $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \ - $(TOP)/src/gallium/drivers/trace/libtrace.a \ - $(TOP)/src/gallium/drivers/rbug/librbug.a \ - $(TOP)/src/gallium/drivers/i965/libi965.a \ - $(TOP)/src/gallium/winsys/sw/wrapper/libwsw.a \ - $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a - -include ../Makefile.egl diff --git a/src/gallium/targets/egl-nouveau/Makefile b/src/gallium/targets/egl-nouveau/Makefile deleted file mode 100644 index 0e16f113246..00000000000 --- a/src/gallium/targets/egl-nouveau/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -EGL_DRIVER_NAME = nouveau -EGL_DRIVER_SOURCES = target.c -EGL_DRIVER_LIBS = -ldrm_nouveau - -EGL_DRIVER_DEFINES = \ - -DGALLIUM_RBUG -DGALLIUM_TRACE - -EGL_DRIVER_PIPES = \ - $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \ - $(TOP)/src/gallium/drivers/trace/libtrace.a \ - $(TOP)/src/gallium/drivers/rbug/librbug.a \ - $(TOP)/src/gallium/drivers/nvfx/libnvfx.a \ - $(TOP)/src/gallium/drivers/nv50/libnv50.a \ - $(TOP)/src/gallium/drivers/nouveau/libnouveau.a - -include ../Makefile.egl diff --git a/src/gallium/targets/egl-radeon/Makefile b/src/gallium/targets/egl-radeon/Makefile deleted file mode 100644 index cc7bb22952a..00000000000 --- a/src/gallium/targets/egl-radeon/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -EGL_DRIVER_NAME = radeon -EGL_DRIVER_SOURCES = target.c -EGL_DRIVER_LIBS = -ldrm_radeon - -EGL_DRIVER_DEFINES = \ - -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_GALAHAD - -EGL_DRIVER_PIPES = \ - $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ - $(TOP)/src/gallium/drivers/galahad/libgalahad.a \ - $(TOP)/src/gallium/drivers/trace/libtrace.a \ - $(TOP)/src/gallium/drivers/rbug/librbug.a \ - $(TOP)/src/gallium/drivers/r300/libr300.a - -include ../Makefile.egl diff --git a/src/gallium/targets/egl-swrast/Makefile b/src/gallium/targets/egl-swrast/Makefile deleted file mode 100644 index 7d4f5054983..00000000000 --- a/src/gallium/targets/egl-swrast/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -# Do propperly -CFLAGS+="-I$(TOP)/src/gallium/include" - -EGL_DRIVER_NAME = swrast -EGL_DRIVER_SOURCES = swrast_glue.c -EGL_DRIVER_LIBS = -EGL_DRIVER_PIPES = - -include ../Makefile.egl diff --git a/src/gallium/targets/egl-swrast/SConscript b/src/gallium/targets/egl-swrast/SConscript deleted file mode 100644 index 213e5b3e6ce..00000000000 --- a/src/gallium/targets/egl-swrast/SConscript +++ /dev/null @@ -1,30 +0,0 @@ -####################################################################### -# SConscript for egl-swrast target - -Import('*') - -if env['platform'] == 'windows': - - env = env.Clone() - - env.Append(LIBS = [ - 'gdi32', - 'user32', - 'kernel32', - 'ws2_32', - ]) - - drivers = [softpipe] - if env['llvm']: - drivers += [llvmpipe] - drivers += [identity, trace, rbug] - - env['no_import_lib'] = 1 - - egl_gdi_swrast = env.SharedLibrary( - target ='egl_gdi_swrast', - source = 'swrast_glue.c', - LIBS = st_egl_gdi + ws_gdi + drivers + gallium + egl + env['LIBS'], - ) - - env.InstallSharedLibrary(egl_gdi_swrast) diff --git a/src/gallium/targets/egl-vmwgfx/Makefile b/src/gallium/targets/egl-vmwgfx/Makefile deleted file mode 100644 index 92ec4cbdd61..00000000000 --- a/src/gallium/targets/egl-vmwgfx/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -TOP = ../../../.. -include $(TOP)/configs/current - -EGL_DRIVER_NAME = vmwgfx -EGL_DRIVER_SOURCES = target.c -EGL_DRIVER_LIBS = - -EGL_DRIVER_DEFINES = \ - -DGALLIUM_RBUG -DGALLIUM_TRACE - -EGL_DRIVER_PIPES = \ - $(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 - -include ../Makefile.egl diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile new file mode 100644 index 00000000000..364a31dc450 --- /dev/null +++ b/src/gallium/targets/egl/Makefile @@ -0,0 +1,208 @@ +# src/gallium/targets/egl/Makefile +# +# This is the Makefile for EGL Gallium driver package. The package consists of +# +# egl_gallium_<HW>.so - EGL drivers +# st_<API>.so - client API state trackers +# +# The following variables are examined +# +# EGL_PLATFORMS - platforms to support +# GALLIUM_WINSYS_DIRS - pipe drivers to support +# EGL_CLIENT_APIS - state trackers to support +# + +TOP = ../../../.. +include $(TOP)/configs/current + +common_CPPFLAGS := \ + -I$(TOP)/src/gallium/auxiliary \ + -I$(TOP)/src/gallium/drivers \ + -I$(TOP)/src/gallium/include \ + -I$(TOP)/src/gallium/winsys +common_SYS := +common_LIBS := \ + $(TOP)/src/gallium/drivers/identity/libidentity.a \ + $(TOP)/src/gallium/drivers/trace/libtrace.a \ + $(TOP)/src/gallium/drivers/rbug/librbug.a \ + $(GALLIUM_AUXILIARIES) + +# EGL driver +egl_CPPFLAGS := \ + -I$(TOP)/src/gallium/state_trackers/egl \ + -I$(TOP)/src/egl/main +egl_SYS := -lm -ldl -lEGL +egl_LIBS := \ + $(TOP)/src/gallium/state_trackers/egl/libegl.a \ + $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a + +ifneq ($(findstring x11, $(EGL_PLATFORMS)),) +egl_SYS += -lX11 -lXext -lXfixes +egl_LIBS += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a +endif +ifneq ($(findstring kms, $(EGL_PLATFORMS)),) +egl_SYS += -ldrm +endif +ifneq ($(findstring fbdev, $(EGL_PLATFORMS)),) +egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a +endif + +# LLVM +ifeq ($(MESA_LLVM),1) +common_SYS += $(LLVM_LIBS) +egl_LIBS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a +LDFLAGS += $(LLVM_LDFLAGS) +endif + +# i915 pipe driver +i915_CPPFLAGS := +i915_SYS := -ldrm_intel +i915_LIBS := \ + $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \ + $(TOP)/src/gallium/drivers/i915/libi915.a + +# i965 pipe driver +i965_CPPFLAGS := +i965_SYS := -ldrm_intel +i965_LIBS := \ + $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \ + $(TOP)/src/gallium/drivers/i965/libi965.a + +# nouveau pipe driver +nouveau_CPPFLAGS := +nouveau_SYS := -ldrm_nouveau +nouveau_LIBS := \ + $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \ + $(TOP)/src/gallium/drivers/nvfx/libnvfx.a \ + $(TOP)/src/gallium/drivers/nv50/libnv50.a \ + $(TOP)/src/gallium/drivers/nouveau/libnouveau.a + +# radeon pipe driver +radeon_CPPFLAGS := +radeon_SYS := -ldrm -ldrm_radeon +radeon_LIBS := \ + $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ + $(TOP)/src/gallium/drivers/r300/libr300.a + +# vmwgfx pipe driver +vmwgfx_CPPFLAGS := +vmwgfx_SYS := +vmwgfx_LIBS := \ + $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \ + $(TOP)/src/gallium/drivers/svga/libsvga.a + +# swrast (pseudo) pipe driver +swrast_CPPFLAGS := +swrast_SYS := +swrast_LIBS := + +# OpenGL state tracker +GL_CPPFLAGS := -I$(TOP)/src/mesa $(API_DEFINES) +GL_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) +GL_LIBS := $(TOP)/src/mesa/libmesagallium.a + +# OpenGL ES 1.x state tracker +GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa +GLESv1_CM_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB) +GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a + +# OpenGL ES 2.x state tracker +GLESv2_CPPFLAGS := -I$(TOP)/src/mesa +GLESv2_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB) +GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a + +# OpenVG state tracker +OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega +OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB) +OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a + + +OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl + +# determine the outputs +ifneq ($(findstring i915,$(GALLIUM_WINSYS_DIRS)),) +OUTPUTS += i915 +endif +ifneq ($(findstring i965,$(GALLIUM_WINSYS_DIRS)),) +OUTPUTS += i965 +endif +ifneq ($(findstring nouveau,$(GALLIUM_WINSYS_DIRS)),) +OUTPUTS += nouveau +endif +ifneq ($(findstring r300,$(GALLIUM_WINSYS_DIRS)),) +OUTPUTS += radeon +endif +ifneq ($(findstring svga,$(GALLIUM_WINSYS_DIRS)),) +OUTPUTS += vmwgfx +endif +OUTPUTS += swrast +OUTPUTS := $(addprefix egl_gallium_, $(OUTPUTS)) + +# state trackers +OUTPUTS += $(addprefix st_, $(EGL_CLIENT_APIS)) + +OUTPUTS := $(addsuffix .so, $(OUTPUTS)) +OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS)) + +default: $(OUTPUTS) + +define mklib-egl +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ + -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ + -Wl,--start-group $(common_LIBS) $(egl_LIBS) $($(1)_LIBS) -Wl,--end-group \ + $(common_SYS) $(egl_SYS) $($(1)_SYS) +endef + +define mklib +$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ + -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \ + -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \ + $(common_SYS) $($(1)_SYS) +endef + +# EGL drivers +$(OUTPUT_PATH)/egl_gallium_i915.so: pipe_i915.o $(egl_LIBS) $(i915_LIBS) + $(call mklib-egl,i915) + +$(OUTPUT_PATH)/egl_gallium_i965.so: pipe_i965.o $(egl_LIBS) $(i965_LIBS) + $(call mklib-egl,i965) + +$(OUTPUT_PATH)/egl_gallium_nouveau.so: pipe_nouveau.o $(egl_LIBS) $(nouveau_LIBS) + $(call mklib-egl,nouveau) + +$(OUTPUT_PATH)/egl_gallium_radeon.so: pipe_radeon.o $(egl_LIBS) $(radeon_LIBS) + $(call mklib-egl,radeon) + +$(OUTPUT_PATH)/egl_gallium_vmwgfx.so: pipe_vmwgfx.o $(egl_LIBS) $(vmwgfx_LIBS) + $(call mklib-egl,vmwgfx) + +$(OUTPUT_PATH)/egl_gallium_swrast.so: pipe_swrast.o $(egl_LIBS) $(swrast_LIBS) + $(call mklib-egl,swrast) + +# state trackers +$(OUTPUT_PATH)/st_$(GL_LIB).so: st_GL.o $(GL_LIBS) + $(call mklib,GL) + +$(OUTPUT_PATH)/st_$(GLESv1_CM_LIB).so: st_GLESv1_CM.o $(GLESv1_CM_LIBS) + $(call mklib,GLESv1_CM) + +$(OUTPUT_PATH)/st_$(GLESv2_LIB).so: st_GLESv2.o $(GLESv2_LIBS) + $(call mklib,GLESv2) + +$(OUTPUT_PATH)/st_$(VG_LIB).so: st_OpenVG.o $(OpenVG_LIBS) + $(call mklib,OpenVG) + +pipe_%.o: pipe_%.c + $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS) + +st_%.o: st_%.c + $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS) + +install: $(OUTPUTS) + $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR) + for out in $(OUTPUTS); do \ + $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \ + done + +clean: + rm -f *.o diff --git a/src/gallium/targets/egl-apis/SConscript b/src/gallium/targets/egl/SConscript index 0ca3d1fb9e5..c743c26cf6f 100644 --- a/src/gallium/targets/egl-apis/SConscript +++ b/src/gallium/targets/egl/SConscript @@ -20,14 +20,27 @@ if env['platform'] == 'windows': env['no_import_lib'] = 1 + drivers = [softpipe] + if env['llvm']: + drivers += [llvmpipe] + drivers += [identity, trace, rbug] + + egl_gallium_swrast = env.SharedLibrary( + target ='egl_gallium_swrast', + source = 'pipe_swrast.c', + LIBS = st_egl_gdi + ws_gdi + drivers + gallium + egl + env['LIBS'], + ) + + env.InstallSharedLibrary(egl_gallium_swrast) + api_libs = { 'OpenVG': vgapi + st_vega, } for name in api_libs.keys(): api = env.SharedLibrary( - target = 'api_' + name, - source = ['api_' + name + '.c'], + target = 'st_' + name, + source = ['st_' + name + '.c'], LIBS = api_libs[name] + gallium + env['LIBS'], ) env.InstallSharedLibrary(api) diff --git a/src/gallium/targets/egl-i965/target.c b/src/gallium/targets/egl/pipe_i965.c index 1195b510a07..d19c83a47d3 100644 --- a/src/gallium/targets/egl-i965/target.c +++ b/src/gallium/targets/egl/pipe_i965.c @@ -27,7 +27,7 @@ create_screen(int fd) return screen; } -DRM_DRIVER_DESCRIPTOR("i915", "i965", create_screen) +DRM_DRIVER_DESCRIPTOR("i965", "i965", create_screen) /* A poor man's --whole-archive for EGL drivers */ void *_eglMain(void *); diff --git a/src/gallium/targets/egl-nouveau/target.c b/src/gallium/targets/egl/pipe_nouveau.c index cf569ea62c8..cf569ea62c8 100644 --- a/src/gallium/targets/egl-nouveau/target.c +++ b/src/gallium/targets/egl/pipe_nouveau.c diff --git a/src/gallium/targets/egl-radeon/target.c b/src/gallium/targets/egl/pipe_radeon.c index ce07327b8fc..ce07327b8fc 100644 --- a/src/gallium/targets/egl-radeon/target.c +++ b/src/gallium/targets/egl/pipe_radeon.c diff --git a/src/gallium/targets/egl-swrast/swrast_glue.c b/src/gallium/targets/egl/pipe_swrast.c index 24f77826d4c..d8205c158e6 100644 --- a/src/gallium/targets/egl-swrast/swrast_glue.c +++ b/src/gallium/targets/egl/pipe_swrast.c @@ -1,11 +1,7 @@ #include "state_tracker/drm_driver.h" -struct drm_driver_descriptor drm_driver = { - .name = "swrast", - .driver_name = NULL, - .create_screen = NULL, -}; +DRM_DRIVER_DESCRIPTOR("swrast", NULL, NULL) /* A poor man's --whole-archive for EGL drivers */ void *_eglMain(void *); diff --git a/src/gallium/targets/egl-vmwgfx/target.c b/src/gallium/targets/egl/pipe_vmwgfx.c index 4e9f51c5dc4..4e9f51c5dc4 100644 --- a/src/gallium/targets/egl-vmwgfx/target.c +++ b/src/gallium/targets/egl/pipe_vmwgfx.c diff --git a/src/gallium/targets/egl-apis/api_GL.c b/src/gallium/targets/egl/st_GL.c index 676300b0cc1..676300b0cc1 100644 --- a/src/gallium/targets/egl-apis/api_GL.c +++ b/src/gallium/targets/egl/st_GL.c diff --git a/src/gallium/targets/egl-apis/api_GLESv1_CM.c b/src/gallium/targets/egl/st_GLESv1_CM.c index 0c8de8992f3..0c8de8992f3 100644 --- a/src/gallium/targets/egl-apis/api_GLESv1_CM.c +++ b/src/gallium/targets/egl/st_GLESv1_CM.c diff --git a/src/gallium/targets/egl-apis/api_GLESv2.c b/src/gallium/targets/egl/st_GLESv2.c index 87b3e65e239..87b3e65e239 100644 --- a/src/gallium/targets/egl-apis/api_GLESv2.c +++ b/src/gallium/targets/egl/st_GLESv2.c diff --git a/src/gallium/targets/egl-apis/api_OpenVG.c b/src/gallium/targets/egl/st_OpenVG.c index e29a2374792..e29a2374792 100644 --- a/src/gallium/targets/egl-apis/api_OpenVG.c +++ b/src/gallium/targets/egl/st_OpenVG.c |