6e13f5289c5ec825456d544c623026436210f3b0
[mesa.git] / src / mesa / Makefile
1 # src/mesa/Makefile
2
3 TOP = ../..
4 include $(TOP)/configs/current
5
6 include sources
7
8
9 GL_MAJOR = 1
10 GL_MINOR = 5
11 GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)
12
13
14 .SUFFIXES : .cpp
15
16 .c.o:
17 $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
18
19 .cpp.o:
20 $(CXX) -c $(INCLUDE_DIRS) $(CXXFLAGS) $< -o $@
21
22 .S.o:
23 $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
24
25
26 # Figure out what to make here
27 default:
28 @if [ "${DRIVER_DIRS}" = "dri" ] ; then \
29 $(MAKE) linux-solo ; \
30 elif [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
31 $(MAKE) osmesa-only ; \
32 elif [ "$(DRIVER_DIRS)" = "beos" ]; then \
33 $(MAKE) beos ; \
34 elif [ "$(DRIVER_DIRS)" = "directfb" ]; then \
35 $(MAKE) directfb; \
36 else \
37 $(MAKE) stand-alone ; \
38 fi
39
40 # BeOS driver target
41 beos: depend subdirs mesa.a
42 cd drivers/beos; $(MAKE)
43
44
45 install: default
46 @if [ "${DRIVER_DIRS}" = "dri" ] ; then \
47 cd drivers/dri ; $(MAKE) install ; \
48 fi
49
50 ######################################################################
51 # Linux solo DRI drivers
52
53 SOLO_C_SOURCES = \
54 $(MAIN_SOURCES) \
55 $(MATH_SOURCES) \
56 $(ARRAY_CACHE_SOURCES) \
57 $(TNL_SOURCES) \
58 $(SWRAST_SOURCES) \
59 $(SWRAST_SETUP_SOURCES) \
60 $(SHADER_SOURCES) \
61 $(SLANG_SOURCES) \
62 $(ASM_C_SOURCES)
63
64 SOLO_OBJECTS = $(SOLO_C_SOURCES:.c=.o) \
65 $(ASM_SOURCES:.S=.o)
66
67 linux-solo: depend subdirs mesa.a drivers-dri
68
69 # Make archive of core object files
70 mesa.a: $(SOLO_OBJECTS)
71 rm -f $@
72 ar rcv $@ $(SOLO_OBJECTS)
73 ranlib $@
74 @if [ "${CONFIG_NAME}" = "beos" ] ; then \
75 mimeset -f "$@" ; \
76 fi
77
78 # note: cannot use the name of the directory ("drivers") as the
79 # target, otherwise make will look & see that the "drivers" directory
80 # already exists, so not try to rebuild it...
81 drivers-dri:
82 cd drivers/dri ; $(MAKE)
83
84
85
86 #####################################################################
87 # Stand-alone Mesa libGL, no built-in drivers (DirectFB)
88
89 LIBGL_CORE_SOURCES = \
90 $(CORE_SOURCES) \
91 $(ASM_SOURCES)
92
93 LIBGL_CORE_OBJECTS = \
94 $(CORE_OBJECTS) \
95 $(ASM_SOURCES:.S=.o)
96
97 # Make libGL from core object files
98 libgl-core: $(LIBGL_CORE_OBJECTS)
99 @ CC="$(CC)" CXX="$(CXX)" $(TOP)/bin/mklib -o $(GL_LIB) \
100 -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
101 -install $(LIB_DIR) $(MKLIB_OPTIONS) $(LIBGL_CORE_OBJECTS) $(GL_LIB_DEPS)
102
103 # DirectFB driver target
104 directfb: depend subdirs libgl-core
105 cd drivers/directfb; $(MAKE)
106
107
108
109 ######################################################################
110 # Stand-alone Mesa libGL and libOSMesa
111
112 STAND_ALONE_DRIVER_SOURCES = \
113 $(COMMON_DRIVER_SOURCES) \
114 $(X11_DRIVER_SOURCES) \
115 $(GLIDE_DRIVER_SOURCES) \
116 $(SVGA_DRIVER_SOURCES) \
117 $(FBDEV_DRIVER_SOURCES)
118
119 STAND_ALONE_SOURCES = \
120 $(CORE_SOURCES) \
121 $(ASM_SOURCES) \
122 $(STAND_ALONE_DRIVER_SOURCES)
123
124 # ASM_SOURCES is defined in the config file
125 ASM_OBJECTS = $(ASM_SOURCES:.S=.o)
126
127 STAND_ALONE_DRIVER_OBJECTS = $(STAND_ALONE_DRIVER_SOURCES:.c=.o)
128
129 STAND_ALONE_OBJECTS = \
130 $(CORE_OBJECTS) \
131 $(ASM_OBJECTS) \
132 $(STAND_ALONE_DRIVER_OBJECTS)
133
134 # For libOSMesa16 or libOSMesa32 we link _all_ the objects into the library,
135 # not just the osmesa.o object (i.e. we don't have a libGL).
136 OSMESA16_OBJECTS = \
137 $(CORE_OBJECTS) \
138 $(ASM_OBJECTS) \
139 $(COMMON_DRIVER_OBJECTS) \
140 $(OSMESA_DRIVER_OBJECTS)
141
142
143 stand-alone: depend subdirs $(LIB_DIR)/$(GL_LIB_NAME) $(LIB_DIR)/$(OSMESA_LIB_NAME)
144
145 osmesa-only: depend subdirs $(LIB_DIR)/$(OSMESA_LIB_NAME)
146
147 subdirs:
148 @ (cd x86 ; $(MAKE))
149 @ (cd x86-64 ; $(MAKE))
150
151 # Make the GL library
152 $(LIB_DIR)/$(GL_LIB_NAME): $(STAND_ALONE_OBJECTS)
153 @ CC="$(CC)" CXX="$(CXX)" $(TOP)/bin/mklib -o $(GL_LIB) \
154 -major $(GL_MAJOR) -minor $(GL_MINOR) -patch $(GL_TINY) \
155 -install $(LIB_DIR) \
156 $(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(STAND_ALONE_OBJECTS)
157
158 # Make the OSMesa library
159 $(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA_DRIVER_OBJECTS) $(OSMESA16_OBJECTS)
160 @ if [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
161 CC="$(CC)" CXX="$(CXX)" $(TOP)/bin/mklib -o $(OSMESA_LIB) \
162 -major $(MESA_MAJOR) \
163 -minor $(MESA_MINOR) -patch $(MESA_TINY) \
164 -install $(LIB_DIR) $(MKLIB_OPTIONS) \
165 $(OSMESA_LIB_DEPS) $(OSMESA16_OBJECTS) ; \
166 else \
167 CC="$(CC)" CXX="$(CXX)" $(TOP)/bin/mklib -o $(OSMESA_LIB) \
168 -major $(MESA_MAJOR) \
169 -minor $(MESA_MINOR) -patch $(GL_TINY) \
170 -install $(LIB_DIR) $(MKLIB_OPTIONS) \
171 $(OSMESA_LIB_DEPS) $(OSMESA_DRIVER_OBJECTS) ; \
172 fi
173
174
175 ######################################################################
176 # 16 (or 32) bit/channel OSMesa
177
178 # $(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA16_OBJECTS)
179 # $(TOP)/bin/mklib -o $(OSMESA_LIB) \
180 # -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
181 # -install $(LIB_DIR) \
182 # $(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(OSMESA16_OBJECTS)
183
184
185
186 ######################################################################
187 # Generic stuff
188
189 ALL_SOURCES = \
190 $(GLAPI_SOURCES) \
191 $(MAIN_SOURCES) \
192 $(MATH_SOURCES) \
193 $(ARRAY_CACHE_SOURCES) \
194 $(TNL_SOURCES) \
195 $(SHADER_SOURCES) \
196 $(SWRAST_SOURCES) \
197 $(SWRAST_SETUP_SOURCES) \
198 $(ASM_C_SOURCES) \
199 $(X86_SOURCES) \
200 $(COMMON_DRIVER_SOURCES)\
201 $(X11_DRIVER_SOURCES) \
202 $(OSMESA_DRIVER_SOURCES)
203
204
205 SUBDIRS = array_cache drivers/dri glapi main math sparc swrast swrast_setup \
206 tnl tnl_dd
207
208
209 # Update dependencies
210 depend: $(ALL_SOURCES)
211 @ echo "running $(MKDEP)"
212 @ touch depend
213 $(MKDEP) $(MKDEP_OPTIONS) $(DEFINES) $(INCLUDE_DIRS) $(ALL_SOURCES) \
214 > /dev/null
215
216
217 # Emacs tags
218 tags:
219 etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h
220
221 clean:
222 -rm -f */*.o
223 -rm -f */*/*.o
224 -rm -f depend depend.bak mesa.a
225 -rm -f drivers/*/*.o
226 (cd drivers/dri ; $(MAKE) clean)
227 (cd x86 ; $(MAKE) clean)
228 (cd x86-64 ; $(MAKE) clean)
229
230 include depend