1 # src/gallium/Makefile.template 2 3 # Template makefile for gallium libraries. 4 # 5 # Usage: 6 # The minimum that the including makefile needs to define 7 # is TOP, LIBNAME and one of of the *_SOURCES. 8 # 9 # Optional defines: 10 # LIBRARY_INCLUDES are appended to the list of includes directories. 11 # LIBRARY_DEFINES is not used for makedepend, but for compilation. 12 13 ### Basic defines ### 14 15 OBJECTS = $(C_SOURCES:.c=.o) \ 16 $(CPP_SOURCES:.cpp=.o) \ 17 $(ASM_SOURCES:.S=.o) 18 19 INCLUDES = \ 20 -I. \ 21 -I$(TOP)/src/gallium/include \ 22 -I$(TOP)/src/gallium/auxiliary \ 23 -I$(TOP)/src/gallium/drivers \ 24 $(LIBRARY_INCLUDES) 25 26 ifeq ($(MESA_LLVM),1) 27 LIBRARY_DEFINES += $(LLVM_CFLAGS) 28 endif 29 30 31 ##### TARGETS ##### 32 33 default: depend lib$(LIBNAME).a $(PROGS) 34 35 lib$(LIBNAME).a: $(OBJECTS) $(EXTRA_OBJECTS) Makefile $(TOP)/src/gallium/Makefile.template 36 $(MKLIB) -o $(LIBNAME) -static $(OBJECTS) $(EXTRA_OBJECTS) 37 38 depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES) 39 rm -f depend 40 touch depend 41 $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null 42 43 $(PROGS): % : %.o $(PROGS_DEPS) 44 $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group $(LIBS) -Wl,--end-group 45 46 # Emacs tags 47 tags: 48 etags `find . -name \*.[ch]` `find $(TOP)/src/gallium/include -name \*.h` 49 50 # Remove .o and backup files 51 clean: 52 rm -f $(OBJECTS) $(GENERATED_SOURCES) $(PROGS) lib$(LIBNAME).a depend depend.bak $(CLEAN_EXTRA) 53 54 # Dummy target 55 install: 56 @echo -n "" 57 58 ##### RULES ##### 59 60 %.s: %.c 61 $(CC) -S $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@ 62 63 %.o: %.c 64 $(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@ 65 66 %.o: %.cpp 67 $(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@ 68 69 %.o: %.S 70 $(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@ 71 72 73 sinclude depend 74