1 # src/gallium/targets/egl/Makefile
3 # This is the Makefile for EGL Gallium driver package. The package consists of
5 # egl_gallium.so - EGL driver
6 # pipe_<HW>.so - pipe drivers
7 # st_<API>.so - client API state trackers
9 # The following variables are examined
11 # EGL_PLATFORMS - platforms to support
12 # GALLIUM_WINSYS_DIRS - pipe drivers to support
13 # EGL_CLIENT_APIS - state trackers to support
17 include $(TOP)/configs/current
24 -I$(TOP)/src/gallium/auxiliary \
25 -I$(TOP)/src/gallium/drivers \
26 -I$(TOP)/src/gallium/include \
27 -I$(TOP)/src/gallium/winsys \
32 $(TOP)/src/gallium/drivers/identity/libidentity.a \
33 $(TOP)/src/gallium/drivers/trace/libtrace.a \
34 $(TOP)/src/gallium/drivers/rbug/librbug.a \
35 $(GALLIUM_AUXILIARIES)
39 -I$(TOP)/src/gallium/state_trackers/egl \
40 -I$(TOP)/src/egl/main \
41 -DPIPE_PREFIX=\"$(PIPE_PREFIX)\" -DST_PREFIX=\"$(ST_PREFIX)\"
42 egl_SYS := -lm $(DLOPEN_LIBS) -lEGL
43 egl_LIBS := $(TOP)/src/gallium/state_trackers/egl/libegl.a
45 ifneq ($(findstring x11, $(EGL_PLATFORMS)),)
46 egl_SYS += -lX11 -lXext -lXfixes $(LIBDRM_LIB)
47 egl_LIBS += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a
49 ifneq ($(findstring drm, $(EGL_PLATFORMS)),)
50 egl_SYS += $(LIBDRM_LIB)
52 ifneq ($(findstring fbdev, $(EGL_PLATFORMS)),)
53 egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a
56 # EGL_RENDERABLE_TYPE is a compile time attribute
57 ifneq ($(filter $(GL_LIB), $(EGL_CLIENT_APIS)),)
58 egl_CPPFLAGS += $(API_DEFINES)
60 ifneq ($(filter $(VG_LIB), $(EGL_CLIENT_APIS)),)
61 egl_CPPFLAGS += -DFEATURE_VG=1
63 egl_CPPFLAGS := $(sort $(egl_CPPFLAGS))
67 i915_SYS := -ldrm_intel
69 $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
70 $(TOP)/src/gallium/drivers/i915/libi915.a
74 i965_SYS := -ldrm_intel
76 $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
77 $(TOP)/src/gallium/drivers/i965/libi965.a
81 nouveau_SYS := -ldrm_nouveau
83 $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \
84 $(TOP)/src/gallium/drivers/nvfx/libnvfx.a \
85 $(TOP)/src/gallium/drivers/nv50/libnv50.a \
86 $(TOP)/src/gallium/drivers/nvc0/libnvc0.a \
87 $(TOP)/src/gallium/drivers/nouveau/libnouveau.a
91 r300_SYS := -ldrm -ldrm_radeon
93 $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
94 $(TOP)/src/gallium/drivers/r300/libr300.a
98 r600_SYS := -ldrm -ldrm_radeon
100 $(TOP)/src/gallium/winsys/r600/drm/libr600winsys.a \
101 $(TOP)/src/gallium/drivers/r600/libr600.a
107 $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
108 $(TOP)/src/gallium/drivers/svga/libsvga.a
110 # swrast (pseudo) pipe driver
111 swrast_CPPFLAGS := -DGALLIUM_SOFTPIPE -DGALLIUM_RBUG -DGALLIUM_TRACE
113 swrast_LIBS := $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
116 ifeq ($(MESA_LLVM),1)
117 common_SYS += $(LLVM_LIBS)
118 swrast_CPPFLAGS += -DGALLIUM_LLVMPIPE
119 swrast_LIBS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
120 LDFLAGS += $(LLVM_LDFLAGS)
123 # OpenGL state tracker
124 GL_CPPFLAGS := -I$(TOP)/src/mesa $(API_DEFINES)
125 # cannot not link to $(GL_LIB) as the app might want GLES
126 GL_SYS := $(DRI_LIB_DEPS)
127 GL_LIBS := $(TOP)/src/mesa/libmesagallium.a
129 # OpenVG state tracker
130 OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega
131 OpenVG_SYS := -lm -l$(VG_LIB)
132 OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a
135 OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl
137 # determine the outputs
138 ifneq ($(findstring i915/drm,$(GALLIUM_WINSYS_DIRS)),)
141 ifneq ($(findstring i965/drm,$(GALLIUM_WINSYS_DIRS)),)
144 ifneq ($(findstring nouveau/drm,$(GALLIUM_WINSYS_DIRS)),)
147 ifneq ($(findstring radeon/drm,$(GALLIUM_WINSYS_DIRS)),)
150 ifneq ($(findstring r600/drm,$(GALLIUM_WINSYS_DIRS)),)
153 ifneq ($(findstring svga/drm,$(GALLIUM_WINSYS_DIRS)),)
157 OUTPUTS := $(addprefix $(PIPE_PREFIX), $(OUTPUTS))
159 # EGL driver and state trackers
160 OUTPUTS += egl_gallium $(addprefix $(ST_PREFIX), $(EGL_CLIENT_APIS))
162 OUTPUTS := $(addsuffix .so, $(OUTPUTS))
163 OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS))
168 $(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' \
169 -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \
170 -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
171 -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \
172 $(common_SYS) $($(1)_SYS)
176 $(MKLIB) -o $(notdir $@) -noprefix -linker '$(CXX)' \
177 -L$(TOP)/$(LIB_DIR) -ldflags '$(LDFLAGS)' \
178 -cplusplus -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
179 -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \
180 $(common_SYS) $($(1)_SYS)
184 $(OUTPUT_PATH)/egl_gallium.so: egl.o $(egl_LIBS)
188 $(OUTPUT_PATH)/$(PIPE_PREFIX)i915.so: pipe_i915.o $(i915_LIBS)
191 $(OUTPUT_PATH)/$(PIPE_PREFIX)i965.so: pipe_i965.o $(i965_LIBS)
194 $(OUTPUT_PATH)/$(PIPE_PREFIX)nouveau.so: pipe_nouveau.o $(nouveau_LIBS)
195 $(call mklib,nouveau)
197 $(OUTPUT_PATH)/$(PIPE_PREFIX)r300.so: pipe_r300.o $(r300_LIBS)
200 $(OUTPUT_PATH)/$(PIPE_PREFIX)r600.so: pipe_r600.o $(r600_LIBS)
203 $(OUTPUT_PATH)/$(PIPE_PREFIX)vmwgfx.so: pipe_vmwgfx.o $(vmwgfx_LIBS)
206 $(OUTPUT_PATH)/$(PIPE_PREFIX)swrast.so: pipe_swrast.o $(swrast_LIBS)
210 $(OUTPUT_PATH)/$(ST_PREFIX)$(GL_LIB).so: st_GL.o $(GL_LIBS)
213 $(OUTPUT_PATH)/$(ST_PREFIX)$(VG_LIB).so: st_OpenVG.o $(OpenVG_LIBS)
217 $(CC) -c -o $@ $< $(common_CPPFLAGS) $(egl_CPPFLAGS) $(DEFINES) $(CFLAGS)
220 $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS)
223 $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS)
226 $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
227 for out in $(OUTPUTS); do \
228 $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \