Rev 1901 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1901 | serge | 1 | # src/mesa/Makefile |
2 | |||
3 | TOP = ../.. |
||
4 | include $(TOP)/configs/current |
||
5 | |||
6 | MESA_LIBS := libmesa.a |
||
7 | DEPENDS := depend |
||
8 | |||
9 | ifeq ($(GLES_OVERLAY),1) |
||
10 | ES1_LIBS := libes1gallium.a |
||
11 | ES2_LIBS := libes2gallium.a |
||
12 | DEPENDS += depend.es1 depend.es2 |
||
13 | endif |
||
14 | |||
15 | MESA_OBJ_DIR := . |
||
16 | ES1_OBJ_DIR := objs-es1 |
||
17 | ES2_OBJ_DIR := objs-es2 |
||
18 | |||
19 | |||
20 | include sources.mak |
||
21 | |||
22 | # adjust object dirs |
||
23 | ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_OBJECTS)) |
||
24 | ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_OBJECTS)) |
||
25 | MESA_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_OBJECTS)) |
||
26 | |||
27 | ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) |
||
28 | ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) |
||
29 | MESA_GALLIUM_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) |
||
30 | |||
31 | # define preprocessor flags |
||
32 | MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES) |
||
33 | ES1_CPPFLAGS := -DFEATURE_ES1=1 $(DEFINES) |
||
34 | ES2_CPPFLAGS := -DFEATURE_ES2=1 $(DEFINES) |
||
35 | |||
36 | # append include dirs |
||
37 | MESA_CPPFLAGS += $(INCLUDE_DIRS) |
||
38 | ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) |
||
39 | ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) |
||
40 | |||
41 | # tidy compiler flags |
||
42 | CFLAGS := $(filter-out $(DEFINES), $(CFLAGS)) |
||
43 | CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS)) |
||
44 | |||
45 | # LLVM is needed for the state tracker |
||
46 | MESA_CFLAGS := $(LLVM_CFLAGS) |
||
47 | ES1_CFLAGS := $(LLVM_CFLAGS) |
||
48 | ES2_CFLAGS := $(LLVM_CFLAGS) |
||
49 | |||
50 | define mesa-cc-c |
||
51 | @mkdir -p $(dir $@) |
||
52 | $(CC) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CFLAGS) |
||
53 | endef |
||
54 | |||
55 | define mesa-cxx-c |
||
56 | @mkdir -p $(dir $@) |
||
57 | $(CXX) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CXXFLAGS) |
||
58 | endef |
||
59 | |||
60 | $(MESA_OBJ_DIR)/%.o: %.c |
||
61 | $(call mesa-cc-c,MESA) |
||
62 | |||
63 | $(MESA_OBJ_DIR)/%.o: %.cpp |
||
64 | $(call mesa-cxx-c,MESA) |
||
65 | |||
66 | $(MESA_OBJ_DIR)/%.o: %.S |
||
67 | $(call mesa-cc-c,MESA) |
||
68 | |||
69 | $(ES1_OBJ_DIR)/%.o: %.c |
||
70 | $(call mesa-cc-c,ES1) |
||
71 | |||
72 | $(ES1_OBJ_DIR)/%.o: %.cpp |
||
73 | $(call mesa-cxx-c,ES1) |
||
74 | |||
75 | $(ES1_OBJ_DIR)/%.o: %.S |
||
76 | $(call mesa-cc-c,ES1) |
||
77 | |||
78 | $(ES2_OBJ_DIR)/%.o: %.c |
||
79 | $(call mesa-cc-c,ES2) |
||
80 | |||
81 | $(ES2_OBJ_DIR)/%.o: %.cpp |
||
82 | $(call mesa-cxx-c,ES2) |
||
83 | |||
84 | $(ES2_OBJ_DIR)/%.o: %.S |
||
85 | $(call mesa-cc-c,ES2) |
||
86 | |||
87 | |||
88 | # Default: build dependencies, then asm_subdirs, GLSL built-in lib, |
||
89 | # then convenience libs (.a) and finally the device drivers: |
||
90 | default: $(DEPENDS) asm_subdirs \ |
||
91 | $(MESA_LIBS) $(ES1_LIBS) $(ES2_LIBS) driver_subdirs |
||
92 | |||
93 | main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py |
||
94 | $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ |
||
95 | |||
96 | main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py |
||
97 | $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ |
||
98 | |||
99 | ###################################################################### |
||
100 | # Helper libraries used by many drivers: |
||
101 | |||
102 | # Make archive of core mesa object files |
||
1902 | serge | 103 | libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS) |
104 | @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS) |
||
1901 | serge | 105 | |
106 | libes1.a: $(ES1_OBJECTS) $(GLSL_LIBS) |
||
107 | @$(MKLIB) -o es1 -static $(ES1_OBJECTS) $(GLSL_LIBS) |
||
108 | |||
109 | libes2.a: $(ES2_OBJECTS) $(GLSL_LIBS) |
||
110 | @$(MKLIB) -o es2 -static $(ES2_OBJECTS) $(GLSL_LIBS) |
||
111 | |||
112 | # Make archive of subset of core mesa object files for gallium |
||
113 | libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
114 | @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
115 | |||
116 | libes1gallium.a: $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
117 | @$(MKLIB) -o es1gallium -static $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
118 | |||
119 | libes2gallium.a: $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
120 | @$(MKLIB) -o es2gallium -static $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS) |
||
121 | |||
122 | ###################################################################### |
||
123 | # Device drivers |
||
124 | driver_subdirs: $(MESA_LIBS) |
||
125 | @ (cd drivers && $(MAKE)) |
||
126 | |||
127 | |||
128 | ###################################################################### |
||
129 | # Assembly subdirs |
||
130 | asm_subdirs: |
||
131 | @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_ASM ; then \ |
||
132 | (cd x86 && $(MAKE)) || exit 1 ; \ |
||
133 | fi |
||
134 | @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_64_ASM ; then \ |
||
135 | (cd x86 && $(MAKE)) || exit 1 ; \ |
||
136 | (cd x86-64 && $(MAKE)) || exit 1 ; \ |
||
137 | fi |
||
138 | |||
139 | |||
140 | ###################################################################### |
||
141 | # Dependency generation |
||
142 | |||
143 | depend: $(ALL_SOURCES) |
||
144 | @ echo "running $(MKDEP)" |
||
145 | @ touch depend |
||
146 | @$(MKDEP) $(MKDEP_OPTIONS) -p$(MESA_OBJ_DIR)/ $(MESA_CPPFLAGS) \ |
||
147 | $(ALL_SOURCES) > /dev/null 2>/dev/null |
||
148 | |||
149 | depend.es1: $(ALL_SOURCES) |
||
150 | @echo "running $(MKDEP) for ES1" |
||
151 | @touch $@ |
||
152 | @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES1_OBJ_DIR)/ $(ES1_CPPFLAGS) \ |
||
153 | $(ALL_SOURCES) > /dev/null 2>/dev/null |
||
154 | |||
155 | depend.es2: $(ALL_SOURCES) |
||
156 | @echo "running $(MKDEP) for ES2" |
||
157 | @touch $@ |
||
158 | @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES2_OBJ_DIR)/ $(ES2_CPPFLAGS) \ |
||
159 | $(ALL_SOURCES) > /dev/null 2>/dev/null |
||
160 | |||
161 | ###################################################################### |
||
162 | # Installation rules |
||
163 | |||
164 | # this isn't fleshed out yet but is probably the way to go in the future |
||
165 | new_install: |
||
166 | (cd drivers && $(MAKE) install) |
||
167 | |||
168 | |||
169 | # XXX replace this with new_install above someday |
||
170 | install: default |
||
171 | @for driver in $(DRIVER_DIRS) ; do \ |
||
172 | case "$$driver" in \ |
||
173 | osmesa) if [ "$(DRIVER_DIRS)" = osmesa ]; then \ |
||
174 | $(MAKE) install-headers install-osmesa || exit 1 ; \ |
||
175 | else \ |
||
176 | $(MAKE) install-osmesa || exit 1 ; \ |
||
177 | fi ;; \ |
||
178 | dri) $(MAKE) install-libgl install-dri || exit 1 ;; \ |
||
179 | *) $(MAKE) install-libgl || exit 1 ;; \ |
||
180 | esac ; \ |
||
181 | done |
||
182 | |||
183 | pcedit = \ |
||
184 | -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ |
||
185 | -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ |
||
186 | -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ |
||
187 | -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ |
||
188 | |||
189 | |||
190 | gl_pcedit = sed \ |
||
191 | $(pcedit) \ |
||
192 | -e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \ |
||
193 | -e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \ |
||
194 | -e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \ |
||
195 | -e 's,@GL_LIB@,$(GL_LIB),' |
||
196 | |||
197 | gl.pc: gl.pc.in |
||
198 | $(gl_pcedit) $< > $@ |
||
199 | |||
200 | osmesa_pcedit = sed \ |
||
201 | $(pcedit) \ |
||
202 | -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \ |
||
203 | -e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \ |
||
204 | -e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),' |
||
205 | |||
206 | osmesa.pc: osmesa.pc.in |
||
207 | $(osmesa_pcedit) $< > $@ |
||
208 | |||
209 | install-headers: |
||
210 | $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL |
||
211 | $(INSTALL) -m 644 $(TOP)/include/GL/*.h \ |
||
212 | $(DESTDIR)$(INSTALL_INC_DIR)/GL |
||
213 | |||
214 | install-libgl: default gl.pc install-headers |
||
215 | $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) |
||
216 | $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig |
||
217 | $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB) \ |
||
218 | $(DESTDIR)$(INSTALL_LIB_DIR) |
||
219 | $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig |
||
220 | |||
221 | install-osmesa: default osmesa.pc |
||
222 | $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) |
||
223 | $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig |
||
224 | $(MINSTALL) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_GLOB) \ |
||
225 | $(DESTDIR)$(INSTALL_LIB_DIR) |
||
226 | $(INSTALL) -m 644 osmesa.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig |
||
227 | |||
228 | install-dri: default |
||
229 | cd drivers/dri && $(MAKE) install |
||
230 | |||
231 | |||
232 | |||
233 | # Emacs tags |
||
234 | tags: |
||
235 | etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h |
||
236 | |||
237 | clean-es1: |
||
238 | -rm -f $(ES1_LIBS) |
||
239 | -rm -rf $(ES1_OBJ_DIR) |
||
240 | -rm -f depend.es1 depend.es1.bak |
||
241 | |||
242 | clean-es2: |
||
243 | -rm -f $(ES2_LIBS) |
||
244 | -rm -rf $(ES2_OBJ_DIR) |
||
245 | -rm -f depend.es2 depend.es2.bak |
||
246 | |||
247 | clean: clean-es1 clean-es2 |
||
248 | -rm -f */*.o |
||
249 | -rm -f */*/*.o |
||
250 | -rm -f depend depend.bak libmesa.a libmesagallium.a |
||
251 | -rm -f drivers/*/*.o |
||
252 | -rm -f *.pc |
||
253 | -@cd drivers/dri && $(MAKE) clean |
||
254 | -@cd drivers/x11 && $(MAKE) clean |
||
255 | -@cd drivers/osmesa && $(MAKE) clean |
||
256 | -@cd x86 && $(MAKE) clean |
||
257 | -@cd x86-64 && $(MAKE) clean |
||
258 | |||
259 | |||
260 | -include $(DEPENDS)>>>> |