File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / packages / OS400 / make-lib.sh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:16 2020 UTC (5 years, 3 months ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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: #       libcurl compilation script for the OS/400.
   25: #
   26: 
   27: SCRIPTDIR=`dirname "${0}"`
   28: . "${SCRIPTDIR}/initscript.sh"
   29: cd "${TOPDIR}/lib"
   30: 
   31: #       Need to have IFS access to the mih/cipher header file.
   32: 
   33: if action_needed cipher.mih '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR'
   34: then    rm -f cipher.mih
   35:         ln -s '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR' cipher.mih
   36: fi
   37: 
   38: 
   39: #      Create and compile the identification source file.
   40: 
   41: echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c
   42: echo '#pragma comment(user, __DATE__)' >> os400.c
   43: echo '#pragma comment(user, __TIME__)' >> os400.c
   44: echo '#pragma comment(copyright, "Copyright (C) 1998-2016 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c
   45: make_module     OS400           os400.c
   46: LINK=                           # No need to rebuild service program yet.
   47: MODULES=
   48: 
   49: 
   50: #       Get source list.
   51: 
   52: sed -e ':begin'                                                         \
   53:     -e '/\\$/{'                                                         \
   54:     -e 's/\\$/ /'                                                       \
   55:     -e 'N'                                                              \
   56:     -e 'bbegin'                                                         \
   57:     -e '}'                                                              \
   58:     -e 's/\n//g'                                                        \
   59:     -e 's/[[:space:]]*$//'                                              \
   60:     -e 's/^\([A-Za-z][A-Za-z0-9_]*\)[[:space:]]*=[[:space:]]*\(.*\)/\1="\2"/' \
   61:     -e 's/\$(\([A-Za-z][A-Za-z0-9_]*\))/${\1}/g'                        \
   62:         < Makefile.inc > tmpscript.sh
   63: . ./tmpscript.sh
   64: 
   65: 
   66: #       Compile the sources into modules.
   67: 
   68: INCLUDES="'`pwd`'"
   69: 
   70: # Create a small C program to check ccsidcurl.c is up to date
   71: if action_needed "${LIBIFSNAME}/CHKSTRINGS.PGM"
   72: then
   73:   CMD="CRTBNDC PGM(${TARGETLIB}/CHKSTRINGS) SRCSTMF('${SCRIPTDIR}/chkstrings.c')"
   74:   CMD="${CMD} INCDIR('${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}' ${INCLUDES})"
   75:   system -i "${CMD}"
   76:   if [ $? -ne 0 ]
   77:   then
   78:     echo "ERROR: Failed to build CHKSTRINGS *PGM object!"
   79:     exit 2
   80:   else
   81:     ${LIBIFSNAME}/CHKSTRINGS.PGM
   82:     if [ $? -ne 0 ]
   83:     then
   84:       echo "ERROR: CHKSTRINGS failed!"
   85:       exit 2
   86:     fi
   87:   fi
   88: fi
   89: 
   90: make_module     OS400SYS        "${SCRIPTDIR}/os400sys.c"
   91: make_module     CCSIDCURL       "${SCRIPTDIR}/ccsidcurl.c"
   92: 
   93: for SRC in ${CSOURCES}
   94: do      MODULE=`db2_name "${SRC}"`
   95:         make_module "${MODULE}" "${SRC}"
   96: done
   97: 
   98: 
   99: #       If needed, (re)create the static binding directory.
  100: 
  101: if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
  102: then    LINK=YES
  103: fi
  104: 
  105: if [ "${LINK}" ]
  106: then    rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
  107:         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
  108:         CMD="${CMD} TEXT('LibCurl API static binding directory')"
  109:         system "${CMD}"
  110: 
  111:         for MODULE in ${MODULES}
  112:         do      CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
  113:                 CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
  114:                 system "${CMD}"
  115:         done
  116: fi
  117: 
  118: 
  119: #       The exportation file for service program creation must be in a DB2
  120: #               source file, so make sure it exists.
  121: 
  122: if action_needed "${LIBIFSNAME}/TOOLS.FILE"
  123: then    CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
  124:         CMD="${CMD} TEXT('curl: build tools')"
  125:         system "${CMD}"
  126: fi
  127: 
  128: 
  129: #       Gather the list of symbols to export.
  130: 
  131: EXPORTS=`grep '^CURL_EXTERN[[:space:]]'                                 \
  132:               "${TOPDIR}"/include/curl/*.h                              \
  133:               "${SCRIPTDIR}/ccsidcurl.h"                                |
  134:          sed -e 's/^.*CURL_EXTERN[[:space:]]\(.*\)(.*$/\1/'             \
  135:              -e 's/[[:space:]]*$//'                                     \
  136:              -e 's/^.*[[:space:]][[:space:]]*//'                        \
  137:              -e 's/^\*//'                                               \
  138:              -e 's/(\(.*\))/\1/'`
  139: 
  140: #       Create the service program exportation file in DB2 member if needed.
  141: 
  142: BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
  143: 
  144: if action_needed "${BSF}" Makefile.am
  145: then    LINK=YES
  146: fi
  147: 
  148: if [ "${LINK}" ]
  149: then    echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \
  150:             > "${BSF}"
  151:         for EXPORT in ${EXPORTS}
  152:         do      echo ' EXPORT    SYMBOL("'"${EXPORT}"'")' >> "${BSF}"
  153:         done
  154: 
  155:         echo ' ENDPGMEXP' >> "${BSF}"
  156: fi
  157: 
  158: 
  159: #       Build the service program if needed.
  160: 
  161: if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
  162: then    LINK=YES
  163: fi
  164: 
  165: if [ "${LINK}" ]
  166: then    CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
  167:         CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
  168:         CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
  169:         CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}"
  170:         if [ "${WITH_ZLIB}" != 0 ]
  171:         then    CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}"
  172:                 liblist -a "${ZLIB_LIB}"
  173:         fi
  174:         if [ "${WITH_LIBSSH2}" != 0 ]
  175:         then    CMD="${CMD} ${LIBSSH2_LIB}/${LIBSSH2_BNDDIR}"
  176:                 liblist -a "${LIBSSH2_LIB}"
  177:         fi
  178:         CMD="${CMD})"
  179:         CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
  180:         CMD="${CMD} TEXT('curl API library')"
  181:         CMD="${CMD} TGTRLS(${TGTRLS})"
  182:         system "${CMD}"
  183:         LINK=YES
  184: fi
  185: 
  186: 
  187: #       If needed, (re)create the dynamic binding directory.
  188: 
  189: if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
  190: then    LINK=YES
  191: fi
  192: 
  193: if [ "${LINK}" ]
  194: then    rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
  195:         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
  196:         CMD="${CMD} TEXT('LibCurl API dynamic binding directory')"
  197:         system "${CMD}"
  198:         CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
  199:         CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
  200:         system "${CMD}"
  201: fi
  202: 
  203: 
  204: #       Rebuild the formdata test if needed.
  205: 
  206: if [ "${TEST_FORMDATA}" ]
  207: then    MODULES=
  208:         make_module TFORMDATA   formdata.c      "'_FORM_DEBUG' 'CURLDEBUG'"
  209:         make_module TSTREQUAL   strequal.c      "'_FORM_DEBUG' 'CURLDEBUG'"
  210:         make_module TMEMDEBUG   memdebug.c      "'_FORM_DEBUG' 'CURLDEBUG'"
  211:         make_module TMPRINTF    mprintf.c       "'_FORM_DEBUG' 'CURLDEBUG'"
  212:         make_module TSTRERROR   strerror.c      "'_FORM_DEBUG' 'CURLDEBUG'"
  213:         #       The following modules should not be needed (see comment in
  214:         #               formdata.c. However, there are some unsatisfied
  215:         #               external references leading in the following
  216:         #               modules to be (recursively) needed.
  217:         MODULES="${MODULES} EASY STRDUP SSLGEN GSKIT HOSTIP HOSTIP4 HOSTIP6"
  218:         MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT"
  219:         MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP"
  220:         MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN"
  221:         MODULES="${MODULES} CONNECT SOCKS PROGRESS ESCAPE INET_PTON GETENV"
  222:         MODULES="${MODULES} DICT LDAP TELNET FILE TFTP NETRC PARSEDATE"
  223:         MODULES="${MODULES} SPEEDCHECK SPLAY BASE64 SECURITY IF2IP MD5"
  224:         MODULES="${MODULES} KRB5 OS400SYS"
  225: 
  226:         PGMIFSNAME="${LIBIFSNAME}/TFORMDATA.PGM"
  227: 
  228:         if action_needed "${PGMIFSNAME}"
  229:         then    LINK=YES
  230:         fi
  231: 
  232:         if [ "${LINK}" ]
  233:         then    CMD="CRTPGM PGM(${TARGETLIB}/TFORMDATA)"
  234:                 CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)"
  235:                 CMD="${CMD} MODULE("
  236: 
  237:                 for MODULE in ${MODULES}
  238:                 do      CMD="${CMD} ${TARGETLIB}/${MODULE}"
  239:                 done
  240: 
  241:                 CMD="${CMD} ) BNDSRVPGM(QADRTTS)"
  242:                 CMD="${CMD} TGTRLS(${TGTRLS})"
  243:                 system "${CMD}"
  244:         fi
  245: fi

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