Remove talloc from the make and automake build systems.
[mesa.git] / src / mesa / Makefile
1 # src/mesa/Makefile
2
3 TOP = ../..
4 include $(TOP)/configs/current
5
6 MESA_LIBS := libmesa.a libmesagallium.a
7 DEPENDS := depend
8
9 MESA_OBJ_DIR := .
10
11
12 include sources.mak
13
14 # adjust object dirs
15 MESA_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_OBJECTS))
16 MESA_GALLIUM_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
17
18 # define preprocessor flags
19 MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES)
20
21 # append include dirs
22 MESA_CPPFLAGS += $(INCLUDE_DIRS)
23
24 # tidy compiler flags
25 CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
26 CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS))
27
28 # LLVM is needed for the state tracker
29 MESA_CFLAGS := $(LLVM_CFLAGS)
30
31 define mesa-cc-c
32 @mkdir -p $(dir $@)
33 $(CC) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CFLAGS)
34 endef
35
36 define mesa-cxx-c
37 @mkdir -p $(dir $@)
38 $(CXX) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CXXFLAGS)
39 endef
40
41 $(MESA_OBJ_DIR)/%.o: %.c
42 $(call mesa-cc-c,MESA)
43
44 $(MESA_OBJ_DIR)/%.o: %.cpp
45 $(call mesa-cxx-c,MESA)
46
47 $(MESA_OBJ_DIR)/%.o: %.S
48 $(call mesa-cc-c,MESA)
49
50 # Default: build dependencies, then asm_subdirs, GLSL built-in lib,
51 # then convenience libs (.a) and finally the device drivers:
52 default: $(DEPENDS) asm_subdirs $(MESA_LIBS) driver_subdirs
53
54 main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
55 $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
56
57 main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
58 $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@
59
60 ######################################################################
61 # Helper libraries used by many drivers:
62
63 # Make archive of core mesa object files
64 libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS)
65 @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS)
66
67 # Make archive of subset of core mesa object files for gallium
68 libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
69 @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
70
71 ######################################################################
72 # Device drivers
73 driver_subdirs: $(MESA_LIBS)
74 @ (cd drivers && $(MAKE))
75
76
77 ######################################################################
78 # Assembly subdirs
79 asm_subdirs:
80 @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_ASM ; then \
81 (cd x86 && $(MAKE)) || exit 1 ; \
82 fi
83 @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_64_ASM ; then \
84 (cd x86 && $(MAKE)) || exit 1 ; \
85 (cd x86-64 && $(MAKE)) || exit 1 ; \
86 fi
87
88
89 ######################################################################
90 # Dependency generation
91
92 depend: $(ALL_SOURCES)
93 @ echo "running $(MKDEP)"
94 @ touch depend
95 @$(MKDEP) $(MKDEP_OPTIONS) -p$(MESA_OBJ_DIR)/ $(MESA_CPPFLAGS) \
96 $(ALL_SOURCES) > /dev/null 2>/dev/null
97
98 ######################################################################
99 # Installation rules
100
101 # this isn't fleshed out yet but is probably the way to go in the future
102 new_install:
103 (cd drivers && $(MAKE) install)
104
105
106 # XXX replace this with new_install above someday
107 install: default
108 @for driver in $(DRIVER_DIRS) ; do \
109 case "$$driver" in \
110 osmesa) if [ "$(DRIVER_DIRS)" = osmesa ]; then \
111 $(MAKE) install-headers install-osmesa || exit 1 ; \
112 else \
113 $(MAKE) install-osmesa || exit 1 ; \
114 fi ;; \
115 dri) $(MAKE) install-libgl install-dri || exit 1 ;; \
116 *) $(MAKE) install-libgl || exit 1 ;; \
117 esac ; \
118 done
119
120 pcedit = \
121 -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
122 -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
123 -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
124 -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
125
126
127 gl_pcedit = sed \
128 $(pcedit) \
129 -e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \
130 -e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \
131 -e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \
132 -e 's,@GLX_TLS@,$(GLX_TLS),' \
133 -e 's,@GL_LIB@,$(GL_LIB),'
134
135 gl.pc: gl.pc.in
136 $(gl_pcedit) $< > $@
137
138 osmesa_pcedit = sed \
139 $(pcedit) \
140 -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \
141 -e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \
142 -e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),'
143
144 osmesa.pc: osmesa.pc.in
145 $(osmesa_pcedit) $< > $@
146
147 install-headers:
148 $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL
149 $(INSTALL) -m 644 $(TOP)/include/GL/*.h \
150 $(DESTDIR)$(INSTALL_INC_DIR)/GL
151
152 install-libgl: default gl.pc install-headers
153 $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
154 $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
155 $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB) \
156 $(DESTDIR)$(INSTALL_LIB_DIR)
157 $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
158
159 install-osmesa: default osmesa.pc
160 $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
161 $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
162 $(MINSTALL) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_GLOB) \
163 $(DESTDIR)$(INSTALL_LIB_DIR)
164 $(INSTALL) -m 644 osmesa.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
165
166 install-dri: default
167 cd drivers/dri && $(MAKE) install
168
169
170
171 # Emacs tags
172 tags:
173 etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h
174
175 clean:
176 -rm -f */*.o
177 -rm -f */*/*.o
178 -rm -f depend depend.bak libmesa.a libmesagallium.a
179 -rm -f drivers/*/*.o
180 -rm -f *.pc
181 -@cd drivers/dri && $(MAKE) clean
182 -@cd drivers/x11 && $(MAKE) clean
183 -@cd drivers/osmesa && $(MAKE) clean
184 -@cd x86 && $(MAKE) clean
185 -@cd x86-64 && $(MAKE) clean
186
187
188 -include $(DEPENDS)