Annotation of embedaddon/curl/packages/OS400/initscript.sh, revision 1.1.1.1

1.1       misho       1: #!/bin/sh
                      2: #***************************************************************************
                      3: #                                  _   _ ____  _
                      4: #  Project                     ___| | | |  _ \| |
                      5: #                             / __| | | | |_) | |
                      6: #                            | (__| |_| |  _ <| |___
                      7: #                             \___|\___/|_| \_\_____|
                      8: #
                      9: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
                     10: #
                     11: # This software is licensed as described in the file COPYING, which
                     12: # you should have received as part of this distribution. The terms
                     13: # are also available at https://curl.haxx.se/docs/copyright.html.
                     14: #
                     15: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
                     16: # copies of the Software, and permit persons to whom the Software is
                     17: # furnished to do so, under the terms of the COPYING file.
                     18: #
                     19: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
                     20: # KIND, either express or implied.
                     21: #
                     22: ###########################################################################
                     23: 
                     24: 
                     25: setenv()
                     26: 
                     27: {
                     28:         #       Define and export.
                     29: 
                     30:         eval ${1}="${2}"
                     31:         export ${1}
                     32: }
                     33: 
                     34: 
                     35: case "${SCRIPTDIR}" in
                     36: /*)     ;;
                     37: *)      SCRIPTDIR="`pwd`/${SCRIPTDIR}"
                     38: esac
                     39: 
                     40: while true
                     41: do      case "${SCRIPTDIR}" in
                     42:         */.)    SCRIPTDIR="${SCRIPTDIR%/.}";;
                     43:         *)      break;;
                     44:         esac
                     45: done
                     46: 
                     47: #  The script directory is supposed to be in $TOPDIR/packages/os400.
                     48: 
                     49: TOPDIR=`dirname "${SCRIPTDIR}"`
                     50: TOPDIR=`dirname "${TOPDIR}"`
                     51: export SCRIPTDIR TOPDIR
                     52: 
                     53: #  Extract the SONAME from the library makefile.
                     54: 
                     55: SONAME=`sed -e '/^VERSIONINFO=/!d' -e 's/^.* \([0-9]*\):.*$/\1/' -e 'q' \
                     56:                                                 < "${TOPDIR}/lib/Makefile.am"`
                     57: export SONAME
                     58: 
                     59: 
                     60: ################################################################################
                     61: #
                     62: #                       Tunable configuration parameters.
                     63: #
                     64: ################################################################################
                     65: 
                     66: setenv TARGETLIB        'CURL'                  # Target OS/400 program library.
                     67: setenv STATBNDDIR       'CURL_A'                # Static binding directory.
                     68: setenv DYNBNDDIR        'CURL'                  # Dynamic binding directory.
                     69: setenv SRVPGM           "CURL.${SONAME}"        # Service program.
                     70: setenv TGTCCSID         '500'                   # Target CCSID of objects.
                     71: setenv DEBUG            '*ALL'                  # Debug level.
                     72: setenv OPTIMIZE         '10'                    # Optimisation level
                     73: setenv OUTPUT           '*NONE'                 # Compilation output option.
                     74: setenv TGTRLS           'V6R1M0'                # Target OS release.
                     75: setenv IFSDIR           '/curl'                 # Installation IFS directory.
                     76: 
                     77: #       Define ZLIB availability and locations.
                     78: 
                     79: setenv WITH_ZLIB        0                       # Define to 1 to enable.
                     80: setenv ZLIB_INCLUDE     '/zlib/include'         # ZLIB include IFS directory.
                     81: setenv ZLIB_LIB         'ZLIB'                  # ZLIB library.
                     82: setenv ZLIB_BNDDIR      'ZLIB_A'                # ZLIB binding directory.
                     83: 
                     84: #       Define LIBSSH2 availability and locations.
                     85: 
                     86: setenv WITH_LIBSSH2     0                       # Define to 1 to enable.
                     87: setenv LIBSSH2_INCLUDE  '/libssh2/include'      # LIBSSH2 include IFS directory.
                     88: setenv LIBSSH2_LIB      'LIBSSH2'               # LIBSSH2 library.
                     89: setenv LIBSSH2_BNDDIR   'LIBSSH2_A'             # LIBSSH2 binding directory.
                     90: 
                     91: 
                     92: ################################################################################
                     93: 
                     94: #       Need to get the version definitions.
                     95: 
                     96: LIBCURL_VERSION=`grep '^#define  *LIBCURL_VERSION '                     \
                     97:                         "${TOPDIR}/include/curl/curlver.h"              |
                     98:                 sed 's/.*"\(.*\)".*/\1/'`
                     99: LIBCURL_VERSION_MAJOR=`grep '^#define  *LIBCURL_VERSION_MAJOR '         \
                    100:                         "${TOPDIR}/include/curl/curlver.h"              |
                    101:                 sed 's/^#define  *LIBCURL_VERSION_MAJOR  *\([^ ]*\).*/\1/'`
                    102: LIBCURL_VERSION_MINOR=`grep '^#define  *LIBCURL_VERSION_MINOR '         \
                    103:                         "${TOPDIR}/include/curl/curlver.h"              |
                    104:                 sed 's/^#define  *LIBCURL_VERSION_MINOR  *\([^ ]*\).*/\1/'`
                    105: LIBCURL_VERSION_PATCH=`grep '^#define  *LIBCURL_VERSION_PATCH '         \
                    106:                         "${TOPDIR}/include/curl/curlver.h"              |
                    107:                 sed 's/^#define  *LIBCURL_VERSION_PATCH  *\([^ ]*\).*/\1/'`
                    108: LIBCURL_VERSION_NUM=`grep '^#define  *LIBCURL_VERSION_NUM '             \
                    109:                         "${TOPDIR}/include/curl/curlver.h"              |
                    110:                 sed 's/^#define  *LIBCURL_VERSION_NUM  *0x\([^ ]*\).*/\1/'`
                    111: LIBCURL_TIMESTAMP=`grep '^#define  *LIBCURL_TIMESTAMP '                 \
                    112:                         "${TOPDIR}/include/curl/curlver.h"              |
                    113:                 sed 's/.*"\(.*\)".*/\1/'`
                    114: export LIBCURL_VERSION
                    115: export LIBCURL_VERSION_MAJOR LIBCURL_VERSION_MINOR LIBCURL_VERSION_PATCH
                    116: export LIBCURL_VERSION_NUM LIBCURL_TIMESTAMP
                    117: 
                    118: ################################################################################
                    119: #
                    120: #                       OS/400 specific definitions.
                    121: #
                    122: ################################################################################
                    123: 
                    124: LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
                    125: 
                    126: 
                    127: ################################################################################
                    128: #
                    129: #                               Procedures.
                    130: #
                    131: ################################################################################
                    132: 
                    133: #       action_needed dest [src]
                    134: #
                    135: #       dest is an object to build
                    136: #       if specified, src is an object on which dest depends.
                    137: #
                    138: #       exit 0 (succeeds) if some action has to be taken, else 1.
                    139: 
                    140: action_needed()
                    141: 
                    142: {
                    143:         [ ! -e "${1}" ] && return 0
                    144:         [ "${2}" ] || return 1
                    145:         [ "${1}" -ot "${2}" ] && return 0
                    146:         return 1
                    147: }
                    148: 
                    149: 
                    150: #       canonicalize_path path
                    151: #
                    152: #       Return canonicalized path as:
                    153: #       - Absolute
                    154: #       - No . or .. component.
                    155: 
                    156: canonicalize_path()
                    157: 
                    158: {
                    159:         if expr "${1}" : '^/' > /dev/null
                    160:         then    P="${1}"
                    161:         else    P="`pwd`/${1}"
                    162:         fi
                    163: 
                    164:         R=
                    165:         IFSSAVE="${IFS}"
                    166:         IFS="/"
                    167: 
                    168:         for C in ${P}
                    169:         do      IFS="${IFSSAVE}"
                    170:                 case "${C}" in
                    171:                 .)      ;;
                    172:                 ..)     R=`expr "${R}" : '^\(.*/\)..*'`
                    173:                         ;;
                    174:                 ?*)     R="${R}${C}/"
                    175:                         ;;
                    176:                 *)      ;;
                    177:                 esac
                    178:         done
                    179: 
                    180:         IFS="${IFSSAVE}"
                    181:         echo "/`expr "${R}" : '^\(.*\)/'`"
                    182: }
                    183: 
                    184: 
                    185: #       make_module module_name source_name [additional_definitions]
                    186: #
                    187: #       Compile source name into ASCII module if needed.
                    188: #       As side effect, append the module name to variable MODULES.
                    189: #       Set LINK to "YES" if the module has been compiled.
                    190: 
                    191: make_module()
                    192: 
                    193: {
                    194:         MODULES="${MODULES} ${1}"
                    195:         MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
                    196:         action_needed "${MODIFSNAME}" "${2}" || return 0;
                    197:         SRCDIR=`dirname \`canonicalize_path "${2}"\``
                    198: 
                    199:         #       #pragma convert has to be in the source file itself, i.e.
                    200:         #               putting it in an include file makes it only active
                    201:         #               for that include file.
                    202:         #       Thus we build a temporary file with the pragma prepended to
                    203:         #               the source file and we compile that themporary file.
                    204: 
                    205:         echo "#line 1 \"${2}\"" > __tmpsrcf.c
                    206:         echo "#pragma convert(819)" >> __tmpsrcf.c
                    207:         echo "#line 1" >> __tmpsrcf.c
                    208:         cat "${2}" >> __tmpsrcf.c
                    209:         CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('__tmpsrcf.c')"
                    210: #       CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)"
                    211:         CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
                    212:         CMD="${CMD} LOCALETYPE(*LOCALE) FLAG(10)"
                    213:         CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
                    214:         CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}'"
                    215:         CMD="${CMD} '${TOPDIR}/packages/OS400'"
                    216: 
                    217:         if [ "${WITH_ZLIB}" != "0" ]
                    218:         then    CMD="${CMD} '${ZLIB_INCLUDE}'"
                    219:         fi
                    220: 
                    221:         if [ "${WITH_LIBSSH2}" != "0" ]
                    222:         then    CMD="${CMD} '${LIBSSH2_INCLUDE}'"
                    223:         fi
                    224: 
                    225:         CMD="${CMD} ${INCLUDES})"
                    226:         CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
                    227:         CMD="${CMD} OUTPUT(${OUTPUT})"
                    228:         CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
                    229:         CMD="${CMD} DBGVIEW(${DEBUG})"
                    230: 
                    231:         DEFINES="${3} BUILDING_LIBCURL"
                    232: 
                    233:         if [ "${WITH_ZLIB}" != "0" ]
                    234:         then    DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
                    235:         fi
                    236: 
                    237:         if [ "${WITH_LIBSSH2}" != "0" ]
                    238:         then    DEFINES="${DEFINES} USE_LIBSSH2 HAVE_LIBSSH2_H"
                    239:         fi
                    240: 
                    241:         if [ "${DEFINES}" ]
                    242:         then    CMD="${CMD} DEFINE(${DEFINES})"
                    243:         fi
                    244: 
                    245:         system "${CMD}"
                    246:         rm -f __tmpsrcf.c
                    247:         LINK=YES
                    248: }
                    249: 
                    250: 
                    251: #       Determine DB2 object name from IFS name.
                    252: 
                    253: db2_name()
                    254: 
                    255: {
                    256:         if [ "${2}" = 'nomangle' ]
                    257:         then    basename "${1}"                                         |
                    258:                 tr 'a-z-' 'A-Z_'                                        |
                    259:                 sed -e 's/\..*//'                                       \
                    260:                     -e 's/^\(.\).*\(.........\)$/\1\2/'
                    261:         else    basename "${1}"                                         |
                    262:                 tr 'a-z-' 'A-Z_'                                        |
                    263:                 sed -e 's/\..*//'                                       \
                    264:                     -e 's/^CURL_*/C/'                                   \
                    265:                     -e 's/^\(.\).*\(.........\)$/\1\2/'
                    266:         fi
                    267: }
                    268: 
                    269: 
                    270: #       Copy IFS file replacing version info.
                    271: 
                    272: versioned_copy()
                    273: 
                    274: {
                    275:         sed -e "s/@LIBCURL_VERSION@/${LIBCURL_VERSION}/g"               \
                    276:             -e "s/@LIBCURL_VERSION_MAJOR@/${LIBCURL_VERSION_MAJOR}/g"   \
                    277:             -e "s/@LIBCURL_VERSION_MINOR@/${LIBCURL_VERSION_MINOR}/g"   \
                    278:             -e "s/@LIBCURL_VERSION_PATCH@/${LIBCURL_VERSION_PATCH}/g"   \
                    279:             -e "s/@LIBCURL_VERSION_NUM@/${LIBCURL_VERSION_NUM}/g"       \
                    280:             -e "s/@LIBCURL_TIMESTAMP@/${LIBCURL_TIMESTAMP}/g"           \
                    281:                 < "${1}" > "${2}"
                    282: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>