#!/bin/sh
#
# platform - Platform detection and configuration shell script
#
# Note: Build environments and compiler versions are changing frequently.
# If you cannot build this package, please modify this script and report
# the changes to support@focus-sw.com. Thank You.
#
# FOCUS Software Engineering Pty Ltd, Australia. <www.focus-sw.com>
#
# Requires: A supported UNIX version
#


#
# Detect platform and configure compiler settings
#
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
   *:Linux:*:*)
      OS_NAME="Linux"
      OS_EXT=linux
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=linux
      CC="gcc"
      CXX="g++"
      AR="ar"
      CFLAGS="-O2 -Wall"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS="-lrt"
      ARFLAGS="rcv"
   ;;
   *:CYGWIN*:*:*)
      OS_NAME="Cygwin"
      OS_EXT=cygwin
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=posix1
      CC="gcc"
      CXX="g++"
      AR="ar"
      CFLAGS="-O2 -Wall"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   *:QNX:6*:*)
      OS_NAME="QNX 6"
      OS_EXT=qnx6
      OS_TIMER_TYPE=posix4
      OS_SERIAL_TYPE=qnx
      CC="qcc"
      CXX="QCC"
      AR="ar"
      CFLAGS="-O2 -Wall"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS="-lsocket"
      ARFLAGS="rcv"
   ;;
   *:QNX:*:4*)
      OS_NAME="QNX 4"
      OS_EXT=qnx4
      OS_TIMER_TYPE=posix4
      OS_SERIAL_TYPE=qnx
      CC="cc"
      CXX="cc"
      AR="ar"
      CFLAGS="-w1"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS="-lsocket"
      ARFLAGS="rcv"
   ;;
   *:LynxOS:*:*)
      OS_NAME="LynxOS"
      OS_EXT=lynxos
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=linux
      CC="gcc"
      CXX="g++"
      AR="ar"
      CFLAGS="-O2 -Wall"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   *:SunOS:*:*)
      OS_NAME="Solaris/SunOS"
      OS_EXT=solaris
      OS_TIMER_TYPE=posix4
      OS_SERIAL_TYPE=posix1
      CC="cc"
      CXX="CC"
      AR="ar"
      CFLAGS="-w -compat=4"
      CXXFLAGS="${CFLAGS} -O"
      LDFLAGS="-lsocket -lposix4 -lnsl"
      ARFLAGS="rcv"
   ;;
   *:SCO_SV:*:*)
      OS_NAME="SCO/Openserver"
      OS_EXT=sco
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=posix1
      CC="cc"
      CXX="CC"
      AR="ar"
      CFLAGS="-w"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS="-lsocket -lnsl"
      ARFLAGS="rcv"
   ;;
   *:AIX:*:*)
      OS_NAME="IBM AIX"
      OS_EXT=aix
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=posix1
      CC="xlc"
      CXX="xlc"
      AR="ar"
      CFLAGS="-qstrict -O3"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   *:HP-UX:*:*)
      OS_NAME="HP-UX"
      OS_EXT=hpux
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=posix1
      CC="cc"
      CXX="aCC"
      AR="ar"
      CFLAGS="-O +Onolimit -Aa +DAportable -w"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   *:IRIX*:*:*)
      OS_NAME="SGI Irix"
      OS_EXT=irix
      OS_TIMER_TYPE=posix4
      OS_SERIAL_TYPE=posix1
      CC="cc"
      CXX="c++"
      AR="ar"
      CFLAGS="-O2 -fullwarn -woff 1174 -woff 3201"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   alpha:OSF1:*:*)
      OS_NAME="DEC Alpha True 64/Digital UNIX"
      OS_EXT=osf
      OS_TIMER_TYPE=posix4
      OS_SERIAL_TYPE=posix1
      CC="cxx"
      CXX="cxx"
      AR="ar"
      CFLAGS="-O2"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS="-lrt"
      ARFLAGS="rcv"
   ;;
   *:OpenBSD:*:*|*:FreeBSD:*:*|*:NetBSD:*:*)
      OS_NAME="${UNAME_SYSTEM}"
      OS_EXT=`(echo ${OS_NAME}_${UNAME_MACHINE} | tr "[:upper:]" "[:lower:]") 2>/dev/null` || OS_EXT=${OS_NAME}_${UNAME_MACHINE}
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=linux
      CC="gcc"
      CXX="g++"
      AR="ar"
      CFLAGS="-O2 -Wall"
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
   *)
      OS_NAME="Unknwon UNIX"
      OS_EXT=unix
      OS_TIMER_TYPE=posix1
      OS_SERIAL_TYPE=posix1
      CC="cc"
      CXX="c++"
      AR="ar"
      CFLAGS=""
      CXXFLAGS="${CFLAGS}"
      LDFLAGS=""
      ARFLAGS="rcv"
   ;;
esac

echo ""
echo "Platform detected as: ${OS_NAME}"
echo "Unix name: ${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}"
echo ""

