From 838ec31a9621597f761682e62a12cd12febb46e0 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 27 Jul 2010 10:45:27 +0000 Subject: [PATCH] 2010-07-27 12:44 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added new plugin APIs: - hbmk2_AddInput_OBJ() - hbmk2_PathFromWorkdirToCWD() - hbmk2_CWD() + Changed to not abort processing if there are no input files, but there are custom plugin input parameter. + bin/hbmk_l2d.hbs + Added rough plugin to convert static libs to dynamic libs on platforms supporting 'ar' tool (and of course the notion of such conversion). This is meant to replace functionality provided by bash script hb-mkdyn.sh. Pls find cmdline example in the script header. * config/postinst.hbs + Now installs hbmk_l2d.hbs - bin/hb-mkdyn.sh - Deleted hb-mkdyn speciality shell tool to convert static libs to dynamic ones. - bin/postinst.sh - Deleted, it only started hb-mkdyn.sh, which was just deleted. * Makefile - Do not run postinst.sh anymore. --- harbour/ChangeLog | 29 ++++++ harbour/Makefile | 7 -- harbour/bin/hb-mkdyn.sh | 158 -------------------------------- harbour/bin/hbmk_l2d.hbs | 165 ++++++++++++++++++++++++++++++++++ harbour/bin/postinst.sh | 129 -------------------------- harbour/config/postinst.hbs | 4 +- harbour/utils/hbmk2/hbmk2.prg | 17 +++- 7 files changed, 212 insertions(+), 297 deletions(-) delete mode 100755 harbour/bin/hb-mkdyn.sh create mode 100644 harbour/bin/hbmk_l2d.hbs delete mode 100755 harbour/bin/postinst.sh diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3708683481..5f92d9a976 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,35 @@ The license applies to all entries newer than 2009-04-28. */ +2010-07-27 12:44 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + + Added new plugin APIs: + - hbmk2_AddInput_OBJ() + - hbmk2_PathFromWorkdirToCWD() + - hbmk2_CWD() + + Changed to not abort processing if there are no input files, but + there are custom plugin input parameter. + + + bin/hbmk_l2d.hbs + + Added rough plugin to convert static libs to dynamic libs + on platforms supporting 'ar' tool (and of course the notion + of such conversion). This is meant to replace functionality + provided by bash script hb-mkdyn.sh. + Pls find cmdline example in the script header. + + * config/postinst.hbs + + Now installs hbmk_l2d.hbs + + - bin/hb-mkdyn.sh + - Deleted hb-mkdyn speciality shell tool to convert static + libs to dynamic ones. + + - bin/postinst.sh + - Deleted, it only started hb-mkdyn.sh, which was just deleted. + + * Makefile + - Do not run postinst.sh anymore. + 2010-07-27 11:26 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) - debian + package/debian diff --git a/harbour/Makefile b/harbour/Makefile index adcb68980f..1390397248 100644 --- a/harbour/Makefile +++ b/harbour/Makefile @@ -48,14 +48,7 @@ include $(ROOT)config/dir.mk ifneq ($(HB_NO_HBSCRIPT),yes) -ifeq ($(HB_SHELL),sh) - HB_POSTINST := $(TOP)$(ROOT)bin/postinst.sh -else - HB_POSTINST := -endif - install:: $(if $(wildcard $(HB_HOST_BIN_DIR)/hbrun$(HB_HOST_BIN_EXT)),+$(HB_HOST_BIN_DIR)/hbrun$(HB_HOST_BIN_EXT) --hb:gtcgi $(TOP)$(ROOT)config/postinst.hbs,@$(ECHO) $(ECHOQUOTE)! Warning: hbrun not found, config/postinst.hbs skipped.$(ECHOQUOTE)) - $(if $(wildcard $(HB_POSTINST)),+$(HB_POSTINST),) endif diff --git a/harbour/bin/hb-mkdyn.sh b/harbour/bin/hb-mkdyn.sh deleted file mode 100755 index 1609c73722..0000000000 --- a/harbour/bin/hb-mkdyn.sh +++ /dev/null @@ -1,158 +0,0 @@ -#!/bin/sh -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2003 Przemyslaw Czerpak -# simple script to build shared libraries from static ones and -# object files -# -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -# HB_PLATFORM="" -# HB_CCPREFIX="" -# HB_CCPATH="" - -if [ -n "${HB_PLATFORM}" ] -then - hb_plat="${HB_PLATFORM}" -else - hb_plat=`uname -s | tr -d "[-]" | tr '[A-Z]' '[a-z]' 2>/dev/null` -fi - -linker_options="" - -case "$hb_plat" in - *windows*|*mingw32*|msys*|cygwin*) hb_plat="win" ;; - *os/2*) hb_plat="os2" ;; - *dos) hb_plat="dos" ;; - *bsd) hb_plat="bsd" ;; -esac - -case "$hb_plat" in - darwin) SLIB_EXT=".dylib" ;; - win) SLIB_EXT=".dll" ;; - wce) SLIB_EXT=".dll" ;; - os2) SLIB_EXT=".dll" ;; - hpux) SLIB_EXT=".sl" ;; - *) SLIB_EXT=".so" ;; -esac - -NAME="${1%${SLIB_EXT}}" -LIB_NAME="${NAME##*/}" -DSTDIR="${NAME%${LIB_NAME}}" -[ -n "${DSTDIR}" ] || DSTDIR="./" - -if [ $# -lt 2 ] || [ -z "${LIB_NAME}" ] -then - echo "usage: `basename $0` [link options] src1.a .. srcN.a [obj1.o .. objN.o]" - exit 1 -fi - -shift - -BASE=`echo ${LIB_NAME} | sed "s/\([^.-]*\)[.-][0-9.]*/\1/g"` -VERSION="${LIB_NAME#${BASE}}" -VERSION="${VERSION#[.-]}" -REVIS="${VERSION}" -MAJOR="${REVIS%%.*}" -REVIS="${REVIS#${MAJOR}}" -REVIS="${REVIS#.}" -MINOR="${REVIS%%.*}" -REVIS="${REVIS#${MINOR}}" -REVIS="${REVIS#.}" -REVIS="${REVIS%%.*}" -[ -n "${MAJOR}" ] || MAJOR=2 -[ -n "${MINOR}" ] || MINOR=0 -[ -n "${REVIS}" ] || REVIS=0 -VERSION="${MAJOR}.${MINOR}.${REVIS}" - -OTMPDIR="" -dir=`pwd` - -cleanup() -{ - [ -z "${OTMPDIR}" ] || rm -fR "${OTMPDIR}" -} - -trap cleanup EXIT >/dev/null 2>&1 - -if [ "${SLIB_EXT}" != ".dylib" ]; then - - OTMPDIR="/tmp/hb-mkdyn-$$" - rm -fR "${OTMPDIR}" - mkdir -p "${OTMPDIR}" - cd "${OTMPDIR}" - - for f in $* - do - case "${f}" in - *.o) - if [ "${f#/}" == "${f}" ]; then - f="${dir}/${f}" - fi - if [ ! -r "${f}" ]; then - echo "cannot read file: ${f}" - exit 1 - fi - cp "${f}" "${OTMPDIR}" || exit 1 - ;; - *.a) - if [ "${f#/}" == "${f}" ]; then - f="${dir}/${f}" - fi - if [ ! -r "${f}" ]; then - echo "cannot read file: ${f}" - exit 1 - fi - d="${f%.a}" - d="${f##*/}" - mkdir $d - cd $d - ${HB_CCPATH}${HB_CCPREFIX}ar -x "${f}" || exit 1 - cd .. - ;; - *) - linker_options="${linker_options} ${f}" - ;; - esac - done - cd "${OTMPDIR}" - OBJLST=`find . -name \*.o` -fi - -if [ "${SLIB_EXT}" = ".dylib" ]; then - FULLNAME="${BASE}.${VERSION}${SLIB_EXT}" - libtool -dynamic -install_name "${BASE}${SLIB_EXT}" \ - -compatibility_version ${MAJOR}.${MINOR} -current_version ${VERSION} \ - -flat_namespace -undefined warning -multiply_defined suppress -single_module ${HB_USER_DFLAGS} \ - -o "${DSTDIR}/${FULLNAME}" "$@" && \ - ln -sf "${FULLNAME}" "${DSTDIR}${BASE}.${MAJOR}${SLIB_EXT}" && \ - ln -sf "${FULLNAME}" "${DSTDIR}${BASE}${SLIB_EXT}" -elif [ "${SLIB_EXT}" = ".dll" ]; then - FULLNAME="${LIB_NAME}${SLIB_EXT}" - if [ "$HB_COMPILER" = "mingwarm" ]; then - SYSLIBS="-lws2" - else - SYSLIBS="-luser32 -lws2_32 -ladvapi32 -lgdi32" - fi - # -Wl,--output-def,testdll.def,--out-implib,libtestdll.a - ${HB_CCPATH}${HB_CCPREFIX}gcc -shared -o "${FULLNAME}" $OBJLST ${linker_options} ${HB_USER_DFLAGS} ${SYSLIBS} ${HB_DLLIBS} && \ - cd "${dir}" && \ - rm -f "${DSTDIR}${FULLNAME}" && \ - mv -f "${OTMPDIR}/${FULLNAME}" "${DSTDIR}${FULLNAME}" -else - #FULLNAME="${BASE}-${VERSION}${SLIB_EXT}" - #FULLNAME="${BASE}{SLIB_EXT}.${VERSION}" - FULLNAME="${LIB_NAME}${SLIB_EXT}" - ${HB_CCPATH}${HB_CCPREFIX}gcc -shared -o "${FULLNAME}" $OBJLST ${linker_options} ${HB_USER_DFLAGS} && \ - cd "${dir}" && \ - mv -f "${OTMPDIR}/${FULLNAME}" "${DSTDIR}${FULLNAME}" -fi - -stat="$?" -[ $stat != 0 ] && cd "${dir}" && rm -f "${DSTDIR}${FULLNAME}" -cleanup -exit "${stat}" diff --git a/harbour/bin/hbmk_l2d.hbs b/harbour/bin/hbmk_l2d.hbs new file mode 100644 index 0000000000..e37a2c1c8d --- /dev/null +++ b/harbour/bin/hbmk_l2d.hbs @@ -0,0 +1,165 @@ +/* + * $Id$ + */ + +/* + * hbmk2 plugin script, static lib to dynamic lib conversion for + * environments supporting 'ar' tool. + * Usage: + * 'hbmk2 -hbdyn -pi= -plugin=hbmk_l2d.hbs -o -nohblib-' + * + * Copyright 2010 Viktor Szakats (harbour.01 syenar.hu) + * www - http://harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + * their web site at http://www.gnu.org/). + * + */ + +#pragma warninglevel=3 + +#define I_( x ) hb_i18n_gettext( x ) + +#if ! defined( __HBSCRIPT__HBRUN ) + +FUNCTION hbmk2_plugin_lib2dyn( hbmk2 ) + LOCAL cRetVal := "" + + LOCAL cSrc + + LOCAL cCommand + LOCAL nError + + LOCAL cStdOut + LOCAL cLine + + LOCAL cOldDir + + SWITCH hbmk2[ "cSTATE" ] + CASE "init" + + hbmk2[ "vars" ][ "aOBJ_Src" ] := {} + EXIT + + CASE "pre_all" + + /* Gather input parameters */ + + hbmk2[ "vars" ][ "aLIB_Src" ] := {} + + FOR EACH cSrc IN hbmk2[ "params" ] + SWITCH Lower( hbmk2_FNameExtGet( cSrc ) ) + CASE ".a" + AAdd( hbmk2[ "vars" ][ "aLIB_Src" ], cSrc ) + EXIT + ENDSWITCH + NEXT + + FOR EACH cSrc IN hbmk2[ "vars" ][ "aLIB_Src" ] + + cCommand := "ar" +; + " -t" +; + " " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) + + IF hbmk2[ "lTRACE" ] + IF ! hbmk2[ "lQUIET" ] + hbmk2_OutStd( hbmk2, I_( "'ar' command:" ) ) + ENDIF + hbmk2_OutStdRaw( cCommand ) + ENDIF + + IF ! hbmk2[ "lDONTEXEC" ] + IF ( nError := hb_processRun( cCommand,, @cStdOut ) ) != 0 + hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'ar' executable. %1$s" ), hb_ntos( nError ) ) ) + IF ! hbmk2[ "lQUIET" ] + hbmk2_OutErrRaw( cCommand ) + ENDIF + IF ! hbmk2[ "lIGNOREERROR" ] + cRetVal := "error" + EXIT + ENDIF + ELSE + FOR EACH cLine IN hb_ATokens( StrTran( cStdOut, Chr( 13 ) ), Chr( 10 ) ) + IF ! Empty( cLine ) + cLine := hbmk2_FNameDirExtSet( hbmk2_FNameNameGet( cLine ), hbmk2[ "cWorkDir" ] ) + AAdd( hbmk2[ "vars" ][ "aOBJ_Src" ], cLine ) + hbmk2_AddInput_OBJ( hbmk2, cLine ) + ENDIF + NEXT + ENDIF + ENDIF + NEXT + + EXIT + + CASE "pre_all" + + EXIT + + CASE "pre_link" + + IF ! hbmk2[ "lCLEAN" ] .AND. ; + ! Empty( hbmk2[ "vars" ][ "aLIB_Src" ] ) + + FOR EACH cSrc IN hbmk2[ "vars" ][ "aLIB_Src" ] + + cCommand := "ar" +; + " -x" +; + " " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, hbmk2_PathNormalize( hbmk2_PathMakeAbsolute( cSrc, hbmk2_PathFromWorkdirToCWD( hbmk2 ) ) ) ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) + + IF hbmk2[ "lTRACE" ] + IF ! hbmk2[ "lQUIET" ] + hbmk2_OutStd( hbmk2, I_( "'ar' command:" ) ) + ENDIF + hbmk2_OutStdRaw( cCommand ) + ENDIF + + IF ! hbmk2[ "lDONTEXEC" ] + cOldDir := hbmk2_CWD() + DirChange( hbmk2[ "cWorkDir" ] ) + IF ( nError := hb_processRun( cCommand ) ) != 0 + DirChange( cOldDir ) + hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'ar' executable. %1$s" ), hb_ntos( nError ) ) ) + IF ! hbmk2[ "lQUIET" ] + hbmk2_OutErrRaw( cCommand ) + ENDIF + IF ! hbmk2[ "lIGNOREERROR" ] + cRetVal := "error" + EXIT + ENDIF + ELSE + DirChange( cOldDir ) + ENDIF + ENDIF + NEXT + ENDIF + + EXIT + + CASE "pre_c" + + EXIT + + CASE "post_all" + + IF ! hbmk2[ "lINC" ] .OR. hbmk2[ "lCLEAN" ] + AEval( hbmk2[ "vars" ][ "aOBJ_Src" ], {| tmp | FErase( tmp ) } ) + ENDIF + + EXIT + + ENDSWITCH + + RETURN cRetVal diff --git a/harbour/bin/postinst.sh b/harbour/bin/postinst.sh deleted file mode 100755 index de5daa1967..0000000000 --- a/harbour/bin/postinst.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/sh -# -# $Id$ -# - -# --------------------------------------------------------------- -# Copyright 2003 Przemyslaw Czerpak -# simple script run after Harbour make install to finish install -# process -# -# See COPYING for licensing terms. -# --------------------------------------------------------------- - -if [ -z "${__running_in_posix_sh__}" ] -then - __running_in_posix_sh__=1 - export __running_in_posix_sh__ - - [ -x /usr/bin/posix/sh ] && \ - exec /usr/bin/posix/sh "$0" ${1+"$@"} - [ -x /usr/xpg4/bin/sh ] && \ - exec /usr/xpg4/bin/sh "$0" ${1+"$@"} - - exec /bin/sh "$0" ${1+"$@"} -fi - -unset __running_in_posix_sh__ - -__builtin_which() -{ - what="$1" - ret=1 - oIFS="$IFS" - IFS=: - for pathcomp in $PATH - do - if [ -x "${pathcomp}"/"${what}" ] - then - ret=0 - echo "${pathcomp}"/"${what}" - break - fi - done - IFS="$oIFS" - return $ret -} - -if [ -z "$HB_PLATFORM" ] || [ -z "$HB_COMPILER" ] || \ - [ -z "$HB_BIN_INSTALL" ] || \ - [ -z "$HB_INC_INSTALL" ] || \ - [ -z "$HB_LIB_INSTALL" ] -then - echo "The following envvars must be set:" - echo " HB_PLATFORM" - echo " HB_COMPILER" - echo " HB_BIN_INSTALL" - echo " HB_INC_INSTALL" - echo " HB_LIB_INSTALL" - exit 1 -fi - -hb_root=`dirname "$0"` -if [ "${hb_root}" = "." ] -then - hb_root=".." -else - hb_root=`dirname "${hb_root}"` -fi -if [ ! -f ${hb_root}/bin/hb-func.sh ] && [ -f ./bin/hb-func.sh ] -then - hb_root="." -fi - -. ${hb_root}/bin/hb-func.sh - -__install="` __builtin_which install `" - -# chmod 644 ${HB_INC_INSTALL}/* - -if [ "$HB_COMPILER" = "gcc" ] || \ - [ "$HB_COMPILER" = "mingw" ] || \ - [ "$HB_COMPILER" = "mingw64" ] || \ - [ "$HB_COMPILER" = "mingwarm" ] || \ - [ "$HB_COMPILER" = "cygwin" ] || \ - [ "$HB_COMPILER" = "djgpp" ] || \ - [ "$HB_COMPILER" = "icc" ] || \ - [ "$HB_COMPILER" = "sunpro" ] || \ - [ "$HB_COMPILER" = "open64" ] || \ - [ "$HB_COMPILER" = "clang" ] -then - if [ -n "${HB_TOOLS_PREF}" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/${HB_TOOLS_PREF}-mkdyn" - rm -f "${hb_mkdyn}" - sed -e "s!^# HB_PLATFORM=\"\"\$!HB_PLATFORM=\"${HB_PLATFORM}\"!g" \ - -e "s!^# HB_CCPREFIX=\"\"\$![ -n \"\${HB_CCPREFIX}\" ] || HB_CCPREFIX=\"${HB_CCPREFIX}\"!g" \ - -e "s!^# HB_CCPATH=\"\"\$![ -n \"\${HB_CCPATH}\" ] || HB_CCPATH=\"${HB_CCPATH}\"!g" \ - "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" - elif [ "$HB_COMPILER" = "icc" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" - rm -f "${hb_mkdyn}" - sed -e "s/gcc/icc/g" "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" - elif [ "$HB_COMPILER" = "sunpro" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" - rm -f "${hb_mkdyn}" - lnopt="" - [ "$HB_BUILD_OPTIM" = "no" ] || lnopt="-fast -xnolibmopt $lnopt" - sed -e "s/gcc -shared/suncc -G ${lnopt} ${HB_ISAOPT}/g" \ - "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" - elif [ "$HB_COMPILER" = "open64" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" - rm -f "${hb_mkdyn}" - sed -e "s/gcc/opencc/g" "${hb_root}/bin/hb-mkdyn.sh" > "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" - elif [ "${HB_PLATFORM}" = "sunos" ] || \ - [ "${HB_PLATFORM}" = "hpux" ] || \ - [ -z "${__install}" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" - rm -f "${hb_mkdyn}" - cp "${hb_root}/bin/hb-mkdyn.sh" "${hb_mkdyn}" && \ - chmod 755 "${hb_mkdyn}" - elif [ "${HB_PLATFORM}" != "dos" ]; then - hb_mkdyn="${HB_BIN_INSTALL}/hb-mkdyn" - # Without -c some OSes _move_ the file instead of copying it! - ${__install} -c -m 755 "${hb_root}/bin/hb-mkdyn.sh" "${hb_mkdyn}" - fi -fi diff --git a/harbour/config/postinst.hbs b/harbour/config/postinst.hbs index 0b49e5ebcf..5dcd274e1d 100644 --- a/harbour/config/postinst.hbs +++ b/harbour/config/postinst.hbs @@ -73,7 +73,8 @@ PROCEDURE Main() hb_FCopy( "TODO" , GetEnv( "HB_INSTALL_PREFIX" ) + hb_ps() + "TODO" ) /* public Harbour scripts */ - FOR EACH tmp IN { "hbxpatch.hbs" } + FOR EACH tmp IN { "hbmk_l2d.hbs" ,; + "hbxpatch.hbs" } hb_FCopy( "bin" + hb_ps() + tmp, GetEnv( "HB_BIN_INSTALL" ) + hb_ps() + tmp ) NEXT ENDIF @@ -174,7 +175,6 @@ PROCEDURE Main() IF ! Empty( cBin_Tar ) - cTar_Name := GetEnv( "HB_PKGNAME" ) IF ! Empty( tmp := unix_name() ) cTar_Name += tmp diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 185aa9fa09..d6125a4d50 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -2641,7 +2641,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ENDIF /* Start doing the make process. */ - IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. ! hbmk[ _HBMK_lCreateImpLib ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) + Len( hbmk[ _HBMK_aCPP ] ) + Len( hbmk[ _HBMK_aOBJUSER ] ) + Len( l_aOBJA ) ) == 0 + IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. ! hbmk[ _HBMK_lCreateImpLib ] .AND. ( Len( hbmk[ _HBMK_aPLUGINPars ] ) + Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) + Len( hbmk[ _HBMK_aCPP ] ) + Len( hbmk[ _HBMK_aOBJUSER ] ) + Len( l_aOBJA ) ) == 0 hbmk_OutErr( hbmk, I_( "Error: No source files were specified." ) ) IF hbmk[ _HBMK_lBEEP ] DoBeep( .F. ) @@ -7180,6 +7180,7 @@ STATIC PROCEDURE PlugIn_Load( hbmk, cFileName ) /* Public functions accessible for plugins */ +FUNCTION hbmk2_CWD() ; RETURN hb_pwd() FUNCTION hbmk2_FindInPath( ... ) ; RETURN FindInPath( ... ) FUNCTION hbmk2_PathNormalize( ... ) ; RETURN PathNormalize( ... ) FUNCTION hbmk2_PathMakeAbsolute( ... ) ; RETURN PathMakeAbsolute( ... ) @@ -7230,6 +7231,13 @@ STATIC FUNCTION ctx_to_hbmk( ctx ) ENDIF RETURN NIL +FUNCTION hbmk2_PathFromWorkdirToCWD( ctx ) + LOCAL hbmk := ctx_to_hbmk( ctx ) + IF hbmk != NIL + RETURN DirAddPathSep( PathMakeRelative( PathNormalize( PathMakeAbsolute( hbmk[ _HBMK_cWorkDir ], hb_pwd() ) ), hb_pwd(), .T. ) ) + ENDIF + RETURN "" + FUNCTION hbmk2_Macro( ctx, cString ) LOCAL hbmk := ctx_to_hbmk( ctx ) IF hbmk != NIL @@ -7289,6 +7297,13 @@ FUNCTION hbmk2_AddInput_RC( ctx, cFileName ) ENDIF RETURN NIL +FUNCTION hbmk2_AddInput_OBJ( ctx, cFileName ) + LOCAL hbmk := ctx_to_hbmk( ctx ) + IF hbmk != NIL .AND. ISCHARACTER( cFileName ) + AAdd( hbmk[ _HBMK_aOBJUSER ], PathSepToSelf( cFileName ) ) + ENDIF + RETURN NIL + FUNCTION hbmk2_AddInput_INSTFILE( ctx, cFileName, cGroup ) LOCAL hbmk := ctx_to_hbmk( ctx ) IF hbmk != NIL .AND. ISCHARACTER( cFileName )