From baee5f75c5ab2dbd8ae0e84c7172ee0021d0996c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 23 Dec 2003 18:40:53 +0000 Subject: [PATCH] Push responsibility for selecting out-of-line-assembler TAS code out to the platform template files, instead of doing it directly in configure.in. This seems cleaner, and also opens the door to making the choice be dependent on the compiler being used. --- configure | 38 +++++++++++++++++++++----------------- configure.in | 36 ++++++++++++++++++++---------------- src/template/hpux | 5 +++++ src/template/solaris | 6 ++++++ 4 files changed, 52 insertions(+), 33 deletions(-) diff --git a/configure b/configure index 8eb1cfcdb7..ffa04eeab1 100755 --- a/configure +++ b/configure @@ -1448,22 +1448,11 @@ echo "${ECHO_T}$template" >&6 PORTNAME=$template -# Pick right test-and-set (TAS) code. Most platforms have inline -# assembler code in src/include/storage/s_lock.h, so we just use -# a dummy file here. -case $host in - hppa*-*-hpux*) need_tas=yes; tas_file=hpux_hppa.s ;; - sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;; - i?86-*-solaris*) need_tas=yes; tas_file=solaris_i386.s ;; - *) need_tas=no; tas_file=dummy.s ;; -esac -ac_config_links="$ac_config_links src/backend/port/tas.s:src/backend/port/tas/${tas_file}" - - -if test "$need_tas" = yes ; then - TAS=tas.o -fi - +# Initialize default assumption that we do not need separate assembly code +# for TAS (test-and-set). This can be overridden by the template file +# when it's executed. +need_tas=no +tas_file=dummy.s @@ -2824,6 +2813,21 @@ _ACEOF +# +# Set up TAS assembly code if needed; the template file has now had its +# chance to request this. +# +ac_config_links="$ac_config_links src/backend/port/tas.s:src/backend/port/tas/${tas_file}" + + +if test "$need_tas" = yes ; then + TAS=tas.o +else + TAS="" +fi + + + # # Automatic dependency tracking # @@ -18223,7 +18227,6 @@ s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@PORTNAME@,$PORTNAME,;t t -s,@TAS@,$TAS,;t t s,@docdir@,$docdir,;t t s,@enable_nls@,$enable_nls,;t t s,@WANTED_LANGUAGES@,$WANTED_LANGUAGES,;t t @@ -18240,6 +18243,7 @@ s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@CPP@,$CPP,;t t s,@GCC@,$GCC,;t t +s,@TAS@,$TAS,;t t s,@autodepend@,$autodepend,;t t s,@INCLUDES@,$INCLUDES,;t t s,@enable_thread_safety@,$enable_thread_safety,;t t diff --git a/configure.in b/configure.in index 8251ccc2f1..a10e83298c 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.308 2003/11/29 19:51:16 pgsql Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.309 2003/12/23 18:40:52 tgl Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -97,21 +97,11 @@ AC_MSG_RESULT([$template]) PORTNAME=$template AC_SUBST(PORTNAME) -# Pick right test-and-set (TAS) code. Most platforms have inline -# assembler code in src/include/storage/s_lock.h, so we just use -# a dummy file here. -case $host in - hppa*-*-hpux*) need_tas=yes; tas_file=hpux_hppa.s ;; - sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;; - i?86-*-solaris*) need_tas=yes; tas_file=solaris_i386.s ;; - *) need_tas=no; tas_file=dummy.s ;; -esac -AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}]) - -if test "$need_tas" = yes ; then - TAS=tas.o -fi -AC_SUBST(TAS) +# Initialize default assumption that we do not need separate assembly code +# for TAS (test-and-set). This can be overridden by the template file +# when it's executed. +need_tas=no +tas_file=dummy.s @@ -302,6 +292,20 @@ AC_DEFINE_UNQUOTED(PG_VERSION_STR, [A string containing the version number, platform, and C compiler]) +# +# Set up TAS assembly code if needed; the template file has now had its +# chance to request this. +# +AC_CONFIG_LINKS([src/backend/port/tas.s:src/backend/port/tas/${tas_file}]) + +if test "$need_tas" = yes ; then + TAS=tas.o +else + TAS="" +fi +AC_SUBST(TAS) + + # # Automatic dependency tracking # diff --git a/src/template/hpux b/src/template/hpux index 28d836e012..154b5743aa 100644 --- a/src/template/hpux +++ b/src/template/hpux @@ -4,3 +4,8 @@ if test "$GCC" != yes ; then CC="$CC -Ae" CFLAGS="+O2" fi + +# Pick right test-and-set (TAS) code. +case $host in + hppa*-*-hpux*) need_tas=yes; tas_file=hpux_hppa.s ;; +esac diff --git a/src/template/solaris b/src/template/solaris index 7609d0e2cb..7338878e83 100644 --- a/src/template/solaris +++ b/src/template/solaris @@ -3,6 +3,12 @@ if test "$GCC" != yes ; then CFLAGS="-O -v" # -v is like gcc -Wall fi +# Pick right test-and-set (TAS) code. +case $host in + sparc-*-solaris*) need_tas=yes; tas_file=solaris_sparc.s ;; + i?86-*-solaris*) need_tas=yes; tas_file=solaris_i386.s ;; +esac + THREAD_SUPPORT=yes NEED_REENTRANT_FUNCS=yes # 5.6 2003-09-13 THREAD_LIBS="-pthread"