Commit 13c45ccb authored by Toby Thain's avatar Toby Thain

Portability changes for Solaris 10 (amd64). Re-hash BUILD/ scripts for Solaris...

Portability changes for Solaris 10 (amd64). Re-hash BUILD/ scripts for Solaris to be more in line with generic scripts.
parent 059b9356
......@@ -80,7 +80,13 @@ path=`dirname $0`
. "$path/check-cpu"
export AM_MAKEFLAGS
AM_MAKEFLAGS="-j 6"
# Default to a parallel build, but only if AM_MAKEFLAGS is not set.
# (So buildbots can easily disable this behaviour if required.)
if test -z "$AM_MAKEFLAGS"
then
AM_MAKEFLAGS="-j 6"
fi
# SSL library to use.--with-ssl will select our bundled yaSSL
# implementation of SSL. To use openSSl you will nee too point out
......
#!/usr/bin/bash
#!/bin/sh
function _find_mysql_root () (
while [ "x$PWD" != "x/" ]; do
# Check if some directories are present
if [ -d BUILD -a -d sql -a -d mysys ]; then
echo "$PWD"
return 0
fi
cd ..
done
return 1
)
# Build setup for Solaris 10
# Make the Sun Freeware packages use the bundled Perl, instead of their own:
# ln -s `which perl` /usr/local/bin
# Your $PATH needs to include (in this order):
# /usr/local/bin:/usr/sfw/bin:/usr/ccs/bin
# (For Sun Freeware, bundled GNU utilities, Solaris ar, etc.)
#
# Required packages from http://sunfreeware.com/indexintel10.html :
# (The GNU m4 bundled with Solaris is too old.)
# automake-1.10.2-sol10-x86-local.gz
# autoconf-2.63-sol10-x86-local.gz
# m4-1.4.12-sol10-x86-local.gz
# libsigsegv-2.6-sol10-x86-local.gz
# libtool-1.5.24-sol10-x86-local.gz
# ( how to install these packages:
# wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/automake-1.10.2-sol10-x86-local.gz
# gunzip automake-1.10.2-sol10-x86-local.gz
# pkgadd -d automake-1.10.2-sol10-x86-local
# )
make -k clean || true
/bin/rm -f */.deps/*.P config.cache
path=`dirname $0`
. "$path/autorun.sh"
warning_flags="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused"
compiler_flags="-g -O3 -fno-omit-frame-pointer"
. "$path/SETUP.sh"
extra_flags="$amd64_cflags -D__sun -m64 -mtune=athlon64"
extra_configs="$amd64_configs $max_configs --with-libevent"
export CC CXX CFLAGS CXXFLAGS LDFLAGS LIBS
CC="gcc"
CXX="gcc"
CFLAGS="$warning_flags $compiler_flags"
CXXFLAGS=""
LDFLAGS="-O3 -g -static-libgcc"
LIBS=-lmtmalloc
root=$(_find_mysql_root)
LDFLAGS="-lmtmalloc -static-libgcc"
export LDFLAGS
$root/configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--with-extra-charsets=complex \
--enable-thread-safe-client \
--enable-local-infile \
--with-zlib-dir=bundled \
--with-big-tables \
--with-readline \
--with-archive-storage-engine \
--with-named-curses=-lcurses \
--with-big-tables \
--with-innodb \
--with-berkeley-db \
--with-example-storage-engine \
--with-blackhole-storage-engine \
--with-ndbcluster \
--with-federated-storage-engine \
--with-csv-storage-engine \
--with-ssl \
--with-embedded-server \
--disable-shared
. "$path/FINISH.sh"
#! /bin/sh
#!/bin/sh
path=`dirname $0`
. "$path/SETUP.sh"
amd64_cflags="-m64 -mtune=athlon64"
extra_flags="$amd64_cflags $debug_cflags $max_cflags"
c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings="$cxx_warnings $debug_extra_warnings"
extra_configs="$amd64_configs $debug_configs $max_configs --enable-thread-safe-client"
extra_flags="$amd64_cflags -D__sun -m64 -mtune=athlon64 $debug_cflags"
extra_configs="$amd64_configs $debug_configs $max_configs --with-libevent"
LDFLAGS="-lmtmalloc -static-libgcc"
export LDFLAGS
. "$path/FINISH.sh"
#! /bin/sh
#!/bin/sh
gmake -k clean || true
/bin/rm -f */.deps/*.P config.cache
path=`dirname $0`
. "$path/autorun.sh"
# See file compile-solaris-amd64 for basic pre-requisites.
# This build uses the Sun Studio compilers (cc, CC), available from:
# http://developers.sun.com/sunstudio/downloads/index.jsp
# Note that you may want to apply current patches, as the downloaded version
# is typically out of date. Download the PKG version if you intend to patch!
# After installing, add /opt/SUNWspro/bin to your $PATH
# For "optimal" code for this computer add -fast to EXTRA
# To compile 64 bit, add -m64 to EXTRA_64_BIT
EXTRA_64_BIT="-m64"
EXTRA="-fast"
path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="-m64 -mt -D_FORTEC_ -xbuiltin=%all -xlibmil -xlibmopt -fns=no -xprefetch=auto -xprefetch_level=3"
extra_configs="$max_configs --with-libevent"
#
# The following should not need to be touched
#
warnings=""
c_warnings=""
cxx_warnings=""
base_cxxflags="-noex"
export CC CXX CFLAGS CXXFLAGS LIBS
STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT"
ASFLAGS="$EXTRA_64_BIT"
CC=cc-5.0
CFLAGS="-Xa -xstrconst $STD"
CC=cc
CFLAGS="-xstrconst"
CXX=CC
CXXFLAGS="-noex $STD"
LIBS=-lmtmalloc
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--with-extra-charsets=complex \
--enable-thread-safe-client \
--enable-local-infile \
--with-zlib-dir=bundled \
--with-big-tables \
--with-readline \
--with-archive-storage-engine \
--with-named-curses=-lcurses \
--with-big-tables \
--with-innodb \
--with-example-storage-engine \
--with-blackhole-storage-engine \
--with-federated-storage-engine \
--with-csv-storage-engine \
--with-ssl \
--enable-assembler
# Not including:
# --with-ndbcluster
# --with-berkeley-db
gmake -j4
test $? = 0 && make test
LDFLAGS="-lmtmalloc"
. "$path/FINISH.sh"
#! /bin/sh
#!/bin/sh
gmake -k clean || true
/bin/rm -f */.deps/*.P config.cache
path=`dirname $0`
. "$path/autorun.sh"
. "$path/SETUP.sh"
# To compile 64 bit, add -m64 to EXTRA_64_BIT
EXTRA_64_BIT="-m64"
# Take only #define options - the others are gcc specific.
# (real fix is for SETUP.sh not to put gcc specific options in $debug_cflags)
DEFS=""
for F in $debug_cflags ; do
expr "$F" : "^-D" && DEFS="$DEFS $F"
done
debug_cflags="-O0 -g $DEFS"
# For "optimal" code for this computer add -fast to EXTRA. Note that
# this causes problem with debugging the program since -fast implies
# -xO5.
EXTRA=""
extra_flags="-m64 -mt -D_FORTEC_ -xlibmopt -fns=no $debug_cflags"
extra_configs="$max_configs --with-libevent $debug_configs"
#
# The following should not need to be touched
#
warnings=""
c_warnings=""
cxx_warnings=""
base_cxxflags="-noex"
export CC CXX CFLAGS CXXFLAGS
STD="-g -mt -D_FORTEC_ $EXTRA $EXTRA_64_BIT $debug_cflags"
ASFLAGS="$EXTRA_64_BIT"
CC=cc-5.0
CFLAGS="-Xa -xstrconst $STD"
CC=cc
CFLAGS="-xstrconst"
CXX=CC
CXXFLAGS="-noex $STD"
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--libexecdir=/usr/local/mysql/bin \
--with-extra-charsets=complex \
--enable-thread-safe-client \
--enable-local-infile \
--with-zlib-dir=bundled \
--with-big-tables \
--with-readline \
--with-archive-storage-engine \
--with-named-curses=-lcurses \
--with-big-tables \
--with-innodb \
--with-example-storage-engine \
--with-blackhole-storage-engine \
--with-federated-storage-engine \
--with-csv-storage-engine \
--with-ssl \
--with-debug \
--enable-assembler
LDFLAGS="-lmtmalloc"
# Not including:
# --with-ndbcluster
# --with-berkeley-db
gmake -j4
. "$path/FINISH.sh"
......@@ -55,10 +55,10 @@ of the 32-bit x86 assembler in mutex operations. */
# define UNIV_CAN_USE_X86_ASSEMBLER
# endif
/* We only try to do explicit inlining of functions with gcc and
Microsoft Visual C++ */
/* Enable explicit inlining of functions only for compilers known to
support it. */
# if !defined(__GNUC__)
# if !defined(__GNUC__) && !defined(__SUNPRO_C)
# undef UNIV_MUST_NOT_INLINE /* Remove compiler warning */
# define UNIV_MUST_NOT_INLINE
# endif
......
......@@ -46,7 +46,7 @@ libpbxt_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN -std=c99
EXTRA_LIBRARIES = libpbxt.a
noinst_LIBRARIES = libpbxt.a
libpbxt_a_SOURCES = $(libpbxt_la_SOURCES)
libpbxt_a_CXXFLAGS = $(AM_CXXFLAGS) -Wno-long-long
libpbxt_a_CXXFLAGS = $(AM_CXXFLAGS)
libpbxt_a_CFLAGS = $(AM_CFLAGS) -std=c99
EXTRA_DIST = CMakeLists.txt
......@@ -208,9 +208,9 @@ inline void xt_atomic_dec2(volatile xtWord2 *mptr)
#elif defined(__GNUC__)
__sync_fetch_and_sub(mptr, 1);
#elif defined(XT_SPL_SOLARIS_LIB)
val1 = atomic_dec_16_nv(mptr);
atomic_dec_16_nv(mptr);
#else
val1 = --(*mptr);
--(*mptr);
#endif
}
......
......@@ -782,21 +782,28 @@ private:
void deleteTempFiles()
{
struct dirent entry;
struct dirent *entry;
struct dirent *result;
DIR *odir;
int err;
size_t sz;
char temp_file[100];
#ifdef XT_SOLARIS
sz = sizeof(struct dirent) + pathconf("/tmp/", _PC_NAME_MAX); // Solaris, see readdir(3C)
#else
sz = sizeof(struct dirent);
#endif
entry = (struct dirent*)malloc(sz);
if (!(odir = opendir("/tmp/")))
return;
err = readdir_r(odir, &entry, &result);
err = readdir_r(odir, entry, &result);
while (!err && result) {
const char **prefix = temp_prefix;
while (*prefix) {
if (startsWith(entry.d_name, *prefix)) {
int pid = atoi(entry.d_name + strlen(*prefix));
if (startsWith(entry->d_name, *prefix)) {
int pid = atoi(entry->d_name + strlen(*prefix));
/* If the process does not exist: */
if (kill(pid, 0) == -1 && errno == ESRCH) {
......@@ -807,9 +814,10 @@ private:
prefix++;
}
err = readdir_r(odir, &entry, &result);
err = readdir_r(odir, entry, &result);
}
closedir(odir);
free(entry);
}
};
#endif // PBMS_API
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment