initscript.sh (10061B)
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 CLcommand() 27 { 28 /usr/bin/system "${@}" || exit 1 29 } 30 31 setenv() 32 33 { 34 # Define and export. 35 36 eval "${1}=${2}" 37 export "${1?}" 38 } 39 40 41 case "${SCRIPTDIR}" in 42 /*) ;; 43 *) SCRIPTDIR="$(pwd)/${SCRIPTDIR}" 44 esac 45 46 while true 47 do case "${SCRIPTDIR}" in 48 */.) SCRIPTDIR="${SCRIPTDIR%/.}";; 49 *) break;; 50 esac 51 done 52 53 # The script directory is supposed to be in $TOPDIR/packages/os400. 54 55 TOPDIR=$(dirname "${SCRIPTDIR}") 56 TOPDIR=$(dirname "${TOPDIR}") 57 export SCRIPTDIR TOPDIR 58 59 # Extract the SONAME from the library makefile. 60 61 SONAME="$(sed -e '/^VERSIONCHANGE=/!d;s/^.*=\([0-9]*\).*/\1/' \ 62 < "${TOPDIR}/lib/Makefile.soname")" 63 export SONAME 64 65 # Get OS/400 configuration parameters. 66 67 . "${SCRIPTDIR}/config400.default" 68 if [ -f "${SCRIPTDIR}/config400.override" ] 69 then . "${SCRIPTDIR}/config400.override" 70 fi 71 72 # Check if perl available. 73 { [ -n "${PASEPERL}" ] && [ -x "${PASEPERL}" ]; } || PASEPERL= 74 75 # Need to get the version definitions. 76 77 LIBCURL_VERSION=$(grep '^#define *LIBCURL_VERSION ' \ 78 "${TOPDIR}/include/curl/curlver.h" | 79 sed 's/.*"\(.*\)".*/\1/') 80 LIBCURL_VERSION_MAJOR=$(grep '^#define *LIBCURL_VERSION_MAJOR ' \ 81 "${TOPDIR}/include/curl/curlver.h" | 82 sed 's/^#define *LIBCURL_VERSION_MAJOR *\([^ ]*\).*/\1/') 83 LIBCURL_VERSION_MINOR=$(grep '^#define *LIBCURL_VERSION_MINOR ' \ 84 "${TOPDIR}/include/curl/curlver.h" | 85 sed 's/^#define *LIBCURL_VERSION_MINOR *\([^ ]*\).*/\1/') 86 LIBCURL_VERSION_PATCH=$(grep '^#define *LIBCURL_VERSION_PATCH ' \ 87 "${TOPDIR}/include/curl/curlver.h" | 88 sed 's/^#define *LIBCURL_VERSION_PATCH *\([^ ]*\).*/\1/') 89 LIBCURL_VERSION_NUM=$(grep '^#define *LIBCURL_VERSION_NUM ' \ 90 "${TOPDIR}/include/curl/curlver.h" | 91 sed 's/^#define *LIBCURL_VERSION_NUM *0x\([^ ]*\).*/\1/') 92 LIBCURL_TIMESTAMP=$(grep '^#define *LIBCURL_TIMESTAMP ' \ 93 "${TOPDIR}/include/curl/curlver.h" | 94 sed 's/.*"\(.*\)".*/\1/') 95 export LIBCURL_VERSION 96 export LIBCURL_VERSION_MAJOR LIBCURL_VERSION_MINOR LIBCURL_VERSION_PATCH 97 export LIBCURL_VERSION_NUM LIBCURL_TIMESTAMP 98 99 ################################################################################ 100 # 101 # OS/400 specific definitions. 102 # 103 ################################################################################ 104 105 LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB" 106 107 108 ################################################################################ 109 # 110 # Procedures. 111 # 112 ################################################################################ 113 114 # action_needed dest [src] 115 # 116 # dest is an object to build 117 # if specified, src is an object on which dest depends. 118 # 119 # exit 0 (succeeds) if some action has to be taken, else 1. 120 121 action_needed() 122 123 { 124 [ ! -e "${1}" ] && return 0 125 [ -n "${2}" ] || return 1 126 # shellcheck disable=SC3013 127 [ "${1}" -ot "${2}" ] && return 0 128 return 1 129 } 130 131 132 # canonicalize_path path 133 # 134 # Return canonicalized path as: 135 # - Absolute 136 # - No . or .. component. 137 138 canonicalize_path() 139 140 { 141 if expr "${1}" : '^/' > /dev/null 142 then P="${1}" 143 else P="$(pwd)/${1}" 144 fi 145 146 R= 147 IFSSAVE="${IFS}" 148 IFS="/" 149 150 for C in ${P} 151 do IFS="${IFSSAVE}" 152 case "${C}" in 153 .) ;; 154 ..) R="$(expr "${R}" : '^\(.*/\)..*')" 155 ;; 156 ?*) R="${R}${C}/" 157 ;; 158 *) ;; 159 esac 160 done 161 162 IFS="${IFSSAVE}" 163 echo "/$(expr "${R}" : '^\(.*\)/')" 164 } 165 166 167 # make_module module_name source_name [additional_definitions] 168 # 169 # Compile source name into ASCII module if needed. 170 # As side effect, append the module name to variable MODULES. 171 # Set LINK to "YES" if the module has been compiled. 172 173 make_module() 174 175 { 176 MODULES="${MODULES} ${1}" 177 MODIFSNAME="${LIBIFSNAME}/${1}.MODULE" 178 action_needed "${MODIFSNAME}" "${2}" || return 0; 179 SRCDIR="$(dirname "$(canonicalize_path "${2}")")" 180 181 # #pragma convert has to be in the source file itself, i.e. 182 # putting it in an include file makes it only active 183 # for that include file. 184 # Thus we build a temporary file with the pragma prepended to 185 # the source file and we compile that temporary file. 186 187 { 188 echo "#line 1 \"${2}\"" 189 echo "#pragma convert(819)" 190 echo "#line 1" 191 cat "${2}" 192 } > "${1}"__819.c 193 CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('${1}__819.c')" 194 CMD="${CMD} SYSIFCOPT(*IFS64IO *ASYNCSIGNAL)" 195 # CMD="${CMD} OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)" 196 CMD="${CMD} OPTION(*INCDIRFIRST)" 197 CMD="${CMD} LOCALETYPE(*LOCALE) FLAG(10)" 198 CMD="${CMD} INCDIR('${QADRTDIR}/include'" 199 CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include' '${SRCDIR}'" 200 CMD="${CMD} '${TOPDIR}/packages/OS400'" 201 202 if [ "${WITH_ZLIB}" != "0" ] 203 then CMD="${CMD} '${ZLIB_INCLUDE}'" 204 fi 205 206 if [ "${WITH_LIBSSH2}" != "0" ] 207 then CMD="${CMD} '${LIBSSH2_INCLUDE}'" 208 fi 209 210 CMD="${CMD} ${INCLUDES})" 211 CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})" 212 CMD="${CMD} OUTPUT(${OUTPUT})" 213 CMD="${CMD} OPTIMIZE(${OPTIMIZE})" 214 CMD="${CMD} DBGVIEW(${DEBUG})" 215 216 DEFINES="${3} 'qadrt_use_inline'" 217 218 if [ "${WITH_ZLIB}" != "0" ] 219 then DEFINES="${DEFINES} HAVE_LIBZ" 220 fi 221 222 if [ "${WITH_LIBSSH2}" != "0" ] 223 then DEFINES="${DEFINES} USE_LIBSSH2" 224 fi 225 226 if [ -n "${DEFINES}" ] 227 then CMD="${CMD} DEFINE(${DEFINES})" 228 fi 229 230 CLcommand "${CMD}" 231 if [ "${DEBUG}" = "*NONE" ] 232 then rm -f "${1}"__819.c 233 fi 234 # shellcheck disable=SC2034 235 LINK=YES 236 } 237 238 239 # Determine DB2 object name from IFS name. 240 241 db2_name() 242 243 { 244 if [ "${2}" = 'nomangle' ] 245 then basename "${1}" | 246 tr 'a-z-' 'A-Z_' | 247 sed -e 's/\..*//' \ 248 -e 's/^\(.\).*\(.........\)$/\1\2/' 249 else basename "${1}" | 250 tr 'a-z-' 'A-Z_' | 251 sed -e 's/\..*//' \ 252 -e 's/^CURL_*/C/' \ 253 -e 's/^TOOL_*/T/' \ 254 -e 's/^\(.\).*\(.........\)$/\1\2/' 255 fi 256 } 257 258 259 # Copy IFS file replacing version info. 260 261 versioned_copy() 262 263 { 264 sed -e "s/@LIBCURL_VERSION@/${LIBCURL_VERSION}/g" \ 265 -e "s/@LIBCURL_VERSION_MAJOR@/${LIBCURL_VERSION_MAJOR}/g" \ 266 -e "s/@LIBCURL_VERSION_MINOR@/${LIBCURL_VERSION_MINOR}/g" \ 267 -e "s/@LIBCURL_VERSION_PATCH@/${LIBCURL_VERSION_PATCH}/g" \ 268 -e "s/@LIBCURL_VERSION_NUM@/${LIBCURL_VERSION_NUM}/g" \ 269 -e "s/@LIBCURL_TIMESTAMP@/${LIBCURL_TIMESTAMP}/g" \ 270 < "${1}" > "${2}" 271 } 272 273 274 # Get definitions from a make file. 275 # The `sed' statement works as follows: 276 # - Join \nl-separated lines. 277 # - Retain only lines that begins with "identifier =". 278 # - Replace @...@ substitutions by shell variable references. 279 # - Turn these lines into shell variable assignments. 280 281 get_make_vars() 282 283 { 284 eval "$(sed -e ': begin' \ 285 -e '/\\$/{' \ 286 -e 'N' \ 287 -e 's/\\\n/ /' \ 288 -e 'b begin' \ 289 -e '}' \ 290 -e 's/[[:space:]][[:space:]]*/ /g' \ 291 -e '/^[A-Za-z_][A-Za-z0-9_]* *=/!d' \ 292 -e 's/@\([A-Za-z0-9_]*\)@/${\1}/g' \ 293 -e 's/ *= */=/' \ 294 -e 's/=\(.*[^ ]\) *$/="\1"/' \ 295 -e 's/\$(\([^)]*\))/${\1}/g' \ 296 < "${1}")" 297 }