From: Eric Anholt Date: Tue, 15 May 2012 01:38:54 +0000 (-0700) Subject: automake: Move top-level makefile to automake. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=07abd913b654a1a04a90db6203a92a14e4ae795a;p=mesa.git automake: Move top-level makefile to automake. This is part of a series to fix our build issues in the automake case by hooking up the automatic Makefile regeneration support. The extract_git_sha1 is moved into src/mesa/Makefile so that we get correct dependency generation. Reviewed-by: Kenneth Graunke --- diff --git a/.gitignore b/.gitignore index 717d45d236a..f481dc47e91 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ Makefile.in .dir-locals.el .deps/ .libs/ +/Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index 2a71ec8902a..00000000000 --- a/Makefile +++ /dev/null @@ -1,156 +0,0 @@ -# Top-level Mesa makefile - -TOP = . - -SUBDIRS = src - - -# The git command below generates an empty string when we're not -# building in a GIT tree (i.e., building from a release tarball). -default: $(TOP)/configs/current - @$(TOP)/bin/extract_git_sha1 - @for dir in $(SUBDIRS) ; do \ - if [ -d $$dir ] ; then \ - (cd $$dir && $(MAKE)) || exit 1 ; \ - fi \ - done - -all: default - - -doxygen: - cd doxygen && $(MAKE) - -check: - make -C src/glsl/tests check - make -C tests check - -clean: - -@touch $(TOP)/configs/current - -@for dir in $(SUBDIRS) ; do \ - if [ -d $$dir ] ; then \ - (cd $$dir && $(MAKE) clean) ; \ - fi \ - done - -@test -s $(TOP)/configs/current || rm -f $(TOP)/configs/current - - -realclean: clean - -rm -rf lib* - -rm -f $(TOP)/configs/current - -rm -f $(TOP)/configs/autoconf - -rm -rf autom4te.cache - -find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \ - -name depend -o -name depend.bak ')' -exec rm -f '{}' ';' - - -distclean: realclean - - -install: - @for dir in $(SUBDIRS) ; do \ - if [ -d $$dir ] ; then \ - (cd $$dir && $(MAKE) install) || exit 1 ; \ - fi \ - done - - -.PHONY: default doxygen clean realclean distclean install check - -# If there's no current configuration file -$(TOP)/configs/current: - @echo - @echo - @echo "Please run './configure' then 'make'" - @echo "See './configure --help' for details" - @echo - @echo "(ignore the following error message)" - @exit 1 - -# Rules for making release tarballs - -PACKAGE_VERSION=8.1-devel -PACKAGE_DIR = Mesa-$(PACKAGE_VERSION) -PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION) - -EXTRA_FILES = \ - aclocal.m4 \ - configure \ - tests/Makefile.in \ - tests/glx/Makefile.in \ - src/glsl/glsl_parser.cpp \ - src/glsl/glsl_parser.h \ - src/glsl/glsl_lexer.cpp \ - src/glsl/glcpp/glcpp-lex.c \ - src/glsl/glcpp/glcpp-parse.c \ - src/glsl/glcpp/glcpp-parse.h \ - src/mesa/main/api_exec_es1.c \ - src/mesa/main/api_exec_es1_dispatch.h \ - src/mesa/main/api_exec_es1_remap_helper.h \ - src/mesa/main/api_exec_es2.c \ - src/mesa/main/api_exec_es2_dispatch.h \ - src/mesa/main/api_exec_es2_remap_helper.h \ - src/mesa/program/lex.yy.c \ - src/mesa/program/program_parse.tab.c \ - src/mesa/program/program_parse.tab.h - -IGNORE_FILES = \ - -x autogen.sh - - -parsers: configure - -@touch $(TOP)/configs/current - $(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp - $(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h - $(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h - -# Everything for new a Mesa release: -ARCHIVES = $(PACKAGE_NAME).tar.gz \ - $(PACKAGE_NAME).tar.bz2 \ - $(PACKAGE_NAME).zip \ - -tarballs: md5 - rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar - -# Helper for autoconf builds -ACLOCAL = aclocal -ACLOCAL_FLAGS = -AUTOCONF = autoconf -AC_FLAGS = -aclocal.m4: configure.ac acinclude.m4 - $(ACLOCAL) $(ACLOCAL_FLAGS) -configure: configure.ac aclocal.m4 acinclude.m4 - $(AUTOCONF) $(AC_FLAGS) - -manifest.txt: .git - ( \ - ls -1 $(EXTRA_FILES) ; \ - git ls-files $(IGNORE_FILES) \ - ) | sed -e '/^\(.*\/\)\?\./d' -e "s@^@$(PACKAGE_DIR)/@" > $@ - -../$(PACKAGE_DIR): - ln -s $(PWD) $@ - -$(PACKAGE_NAME).tar: parsers ../$(PACKAGE_DIR) manifest.txt - cd .. ; tar -cf $(PACKAGE_DIR)/$(PACKAGE_NAME).tar -T $(PACKAGE_DIR)/manifest.txt - -$(PACKAGE_NAME).tar.gz: $(PACKAGE_NAME).tar ../$(PACKAGE_DIR) - gzip --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.gz - -$(PACKAGE_NAME).tar.bz2: $(PACKAGE_NAME).tar - bzip2 --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.bz2 - -$(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt - rm -f $(PACKAGE_NAME).zip ; \ - cd .. ; \ - zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \ - mv $(PACKAGE_NAME).zip $(PACKAGE_DIR) - -md5: $(ARCHIVES) - @-md5sum $(PACKAGE_NAME).tar.gz - @-md5sum $(PACKAGE_NAME).tar.bz2 - @-md5sum $(PACKAGE_NAME).zip - -am--refresh: - -.PHONY: tarballs md5 am--refresh diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000000..59fd9b58493 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,124 @@ +# Copyright © 2012 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +SUBDIRS = src tests + +doxygen: + cd doxygen && $(MAKE) + +check-local: + $(MAKE) -C src/glsl/tests check + +clean-local: + -@touch $(top_builddir)/configs/current + -@for dir in $(SUBDIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done + -@test -s $(top_builddir)/configs/current || rm -f $(top_builddir)/configs/current + + + +distclean-local: + -rm -rf lib* + -rm -f $(top_builddir)/configs/current + -rm -f $(top_builddir)/configs/autoconf + -find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \ + -name depend -o -name depend.bak ')' -exec rm -f '{}' ';' + +.PHONY: doxygen + +# Rules for making release tarballs + +PACKAGE_VERSION=8.1-devel +PACKAGE_DIR = Mesa-$(PACKAGE_VERSION) +PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION) + +EXTRA_FILES = \ + aclocal.m4 \ + configure \ + tests/Makefile.in \ + tests/glx/Makefile.in \ + src/glsl/glsl_parser.cpp \ + src/glsl/glsl_parser.h \ + src/glsl/glsl_lexer.cpp \ + src/glsl/glcpp/glcpp-lex.c \ + src/glsl/glcpp/glcpp-parse.c \ + src/glsl/glcpp/glcpp-parse.h \ + src/mesa/main/api_exec_es1.c \ + src/mesa/main/api_exec_es1_dispatch.h \ + src/mesa/main/api_exec_es1_remap_helper.h \ + src/mesa/main/api_exec_es2.c \ + src/mesa/main/api_exec_es2_dispatch.h \ + src/mesa/main/api_exec_es2_remap_helper.h \ + src/mesa/program/lex.yy.c \ + src/mesa/program/program_parse.tab.c \ + src/mesa/program/program_parse.tab.h + +IGNORE_FILES = \ + -x autogen.sh + + +parsers: configure + -@touch $(top_builddir)/configs/current + $(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp + $(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h + $(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h + +# Everything for new a Mesa release: +ARCHIVES = $(PACKAGE_NAME).tar.gz \ + $(PACKAGE_NAME).tar.bz2 \ + $(PACKAGE_NAME).zip + +tarballs: md5 + rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar + +manifest.txt: .git + ( \ + ls -1 $(EXTRA_FILES) ; \ + git ls-files $(IGNORE_FILES) \ + ) | sed -e '/^\(.*\/\)\?\./d' -e "s@^@$(PACKAGE_DIR)/@" > $@ + +../$(PACKAGE_DIR): + ln -s $(PWD) $@ + +$(PACKAGE_NAME).tar: parsers ../$(PACKAGE_DIR) manifest.txt + cd .. ; tar -cf $(PACKAGE_DIR)/$(PACKAGE_NAME).tar -T $(PACKAGE_DIR)/manifest.txt + +$(PACKAGE_NAME).tar.gz: $(PACKAGE_NAME).tar ../$(PACKAGE_DIR) + gzip --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.gz + +$(PACKAGE_NAME).tar.bz2: $(PACKAGE_NAME).tar + bzip2 --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.bz2 + +$(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt + rm -f $(PACKAGE_NAME).zip ; \ + cd .. ; \ + zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \ + mv $(PACKAGE_NAME).zip $(PACKAGE_DIR) + +md5: $(ARCHIVES) + @-md5sum $(PACKAGE_NAME).tar.gz + @-md5sum $(PACKAGE_NAME).tar.bz2 + @-md5sum $(PACKAGE_NAME).zip + +.PHONY: tarballs md5 diff --git a/bin/extract_git_sha1 b/bin/extract_git_sha1 deleted file mode 100755 index 828387016b2..00000000000 --- a/bin/extract_git_sha1 +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ ! -f src/mesa/main/git_sha1.h ]; then - touch src/mesa/main/git_sha1.h -fi - -if [ ! -d .git ]; then - exit -fi - -if which git > /dev/null; then - # Extract the 7-digit "short" SHA1 for the current HEAD, convert - # it to a string, and wrap it in a #define. This is used in - # src/mesa/main/version.c to put the GIT SHA1 in the GL_VERSION string. - git log -n 1 --oneline |\ - sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \ - > src/mesa/main/git_sha1.h.tmp - if ! cmp -s src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h; then - mv src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h - fi -fi diff --git a/configure.ac b/configure.ac index ec4fa431fad..0801c6c9142 100644 --- a/configure.ac +++ b/configure.ac @@ -2130,6 +2130,7 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" dnl Substitute the config AC_CONFIG_FILES([configs/autoconf + Makefile src/gallium/auxiliary/pipe-loader/Makefile src/gallium/state_trackers/clover/Makefile src/gallium/drivers/Makefile diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 05aea8d9307..845b524e6c5 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -36,6 +36,23 @@ MESA_CXXFLAGS := $(LLVM_CFLAGS) $(CXXFLAGS) # 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 + +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 + # include glapi_gen.mk for generating glapi headers for GLES GLAPI := $(TOP)/src/mapi/glapi/gen include $(GLAPI)/glapi_gen.mk