X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2FMakefile;h=6a6be276fd08597a4048abfd31b473f9d35bbe49;hb=bd18a236dead98ae34467d59f76c77d94226399e;hp=3bb2f39475b094398178be0176fbd8bee6f6ec0c;hpb=3293bcdc80cdfa20a2381aae2b94505bdf95d857;p=mesa.git diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 3bb2f39475b..6a6be276fd0 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -6,65 +6,83 @@ include $(TOP)/configs/current MESA_LIBS := libmesa.a libmesagallium.a DEPENDS := depend -ifeq ($(GLES_OVERLAY),1) -ES1_LIBS := libes1gallium.a -ES2_LIBS := libes2gallium.a -DEPENDS += depend.es1 depend.es2 -endif +SRCDIR = . +include sources.mak -MESA_OBJ_DIR := . -ES1_OBJ_DIR := objs-es1 -ES2_OBJ_DIR := objs-es2 +# define preprocessor flags +MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES) -MESA_CPPFLAGS := $(API_DEFINES) -ES1_CPPFLAGS := -DFEATURE_ES1=1 -D__GL_EXPORTS -ES2_CPPFLAGS := -DFEATURE_ES2=1 -D__GL_EXPORTS +# append include dirs +MESA_CPPFLAGS += $(INCLUDE_DIRS) -include sources.mak +# tidy compiler flags +CFLAGS := $(filter-out $(DEFINES), $(CFLAGS)) +CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS)) -# adjust object dirs -ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_OBJECTS)) -ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_OBJECTS)) -MESA_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_OBJECTS)) +# LLVM is needed for the state tracker +MESA_CFLAGS := $(LLVM_CFLAGS) $(CFLAGS) +MESA_CXXFLAGS := $(LLVM_CFLAGS) $(CXXFLAGS) -ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) -ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) -MESA_GALLIUM_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS)) +%.o: %.c + $(CC) -c -o $@ $< $(MESA_CPPFLAGS) $(MESA_CFLAGS) -# adjust include dirs -MESA_INCLUDES := $(INCLUDE_DIRS) -ES1_INCLUDES := -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS) -ES2_INCLUDES := -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS) +%.o: %.cpp + $(CXX) -c -o $@ $< $(MESA_CPPFLAGS) $(MESA_CXXFLAGS) +%.o: %.S + $(CC) -c -o $@ $< $(MESA_CPPFLAGS) $(MESA_CFLAGS) -define mesa-cc-c - @mkdir -p $(dir $@) - $(CC) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_INCLUDES) $(CFLAGS) -endef +# Default: build dependencies, then asm_subdirs, GLSL built-in lib, +# then convenience libs (.a) and finally the device drivers: +default: $(DEPENDS) asm_subdirs $(MESA_LIBS) driver_subdirs + +.PHONY: main/git_sha1.h.tmp +main/git_sha1.h.tmp: + @touch main/git_sha1.h.tmp + @if test -d ../../.git; then \ + if which git > /dev/null; then \ + git log -n 1 --oneline | \ + sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \ + > main/git_sha1.h.tmp ; \ + fi \ + fi -$(MESA_OBJ_DIR)/%.o: %.c - $(call mesa-cc-c,MESA) +main/git_sha1.h: main/git_sha1.h.tmp + @echo "updating main/git_sha1.h" + @if ! cmp -s main/git_sha1.h.tmp main/git_sha1.h; then \ + mv main/git_sha1.h.tmp main/git_sha1.h ;\ + fi -$(MESA_OBJ_DIR)/%.o: %.S - $(call mesa-cc-c,MESA) +# include glapi_gen.mk for generating glapi headers for GLES +GLAPI := $(TOP)/src/mapi/glapi/gen +include $(GLAPI)/glapi_gen.mk -$(ES1_OBJ_DIR)/%.o: %.c - $(call mesa-cc-c,ES1) +BUILT_SOURCES = \ + main/api_exec_es1_dispatch.h \ + main/api_exec_es1_remap_helper.h \ + main/api_exec_es2_dispatch.h \ + main/api_exec_es2_remap_helper.h \ + main/api_exec_es1.c \ + main/api_exec_es2.c \ + program/program_parse.tab.c \ + program/program_parse.tab.h \ + program/lex.yy.c -$(ES1_OBJ_DIR)/%.o: %.S - $(call mesa-cc-c,ES1) +main/api_exec_es1_dispatch.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_dispatch_deps) + $(call glapi_gen_dispatch,$<,es1) -$(ES2_OBJ_DIR)/%.o: %.c - $(call mesa-cc-c,ES2) +main/api_exec_es1_remap_helper.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_remap_deps) + $(call glapi_gen_remap,$<,es1) -$(ES2_OBJ_DIR)/%.o: %.S - $(call mesa-cc-c,ES2) +main/api_exec_es1.o: main/api_exec_es1_dispatch.h main/api_exec_es1_remap_helper.h +main/api_exec_es2_dispatch.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_dispatch_deps) + $(call glapi_gen_dispatch,$<,es2) -# Default: build dependencies, then asm_subdirs, GLSL built-in lib, -# then convenience libs (.a) and finally the device drivers: -default: $(DEPENDS) asm_subdirs glsl_builtin \ - $(MESA_LIBS) $(ES1_LIBS) $(ES2_LIBS) driver_subdirs +main/api_exec_es2_remap_helper.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_remap_deps) + $(call glapi_gen_remap,$<,es2) + +main/api_exec_es2.o: main/api_exec_es2_dispatch.h main/api_exec_es2_remap_helper.h main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ @@ -72,6 +90,17 @@ main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py m main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ +program/program_parse.tab.c program/program_parse.tab.h: program/program_parse.y + $(BISON) -v -d --output=program/program_parse.tab.c $< + +program/lex.yy.c: program/program_lexer.l + $(FLEX) --never-interactive --outfile=$@ $< + +ifneq (,$(DRICORE_LIBS)) +DRICORE_TARGET = dricore +DRICORE_INSTALL_TARGET = install-dricore +endif + ###################################################################### # Helper libraries used by many drivers: @@ -79,68 +108,37 @@ main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py m libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS) @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS) -libes1.a: $(ES1_OBJECTS) $(GLSL_LIBS) - @$(MKLIB) -o es1 -static $(ES1_OBJECTS) $(GLSL_LIBS) - -libes2.a: $(ES2_OBJECTS) $(GLSL_LIBS) - @$(MKLIB) -o es2 -static $(ES2_OBJECTS) $(GLSL_LIBS) - # Make archive of subset of core mesa object files for gallium libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS) @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS) -libes1gallium.a: $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS) - @$(MKLIB) -o es1gallium -static $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS) - -libes2gallium.a: $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS) - @$(MKLIB) -o es2gallium -static $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS) +dricore: $(BUILT_SOURCES) + @ (cd libdricore && $(MAKE)) ###################################################################### # Device drivers -driver_subdirs: $(MESA_LIBS) +driver_subdirs: $(MESA_LIBS) $(DRICORE_TARGET) @ (cd drivers && $(MAKE)) ###################################################################### # Assembly subdirs asm_subdirs: - @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_ASM ; then \ + @ if echo "$(DEFINES)" | grep -q USE_X86_ASM ; then \ (cd x86 && $(MAKE)) || exit 1 ; \ fi - @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_64_ASM ; then \ - (cd x86 && $(MAKE)) || exit 1 ; \ + @ if echo "$(DEFINES)" | grep -q USE_X86_64_ASM ; then \ (cd x86-64 && $(MAKE)) || exit 1 ; \ fi - -###################################################################### -# GLSL built-in library -glsl_builtin: - (cd shader/slang/library && $(MAKE)) || exit 1 ; - - ###################################################################### # Dependency generation -depend: $(ALL_SOURCES) +depend: $(ALL_FILES) main/git_sha1.h @ echo "running $(MKDEP)" @ touch depend - @$(MKDEP) $(MKDEP_OPTIONS) -p$(MESA_OBJ_DIR)/ $(DEFINES) \ - $(INCLUDE_DIRS) $(ALL_SOURCES) > /dev/null 2>/dev/null - -depend.es1: $(ALL_SOURCES) - @echo "running $(MKDEP) for ES1" - @touch $@ - @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES1_OBJ_DIR)/ $(DEFINES) \ - $(ES1_CPPFLAGS) $(ES1_INCLUDES) $(ALL_SOURCES) \ - > /dev/null 2>/dev/null - -depend.es2: $(ALL_SOURCES) - @echo "running $(MKDEP) for ES2" - @touch $@ - @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES2_OBJ_DIR)/ $(DEFINES) \ - $(ES2_CPPFLAGS) $(ES2_INCLUDES) $(ALL_SOURCES) \ - > /dev/null 2>/dev/null + @$(MKDEP) $(MKDEP_OPTIONS) $(MESA_CPPFLAGS) \ + $(ALL_FILES) > /dev/null 2>/dev/null ###################################################################### # Installation rules @@ -149,9 +147,8 @@ depend.es2: $(ALL_SOURCES) new_install: (cd drivers && $(MAKE) install) - # XXX replace this with new_install above someday -install: default +install: default $(DRICORE_INSTALL_TARGET) @for driver in $(DRIVER_DIRS) ; do \ case "$$driver" in \ osmesa) if [ "$(DRIVER_DIRS)" = osmesa ]; then \ @@ -159,50 +156,22 @@ install: default else \ $(MAKE) install-osmesa || exit 1 ; \ fi ;; \ - dri) $(MAKE) install-libgl install-dri || exit 1 ;; \ - *) $(MAKE) install-libgl || exit 1 ;; \ + dri) $(MAKE) install-libgl-pc install-dri || exit 1 ;; \ + *) $(MAKE) install-libgl-pc || exit 1 ;; \ esac ; \ done -pcedit = \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ - -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ - -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ - - -gl_pcedit = sed \ - $(pcedit) \ - -e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \ - -e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \ - -e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \ - -e 's,@GL_LIB@,$(GL_LIB),' - -gl.pc: gl.pc.in - $(gl_pcedit) $< > $@ - -osmesa_pcedit = sed \ - $(pcedit) \ - -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \ - -e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \ - -e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),' - -osmesa.pc: osmesa.pc.in - $(osmesa_pcedit) $< > $@ - install-headers: $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL $(INSTALL) -m 644 $(TOP)/include/GL/*.h \ $(DESTDIR)$(INSTALL_INC_DIR)/GL -install-libgl: default gl.pc install-headers +install-libgl-pc: install-headers $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB) \ - $(DESTDIR)$(INSTALL_LIB_DIR) $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -install-osmesa: default osmesa.pc +install-osmesa: default $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig $(MINSTALL) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_GLOB) \ @@ -212,34 +181,25 @@ install-osmesa: default osmesa.pc install-dri: default cd drivers/dri && $(MAKE) install - +install-dricore: default + @ (cd libdricore && $(MAKE) install) # Emacs tags tags: etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h -clean-es1: - -rm -f $(ES1_LIBS) - -rm -rf $(ES1_OBJ_DIR) - -rm -f depend.es1 depend.es1.bak - -clean-es2: - -rm -f $(ES2_LIBS) - -rm -rf $(ES2_OBJ_DIR) - -rm -f depend.es2 depend.es2.bak - -clean: clean-es1 clean-es2 +clean: -rm -f */*.o -rm -f */*/*.o -rm -f depend depend.bak libmesa.a libmesagallium.a -rm -f drivers/*/*.o - -rm -f *.pc - -rm -f shader/slang/library/*_gc.h + -rm -f $(BUILT_SOURCES) -@cd drivers/dri && $(MAKE) clean -@cd drivers/x11 && $(MAKE) clean -@cd drivers/osmesa && $(MAKE) clean -@cd x86 && $(MAKE) clean -@cd x86-64 && $(MAKE) clean + -@cd libdricore && $(MAKE) clean -include $(DEPENDS)