Patchwork [build,libgo] Use librt on Solaris 2 if necessary

login
register
mail settings
Submitter Rainer Orth
Date Jan. 14, 2011, 4:55 p.m.
Message ID <yddtyhbo265.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
Download mbox | patch
Permalink /patch/78958/
State New
Headers show

Comments

Rainer Orth - Jan. 14, 2011, 4:55 p.m.
On Solaris < 11, libgo.so contains unresolved references to a couple of
functions, notably sched_yield and sem_*.  They are only provided by
librt, but moved to libc in Solaris 11.

The following patch checks if it is necessary to link with -lrt to get
sched_yield, following the guidance of the Autoconf manual for
AC_CHECK_LIB vs. AC_SEARCH_LIBS and thus not introducing another
variable, but just adding it to LIBS.

Tested by running make configure-target-libgo on i386-pc-solaris2.10 and
i386-pc-solaris2.11 and noting that -lrt is added to LIBS for the
former, but LIBS is unchanged for the latter.

In a previous bootstrap, I'd manually added -lrt to libgo/Makefile on
Solaris 10/x86 and managed to complete the build and run the tests.

Ok for mainline?

	Rainer


2011-01-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	libgo:
	* configure.ac: Check if -lrt is required for sched_yield.
	* configure: Regenerate.
Ian Taylor - Jan. 14, 2011, 7:20 p.m.
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

> 2011-01-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
> 	libgo:
> 	* configure.ac: Check if -lrt is required for sched_yield.
> 	* configure: Regenerate.

Committed.

Thanks.

Ian

Patch

diff -r 6c184227ca86 libgo/configure.ac
--- a/libgo/configure.ac	Fri Jan 14 10:25:46 2011 +0100
+++ b/libgo/configure.ac	Fri Jan 14 17:55:14 2011 +0100
@@ -1,6 +1,6 @@ 
 # configure.ac -- Go library configure script.
 
-# Copyright 2009 The Go Authors. All rights reserved.
+# Copyright 2009, 2011 The Go Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
@@ -274,6 +274,9 @@ 
 AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS=-lpthread)
 AC_SUBST(PTHREAD_LIBS)
 
+dnl Test if -lrt is required for sched_yield.
+AC_SEARCH_LIBS([sched_yield], [rt])
+
 AC_C_BIGENDIAN
 
 GCC_CHECK_UNWIND_GETIPINFO