Mesa (master): automake: Move top-level makefile to automake.

Eric Anholt anholt at kemper.freedesktop.org
Mon Jun 11 16:32:06 UTC 2012


Module: Mesa
Branch: master
Commit: 07abd913b654a1a04a90db6203a92a14e4ae795a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=07abd913b654a1a04a90db6203a92a14e4ae795a

Author: Eric Anholt <eric at anholt.net>
Date:   Mon May 14 18:38:54 2012 -0700

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 <kenneth at whitecape.org>

---

 .gitignore              |    1 +
 Makefile => Makefile.am |  102 ++++++++++++++++-------------------------------
 bin/extract_git_sha1    |   20 ---------
 configure.ac            |    1 +
 src/mesa/Makefile       |   17 ++++++++
 5 files changed, 54 insertions(+), 87 deletions(-)

diff --git a/.gitignore b/.gitignore
index 717d45d..f481dc4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,3 +40,4 @@ Makefile.in
 .dir-locals.el
 .deps/
 .libs/
+/Makefile
diff --git a/Makefile b/Makefile.am
similarity index 61%
rename from Makefile
rename to Makefile.am
index 2a71ec8..59fd9b5 100644
--- a/Makefile
+++ b/Makefile.am
@@ -1,71 +1,51 @@
-# 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
-
+# 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:
-	make -C src/glsl/tests check
-	make -C tests check
+check-local:
+	$(MAKE) -C src/glsl/tests check
 
-clean:
-	- at touch $(TOP)/configs/current
+clean-local:
+	- at touch $(top_builddir)/configs/current
 	- at for dir in $(SUBDIRS) ; do \
 		if [ -d $$dir ] ; then \
 			(cd $$dir && $(MAKE) clean) ; \
 		fi \
 	done
-	- at test -s $(TOP)/configs/current || rm -f $(TOP)/configs/current
+	- at test -s $(top_builddir)/configs/current || rm -f $(top_builddir)/configs/current
 
 
-realclean: clean
+
+distclean-local:
 	-rm -rf lib*
-	-rm -f $(TOP)/configs/current
-	-rm -f $(TOP)/configs/autoconf
-	-rm -rf autom4te.cache
+	-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 '{}' ';'
 
-
-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
+.PHONY: doxygen
 
 # Rules for making release tarballs
 
@@ -99,7 +79,7 @@ IGNORE_FILES = \
 
 
 parsers: configure
-	- at touch $(TOP)/configs/current
+	- at 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
@@ -107,21 +87,11 @@ parsers: configure
 # Everything for new a Mesa release:
 ARCHIVES = $(PACKAGE_NAME).tar.gz \
 	$(PACKAGE_NAME).tar.bz2 \
-	$(PACKAGE_NAME).zip \
+	$(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) ; \
@@ -151,6 +121,4 @@ md5: $(ARCHIVES)
 	@-md5sum $(PACKAGE_NAME).tar.bz2
 	@-md5sum $(PACKAGE_NAME).zip
 
-am--refresh:
-
-.PHONY: tarballs md5 am--refresh
+.PHONY: tarballs md5
diff --git a/bin/extract_git_sha1 b/bin/extract_git_sha1
deleted file mode 100755
index 8283870..0000000
--- 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 ec4fa43..0801c6c 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 05aea8d..845b524 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




More information about the mesa-commit mailing list