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