Edit

kc3-lang/libxml2/os400/make-rpg.sh

Branch :

  • Show log

    Commit

  • Author : Patrick Monnerat
    Date : 2015-04-16 16:04:06
    Hash : 22b0415a
    Message : os400: fix various ILE/RPG types definitions. Adjust build scripts. - A typo caused an undefined symbol reference. - A structure field name did not match the corresponding C name due to a typo. - Some structured fields were not properly aligned. - The long/ulong types were wrongly mapped to 64-bit types. - A typo in a /include directive caused a compilation error. - Doc files copy now converts from UTF-8 and split long lines. - Adjust /include file name mapping translation for proper prefix handling.

  • os400/make-rpg.sh
  • #!/bin/sh
    #
    #       Installation of the ILE/RPG header files in the OS/400 library.
    #
    #       See Copyright for the status of this software.
    #
    #       Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
    #
    
    SCRIPTDIR=`dirname "${0}"`
    . "${SCRIPTDIR}/initscript.sh"
    cd "${TOPDIR}/os400/libxmlrpg"
    
    
    #       Create the OS/400 source program file for the ILE/RPG header files.
    
    SRCPF="${LIBIFSNAME}/LIBXMLRPG.FILE"
    
    if action_needed "${SRCPF}"
    then    CMD="CRTSRCPF FILE(${TARGETLIB}/LIBXMLRPG) RCDLEN(112)"
            CMD="${CMD} CCSID(${TGTCCSID}) TEXT('libxml2: ILE/RPG header files')"
            system "${CMD}"
    fi
    
    
    #       Map file names to DB2 name syntax.
    
    for HFILE in *.rpgle *.rpgle.in
    do      NAME="`basename \"${HFILE}\" .in`"
            VAR="`basename \"${NAME}\" .rpgle`"
            VAL="`db2_name \"${NAME}\" nomangle`"
    
            if [ "${VAR}" = 'xmlschemastypes' ]
            then    VAL=SCHMTYPES
            fi
    
            eval "VAR_${VAR}=\"${VAL}\""
            echo "${VAR} s/${VAR}/${VAL}/g"
    done > tmpsubstfile1
    
    #       Order substitution commands so that a prefix appears after all
    #               file names beginning with the prefix.
    
    sort -r tmpsubstfile1 | sed 's/^[^ ]*[ ]*//' > tmpsubstfile2
    
    
    change_include()
    
    {
            sed -e '\#^....../include  *"libxmlrpg/#{'                      \
                -e 's///'                                                   \
                -e 's/".*//'                                                \
                -f tmpsubstfile2                                            \
                -e 's#.*#      /include libxmlrpg,&#'                       \
                -e '}'
    }
    
    
    #       Create the IFS directory for the ILE/RPG header files.
    
    RPGIFSDIR="${IFSDIR}/include/libxmlrpg"
    
    if action_needed "${RPGIFSDIR}"
    then    mkdir -p "${RPGIFSDIR}"
    fi
    
    #       Copy the header files to IFS ILE/RPG include directory.
    #       Copy them with include path editing to the DB2 library.
    
    for HFILE in *.rpgle *.rpgle.in
    do      IFSCMD="cat \"${HFILE}\""
            DB2CMD="change_include < \"${HFILE}\""
            IFSFILE="`basename \"${HFILE}\" .in`"
    
            case "${HFILE}" in
    
            *.in)   IFSCMD="${IFSCMD} | versioned_copy"
                    DB2CMD="${DB2CMD} | versioned_copy"
                    ;;
            esac
    
            IFSDEST="${RPGIFSDIR}/${IFSFILE}"
    
            if action_needed "${IFSDEST}" "${HFILE}"
            then    eval "${IFSCMD}" > "${IFSDEST}"
            fi
    
            eval DB2MBR="\"\${VAR_`basename \"${IFSDEST}\" .rpgle`}\""
            DB2DEST="${SRCPF}/${DB2MBR}.MBR"
    
            if action_needed "${DB2DEST}" "${HFILE}"
            then    eval "${DB2CMD}" | change_include > tmphdrfile
    
                    #       Need to translate to target CCSID.
    
                    CMD="CPY OBJ('`pwd`/tmphdrfile') TOOBJ('${DB2DEST}')"
                    CMD="${CMD} TOCCSID(${TGTCCSID}) DTAFMT(*TEXT) REPLACE(*YES)"
                    system "${CMD}"
            fi
    done