quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

make-lib.sh (6037B)


      1 #!/bin/sh
      2 #***************************************************************************
      3 #                                  _   _ ____  _
      4 #  Project                     ___| | | |  _ \| |
      5 #                             / __| | | | |_) | |
      6 #                            | (__| |_| |  _ <| |___
      7 #                             \___|\___/|_| \_\_____|
      8 #
      9 # Copyright (C) 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.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 # SPDX-License-Identifier: curl
     23 #
     24 ###########################################################################
     25 #
     26 #       libcurl compilation script for the OS/400.
     27 #
     28 
     29 SCRIPTDIR=$(dirname "${0}")
     30 . "${SCRIPTDIR}/initscript.sh"
     31 cd "${TOPDIR}/lib" || exit 1
     32 
     33 #       Need to have IFS access to the mih/cipher header file.
     34 
     35 if action_needed cipher.mih '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR'
     36 then    rm -f cipher.mih
     37         ln -s '/QSYS.LIB/QSYSINC.LIB/MIH.FILE/CIPHER.MBR' cipher.mih
     38 fi
     39 
     40 
     41 #      Create and compile the identification source file.
     42 
     43 {
     44         echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")'
     45         echo '#pragma comment(user, __DATE__)'
     46         echo '#pragma comment(user, __TIME__)'
     47         echo '#pragma comment(copyright, "Copyright (C) Daniel Stenberg et al. OS/400 version by P. Monnerat")'
     48 } > os400.c
     49 make_module     OS400           os400.c         BUILDING_LIBCURL
     50 LINK=                           # No need to rebuild service program yet.
     51 MODULES=
     52 
     53 
     54 #       Get source list (CSOURCES variable).
     55 
     56 get_make_vars Makefile.inc
     57 
     58 
     59 #       Compile the sources into modules.
     60 
     61 # shellcheck disable=SC2034
     62 INCLUDES="'$(pwd)'"
     63 
     64 make_module     OS400SYS        "${SCRIPTDIR}/os400sys.c"       BUILDING_LIBCURL
     65 make_module     CCSIDCURL       "${SCRIPTDIR}/ccsidcurl.c"      BUILDING_LIBCURL
     66 
     67 for SRC in ${CSOURCES}
     68 do      MODULE=$(db2_name "${SRC}")
     69         make_module "${MODULE}" "${SRC}" BUILDING_LIBCURL
     70 done
     71 
     72 
     73 #       If needed, (re)create the static binding directory.
     74 
     75 if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
     76 then    LINK=YES
     77 fi
     78 
     79 if [ -n "${LINK}" ]
     80 then    rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
     81         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
     82         CMD="${CMD} TEXT('LibCurl API static binding directory')"
     83         CLcommand "${CMD}"
     84 
     85         for MODULE in ${MODULES}
     86         do      CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
     87                 CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
     88                 CLcommand "${CMD}"
     89         done
     90 fi
     91 
     92 
     93 #       The exportation file for service program creation must be in a DB2
     94 #               source file, so make sure it exists.
     95 
     96 if action_needed "${LIBIFSNAME}/TOOLS.FILE"
     97 then    CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
     98         CMD="${CMD} TEXT('curl: build tools')"
     99         CLcommand "${CMD}"
    100 fi
    101 
    102 
    103 #       Gather the list of symbols to export.
    104 #       - Unfold lines from the header files so that they contain a semicolon.
    105 #       - Keep only CURL_EXTERN definitions.
    106 #       - Remove the CURL_DEPRECATED and CURL_TEMP_PRINTF macro calls.
    107 #       - Drop the parenthesized function arguments and what follows.
    108 #       - Keep the trailing function name only.
    109 
    110 EXPORTS=$(cat "${TOPDIR}"/include/curl/*.h "${SCRIPTDIR}/ccsidcurl.h"   |
    111          sed -e 'H;s/.*//;x;s/\n//;s/.*/& /'                            \
    112              -e '/^CURL_EXTERN[[:space:]]/!d'                           \
    113              -e '/\;/!{x;d;}'                                           \
    114              -e 's/ CURL_DEPRECATED([^)]*)//g'                          \
    115              -e 's/ CURL_TEMP_PRINTF([^)]*)//g'                         \
    116              -e 's/[[:space:]]*(.*$//'                                  \
    117              -e 's/^.*[^A-Za-z0-9_]\([A-Za-z0-9_]*\)$/\1/')
    118 
    119 
    120 #       Create the service program exportation file in DB2 member if needed.
    121 
    122 BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
    123 
    124 if action_needed "${BSF}" Makefile.am
    125 then    LINK=YES
    126 fi
    127 
    128 if [ -n "${LINK}" ]
    129 then    echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \
    130             > "${BSF}"
    131         for EXPORT in ${EXPORTS}
    132         do      echo ' EXPORT    SYMBOL("'"${EXPORT}"'")' >> "${BSF}"
    133         done
    134 
    135         echo ' ENDPGMEXP' >> "${BSF}"
    136 fi
    137 
    138 
    139 #       Build the service program if needed.
    140 
    141 if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
    142 then    LINK=YES
    143 fi
    144 
    145 if [ -n "${LINK}" ]
    146 then    CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
    147         CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
    148         CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
    149         CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}"
    150         if [ "${WITH_ZLIB}" != 0 ]
    151         then    CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}"
    152                 liblist -a "${ZLIB_LIB}"
    153         fi
    154         if [ "${WITH_LIBSSH2}" != 0 ]
    155         then    CMD="${CMD} ${LIBSSH2_LIB}/${LIBSSH2_BNDDIR}"
    156                 liblist -a "${LIBSSH2_LIB}"
    157         fi
    158         CMD="${CMD})"
    159         CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
    160         CMD="${CMD} TEXT('curl API library')"
    161         CMD="${CMD} TGTRLS(${TGTRLS})"
    162         CLcommand "${CMD}"
    163         LINK=YES
    164 fi
    165 
    166 
    167 #       If needed, (re)create the dynamic binding directory.
    168 
    169 if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
    170 then    LINK=YES
    171 fi
    172 
    173 if [ -n "${LINK}" ]
    174 then    rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
    175         CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
    176         CMD="${CMD} TEXT('LibCurl API dynamic binding directory')"
    177         CLcommand "${CMD}"
    178         CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
    179         CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
    180         CLcommand "${CMD}"
    181 fi