initscript.sh 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #!/bin/sh
  2. # $Id$
  3. case "${SCRIPTDIR}" in
  4. /*) ;;
  5. *) SCRIPTDIR="`pwd`/${SCRIPTDIR}"
  6. esac
  7. while true
  8. do case "${SCRIPTDIR}" in
  9. */.) SCRIPTDIR="${SCRIPTDIR%/.}";;
  10. *) break;;
  11. esac
  12. done
  13. # The script directory is supposed to be in $TOPDIR/packages/os400.
  14. TOPDIR=`dirname "${SCRIPTDIR}"`
  15. TOPDIR=`dirname "${TOPDIR}"`
  16. export SCRIPTDIR TOPDIR
  17. # Extract the SONAME from the library makefile.
  18. SONAME=`sed -e '/^VERSIONINFO=/!d' -e 's/^.* \([0-9]*\):.*$/\1/' -e 'q' \
  19. < "${TOPDIR}/lib/Makefile.am"`
  20. export SONAME
  21. ################################################################################
  22. #
  23. # Tunable configuration parameters.
  24. #
  25. ################################################################################
  26. TARGETLIB='CURL' # Target OS/400 program library
  27. STATBNDDIR='CURL_A' # Static binding directory.
  28. DYNBNDDIR='CURL' # Dynamic binding directory.
  29. SRVPGM="CURL.${SONAME}" # Service program.
  30. TGTCCSID='500' # Target CCSID of objects
  31. DEBUG='*ALL' # Debug level
  32. OPTIMIZE='10' # Optimisation level
  33. OUTPUT='*NONE' # Compilation output option.
  34. TGTRLS='V5R2M0' # Target OS release
  35. export TARGETLIB STATBNDDIR DYNBNDDIR SRVPGM TGTCCSID DEBUG OPTIMIZE OUTPUT
  36. export TGTRLS
  37. ################################################################################
  38. # Need to get the version definitions.
  39. LIBCURL_VERSION=`grep '^#define *LIBCURL_VERSION ' \
  40. "${TOPDIR}/include/curl/curlver.h" |
  41. sed 's/.*"\(.*\)".*/\1/'`
  42. LIBCURL_VERSION_MAJOR=`grep '^#define *LIBCURL_VERSION_MAJOR ' \
  43. "${TOPDIR}/include/curl/curlver.h" |
  44. sed 's/^#define *LIBCURL_VERSION_MAJOR *\([^ ]*\).*/\1/'`
  45. LIBCURL_VERSION_MINOR=`grep '^#define *LIBCURL_VERSION_MINOR ' \
  46. "${TOPDIR}/include/curl/curlver.h" |
  47. sed 's/^#define *LIBCURL_VERSION_MINOR *\([^ ]*\).*/\1/'`
  48. LIBCURL_VERSION_PATCH=`grep '^#define *LIBCURL_VERSION_PATCH ' \
  49. "${TOPDIR}/include/curl/curlver.h" |
  50. sed 's/^#define *LIBCURL_VERSION_PATCH *\([^ ]*\).*/\1/'`
  51. LIBCURL_VERSION_NUM=`grep '^#define *LIBCURL_VERSION_NUM ' \
  52. "${TOPDIR}/include/curl/curlver.h" |
  53. sed 's/^#define *LIBCURL_VERSION_NUM *0x\([^ ]*\).*/\1/'`
  54. LIBCURL_TIMESTAMP=`grep '^#define *LIBCURL_TIMESTAMP ' \
  55. "${TOPDIR}/include/curl/curlver.h" |
  56. sed 's/.*"\(.*\)".*/\1/'`
  57. export LIBCURL_VERSION
  58. export LIBCURL_VERSION_MAJOR LIBCURL_VERSION_MINOR LIBCURL_VERSION_PATCH
  59. export LIBCURL_VERSION_NUM LIBCURL_TIMESTAMP
  60. ################################################################################
  61. #
  62. # OS/400 specific definitions.
  63. #
  64. ################################################################################
  65. LIBIFSNAME="/QSYS.LIB/${TARGETLIB}.LIB"
  66. ################################################################################
  67. #
  68. # Procedures.
  69. #
  70. ################################################################################
  71. # action_needed dest [src]
  72. #
  73. # dest is an object to build
  74. # if specified, src is an object on which dest depends.
  75. #
  76. # exit 0 (succeeds) if some action has to be taken, else 1.
  77. action_needed()
  78. {
  79. [ ! -e "${1}" ] && return 0
  80. [ "${2}" ] || return 1
  81. [ "${1}" -ot "${2}" ] && return 0
  82. return 1
  83. }
  84. # make_module module_name source_name [additional_definitions]
  85. #
  86. # Compile source name into ASCII module if needed.
  87. # As side effect, append the module name to variable MODULES.
  88. # Set LINK to "YES" if the module has been compiled.
  89. make_module()
  90. {
  91. MODULES="${MODULES} ${1}"
  92. MODIFSNAME="${LIBIFSNAME}/${1}.MODULE"
  93. action_needed "${MODIFSNAME}" "${2}" || return 0;
  94. # #pragma convert has to be in the source file itself, i.e.
  95. # putting it in an include file makes it only active
  96. # for that include file.
  97. # Thus we build a temporary file with the pragma prepended to
  98. # the source file and we compile that themporary file.
  99. echo "#line 1 \"${2}\"" > __tmpsrcf.c
  100. echo "#pragma convert(819)" >> __tmpsrcf.c
  101. echo "#line 1" >> __tmpsrcf.c
  102. cat "${2}" >> __tmpsrcf.c
  103. CMD="CRTCMOD MODULE(${TARGETLIB}/${1}) SRCSTMF('__tmpsrcf.c')"
  104. # CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST *SHOWINC *SHOWSYS)"
  105. CMD="${CMD} SYSIFCOPT(*IFS64IO) OPTION(*INCDIRFIRST)"
  106. CMD="${CMD} LOCALETYPE(*LOCALE)"
  107. CMD="${CMD} INCDIR('/qibm/proddata/qadrt/include'"
  108. CMD="${CMD} '${TOPDIR}/include/curl' '${TOPDIR}/include'"
  109. CMD="${CMD} '${TOPDIR}/packages/OS400' ${INCLUDES})"
  110. CMD="${CMD} TGTCCSID(${TGTCCSID}) TGTRLS(${TGTRLS})"
  111. CMD="${CMD} OUTPUT(${OUTPUT})"
  112. CMD="${CMD} OPTIMIZE(${OPTIMIZE})"
  113. CMD="${CMD} DBGVIEW(${DEBUG})"
  114. if [ "${3}" ]
  115. then CMD="${CMD} DEFINE(${3})"
  116. fi
  117. system "${CMD}"
  118. rm -f __tmpsrcf.c
  119. LINK=YES
  120. }
  121. # Determine DB2 object name from IFS name.
  122. db2_name()
  123. {
  124. basename "${1}" |
  125. tr '[a-z-]' '[A-Z_]' |
  126. sed -e 's/\..*//' \
  127. -e 's/^\(..........\).*/\1/'
  128. }
  129. # Copy IFS file replacing version info.
  130. versioned_copy()
  131. {
  132. sed -e "s/@LIBCURL_VERSION@/${LIBCURL_VERSION}/g" \
  133. -e "s/@LIBCURL_VERSION_MAJOR@/${LIBCURL_VERSION_MAJOR}/g" \
  134. -e "s/@LIBCURL_VERSION_MINOR@/${LIBCURL_VERSION_MINOR}/g" \
  135. -e "s/@LIBCURL_VERSION_PATCH@/${LIBCURL_VERSION_PATCH}/g" \
  136. -e "s/@LIBCURL_VERSION_NUM@/${LIBCURL_VERSION_NUM}/g" \
  137. -e "s/@LIBCURL_TIMESTAMP@/${LIBCURL_TIMESTAMP}/g" \
  138. < "${1}" > "${2}"
  139. }