fis-gtm/sr_linux/gtm_env_sp.csh

310 lines
12 KiB
Tcsh

#################################################################
# #
# Copyright 2001, 2012 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
#
##########################################################################################
#
# gtm_env_sp.csh - environment variable values and aliases specific to Linux
#
##########################################################################################
#
# Once the environment variables have been initialized, be careful not to
# re-initialize them for each subshell (i.e., don't undo any explicit changes that
# have been made since the last version change).
set platform_name = `uname | sed 's/-//g' | tr '[A-Z]' '[a-z]'`
set mach_type = `uname -m`
### Sanitize platform_name and match_type
# Cygwin adds the Windows version e.g. uname = CYGWIN_NT-5.1
set platform_only = `echo $platform_name | sed 's/_.*//'`
# sanitize i386 thru i686 to one option, do not use this to set build optimizations!
if ( "linux" == $platform_name ) then
set mach_type = `uname -m | sed 's/i[3456]86/ia32/' `
endif
# default to 64bit builds when object mode is not set
if (!($?OBJECT_MODE)) then
setenv OBJECT_MODE 64
endif
### 64bit vs 32bit builds
# The only 32 bit targets are cygwin, ia32 and x86_64 with specific settings
if ( ( "ia32" == $mach_type ) || ( "cywgin" == $platform_only ) ) then
setenv gt_build_type 32
# build 32 bit on x86_64 when $gtm_inc/x86_64.h does not exist with comlist.csh OR when OBJECT_MODE is set to 32 with comlist.mk
else if ( "x86_64" == $mach_type && ((! -e $gtm_inc/x86_64.h && "inc" == "${gtm_inc:t}") || "32" == $OBJECT_MODE)) then
setenv gt_build_type 32
else
setenv gt_build_type 64
setenv gt_ld_m_shl_options "-shared"
endif
if ( $?gtm_version_change == "1" ) then
# Compiler selections:
#
if !( $?gtm_linux_compiler ) then
setenv gtm_linux_compiler gcc
endif
if ( "ia64" == $mach_type ) then
if ( "gcc" != $gtm_linux_compiler ) then
if (-r /usr/bin/icc) then
setenv gt_cc_compiler "icc -i-static" # name of C compiler
endif
endif
endif
# Archiver definitions:
# GNU ar q equals r, S prevents generating the symbol table but
# requires ranlib before linking
setenv gt_ar_option_create "qSv" # quick, verbose
setenv gt_ar_option_update "rv" # replace, verbose
setenv gt_ar_option_delete "dv" # delete, verbose
setenv gt_ar_use_ranlib "yes"
# Assembler definitions:
# From before conversion from MASM or get MASM running under DOSEMU or such
# setenv gt_as_use_prebuilt "yes"
# GNU as
if ( "ia64" == $mach_type ) then
if ( "icc" == $gtm_linux_compiler ) then
setenv gt_cpp_compiler "icc" # name of C preprocessor
setenv gt_cpp_options_common "-x assembler-with-cpp"
setenv gt_as_assembler "icc"
setenv gt_as_options_common "-c -i-static"
setenv gt_as_option_optimize "$gt_as_option_optimize -O3"
else
setenv gt_as_assembler "gcc -c"
endif
endif
if ( "ia64" != $mach_type ) then
setenv gt_as_assembler "as"
if ("s390x" == $mach_type) then
setenv gt_as_options_common "-march=z9-109"
setenv gt_as_option_debug "--gdwarf-2"
else if ( "cygwin" == $platform_only ) then
setenv gt_as_options_common "--defsym cygwin=1"
setenv gt_as_option_debug "--gdwarf-2"
else
setenv gt_as_option_debug "--gstabs"
endif
endif
# to avoid naming files with .S
# smw 1999/12/04 setenv gt_as_options_common "-c -x assembler-with-cpp"
setenv gt_as_option_DDEBUG ""
# C definitions:
# generate position independent code
setenv gt_cc_shl_fpic "-fPIC"
if ( "cygwin" == $platform_only ) then
setenv gt_cc_shl_fpic ""
endif
# setenv gt_cc_options_common "-c -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64"
# For gcc: _BSD_SOURCE for caddr_t, others
# _XOPEN_SOURCE=500 should probably define POSIX 199309 and/or
# POSIX 199506 but doesnt so...
# -fsigned-char for Linux390 but shouldn't hurt x86
# setenv gt_cc_options_common "-c -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_POSIX_C_SOURCE=199506L
# setenv gt_cc_options_common "$gt_cc_options_common -D_FILE_OFFSET_BITS=64 -DFULLBLOCKWRITES -fsigned-char"
# _GNU_SOURCE includes _XOPEN_SOURCE=400, _BSD_SOURCE, and _POSIX_C_SOURCE-199506L among others
# Need _XOPEN_SOURCE=600 for posix_memalign() interface (replaces obsolete memalign)
if ( "cygwin" == $platform_only ) then
# on Cygwin, -ansi defines __STRICT_ANSI__ which suppresses many prototypes
setenv gt_cc_options_common "-c "
else
setenv gt_cc_options_common "-c -ansi "
endif
setenv gt_cc_options_common "$gt_cc_options_common -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 "
setenv gt_cc_options_common "$gt_cc_options_common -D_XOPEN_SOURCE=600 -fsigned-char "
if ( "ia64" != $mach_type ) then
set tmpgtmval = `echo $gt_cc_compiler | grep icc`
if ($status) then
setenv gt_cc_options_common "$gt_cc_options_common $gt_cc_shl_fpic"
else
setenv gt_cc_options_common "$gt_cc_options_common $gt_cc_shl_fpic -Wimplicit"
endif
setenv gt_cc_options_common "$gt_cc_options_common -Wmissing-prototypes -D_LARGEFILE64_SOURCE"
endif
if ( "cygwin" == $platform_only ) then
setenv gt_cc_options_common "$gt_cc_options_common -DNO_SEM_TIME -DNO_SEM_GETPID"
endif
# 32 bit ICU headers of 32 bit linux are in /emul/ia32-linux/usr/include/
if ( "32" == $gt_build_type ) then
if (-d /emul/ia32-linux/usr/include/) setenv gt_cc_option_I "-I/emul/ia32-linux/usr/include/"
endif
if ( "linux" == $platform_name ) then
set lversion=`uname -r`
set ltemp_ver=`echo $lversion | sed 's/./& /g'`
if ($ltemp_ver[3] == "2" && $ltemp_ver[1] == "2") then
setenv gt_cc_options_common "$gt_cc_options_common -DNeedInAddrPort"
endif
if ( "x86_64" == $mach_type ) then
# see if the compiler supports unused-result warnings
# Note: Compilers that dont support --help=warnings will not output unused-result.
# Currently, only compilers that support --help=warnings need to have unused-result
# turned off. Trying to turn it off on compilers that dont support it causes errors.
cc --help=warnings | & grep unused-result >/dev/null
if (! $status ) then
# if it does, turn them off
setenv gt_cc_options_common "$gt_cc_options_common -Wno-unused-result"
endif
endif
endif
# -fno-defer-pop to prevent problems with assembly/generated code with optimization
# -fno-strict-aliasing since we don't comply with the rules
# -ffloat-store for consistent results avoiding rounding differences
if ( "ia64" != $mach_type ) then
setenv gt_cc_option_optimize "-O2 -fno-defer-pop -fno-strict-aliasing -ffloat-store"
if ( "32" == $gt_build_type ) then
# applies to 32bit x86_64, ia32 and cygwin
setenv gt_cc_option_optimize "$gt_cc_option_optimize -march=i686"
endif
endif
# -g generate debugging information for dbx (no longer overrides -O)
setenv gt_cc_option_debug "-g"
if ( "cygwin" == $platform_only ) then
setenv gt_cc_option_debug "$gt_cc_option_debug -gdwarf-2 -fno-inline -fno-inline-functions"
endif
# Linker definitions:
setenv gt_ld_linker "$gt_cc_compiler" # redefine to use new C compiler definition
# -M generate link map onto standard output
setenv gt_ld_options_common "-Wl,-M"
setenv gt_ld_options_gtmshr "-Wl,-u,gtm_filename_to_id -Wl,--version-script,gtmshr_symbols.export"
setenv gt_ld_options_all_exe "-rdynamic -Wl,-u,gtm_filename_to_id -Wl,-u,gtm_zstatus"
setenv gt_ld_options_all_exe "$gt_ld_options_all_exe -Wl,--version-script,gtmexe_symbols.export"
# optimize for all 64bit platforms
#
# -lrt doesn't work to pull in semaphores with GCC 4.6, so use -lpthread.
# Add -lc in front of -lpthread to avoid linking in thread-safe versions
# of libc routines from libpthread.
setenv gt_ld_syslibs " -lelf -lncurses -lm -ldl -lc -lpthread -lrt"
if ( 32 == $gt_build_type ) then
# 32bit x86_64 and ia32 - decided at the beginning of the file
setenv gt_ld_syslibs " -lncurses -lm -ldl -lc -lpthread -lrt"
endif
if ( "cygwin" == $platform_only ) then
setenv gt_ld_syslibs "-lncurses -lm -lcrypt"
endif
# -lrt for async I/O in mupip recover/rollback
setenv gt_ld_aio_syslib "-lrt"
if ( "cygwin" == $platform_only ) then
setenv gt_ld_aio_syslib ""
endif
# Shared library definition overrides:
setenv gt_cc_shl_options "-c $gt_cc_shl_fpic"
setenv gt_ld_shl_linker "cc"
setenv gt_ld_shl_options "-shared"
# If we are trying to force a 32 bit build on a 64 bit x86 machine, then we need to explicitly specify a 32 bit
# over-ride option.
if ( "x86_64" == $mach_type && "32" == $gt_build_type ) then
setenv gt_cc_options_common "$gt_cc_options_common -m32"
setenv gt_ld_options_gtmshr "$gt_ld_options_gtmshr -m32"
setenv gt_cc_shl_options "$gt_cc_shl_options -m32"
setenv gt_ld_shl_options "$gt_ld_shl_options -m32"
setenv gt_ld_options_common "$gt_ld_options_common -m32"
endif
# need to re-define these in terms of new gt_ld_options_common:
setenv gt_ld_options_bta "$gt_ld_options_common"
setenv gt_ld_options_dbg "$gt_ld_options_common"
setenv gt_ld_options_pro "$gt_ld_options_common"
setenv gt_ld_shl_suffix ".so"
# lint definition overrides
# setenv gt_lint_linter ""
setenv gt_lint_options_library "-x"
setenv gt_lint_options_common ""
endif
# PBO(Profile based optimization) settings for Linux-IA64, intel compiler.
set gtm_build_image = `basename $gtm_exe`
if ( "ia64" == $mach_type && "pro" == $gtm_build_image && "icc" == $gtm_linux_compiler) then
setenv gt_cc_option_optimize "-O3"
if ($?gtm_pbo_option) then
@ need_mkdir = 0
if !($?gtm_pbo_db) then
@ need_mkdir = 1
setenv gtm_pbo_db "$gtm_log/pbo"
else if !(-e $gtm_pbo_db) then
@ need_mkdir = 1
endif
if (1 == $need_mkdir) then
mkdir -p $gtm_pbo_db
chmod 775 $gtm_pbo_db # Others need ability to write to the pbo files
endif
if ($gtm_pbo_option == "collect") then
setenv gt_cc_option_optimize "-prof-gen -prof-dir $gtm_pbo_db"
setenv gt_ld_options_pro "$gt_ld_options_pro -prof-gen -prof-dir $gtm_pbo_db"
setenv gt_as_option_optimize "$gt_cc_option_optimize"
else if ($gtm_pbo_option == "use") then
setenv gt_cc_option_optimize "-O3 -prof-use -prof-dir $gtm_pbo_db"
setenv gt_ld_options_pro "$gt_ld_options_pro -prof-dir $gtm_pbo_db"
endif
endif
endif
# Assembler definitions:
# Note: we need to specify the assembler output file name or it will write it to the source directory.
if ( "ia64" == $mach_type ) then
alias gt_as_bta 'gt_as $gt_as_option_debug $gt_as_option_nooptimize'
alias gt_as_dbg 'gt_as $gt_as_option_DDEBUG $gt_as_option_debug $gt_as_option_nooptimize'
alias gt_as_pro 'gt_as $gt_as_option_optimize '
endif
if ( "s390x" == $mach_type) then
setenv gt_asm_arch_size "-m64"
else if ( "64" == $gt_build_type) then
setenv gt_asm_arch_size "--64"
else
setenv gt_asm_arch_size "--32"
endif
if ( "ia64" != $mach_type ) then
alias gt_as_bta \
'gt_as $gt_as_option_debug $gt_as_option_nooptimize $gt_asm_arch_size -o `basename \!:1 .s`.o \!:1'
# If the value of the alias variable extends the 132 character limit, use a temporary variable
# (like gtm_as_dbg_var below) and use that in the alias value to stick to the the coding standard.
set gt_as_dbg_var = "$gt_as_option_DDEBUG $gt_as_option_debug $gt_as_option_nooptimize $gt_asm_arch_size"
alias gt_as_dbg 'gt_as $gt_as_dbg_var -o `basename \!:1 .s`.o \!:1'
alias gt_as_pro 'gt_as $gt_as_option_optimize $gt_asm_arch_size -o `basename \!:1 .s`.o \!:1'
endif