* harbour/make_gnu.sh
+ harbour/make_xmingw.sh
* harbour/bin/hb-mkslib.sh
* harbour/bin/postinst.sh
* harbour/config/w32/mingw32.cf
* added support for cross compilation (Windows binaries at Linux) with
MinGW - borrowed from xHarbour Phil Krylov solution
* harbour/contrib/btree/hb_btree.c
* casting
* harbour/contrib/libct/files.c
! fixed iAttr initialization in SETFATTR()
* harbour/contrib/ole/ole2.c
! fixed names of included files
* harbour/contrib/rdd_ads/ace.h
* cover #pragma warning( error : 4706 ) by !defined( __GNUC__ )
* harbour/include/hbapi.h
* harbour/include/hbdefs.h
+ harbour/source/common/hbarch.c
* harbour/source/common/Makefile
* added functions for machine independent double and long long conversions
(my code borrowed from xHarbour)
* harbour/include/hbapifs.h
* synced file IO with xHarbour - it fixes some problems, adds some
missing functionality and long (64bit) file support for Windows.
For Linux I added it some time ago.
* harbour/include/hbcomp.h
* changed 'char cScope' to 'HB_SYMBOLSCOPE cScope'
* harbour/source/common/hbfsapi.c
! fixed some possible buffer overflow
* harbour/source/common/hbstr.c
* synced with xHarbour
* harbour/source/common/hbver.c
+ added hb_iswinnt() (borrowed from xHarbour)
* harbour/source/compiler/cmdcheck.c
+ added -undef: compiler switch (borrowed from xHarbour)
* harbour/source/compiler/gencobj.c
* cleanup
* harbour/source/pp/ppcore.c
! fixed path delimiters in included file names
* harbour/source/rtl/Makefile
+ harbour/source/rtl/fserror.c
+ added C -> OS file error trnalsations - not perfect but better then
the used hacks (borrowed from xHarbour)
* harbour/source/rtl/file.c
* use hb_fileNameConv() instead of hb_filecase() - hb_fileNameConv()
is the only one function to make file name conversions dependent on
some SETs.
* harbour/source/rtl/filesys.c
* synced file IO with xHarbour - it fixes some problems, adds some
missing functionality and long (64bit) file support for Windows.
For Linux I added it some time ago.
* harbour/source/rtl/fstemp.c
* synced with xHarbour
* harbour/source/rtl/strings.c
* use ULONG instead of size_t in hb_strnicmp declaration - we have to
decide what we should use. Using size_t or its Harbour version f.e.
HB_SIZE_T seems to be reasonable but it has to be global - redefining
single functions does not make sense and will create troubles only.
180 lines
5.5 KiB
Bash
180 lines
5.5 KiB
Bash
#!/bin/sh
|
|
[ "$BASH" ] || exec bash `which $0` ${1+"$@"}
|
|
#
|
|
# $Id$
|
|
#
|
|
|
|
# ---------------------------------------------------------------
|
|
# Template to initialize the environment before starting
|
|
# the GNU make system for Harbour
|
|
#
|
|
# For further information about the GNU make system please
|
|
# check doc/gmake.txt
|
|
#
|
|
# Copyright 1999-2001 Viktor Szakats (viktor.szakats@syenar.hu)
|
|
# See doc/license.txt for licensing terms.
|
|
# ---------------------------------------------------------------
|
|
|
|
name="harbour"
|
|
|
|
if [ -z "$HB_ARCHITECTURE" ]; then
|
|
if [ "$OSTYPE" = "msdosdjgpp" ]; then
|
|
hb_arch="dos"
|
|
else
|
|
hb_arch=`uname -s | tr -d "[-]" | tr '[A-Z]' '[a-z]' 2>/dev/null`
|
|
case "$hb_arch" in
|
|
*windows*|*mingw32*) hb_arch="w32" ;;
|
|
*dos) hb_arch="dos" ;;
|
|
*bsd) hb_arch="bsd" ;;
|
|
esac
|
|
fi
|
|
export HB_ARCHITECTURE="$hb_arch"
|
|
fi
|
|
|
|
if [ -z "$HB_COMPILER" ]; then
|
|
case "$HB_ARCHITECTURE" in
|
|
w32) HB_COMPILER="mingw32" ;;
|
|
dos) HB_COMPILER="djgpp" ;;
|
|
*) HB_COMPILER="gcc" ;;
|
|
esac
|
|
export HB_COMPILER
|
|
fi
|
|
|
|
if [ -z "$HB_GT_LIB" ]; then
|
|
case "$HB_ARCHITECTURE" in
|
|
w32) HB_GT_LIB="gtwin" ;;
|
|
dos) HB_GT_LIB="gtdos" ;;
|
|
os2) HB_GT_LIB="gtos2" ;;
|
|
*) HB_GT_LIB="gtstd" ;;
|
|
esac
|
|
export HB_GT_LIB
|
|
fi
|
|
|
|
if [ -z "$HB_GPM_MOUSE" ]; then
|
|
if [ "$HB_ARCHITECTURE" = "linux" ] && \
|
|
( [ -f /usr/include/gpm.h ] || [ -f /usr/local/include/gpm.h ]); then
|
|
HB_GPM_MOUSE=yes
|
|
else
|
|
HB_GPM_MOUSE=no
|
|
fi
|
|
export HB_GPM_MOUSE
|
|
fi
|
|
|
|
if [ -z "$HB_COMMERCE" ]; then export HB_COMMERCE=no; fi
|
|
|
|
if [ "$HB_COMMERCE" = yes ]
|
|
then
|
|
export HB_GPM_MOUSE=no
|
|
export HB_WITHOUT_GTSLN=yes
|
|
fi
|
|
|
|
# export PRG_USR=
|
|
# export C_USR=
|
|
# export L_USR=
|
|
|
|
[ -z "$HB_INSTALL_PREFIX" ] && [ -n "$PREFIX" ] && export HB_INSTALL_PREFIX="$PREFIX"
|
|
[ -z "$HB_INSTALL_PREFIX" ] && export HB_INSTALL_PREFIX=/usr/local
|
|
|
|
# Set to constant value to be consistent with the non-GNU make files.
|
|
|
|
case "$HB_INSTALL_PREFIX" in
|
|
/usr|/usr/local|/opt)
|
|
hb_instsubdir="/$name"
|
|
;;
|
|
*)
|
|
hb_instsubdir=""
|
|
;;
|
|
esac
|
|
|
|
if [ -z "$HB_BIN_INSTALL" ]; then export HB_BIN_INSTALL=$HB_INSTALL_PREFIX/bin; fi
|
|
if [ -z "$HB_LIB_INSTALL" ]; then export HB_LIB_INSTALL=$HB_INSTALL_PREFIX/lib$hb_instsubdir; fi
|
|
if [ -z "$HB_INC_INSTALL" ]; then export HB_INC_INSTALL=$HB_INSTALL_PREFIX/include$hb_instsubdir; fi
|
|
|
|
|
|
|
|
if [ -z "$HB_ARCHITECTURE" ]; then
|
|
echo "Error: HB_ARCHITECTURE is not set."
|
|
fi
|
|
if [ -z "$HB_COMPILER" ]; then
|
|
echo "Error: HB_COMPILER is not set."
|
|
fi
|
|
|
|
if [ -z "$HB_ARCHITECTURE" ] || [ -z "$HB_COMPILER" ]; then
|
|
|
|
echo
|
|
echo "Usage: make_gnu.sh [command]"
|
|
echo
|
|
echo "The following commands are supported:"
|
|
echo " - all (default)"
|
|
echo " - clean"
|
|
echo " - install"
|
|
echo
|
|
echo "Notes:"
|
|
echo
|
|
echo " - HB_ARCHITECTURE and HB_COMPILER envvars must be set."
|
|
echo " The following values are currently supported:"
|
|
echo
|
|
echo " HB_ARCHITECTURE:"
|
|
echo " - dos (HB_GT_LIB=gtdos by default)"
|
|
echo " - w32 (HB_GT_LIB=gtw32 by default)"
|
|
echo " - os2 (HB_GT_LIB=gtos2 by default)"
|
|
echo " - linux (HB_GT_LIB=gtstd by default)"
|
|
echo " - bsd (HB_GT_LIB=gtstd by default)"
|
|
echo " - darwin (HB_GT_LIB=gtstd by default)"
|
|
echo " - sunos (HB_GT_LIB=gtstd by default)"
|
|
echo " - hpux (HB_GT_LIB=gtstd by default)"
|
|
echo
|
|
read
|
|
echo " HB_COMPILER:"
|
|
echo " - When HB_ARCHITECTURE=dos"
|
|
echo " - bcc16 (Borland C++ 3.x, 4.x, 5.0x, DOS 16-bit)"
|
|
echo " - djgpp (Delorie GNU C, DOS 32-bit)"
|
|
echo " - rsx32 (EMX/RSXNT/DOS GNU C, DOS 32-bit)"
|
|
echo " - watcom (Watcom C++ 9.x, 10.x, 11.x, DOS 32-bit)"
|
|
echo " - When HB_ARCHITECTURE=w32"
|
|
echo " - bcc32 (Borland C++ 4.x, 5.x, Windows 32-bit)"
|
|
echo " - gcc (Cygnus/Cygwin GNU C, Windows 32-bit)"
|
|
echo " - mingw32 (MinGW32 GNU C, Windows 32-bit)"
|
|
echo " - rsxnt (EMX/RSXNT/Win32 GNU C, Windows 32-bit)"
|
|
echo " - icc (IBM Visual Age C++, Windows 32-bit)"
|
|
echo " - msvc (Microsoft Visual C++, Windows 32-bit)"
|
|
echo " - When HB_ARCHITECTURE=linux"
|
|
echo " - gcc (GNU C, 32-bit)"
|
|
echo " - When HB_ARCHITECTURE=os2"
|
|
echo " - gcc (EMX GNU C, OS/2 32-bit)"
|
|
echo " - icc (IBM Visual Age C++ 3.0, OS/2 32-bit)"
|
|
echo
|
|
read
|
|
echo " HB_GT_LIB:"
|
|
echo " - gtstd (Standard streaming) (for all architectures)"
|
|
echo " - gtdos (DOS console) (for dos architecture)"
|
|
echo " - gtwin (Win32 console) (for w32 architecture)"
|
|
echo " - gtos2 (OS/2 console) (for os2 architecture)"
|
|
echo " - gtpca (PC ANSI console) (for all architectures)"
|
|
echo " - gtcrs (Curses console) (for linux, w32 architectures)"
|
|
echo " - gtsln (Slang console) (for linux, w32 architectures)"
|
|
echo
|
|
echo " - Use these optional envvars to configure the make process"
|
|
echo " when using the 'all' command:"
|
|
echo
|
|
echo " PRG_USR - Extra Harbour compiler options"
|
|
echo " C_USR - Extra C compiler options"
|
|
echo " L_USR - Extra linker options"
|
|
exit
|
|
|
|
else
|
|
|
|
# ---------------------------------------------------------------
|
|
# Start the GNU make system
|
|
|
|
if [ "$HB_ARCHITECTURE" = "bsd" ] || uname|grep "BSD$" &> /dev/null; then
|
|
gmake $*
|
|
else
|
|
make $*
|
|
fi
|
|
|
|
if [ "$*" = "clean" ]; then
|
|
find . -type d -name "$HB_ARCHITECTURE" | xargs rmdir 2> /dev/null
|
|
fi
|
|
fi
|