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