[nagiosplug] Attempt at detecting 64bit compilation flags ...

"Thomas Guyot-Sionnest" <[email protected]>
Newsgroups gmane.network.nagios.plugins.cvs
Message-ID <[email protected]>
 Module: nagiosplug
 Branch: master
 Commit: ab1e1edff3fa584536a072495d4bcff400339f40
 Author: Thomas Guyot-Sionnest <[email protected]>
   Date: Wed Aug  5 01:32:02 2009 -0400
    URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=ab1e1ed

Attempt at detecting 64bit compilation flags between gcc, old, and new versions of sun cc

Gcc accepts -m64, just as newer version of Suncc.
Older Suncc required -xarch=v9 (SPARC) or -xarch=amd64 (x86-64) to generate 64bit code.

---

 configure.in |   65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/configure.in b/configure.in
index d02d7f8..61d0e95 100644
--- a/configure.in
+++ b/configure.in
@@ -585,14 +585,73 @@ elif test "$ac_cv_uname_s" = "SunOS"; then
         ac_cv_ps_cols=9
         AC_MSG_RESULT([using nagios-plugins internal ps command (pst3) for solaris])
 	if test `isainfo -b` = 64 ; then
-		PST3CFLAGS="-m64"
-		AC_SUBST(PST3CFLAGS)
-		AC_MSG_NOTICE([using 64bit pst3])	
+		pst3_use_64bit=1
+		AC_MSG_NOTICE([using 64bit pst3])
 	else
 		AC_MSG_NOTICE([using 32bit pst3])
 	fi
         EXTRAS_ROOT="$EXTRAS_ROOT pst3"
 
+	if test "$pst3_use_64bit" = 1; then
+		dnl Test if we can actually compile code in 64bit
+		old_cflags=$CFLAGS
+		CFLAGS="$CFLAGS -m64"
+		pst3_64bit_working=0
+		AC_RUN_IFELSE(
+			[AC_LANG_PROGRAM([], [
+return sizeof(void*) == 8 ? 0 : 1;
+			])
+		],[
+			PST3CFLAGS="-m64"
+			AC_SUBST(PST3CFLAGS)
+			pst3_64bit_working=1
+			AC_MSG_NOTICE([using -m64 for 64bit code])
+		],[
+			pst3_64bit_working=0
+			AC_MSG_NOTICE([compiler do not like -m64])
+		])
+		CFLAGS=$old_cflags
+		if test "$pst3_64bit_working" = 0; then
+			old_cflags=$CFLAGS
+			CFLAGS="$CFLAGS -xarch=v9"
+			AC_RUN_IFELSE(
+				[AC_LANG_PROGRAM([], [
+return sizeof(void*) == 8 ? 0 : 1;
+				])
+			],[
+				PST3CFLAGS="-xarch=v9"
+				AC_SUBST(PST3CFLAGS)
+				pst3_64bit_working=1
+				AC_MSG_NOTICE([using -xarch=v9 for 64bit code])
+			],[
+				pst3_64bit_working=0
+				AC_MSG_NOTICE([compiler do not like -xarch=v9])
+			])
+			CFLAGS=$old_cflags
+		fi
+		if test "$pst3_64bit_working" = 0; then
+			old_cflags=$CFLAGS
+			CFLAGS="$CFLAGS -xarch=amd64"
+			AC_RUN_IFELSE(
+				[AC_LANG_PROGRAM([], [
+return sizeof(void*) == 8 ? 0 : 1;
+				])
+			],[
+				PST3CFLAGS="-xarch=amd64"
+				AC_SUBST(PST3CFLAGS)
+				pst3_64bit_working=1
+				AC_MSG_NOTICE([using -xarch=amd64 for 64bit code])
+			],[
+				pst3_64bit_working=0
+				AC_MSG_NOTICE([compiler do not like -xarch=amd64])
+			])
+			CFLAGS=$old_cflags
+		fi
+		if test "$pst3_64bit_working" = 0; then
+			AC_MSG_ERROR([I don't know how to build a 64-bit object!])
+		fi
+	fi
+
 dnl Removing this for the moment - Ton
 dnl Using /usr/ucb/ps on Solaris systems, to avoid truncation
 dnl Limitation that command name is not available


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.