make-lib.sh 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. #!/bin/sh
  2. #
  3. # libcurl compilation script for the OS/400.
  4. #
  5. SCRIPTDIR=`dirname "${0}"`
  6. . "${SCRIPTDIR}/initscript.sh"
  7. cd "${TOPDIR}/lib"
  8. # Create and compile the identification source file.
  9. echo '#pragma comment(user, "libcurl version '"${LIBCURL_VERSION}"'")' > os400.c
  10. echo '#pragma comment(user, __DATE__)' >> os400.c
  11. echo '#pragma comment(user, __TIME__)' >> os400.c
  12. echo '#pragma comment(copyright, "Copyright (C) 1998-2013 Daniel Stenberg et al. OS/400 version by P. Monnerat")' >> os400.c
  13. make_module OS400 os400.c
  14. LINK= # No need to rebuild service program yet.
  15. MODULES=
  16. # Get source list.
  17. sed -e ':begin' \
  18. -e '/\\$/{' \
  19. -e 's/\\$/ /' \
  20. -e 'N' \
  21. -e 'bbegin' \
  22. -e '}' \
  23. -e 's/\n//g' \
  24. -e 's/[[:space:]]*$//' \
  25. -e 's/^\([A-Za-z][A-Za-z0-9_]*\)[[:space:]]*=[[:space:]]*\(.*\)/\1="\2"/' \
  26. -e 's/\$(\([A-Za-z][A-Za-z0-9_]*\))/${\1}/g' \
  27. < Makefile.inc > tmpscript.sh
  28. . ./tmpscript.sh
  29. # Compile the sources into modules.
  30. INCLUDES="'`pwd`'"
  31. make_module OS400SYS "${SCRIPTDIR}/os400sys.c"
  32. make_module CCSIDCURL "${SCRIPTDIR}/ccsidcurl.c"
  33. for SRC in ${CSOURCES}
  34. do MODULE=`db2_name "${SRC}"`
  35. make_module "${MODULE}" "${SRC}"
  36. done
  37. # If needed, (re)create the static binding directory.
  38. if action_needed "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
  39. then LINK=YES
  40. fi
  41. if [ "${LINK}" ]
  42. then rm -rf "${LIBIFSNAME}/${STATBNDDIR}.BNDDIR"
  43. CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${STATBNDDIR})"
  44. CMD="${CMD} TEXT('LibCurl API static binding directory')"
  45. system "${CMD}"
  46. for MODULE in ${MODULES}
  47. do CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${STATBNDDIR})"
  48. CMD="${CMD} OBJ((${TARGETLIB}/${MODULE} *MODULE))"
  49. system "${CMD}"
  50. done
  51. fi
  52. # The exportation file for service program creation must be in a DB2
  53. # source file, so make sure it exists.
  54. if action_needed "${LIBIFSNAME}/TOOLS.FILE"
  55. then CMD="CRTSRCPF FILE(${TARGETLIB}/TOOLS) RCDLEN(112)"
  56. CMD="${CMD} TEXT('curl: build tools')"
  57. system "${CMD}"
  58. fi
  59. # Gather the list of symbols to export.
  60. EXPORTS=`grep '^CURL_EXTERN[[:space:]]' \
  61. "${TOPDIR}"/include/curl/*.h \
  62. "${SCRIPTDIR}/ccsidcurl.h" |
  63. sed -e 's/^.*CURL_EXTERN[[:space:]]\(.*\)(.*$/\1/' \
  64. -e 's/[[:space:]]*$//' \
  65. -e 's/^.*[[:space:]][[:space:]]*//' \
  66. -e 's/^\*//' \
  67. -e 's/(\(.*\))/\1/'`
  68. # Create the service program exportation file in DB2 member if needed.
  69. BSF="${LIBIFSNAME}/TOOLS.FILE/BNDSRC.MBR"
  70. if action_needed "${BSF}" Makefile.am
  71. then LINK=YES
  72. fi
  73. if [ "${LINK}" ]
  74. then echo " STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('LIBCURL_${SONAME}')" \
  75. > "${BSF}"
  76. for EXPORT in ${EXPORTS}
  77. do echo ' EXPORT SYMBOL("'"${EXPORT}"'")' >> "${BSF}"
  78. done
  79. echo ' ENDPGMEXP' >> "${BSF}"
  80. fi
  81. # Build the service program if needed.
  82. if action_needed "${LIBIFSNAME}/${SRVPGM}.SRVPGM"
  83. then LINK=YES
  84. fi
  85. if [ "${LINK}" ]
  86. then CMD="CRTSRVPGM SRVPGM(${TARGETLIB}/${SRVPGM})"
  87. CMD="${CMD} SRCFILE(${TARGETLIB}/TOOLS) SRCMBR(BNDSRC)"
  88. CMD="${CMD} MODULE(${TARGETLIB}/OS400)"
  89. CMD="${CMD} BNDDIR(${TARGETLIB}/${STATBNDDIR}"
  90. if [ "${WITH_ZLIB}" != 0 ]
  91. then CMD="${CMD} ${ZLIB_LIB}/${ZLIB_BNDDIR}"
  92. fi
  93. CMD="${CMD})"
  94. CMD="${CMD} BNDSRVPGM(QADRTTS QGLDCLNT QGLDBRDR)"
  95. CMD="${CMD} TEXT('curl API library')"
  96. CMD="${CMD} TGTRLS(${TGTRLS})"
  97. system "${CMD}"
  98. LINK=YES
  99. fi
  100. # If needed, (re)create the dynamic binding directory.
  101. if action_needed "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
  102. then LINK=YES
  103. fi
  104. if [ "${LINK}" ]
  105. then rm -rf "${LIBIFSNAME}/${DYNBNDDIR}.BNDDIR"
  106. CMD="CRTBNDDIR BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
  107. CMD="${CMD} TEXT('LibCurl API dynamic binding directory')"
  108. system "${CMD}"
  109. CMD="ADDBNDDIRE BNDDIR(${TARGETLIB}/${DYNBNDDIR})"
  110. CMD="${CMD} OBJ((*LIBL/${SRVPGM} *SRVPGM))"
  111. system "${CMD}"
  112. fi
  113. # Rebuild the formdata test if needed.
  114. if [ "${TEST_FORMDATA}" ]
  115. then MODULES=
  116. make_module TFORMDATA formdata.c "'_FORM_DEBUG' 'CURLDEBUG'"
  117. make_module TSTREQUAL strequal.c "'_FORM_DEBUG' 'CURLDEBUG'"
  118. make_module TMEMDEBUG memdebug.c "'_FORM_DEBUG' 'CURLDEBUG'"
  119. make_module TMPRINTF mprintf.c "'_FORM_DEBUG' 'CURLDEBUG'"
  120. make_module TSTRERROR strerror.c "'_FORM_DEBUG' 'CURLDEBUG'"
  121. # The following modules should not be needed (see comment in
  122. # formdata.c. However, there are some unsatisfied
  123. # external references leading in the following
  124. # modules to be (recursively) needed.
  125. MODULES="${MODULES} EASY STRDUP SSLGEN QSSL HOSTIP HOSTIP4 HOSTIP6"
  126. MODULES="${MODULES} URL HASH TRANSFER GETINFO COOKIE SENDF SELECT"
  127. MODULES="${MODULES} INET_NTOP SHARE HOSTTHRE MULTI LLIST FTP HTTP"
  128. MODULES="${MODULES} HTTP_DIGES HTTP_CHUNK HTTP_NEGOT TIMEVAL HOSTSYN"
  129. MODULES="${MODULES} CONNECT SOCKS PROGRESS ESCAPE INET_PTON GETENV"
  130. MODULES="${MODULES} DICT LDAP TELNET FILE TFTP NETRC PARSEDATE"
  131. MODULES="${MODULES} SPEEDCHECK SPLAY BASE64 SECURITY IF2IP MD5"
  132. MODULES="${MODULES} KRB5 OS400SYS"
  133. PGMIFSNAME="${LIBIFSNAME}/TFORMDATA.PGM"
  134. if action_needed "${PGMIFSNAME}"
  135. then LINK=YES
  136. fi
  137. if [ "${LINK}" ]
  138. then CMD="CRTPGM PGM(${TARGETLIB}/TFORMDATA)"
  139. CMD="${CMD} ENTMOD(QADRT/QADRTMAIN2)"
  140. CMD="${CMD} MODULE("
  141. for MODULE in ${MODULES}
  142. do CMD="${CMD} ${TARGETLIB}/${MODULE}"
  143. done
  144. CMD="${CMD} ) BNDSRVPGM(QADRTTS)"
  145. CMD="${CMD} TGTRLS(${TGTRLS})"
  146. system "${CMD}"
  147. fi
  148. fi