Makefile 3.82 KB
Newer Older
Brian Paul's avatar
Brian Paul committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
# src/mesa/Makefile

TOP = ../..
include $(TOP)/configs/current

include sources


GL_MAJOR = 1
GL_MINOR = 5
GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)


.c.o:
	$(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@

.S.o:
	$(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@


# Figure out what to make here
default:
	@if [ "${DRIVER_DIRS}" = "dri" ] ; then \
		make linux-solo ; \
	elif [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
		make osmesa-only ; \
	else \
		make stand-alone ; \
	fi


######################################################################
# Linux solo DRI drivers

SOLO_SOURCES = \
	$(MAIN_SOURCES)		\
	$(MATH_SOURCES)		\
	$(ARRAY_CACHE_SOURCES)	\
	$(TNL_SOURCES)		\
	$(SWRAST_SOURCES)	\
	$(SWRAST_SETUP_SOURCES)	\
	$(ASM_C_SOURCES)	\
	$(X86_SOURCES)

SOLO_OBJECTS = $(SOLO_SOURCES:.c=.o)


linux-solo: depend mesa.a drivers

# Make archive of core object files
mesa.a:	$(SOLO_OBJECTS)
	rm -f $@
	ar rcv $@ $(SOLO_OBJECTS)
	ranlib $@

drivers:
	cd drivers/dri ; make


######################################################################
# Stand-alone Mesa libGL and libOSMesa

STAND_ALONE_DRIVER_SOURCES = \
	$(COMMON_DRIVER_SOURCES) \
	$(X11_DRIVER_SOURCES) \
	$(GLIDE_DRIVER_SOURCES) \
	$(SVGA_DRIVER_SOURCES) \
	$(FBDEV_DRIVER_SOURCES)

STAND_ALONE_SOURCES = \
	$(CORE_SOURCES) \
	$(ASM_SOURCES) \
	$(STAND_ALONE_DRIVER_SOURCES)

# ASM_SOURCES is defined in the config file
ASM_OBJECTS = $(ASM_SOURCES:.S=.o)

STAND_ALONE_DRIVER_OBJECTS = $(STAND_ALONE_DRIVER_SOURCES:.c=.o)

STAND_ALONE_OBJECTS = \
	$(CORE_OBJECTS) \
	$(ASM_OBJECTS) \
	$(STAND_ALONE_DRIVER_OBJECTS)

# For libOSMesa16 or libOSMesa32 we link _all_ the objects into the library,
# not just the osmesa.o object (i.e. we don't have a libGL).
OSMESA16_OBJECTS = \
	$(CORE_OBJECTS) \
	$(ASM_OBJECTS) \
	$(COMMON_DRIVER_OBJECTS) \
	$(OSMESA_DRIVER_OBJECTS)



stand-alone: depend subdirs $(LIB_DIR)/$(GL_LIB_NAME) $(LIB_DIR)/$(OSMESA_LIB_NAME)

osmesa-only: depend subdirs $(LIB_DIR)/$(OSMESA_LIB_NAME)

subdirs:
	@pushd x86 ; \
	make ; \
	popd

# Make the GL library
$(LIB_DIR)/$(GL_LIB_NAME): $(STAND_ALONE_OBJECTS)
	$(TOP)/bin/mklib -o $(GL_LIB) -major $(GL_MAJOR) \
		-minor $(GL_MINOR) -patch $(GL_TINY) -install $(LIB_DIR) \
		$(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(STAND_ALONE_OBJECTS)

# Make the OSMesa library
$(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA_DRIVER_OBJECTS) $(OSMESA16_OBJECTS)
	if [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
		$(TOP)/bin/mklib -o $(OSMESA_LIB) -major $(MESA_MAJOR) \
			-minor $(MESA_MINOR) -patch $(MESA_TINY) \
			-install $(LIB_DIR) $(MKLIB_OPTIONS) \
			$(OSMESA_LIB_DEPS) $(OSMESA16_OBJECTS) ; \
	else \
		$(TOP)/bin/mklib -o $(OSMESA_LIB) -major $(MESA_MAJOR) \
			-minor $(MESA_MINOR) -patch $(GL_TINY) \
			-install $(LIB_DIR) $(MKLIB_OPTIONS) \
			$(OSMESA_LIB_DEPS) $(OSMESA_DRIVER_OBJECTS) ; \
	fi


######################################################################
# 16 (or 32) bit/channel OSMesa

# $(LIB_DIR)/$(OSMESA_LIB_NAME): $(OSMESA16_OBJECTS)
#	$(TOP)/bin/mklib -o $(OSMESA_LIB) \
#		-major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
#		-install $(LIB_DIR) \
#		$(MKLIB_OPTIONS) $(GL_LIB_DEPS) $(OSMESA16_OBJECTS)



######################################################################
# Generic stuff

ALL_SOURCES = \
	$(GLAPI_SOURCES)	\
	$(MAIN_SOURCES)		\
	$(MATH_SOURCES)		\
	$(ARRAY_CACHE_SOURCES)	\
	$(TNL_SOURCES)		\
	$(SWRAST_SOURCES)	\
	$(SWRAST_SETUP_SOURCES)	\
	$(ASM_C_SOURCES)	\
	$(X86_SOURCES)		\
	$(COMMON_DRIVER_SOURCES)


SUBDIRS = array_cache drivers/dri glapi main math sparc swrast swrast_setup \
	tnl tnl_dd


# Update dependencies
depend: $(ALL_SOURCES)
	touch depend
	makedepend -fdepend -Y $(INCLUDE_DIRS) $(ALL_SOURCES) >& /dev/null


# Emacs tags
tags:
	etags `find . -name \*.[ch]` `find ../include`

clean:
	-rm -f */*.o
168
	rm -f depend
Brian Paul's avatar
Brian Paul committed
169 170 171 172 173 174 175
	for dir in $(SUBDIRS) ; do \
		pushd $$dir ; \
		make clean ; \
		popd ; \
	done

include depend