From 07abd913b654a1a04a90db6203a92a14e4ae795a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 14 May 2012 18:38:54 -0700 Subject: [PATCH] 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 --- .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(-) rename Makefile => Makefile.am (61%) delete mode 100755 bin/extract_git_sha1 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.am similarity index 61% rename from Makefile rename to Makefile.am index 2a71ec8902a..59fd9b58493 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: - -@touch $(TOP)/configs/current +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)/configs/current || rm -f $(TOP)/configs/current + -@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 - -@touch $(TOP)/configs/current + -@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 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 -- 2.30.2