>From 692e25444aa4b58e31711753de2326cfe1dc3a7c Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor
Date: Tue, 12 Oct 2010 12:26:39 -0700 Subject: [PATCH] Add support for the Go programming language. * lib/autoconf/go.m4: New file. * lib/autoconf/autoconf.m4: Include autoconf/go.m4. * lib/autoconf/Makefile.am (dist_autoconflib_DATA): Add go.m4. * lib/freeze.mk (autoconf_m4f_dependencies): Add $(src_libdir)/autoconf/go.m4. * doc/autoconf.texi: Rebuild menus. (Preset Output Variables): Mention Go. Document GOFLAGS. (Libraries): Mention Go. (Go Compiler): New subsection. (Language Choice): Mention Go. (Generating Sources): Likewise. (Running the Preprocessor): Likewise. * tests/go.at: New file. * tests/suite.at: Include go.at and acgo.at. * tests/local.at (_AT_CHECK_ENV): Add GOC and GOFLAGS. * tests/Makefile.am (TESTSUITE_GENERATED_AT): Add $(srcdir)/acgo.at. (TESTSUITE_HAND_AT): Add go.at. (AUTOCONF_FILES): Add $(autoconfdir)/go.m4. * NEWS: Update. --- ChangeLog | 23 ++++++ NEWS | 3 + doc/autoconf.texi | 57 +++++++++++++--- lib/autoconf/Makefile.am | 2 +- lib/autoconf/autoconf.m4 | 1 + lib/autoconf/go.m4 | 177 ++++++++++++++++++++++++++++++++++++++++++++++ lib/freeze.mk | 1 + tests/Makefile.am | 4 +- tests/go.at | 35 +++++++++ tests/local.at | 1 + tests/suite.at | 2 + 11 files changed, 295 insertions(+), 11 deletions(-) create mode 100644 lib/autoconf/go.m4 create mode 100644 tests/go.at diff --git a/ChangeLog b/ChangeLog index 6f0b93d..cf124e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2011-02-13 Ian Lance Taylor + + * lib/autoconf/go.m4: New file. + * lib/autoconf/autoconf.m4: Include autoconf/go.m4. + * lib/autoconf/Makefile.am (dist_autoconflib_DATA): Add go.m4. + * lib/freeze.mk (autoconf_m4f_dependencies): Add + $(src_libdir)/autoconf/go.m4. + * doc/autoconf.texi: Rebuild menus. + (Preset Output Variables): Mention Go. Document GOFLAGS. + (Libraries): Mention Go. + (Go Compiler): New subsection. + (Language Choice): Mention Go. + (Generating Sources): Likewise. + (Running the Preprocessor): Likewise. + * tests/go.at: New file. + * tests/suite.at: Include go.at and acgo.at. + * tests/local.at (_AT_CHECK_ENV): Add GOC and GOFLAGS. + * tests/Makefile.am (TESTSUITE_GENERATED_AT): Add + $(srcdir)/acgo.at. + (TESTSUITE_HAND_AT): Add go.at. + (AUTOCONF_FILES): Add $(autoconfdir)/go.m4. + * NEWS: Update. + 2011-02-12 Giulio Paci (tiny change) Ralf Wildenhues diff --git a/NEWS b/NEWS index c485f22..3edebd8 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ GNU Autoconf NEWS - User visible changes. * Noteworthy changes in release ?.? (????-??-??) [?] +** Support for the Go programming language has been added. The new macro + AC_LANG_GO sets variables GOC and GOFLAGS. + ** AS_LITERAL_IF again treats '=' as a literal. Regression introduced in 2.66. diff --git a/doc/autoconf.texi b/doc/autoconf.texi index badf11d..508352a 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -413,6 +413,7 @@ Compilers and Preprocessors * Objective C++ Compiler:: Likewise * Erlang Compiler and Interpreter:: Likewise * Fortran Compiler:: Likewise +* Go Compiler:: Likewise Writing Tests @@ -2605,7 +2606,7 @@ programs to test for Fortran 77 features. Options for the linker. If it is not set in the environment when @command{configure} runs, the default value is empty. @command{configure} uses this variable when linking programs to test for -C, C++, Objective C, Objective C++, and Fortran features. +C, C++, Objective C, Objective C++, Fortran, and Go features. This variable's contents should contain options like @option{-s} and @option{-L} that affect only the behavior of the linker. Please see the @@ -2623,7 +2624,7 @@ Don't use this variable to pass library names but some Autoconf macros may prepend extra libraries to this variable if those libraries are found and provide necessary functions, see @ref{Libraries}. @command{configure} uses this variable when linking -programs to test for C, C++, Objective C, Objective C++, and Fortran +programs to test for C, C++, Objective C, Objective C++, Fortran, and Go features. @end defvar @@ -2641,6 +2642,13 @@ Debugging and optimization options for the Objective C++ compiler. It acts like @code{CXXFLAGS}, but for Objective C++ instead of C++. @end defvar address@hidden GOFLAGS address@hidden GOFLAGS address@hidden GOFLAGS +Debugging and optimization options for the Go compiler. It acts like address@hidden, but for Go instead of C. address@hidden defvar + @defvar builddir @ovindex builddir Rigorously equal to @samp{.}. Added for symmetry only. @@ -4435,8 +4443,8 @@ a variable name mapped to underscores. @section Library Files @cindex Library, checking -The following macros check for the presence of certain C, C++, or Fortran -library archive files. +The following macros check for the presence of certain C, C++, Fortran, +or Go library archive files. @anchor{AC_CHECK_LIB} @defmac AC_CHECK_LIB (@var{library}, @var{function}, @ @@ -6989,6 +6997,7 @@ compiling. * Objective C++ Compiler:: Likewise * Erlang Compiler and Interpreter:: Likewise * Fortran Compiler:: Likewise +* Go Compiler:: Likewise @end menu @node Specific Compiler Characteristics @@ -8238,6 +8247,32 @@ message). @end defmac address@hidden Go Compiler address@hidden Go Compiler Characteristics address@hidden Go + +Autoconf provides basic support for the Go programming language when +using the @code{gccgo} compiler (there is currently no support for the address@hidden and @code{8g} compilers). + address@hidden AC_PROG_GO (@ovar{compiler-search-list}) +Find the Go compiler to use. Check whether the environment variable address@hidden is set; if so, then set output variable @code{GOC} to its +value. + +Otherwise, if the macro is invoked without an argument, then search for +a Go compiler named @code{gccgo}. If it is not found, then as a last +resort set @code{GOC} to @code{gccgo}. + +This macro may be invoked with an optional first argument which, if +specified, must be a blank-separated list of Go compilers to search for. + +If output variable @code{GOFLAGS} was not already set, set it to address@hidden -O2}. If your package does not like this default, address@hidden may be set before @code{AC_PROG_GO}. address@hidden defmac + + @node System Services @section System Services @@ -8628,6 +8663,10 @@ Do compilation tests using @code{OBJCXX} and @code{OBJCXXCPP} and use extension @file{.mm} for test programs. Use compilation flags: @code{CPPFLAGS} with @code{OBJCXXCPP}, and both @code{CPPFLAGS} and @code{OBJCXXFLAGS} with @code{OBJCXX}. + address@hidden Go +Do compilation tests using @code{GOC} and use extension @file{.go} for +test programs. Use compilation flags @code{GOFLAGS}. @end table @end defmac @@ -8871,9 +8910,9 @@ on a system with @command{gcc} installed, results in: const char hw[] = "Hello, World\n"; @end example -When the test language is Fortran or Erlang, the @code{AC_DEFINE} definitions -are not automatically translated into constants in the source code by this -macro. +When the test language is Fortran, Erlang, or Go, the @code{AC_DEFINE} +definitions are not automatically translated into constants in the +source code by this macro. @defmac AC_LANG_PROGRAM (@var{prologue}, @var{body}) @acindex{LANG_PROGRAM} @@ -8995,8 +9034,8 @@ temptation of following the easiest path. Nevertheless, if you need to run the preprocessor, then use @code{AC_PREPROC_IFELSE}. -The macros described in this section cannot be used for tests in Erlang or -Fortran, since those languages require no preprocessor. +The macros described in this section cannot be used for tests in Erlang, +Fortran, or Go, since those languages require no preprocessor. @anchor{AC_PREPROC_IFELSE} @defmac AC_PREPROC_IFELSE (@var{input}, @ovar{action-if-true}, @ diff --git a/lib/autoconf/Makefile.am b/lib/autoconf/Makefile.am index ed2d4e9..6390590 100644 --- a/lib/autoconf/Makefile.am +++ b/lib/autoconf/Makefile.am @@ -22,7 +22,7 @@ dist_autoconflib_DATA = \ general.m4 status.m4 oldnames.m4 specific.m4 \ autoheader.m4 autoupdate.m4 autotest.m4 autoscan.m4 \ lang.m4 c.m4 erlang.m4 fortran.m4 \ - functions.m4 headers.m4 types.m4 libs.m4 programs.m4 + functions.m4 go.m4 headers.m4 types.m4 libs.m4 programs.m4 nodist_autoconflib_DATA = autoconf.m4f CLEANFILES = $(nodist_autoconflib_DATA) diff --git a/lib/autoconf/autoconf.m4 b/lib/autoconf/autoconf.m4 index 32a6248..897639c 100644 --- a/lib/autoconf/autoconf.m4 +++ b/lib/autoconf/autoconf.m4 @@ -42,6 +42,7 @@ m4_include([autoconf/lang.m4]) m4_include([autoconf/c.m4]) m4_include([autoconf/erlang.m4]) m4_include([autoconf/fortran.m4]) +m4_include([autoconf/go.m4]) m4_include([autoconf/functions.m4]) m4_include([autoconf/headers.m4]) m4_include([autoconf/types.m4]) diff --git a/lib/autoconf/go.m4 b/lib/autoconf/go.m4 new file mode 100644 index 0000000..0539d99 --- /dev/null +++ b/lib/autoconf/go.m4 @@ -0,0 +1,177 @@ +# This file is part of Autoconf. -*- Autoconf -*- +# Go language support. +# Copyright (C) 2011 Free Software Foundation, Inc. + +# This file is part of Autoconf. This program is free +# software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Under Section 7 of GPL version 3, you are granted additional +# permissions described in the Autoconf Configure Script Exception, +# version 3.0, as published by the Free Software Foundation. +# +# You should have received a copy of the GNU General Public License +# and a copy of the Autoconf Configure Script Exception along with +# this program; see the files COPYINGv3 and COPYING.EXCEPTION +# respectively. If not, see