New Makefile system
[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 .c.o:
15 $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
16
17 .S.o:
18 $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
19
20
21 # Figure out what to make here
22 default:
23 @if [ "${DRIVER_DIRS}" = "dri" ] ; then \
24 make linux-solo ; \
25 elif [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
26 make osmesa-only ; \
27 else \
28 make stand-alone ; \
29 fi
30
31
32 ######################################################################
33 # Linux solo DRI drivers
34
35 SOLO_SOURCES = \
36 $(MAIN_SOURCES) \
37 $(MATH_SOURCES) \
38 $(ARRAY_CACHE_SOURCES) \
39 $(TNL_SOURCES) \
40 $(SWRAST_SOURCES) \
41 $(SWRAST_SETUP_SOURCES) \
42 $(ASM_C_SOURCES) \
43 $(X86_SOURCES)
44
45 SOLO_OBJECTS = $(SOLO_SOURCES:.c=.o)
46
47
48 linux-solo: depend mesa.a drivers
49
50 # Make archive of core object files
51 mesa.a: $(SOLO_OBJECTS)
52 rm -f $@
53 ar rcv $@ $(SOLO_OBJECTS)
54 ranlib $@
55
56 drivers:
57 cd drivers/dri ; make
58
59
60 ######################################################################
61 # Stand-alone Mesa libGL and libOSMesa
62
63 STAND_ALONE_DRIVER_SOURCES = \
64 $(COMMON_DRIVER_SOURCES) \
65 $(X11_DRIVER_SOURCES) \
66 $(GLIDE_DRIVER_SOURCES) \
67 $(SVGA_DRIVER_SOURCES) \
68 $(FBDEV_DRIVER_SOURCES)
69
70 STAND_ALONE_SOURCES = \
71 $(CORE_SOURCES) \
72 $(ASM_SOURCES) \
73 $(STAND_ALONE_DRIVER_SOURCES)
74
75 # ASM_SOURCES is defined in the config file
76 ASM_OBJECTS = $(ASM_SOURCES:.S=.o)
77
78 STAND_ALONE_DRIVER_OBJECTS = $(STAND_ALONE_DRIVER_SOURCES:.c=.o)
79
80 STAND_ALONE_OBJECTS = \
81 $(CORE_OBJECTS) \
82 $(ASM_OBJECTS) \
83 $(STAND_ALONE_DRIVER_OBJECTS)
84
85 # For libOSMesa16 or libOSMesa32 we link _all_ the objects into the library,
86 # not just the osmesa.o object (i.e. we don't have a libGL).
87 OSMESA16_OBJECTS = \
88 $(CORE_OBJECTS) \
89 $(ASM_OBJECTS) \
90 $(COMMON_DRIVER_OBJECTS) \
91 $(OSMESA_DRIVER_OBJECTS)
92
93
94
95 stand-alone: depend subdirs $(LIB_DIR)/$(GL_LIB_NAME) $(LIB_DIR)/$(OSMESA_LIB_NAME)
96
97 osmesa-only: depend subdirs $(LIB_DIR)/$(OSMESA_LIB_NAME)
98
99 subdirs:
100 @pushd x86 ; \
101 make ; \
102 popd
103
104 # Make the GL library
105 $(LIB_DIR)/$(GL_LIB_NAME): $(STAND_ALONE_OBJECTS)
106 $(TOP)/bin/mklib -o $(GL_LIB) -major $(GL_MAJOR) \
107 -minor $(GL_MINOR) -patch $(GL_TINY) -install $(LIB_DIR) \
108 $(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(STAND_ALONE_OBJECTS)
109
110 # Make the OSMesa library
111 $(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA_DRIVER_OBJECTS) $(OSMESA16_OBJECTS)
112 if [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
113 $(TOP)/bin/mklib -o $(OSMESA_LIB) -major $(MESA_MAJOR) \
114 -minor $(MESA_MINOR) -patch $(MESA_TINY) \
115 -install $(LIB_DIR) $(MKLIB_OPTIONS) \
116 $(OSMESA_LIB_DEPS) $(OSMESA16_OBJECTS) ; \
117 else \
118 $(TOP)/bin/mklib -o $(OSMESA_LIB) -major $(MESA_MAJOR) \
119 -minor $(MESA_MINOR) -patch $(GL_TINY) \
120 -install $(LIB_DIR) $(MKLIB_OPTIONS) \
121 $(OSMESA_LIB_DEPS) $(OSMESA_DRIVER_OBJECTS) ; \
122 fi
123
124
125 ######################################################################
126 # 16 (or 32) bit/channel OSMesa
127
128 # $(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA16_OBJECTS)
129 # $(TOP)/bin/mklib -o $(OSMESA_LIB) \
130 # -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
131 # -install $(LIB_DIR) \
132 # $(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(OSMESA16_OBJECTS)
133
134
135
136 ######################################################################
137 # Generic stuff
138
139 ALL_SOURCES = \
140 $(GLAPI_SOURCES) \
141 $(MAIN_SOURCES) \
142 $(MATH_SOURCES) \
143 $(ARRAY_CACHE_SOURCES) \
144 $(TNL_SOURCES) \
145 $(SWRAST_SOURCES) \
146 $(SWRAST_SETUP_SOURCES) \
147 $(ASM_C_SOURCES) \
148 $(X86_SOURCES) \
149 $(COMMON_DRIVER_SOURCES)
150
151
152 SUBDIRS = array_cache drivers/dri glapi main math sparc swrast swrast_setup \
153 tnl tnl_dd
154
155
156 # Update dependencies
157 depend: $(ALL_SOURCES)
158 touch depend
159 makedepend -fdepend -Y $(INCLUDE_DIRS) $(ALL_SOURCES) >& /dev/null
160
161
162 # Emacs tags
163 tags:
164 etags `find . -name \*.[ch]` `find ../include`
165
166 clean:
167 -rm -f */*.o
168 for dir in $(SUBDIRS) ; do \
169 pushd $$dir ; \
170 make clean ; \
171 popd ; \
172 done
173
174 include depend