[Mesa-dev] [PATCH v2] build: Don't cross-compile GLSL builtin compiler
Thierry Reding
thierry.reding at avionic-design.de
Thu Nov 1 23:38:43 PDT 2012
On Thu, Nov 01, 2012 at 06:20:46PM -0700, Kenneth Graunke wrote:
> On 10/19/2012 05:03 AM, Thierry Reding wrote:
> >The builtin_compiler binary is used during the build process to generate
> >code for the builtin GLSL functions. Since this binary needs to be run
> >on the build host, it must not be cross-compiled.
> >
> >This patch fixes the build system to compile a second version of the
> >source files and the builtin_compiler binary itself for the build
> >system. It does so by defining the CC_FOR_BUILD and CXX_FOR_BUILD
> >variables, which are searched for by the configure script and point to
> >the location of native C and C++ compilers.
> >
> >In order for this to work properly, builtin_function.cpp is removed
> >from BUILT_SOURCES, otherwise the build system would try to generate it
> >before having had a chance to descend into the builtin_compiler
> >subdirectory. With the builtin_compiler and glsl_compiler now being
> >generated at different stages, the build instructions for glsl_compiler
> >can be simplified a bit.
> >
> >Signed-off-by: Thierry Reding <thierry.reding at avionic-design.de>
> >---
> >Changes in v2:
> >- extend CFLAGS_FOR_BUILD and CXXFLAGS_FOR_BUILD with necessary flags
> > (-Wall -fno-builtin-memcmp -fno-strict-aliasing) and introduce the new
> > DEFINES_FOR_BUILD variable
> >- remove builtin_function.cpp from BUILT_SOURCES
> >- clean up source file lists for glsl_compiler and drop the now unneeded
> > libglslcommon.la convenience library
> >
> > configure.ac | 40 ++++++-
> > m4/ax_prog_cc_for_build.m4 | 140 ++++++++++++++++++++++
> > m4/ax_prog_cxx_for_build.m4 | 123 +++++++++++++++++++
> > src/glsl/.gitignore | 1 -
> > src/glsl/Makefile.am | 48 ++------
> > src/glsl/builtin_compiler/.gitignore | 6 +
> > src/glsl/builtin_compiler/Makefile.am | 67 +++++++++++
> > src/glsl/{ => builtin_compiler}/builtin_stubs.cpp | 0
> > 8 files changed, 385 insertions(+), 40 deletions(-)
> > create mode 100644 m4/ax_prog_cc_for_build.m4
> > create mode 100644 m4/ax_prog_cxx_for_build.m4
> > create mode 100644 src/glsl/builtin_compiler/.gitignore
> > create mode 100644 src/glsl/builtin_compiler/Makefile.am
> > rename src/glsl/{ => builtin_compiler}/builtin_stubs.cpp (100%)
> >
> >diff --git a/configure.ac b/configure.ac
> >index ca24856..f0edd95 100644
> >--- a/configure.ac
> >+++ b/configure.ac
> >@@ -10,7 +10,7 @@ AC_INIT([Mesa], [9.1.0],
> > [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
> > AC_CONFIG_AUX_DIR([bin])
> > AC_CONFIG_MACRO_DIR([m4])
> >-AC_CANONICAL_HOST
> >+AC_CANONICAL_SYSTEM
> > AM_INIT_AUTOMAKE([foreign])
> >
> > dnl http://people.gnome.org/~walters/docs/build-api.txt
> >@@ -24,9 +24,6 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
> >
> > m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
> >
> >-LT_PREREQ([2.2])
> >-LT_INIT([disable-static])
> >-
> > dnl Set internal versions
> > OSMESA_VERSION=8
> > AC_SUBST([OSMESA_VERSION])
> >@@ -45,7 +42,9 @@ LIBKMS_XORG_REQUIRED=1.0.0
> > dnl Check for progs
> > AC_PROG_CPP
> > AC_PROG_CC
> >+AX_PROG_CC_FOR_BUILD
> > AC_PROG_CXX
> >+AX_PROG_CXX_FOR_BUILD
> > AM_PROG_CC_C_O
> > AM_PROG_AS
> > AC_CHECK_PROGS([MAKE], [gmake make])
> >@@ -54,6 +53,9 @@ AC_PROG_SED
> > AC_PROG_MKDIR_P
> > AC_PATH_PROG([MKDEP], [makedepend])
> >
> >+LT_PREREQ([2.2])
> >+LT_INIT([disable-static])
> >+
> > if test "x$MKDEP" = "x"; then
> > AC_MSG_ERROR([makedepend is required to build Mesa])
> > fi
> >@@ -155,6 +157,21 @@ dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
> > _SAVE_LDFLAGS="$LDFLAGS"
> > _SAVE_CPPFLAGS="$CPPFLAGS"
> >
> >+dnl build host compiler macros
> >+DEFINES_FOR_BUILD=""
> >+AC_SUBST([DEFINES_FOR_BUILD])
> >+case "$build_os" in
> >+linux*|*-gnu*|gnu*)
> >+ DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -D_GNU_SOURCE"
> >+ ;;
> >+solaris*)
> >+ DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DSVR4"
> >+ ;;
> >+cygwin*)
> >+ DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD"
> >+ ;;
> >+esac
> >+
> > dnl Compiler macros
> > DEFINES=""
> > AC_SUBST([DEFINES])
> >@@ -177,6 +194,7 @@ if test "x$GCC" = xyes; then
> > CFLAGS="$CFLAGS -Wall -std=gnu99"
> > ;;
> > *)
> >+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -Wall -std=c99"
> > CFLAGS="$CFLAGS -Wall -std=c99"
> > ;;
> > esac
> >@@ -206,13 +224,16 @@ if test "x$GCC" = xyes; then
> > CFLAGS=$save_CFLAGS
> >
> > # Work around aliasing bugs - developers should comment this out
> >+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-strict-aliasing"
> > CFLAGS="$CFLAGS -fno-strict-aliasing"
> >
> > # gcc's builtin memcmp is slower than glibc's
> > # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
> >+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-builtin-memcmp"
> > CFLAGS="$CFLAGS -fno-builtin-memcmp"
> > fi
> > if test "x$GXX" = xyes; then
> >+ CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -Wall"
> > CXXFLAGS="$CXXFLAGS -Wall"
> >
> > # Enable -fvisibility=hidden if using a gcc that supports it
> >@@ -229,10 +250,12 @@ if test "x$GXX" = xyes; then
> > CXXFLAGS=$save_CXXFLAGS
> >
> > # Work around aliasing bugs - developers should comment this out
> >+ CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-strict-aliasing"
> > CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
> >
> > # gcc's builtin memcmp is slower than glibc's
> > # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
> >+ CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-builtin-memcmp"
> > CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
> > fi
> >
> >@@ -316,6 +339,14 @@ AC_ARG_ENABLE([debug],
> > [enable_debug=no]
> > )
> > if test "x$enable_debug" = xyes; then
> >+ DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
> >+ if test "x$GCC_FOR_BUILD" = xyes; then
> >+ CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -g"
> >+ fi
> >+ if test "x$GXX_FOR_BUILD" = xyes; then
> >+ CXXFLAGS_FOR_BUILD="$XXCFLAGS_FOR_BUILD -g"
>
> Typo here...I changed this to $CXXFLAGS_FOR_BUILD and went ahead and
> pushed it. Thanks so much for doing this, and I'm sorry it took so
> absurdly long to get the patch upstream...
Good catch and thanks for pushing this!
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20121102/1923d916/attachment.pgp>
More information about the mesa-dev
mailing list