620 lines
25 KiB
Tcsh
620 lines
25 KiB
Tcsh
#################################################################
|
|
# #
|
|
# Copyright 2001, 2013 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. #
|
|
# #
|
|
#################################################################
|
|
|
|
#
|
|
###########################################################################################
|
|
#
|
|
# buildaux.csh - Build GT.M auxiliaries: dse, geteuid, gtmsecshr, lke, mupip.
|
|
#
|
|
# Arguments:
|
|
# $1 - version number or code
|
|
# $2 - image type (b[ta], d[bg], or p[ro])
|
|
# $3 - target directory
|
|
# $4 - [auxillaries to build] e.g. dse mupip ftok gtcm_pkdisp gtcm_server etc.
|
|
#
|
|
###########################################################################################
|
|
|
|
set buildaux_status = 0
|
|
|
|
set dollar_sign = \$
|
|
set mach_type = `uname -m`
|
|
set platform_name = `uname | sed 's/-//g' | tr '[A-Z]' '[a-z]'`
|
|
|
|
if ( $1 == "" ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
endif
|
|
|
|
if ( $2 == "" ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
endif
|
|
|
|
if ( $3 == "" ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
endif
|
|
|
|
|
|
switch ($2)
|
|
case "[bB]*":
|
|
set gt_ld_options = "$gt_ld_options_bta"
|
|
set gt_image = "bta"
|
|
breaksw
|
|
|
|
case "[dD]*":
|
|
set gt_ld_options = "$gt_ld_options_dbg"
|
|
set gt_image = "dbg"
|
|
breaksw
|
|
|
|
case "[pP]*":
|
|
set gt_ld_options = "$gt_ld_options_pro"
|
|
set gt_image = "pro"
|
|
breaksw
|
|
|
|
default:
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
breaksw
|
|
|
|
endsw
|
|
|
|
|
|
version $1 $2
|
|
if ( $buildaux_status != 0 ) then
|
|
echo "buildaux-I-usage, Usage: $shell buildaux.csh <version> <image type> <target directory> [auxillary]"
|
|
exit $buildaux_status
|
|
endif
|
|
|
|
#####################################################################################
|
|
#
|
|
# The executables comprises of auxillaries and utilities. Actually the later part
|
|
# of the script can be done in a foreach loop. But for reasons of run-time
|
|
# slow-down, we have to wait for hardware to improve on the slower platforms.
|
|
# This logical division is done so that later we can add the utilities in a loop.
|
|
#
|
|
#####################################################################################
|
|
|
|
set buildaux_auxillaries = "gde dse geteuid gtmsecshr lke mupip gtcm_server gtcm_gnp_server gtmcrypt"
|
|
set buildaux_utilities = "semstat2 ftok gtcm_pkdisp gtcm_shmclean gtcm_play dummy dbcertify"
|
|
set buildaux_executables = "$buildaux_auxillaries $buildaux_utilities"
|
|
set buildaux_validexecutable = 0
|
|
|
|
foreach executable ( $buildaux_executables )
|
|
setenv buildaux_$executable 0
|
|
end
|
|
|
|
set new_auxillarylist = ""
|
|
if (4 <= $#) then
|
|
foreach auxillary ( $argv[4-] )
|
|
if ( "$auxillary" == "lke") then
|
|
set new_auxillarylist = "$new_auxillarylist lke gtcm_gnp_server"
|
|
else if ( "$auxillary" == "gnpclient") then
|
|
$shell $gtm_tools/buildshr.csh $1 $2 ${gtm_root}/$1/$2
|
|
if (0 != $status) @ buildaux_status = $status
|
|
else if ( "$auxillary" == "gnpserver") then
|
|
set new_auxillarylist = "$new_auxillarylist gtcm_gnp_server"
|
|
else if ( "$auxillary" == "cmisockettcp") then
|
|
set new_auxillarylist = "$new_auxillarylist gtcm_gnp_server"
|
|
$shell $gtm_tools/buildshr.csh $1 $2 ${gtm_root}/$1/$2
|
|
else if ( "$auxillary" == "gtcm") then
|
|
set new_auxillarylist = "$new_auxillarylist gtcm_server gtcm_play gtcm_shmclean gtcm_pkdisp"
|
|
else if ( "$auxillary" == "stub") then
|
|
set new_auxillarylist = "$new_auxillarylist dse mupip gtcm_server gtcm_gnp_server gtcm_play"
|
|
set new_auxillarylist = "$new_auxillarylist gtcm_pkdisp gtcm_shmclean"
|
|
else if ("$auxillary" == "mumps") then
|
|
$shell $gtm_tools/buildshr.csh $1 $2 ${gtm_root}/$1/$2
|
|
if (0 != $status) @ buildaux_status = $status
|
|
if ($#argv == 4) then
|
|
exit $buildaux_status
|
|
endif
|
|
else if ( "$auxillary" == "gtmrpc" || "$auxillary" == "gtm_svc") then
|
|
$shell $gtm_tools/buildshr.csh $1 $2 ${gtm_root}/$1/$2
|
|
if (0 != $status) @ buildaux_status = $status
|
|
else
|
|
set new_auxillarylist = "$new_auxillarylist $auxillary"
|
|
endif
|
|
end
|
|
endif
|
|
|
|
if ( $4 == "" ) then
|
|
foreach executable ( $buildaux_executables )
|
|
setenv buildaux_$executable 1
|
|
end
|
|
else
|
|
foreach executable ( $buildaux_executables )
|
|
foreach auxillary ( $new_auxillarylist )
|
|
if ( "$auxillary" == "$executable" ) then
|
|
set buildaux_validexecutable = 1
|
|
setenv buildaux_$auxillary 1
|
|
break
|
|
endif
|
|
end
|
|
end
|
|
if ( $buildaux_validexecutable == 0 && "$new_auxillarylist" != "" ) then
|
|
echo "buildaux-E-AuxUnknown -- Auxillary, ""$argv[4-]"", is not a valid one"
|
|
echo "buildaux-I-usage, Usage: $shell buildaux.csh <version> <image type> <target directory> [auxillary-list]"
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
exit $buildaux_status
|
|
endif
|
|
endif
|
|
|
|
unalias ls rm
|
|
set buildaux_verbose = $?verbose
|
|
set verbose
|
|
set echo
|
|
|
|
if ( $buildaux_gde == 1 ) then
|
|
pushd $gtm_exe
|
|
chmod 664 *.m *.o
|
|
|
|
\rm -f *.m *.o # use \rm to avoid rm from asking for confirmation (in case it has been aliased so)
|
|
cp $gtm_pct/*.m .
|
|
switch ($gt_image) # potentially all 3 versions could be in $gtm_pct .. we only need one, delete the others
|
|
case "pro":
|
|
rm -f GTMDefinedTypesInitBta.m >& /dev/null
|
|
rm -f GTMDefinedTypesInitDbg.m >& /dev/null
|
|
mv GTMDefinedTypesInitPro.m GTMDefinedTypesInit.m
|
|
breaksw
|
|
case "dbg":
|
|
rm -f GTMDefinedTypesInitBta.m >& /dev/null
|
|
rm -f GTMDefinedTypesInitPro.m >& /dev/null
|
|
mv GTMDefinedTypesInitDbg.m GTMDefinedTypesInit.m
|
|
breaksw
|
|
case "bta":
|
|
rm -f GTMDefinedTypesInitDbg.m >& /dev/null
|
|
rm -f GTMDefinedTypesInitPro.m >& /dev/null
|
|
mv GTMDefinedTypesInitBta.m GTMDefinedTypesInit.m
|
|
breaksw
|
|
endsw
|
|
# GDE and the % routines should all be in upper-case.
|
|
if ( `uname` !~ "CYGWIN*") then
|
|
ls -1 *.m | awk '! /GTMDefinedTypesInit/ {printf "mv %s %s\n", $1, toupper($1);}' | sed 's/.M$/.m/g' | sh
|
|
else
|
|
# unless the mount is "managed", Cygwin is case insensitive but preserving
|
|
ls -1 *.m | awk '{printf "mv %s %s.tmp;mv %s.tmp %s\n", $1, $1, $1, toupper($1);}' | sed 's/.M$/.m/g' | sh
|
|
endif
|
|
|
|
# Compile all of the *.m files once so the $gtm_dist directory can remain protected.
|
|
# Switch to M mode so we are guaranteed the .o files in this directory will be M-mode
|
|
# (just in case current environment variables are in UTF8 mode)
|
|
# Not doing so could cause later INVCHSET error if parent environment switches back to M mode.
|
|
setenv LC_CTYPE C
|
|
setenv gtm_chset M
|
|
./mumps *.m
|
|
if (0 != $status) @ buildaux_status = $status
|
|
if ($buildaux_status != 0) then
|
|
echo "buildaux-E-compile_M, Failed to compile .m programs in M mode" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
endif
|
|
|
|
source $gtm_tools/set_library_path.csh
|
|
source $gtm_tools/check_unicode_support.csh
|
|
if ("TRUE" == "$is_unicode_support") then
|
|
if (! -e utf8) mkdir utf8
|
|
if ( "OS/390" == $HOSTOS ) then
|
|
setenv gtm_chset_locale $utflocale # LC_CTYPE not picked up right
|
|
endif
|
|
setenv LC_CTYPE $utflocale
|
|
unsetenv LC_ALL
|
|
setenv gtm_chset UTF-8 # switch to "UTF-8" mode
|
|
\rm -f utf8/*.m # use \rm to avoid rm from asking for confirmation (in case it has been aliased so)
|
|
# get a list of all m files to link
|
|
setenv mfiles `ls *.m`
|
|
cd utf8
|
|
foreach mfile ($mfiles)
|
|
ln -s ../$mfile $mfile
|
|
end
|
|
../mumps *.m
|
|
if (0 != $status) @ buildaux_status = $status
|
|
if ($buildaux_status != 0) then
|
|
echo "buildaux-E-compile_UTF8, Failed to compile .m programs in UTF-8 mode" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
endif
|
|
cd ..
|
|
setenv LC_CTYPE C
|
|
unsetenv gtm_chset # switch back to "M" mode
|
|
endif
|
|
|
|
# Don't deliver the GDE sources except with a dbg release.
|
|
if ( "$gtm_exe" != "$gtm_dbg" ) then
|
|
\rm -f GDE*.m # use \rm to avoid rm from asking for confirmation (in case it has been aliased so)
|
|
if (-e utf8) then
|
|
\rm -f utf8/GDE*.m # use \rm to avoid rm from asking for confirmation (if it has been aliased so)
|
|
endif
|
|
endif
|
|
popd
|
|
endif
|
|
|
|
if ( $buildaux_dse == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/dse.loadmap -bmap:$gtm_map/dse.loadmap -bxref:$gtm_map/dse.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/dse -L$gtm_obj $gtm_obj/{dse,dse_cmd}.o \
|
|
$gt_ld_sysrtns $gt_ld_options_all_exe -ldse -lmumps -lstub \
|
|
$gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/dse.map
|
|
if ( $status != 0 || ! -x $3/dse ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkdse, Failed to link dse (see ${dollar_sign}gtm_map/dse.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/dse
|
|
else
|
|
chatr +as mpas $3/dse
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_geteuid == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/geteuid.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/geteuid.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/geteuid.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/geteuid -L$gtm_obj $gtm_obj/geteuid.o \
|
|
$gt_ld_sysrtns $gt_ld_extra_libs -lmumps $gt_ld_syslibs >& $gtm_map/geteuid.map
|
|
if ( $status != 0 || ! -x $3/geteuid ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgeteuid, Failed to link geteuid (see ${dollar_sign}gtm_map/geteuid.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable $3/geteuid
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_gtmsecshr == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
$gtm_com/IGS $3/gtmsecshr "STOP" # stop any active gtmsecshr processes
|
|
$gtm_com/IGS $3/gtmsecshr "RMDIR" # remove root-owned gtmsecshr, gtmsecshrdir, gtmsecshrdir/gtmsecshr files/dirs
|
|
foreach file (gtmsecshr gtmsecshr_wrapper)
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/$file.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/$file.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/$file.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/${file} -L$gtm_obj $gtm_obj/${file}.o \
|
|
$gt_ld_sysrtns $gt_ld_extra_libs -lmumps $gt_ld_syslibs >& $gtm_map/${file}.map
|
|
if ( $status != 0 || ! -x $3/${file} ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-link${file}, Failed to link ${file} (see ${dollar_sign}gtm_map/${file}.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/${file}
|
|
else
|
|
chatr +as mpas $3/${file}
|
|
endif
|
|
endif
|
|
end
|
|
mkdir ../gtmsecshrdir
|
|
mv ../gtmsecshr ../gtmsecshrdir # move actual gtmsecshr into subdirectory
|
|
mv ../gtmsecshr_wrapper ../gtmsecshr # rename wrapper to be actual gtmsecshr
|
|
|
|
# add symbolic link to gtmsecshrdir in utf8 if utf8 exists
|
|
if ( -d utf8 ) then
|
|
cd utf8; ln -s ../gtmsecshrdir gtmsecshrdir; cd -
|
|
endif
|
|
$gtm_com/IGS $3/gtmsecshr "CHOWN" # make gtmsecshr, gtmsecshrdir, gtmsecshrdir/gtmsecshr files/dirs root owned
|
|
if (0 != $status) @ buildaux_status = $status
|
|
endif
|
|
|
|
if ( $buildaux_lke == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/lke.loadmap -bmap:$gtm_map/lke.loadmap -bxref:$gtm_map/lke.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/lke -L$gtm_obj $gtm_obj/{lke,lke_cmd}.o \
|
|
$gt_ld_sysrtns $gt_ld_options_all_exe -llke -lmumps -lgnpclient -lmumps -lgnpclient -lcmisockettcp \
|
|
$gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/lke.map
|
|
if ( $status != 0 || ! -x $3/lke ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linklke, Failed to link lke (see ${dollar_sign}gtm_map/lke.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/lke
|
|
else
|
|
chatr +as mpas $3/lke
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_mupip == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/mupip.loadmap -bmap:$gtm_map/mupip.loadmap -bxref:$gtm_map/mupip.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/mupip -L$gtm_obj $gtm_obj/{mupip,mupip_cmd}.o \
|
|
$gt_ld_sysrtns $gt_ld_options_all_exe -lmupip -lmumps -lstub \
|
|
$gt_ld_extra_libs $gt_ld_aio_syslib $gt_ld_syslibs >& $gtm_map/mupip.map
|
|
if ( $status != 0 || ! -x $3/mupip ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkmupip, Failed to link mupip (see ${dollar_sign}gtm_map/mupip.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/mupip
|
|
else
|
|
chatr +as mpas $3/mupip
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_gtcm_server == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/gtcm_server.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/gtcm_server.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/gtcm_server.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/gtcm_server -L$gtm_obj \
|
|
$gtm_obj/gtcm_main.o $gtm_obj/omi_srvc_xct.o $gt_ld_sysrtns $gt_ld_options_all_exe \
|
|
-lgtcm -lmumps -lstub $gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/gtcm_server.map
|
|
if ( $status != 0 || ! -x $3/gtcm_server) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgtcm_server, Failed to link gtcm_server (see ${dollar_sign}gtm_map/gtcm_server.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/gtcm_server
|
|
else
|
|
chatr +as mpas $3/gtcm_server
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_gtcm_gnp_server == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/gtcm_gnp_server.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/gtcm_gnp_server.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/gtcm_gnp_server.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/gtcm_gnp_server -L$gtm_obj \
|
|
$gtm_obj/gtcm_gnp_server.o $gt_ld_sysrtns $gt_ld_options_all_exe \
|
|
-lgnpserver -llke -lmumps -lcmisockettcp -lstub \
|
|
$gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/gtcm_gnp_server.map
|
|
if ( $status != 0 || ! -x $3/gtcm_gnp_server) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgtcm_gnp_server, Failed to link gtcm_gnp_server" \
|
|
"(see ${dollar_sign}gtm_map/gtcm_gnp_server.map)" >> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/gtcm_gnp_server
|
|
else
|
|
chatr +as mpas $3/gtcm_gnp_server
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
if ( $buildaux_gtcm_play == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/gtcm_play.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/gtcm_play.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/gtcm_play.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/gtcm_play -L$gtm_obj \
|
|
$gtm_obj/gtcm_play.o $gtm_obj/omi_sx_play.o $gt_ld_sysrtns $gt_ld_options_all_exe \
|
|
-lgtcm -lmumps -lstub $gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/gtcm_play.map
|
|
if ( $status != 0 || ! -x $3/gtcm_play) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgtcm_play, Failed to link gtcm_play (see ${dollar_sign}gtm_map/gtcm_play.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/gtcm_play
|
|
else
|
|
chatr +as mpas $3/gtcm_play
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_gtcm_pkdisp == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/gtcm_pkdisp.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/gtcm_pkdisp.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/gtcm_pkdisp.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/gtcm_pkdisp -L$gtm_obj $gtm_obj/gtcm_pkdisp.o \
|
|
$gt_ld_sysrtns -lgtcm -lmumps -lstub $gt_ld_extra_libs $gt_ld_syslibs \
|
|
>& $gtm_map/gtcm_pkdisp.map
|
|
if ( $status != 0 || ! -x $3/gtcm_pkdisp) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgtcm_pkdisp, Failed to link gtcm_pkdisp (see ${dollar_sign}gtm_map/gtcm_pkdisp.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable $3/gtcm_pkdisp
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_gtcm_shmclean == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/gtcm_shmclean.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/gtcm_shmclean.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/gtcm_shmclean.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/gtcm_shmclean -L$gtm_obj $gtm_obj/gtcm_shmclean.o \
|
|
$gt_ld_sysrtns -lgtcm -lmumps -lstub $gt_ld_extra_libs $gt_ld_syslibs \
|
|
>& $gtm_map/gtcm_shmclean.map
|
|
if ( $status != 0 || ! -x $3/gtcm_shmclean) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkgtcm_shmclean, Failed to link gtcm_shmclean (see ${dollar_sign}gtm_map/gtcm_shmclean.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable $3/gtcm_shmclean
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_semstat2 == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/semstat2.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/semstat2.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/semstat2.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/semstat2 -L$gtm_obj $gtm_obj/semstat2.o \
|
|
$gt_ld_sysrtns $gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/semstat2.map
|
|
if ( $status != 0 || ! -x $3/semstat2 ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linksemstat2, Failed to link semstat2 (see ${dollar_sign}gtm_map/semstat2.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable $3/semstat2
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_ftok == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/ftok.loadmap -bmap:$gtm_map/ftok.loadmap -bxref:$gtm_map/ftok.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/ftok -L$gtm_obj $gtm_obj/ftok.o \
|
|
$gt_ld_sysrtns -lmumps $gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/ftok.map
|
|
if ( $status != 0 || ! -x $3/ftok ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkftok, Failed to link ftok (see ${dollar_sign}gtm_map/ftok.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable $3/ftok
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
if ( $buildaux_dbcertify == 1 ) then
|
|
set aix_loadmap_option = ''
|
|
if ( $HOSTOS == "AIX") then
|
|
set aix_loadmap_option = "-bcalls:$gtm_map/dbcertify.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bmap:$gtm_map/dbcertify.loadmap"
|
|
set aix_loadmap_option = "$aix_loadmap_option -bxref:$gtm_map/dbcertify.loadmap"
|
|
endif
|
|
gt_ld $gt_ld_options $aix_loadmap_option ${gt_ld_option_output}$3/dbcertify -L$gtm_obj \
|
|
$gtm_obj/{dbcertify,dbcertify_cmd}.o $gt_ld_sysrtns -ldbcertify -lmupip -lmumps -lstub $gt_ld_aio_syslib \
|
|
$gt_ld_extra_libs $gt_ld_syslibs >& $gtm_map/dbcertify.map
|
|
if ( $status != 0 || ! -x $3/dbcertify ) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-linkdbcertify, Failed to link dbcertify (see ${dollar_sign}gtm_map/dbcertify.map)" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
else if ( "ia64" == $mach_type && "hpux" == $platform_name ) then
|
|
if ( "dbg" == $gt_image ) then
|
|
chatr +dbg enable +as mpas $3/dbcertify
|
|
else
|
|
chatr +as mpas $3/dbcertify
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# Create the plugin directory, copy the files and set it up so that build.sh can build the needed libraries.
|
|
if ($buildaux_gtmcrypt == 1) then
|
|
set supported_list = `$gtm_tools/check_encrypt_support.sh mail`
|
|
if ("FALSE" != "$supported_list") then # Do it only on the platforms where encryption is supported
|
|
set plugin_build_type=""
|
|
switch ($2)
|
|
case "[bB]*":
|
|
set plugin_build_type="p"
|
|
breaksw
|
|
case "[pP]*":
|
|
set plugin_build_type="p"
|
|
breaksw
|
|
default:
|
|
set plugin_build_type="d"
|
|
breaksw
|
|
endsw
|
|
rm -rf $gtm_dist/plugin/gtmcrypt
|
|
rm -rf $gtm_dist/plugin/
|
|
mkdir -p $gtm_dist/plugin/gtmcrypt >&! /dev/null
|
|
setenv gtm_dist_plugin $gtm_dist/plugin/gtmcrypt
|
|
cp -pf $gtm_src/gtmcrypt_*ref.c $gtm_src/maskpass.c $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_inc/gtmcrypt_*ref.h $gtm_inc/gtmcrypt_interface.h $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_tools/build.sh $gtm_tools/install.sh $gtm_tools/add_db_key.sh $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_tools/encrypt_sign_db_key.sh $gtm_tools/gen_keypair.sh $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_tools/gen_sym_hash.sh $gtm_tools/gen_sym_key.sh $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_tools/import_and_sign_key.sh $gtm_tools/pinentry-gtm.sh $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_tools/show_install_config.sh $gtm_dist_plugin >&! /dev/null
|
|
cp -pf $gtm_pct/pinentry.m $gtm_dist_plugin >&! /dev/null
|
|
chmod +x $gtm_dist_plugin/*.sh
|
|
pushd $gtm_dist_plugin >&! /dev/null
|
|
# For, non-AIX platforms, move the libgcrypt entry to the end of $supported_list. This way, build.sh will always
|
|
# build maskpass with libgcrypt dependency rather than libcrypto dependency on non-AIX platforms.
|
|
if ($HOSTOS != "AIX") then
|
|
set supported_list_reorder = `echo $supported_list | sed 's/gcrypt//;s/$/ gcrypt/'`
|
|
set supported_list = `echo $supported_list_reorder`
|
|
endif
|
|
# Build all possible encryption libraries based on what encryption libraries are supported in this platform.
|
|
foreach supported_lib ($supported_list)
|
|
foreach algorithm ("AES256CFB" "BLOWFISHCFB")
|
|
if ("gcrypt" == "$supported_lib" && "BLOWFISHCFB" == "$algorithm") continue
|
|
echo "####### Building encryption plugin using $supported_lib with $algorithm algorithm #########"
|
|
sh -x $gtm_dist_plugin/build.sh $supported_lib $plugin_build_type $algorithm
|
|
set bstat = $status
|
|
echo ""
|
|
if (0 != $bstat) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-libgtmcrypt, failed to build gtmcrypt and/or helper scripts. See 'map' \
|
|
files in ${dollar_sign}gtm_dist/plugin/gtmcrypt for more details" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
endif
|
|
end
|
|
end
|
|
if ($gtm_verno =~ V[4-8]*) then
|
|
# For production builds don't do any randomizations.
|
|
set algorithm = "AES256CFB"
|
|
if ($HOSTOS == "AIX") then
|
|
set encryption_lib = "openssl"
|
|
else
|
|
set encryption_lib = "gcrypt"
|
|
endif
|
|
else
|
|
# Now that we've built "possibly" more than one encryption library, choose one configuration (based on
|
|
# third-party library and algorithm) randomly and install that.
|
|
set rand = `$gtm_dist/mumps -run %XCMD 'write 1+$random('$#supported_list')'`
|
|
set encryption_lib = $supported_list[$rand]
|
|
if ("gcrypt" == "$encryption_lib") then
|
|
# Force AES as long as the plugin is linked against libgcrypt
|
|
set algorithm = "AES256CFB"
|
|
else
|
|
# OpenSSL, V9* build. Go ahead and randomize the algorithm
|
|
# increase probability of AES256CFB, the industry standard and the one we officially support
|
|
set algorithms = ("AES256CFB" "AES256CFB" "BLOWFISHCFB")
|
|
set rand = `$gtm_dist/mumps -run %XCMD 'write 1+$random('$#algorithms')'`
|
|
set algorithm = $algorithms[$rand]
|
|
endif
|
|
endif
|
|
$gtm_dist_plugin/install.sh $encryption_lib $algorithm
|
|
if (0 != $status) then
|
|
set buildaux_status = `expr $buildaux_status + 1`
|
|
echo "buildaux-E-libgtmcrypt, failed to install libgtmcrypt and/or helper scripts" \
|
|
>> $gtm_log/error.`basename $gtm_exe`.log
|
|
endif
|
|
popd >&! /dev/null
|
|
endif
|
|
endif
|
|
|
|
unset buildaux_m
|
|
|
|
unset echo
|
|
if ( $buildaux_verbose == "0" ) then
|
|
unset verbose
|
|
endif
|
|
|
|
exit $buildaux_status
|