Subversion Repositories Kolibri OS

Rev

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)