* INSTALL
* Updated dev list max attachment size.
* INSTALL
* config/beos/libs.mk
* config/global.mk
* config/bsd/libs.mk
* config/bin.mk
* config/wce/global.mk
* config/hpux/libs.mk
* config/darwin/libs.mk
* config/dos/djgpp.mk
* config/win/global.mk
* config/linux/libs.mk
* config/os2/gcc.mk
* config/sunos/libs.mk
+ Added support for HB_USER_LIBS build option to specify
extra libs. Note: This is useful only in very special
cases, so pls don't use it unless you exactly know what
you want to do. The libs have to be specced without
prefixes and extensions. It will be added after Harbour
libs and before system libs.
1380 lines
52 KiB
Plaintext
1380 lines
52 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
HARBOUR
|
|
=======
|
|
|
|
"The Harbour Project is a Free Open Source Software effort to build
|
|
a multiplatform Clipper language compiler. Harbour consists of the
|
|
xBase language compiler and the runtime libraries with different
|
|
terminal plugins and different databases (not just DBF)"
|
|
|
|
http://www.harbour-project.org/
|
|
|
|
|
|
1. HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE
|
|
===============================================
|
|
|
|
NOTE: Before reporting a problem on the developers' mailing list, please
|
|
make sure to read the TROUBLESHOOTING section in this file.
|
|
|
|
For all platforms you'll need:
|
|
|
|
* Supported ANSI C compiler
|
|
* GNU Make (3.81 or upper)
|
|
* Harbour sources (2.0.0 or upper)
|
|
|
|
on Windows hosts
|
|
----------------
|
|
(possible cross-build targets: Windows CE, MS-DOS, OS/2, Linux)
|
|
|
|
Platform specific prerequisites:
|
|
|
|
1.) Windows XP or upper system is recommended to build Harbour.
|
|
2.) Make sure to have your C compiler of choice properly installed
|
|
(in PATH). Refer to your C compiler installation and setup
|
|
instructions for details. It's recommended to make sure no tools
|
|
in your PATH belonging to other C compilers are interfering with
|
|
your setup. For the list of supported compilers, please look up
|
|
the relevant section in this file.
|
|
3.) You need to get GNU Make. We recommend this link:
|
|
http://sourceforge.net/projects/mingw/files/GNU%20Make/Current%20Release_%20mingw32-make-3.81-20080326/mingw32-make-3.81-20080326-3.tar.gz/download
|
|
Unpack it to your PATH or Harbour source root directory.
|
|
If you use MinGW compiler, you already have GNU Make.
|
|
You can also use included copy named win-make.exe instead.
|
|
|
|
> mingw32-make install
|
|
|
|
To test it, type:
|
|
> cd tests
|
|
> ..\bin\hbmk2 hello.prg
|
|
> hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
on Windows hosts with POSIX shells (MSYS/Cygwin)
|
|
----------------------------------
|
|
You can also use these shells to build Harbour on Windows.
|
|
Generally it's recommended to use native shell though.
|
|
|
|
> sh -c make install
|
|
|
|
To test it, type:
|
|
> cd tests
|
|
> ..\bin\hbmk2 hello.prg
|
|
> hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
NOTE: When building for Borland C++ make sure that GNU Make
|
|
is executed when typing 'make', Borland Make has the same name.
|
|
|
|
on MS-DOS hosts
|
|
---------------
|
|
(possible cross-build targets: Windows, OS/2, Linux)
|
|
|
|
1.) Make sure to have your C compiler of choice properly installed
|
|
(in PATH).
|
|
2.) You need to get GNU Make. We recommend this link:
|
|
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381b.zip
|
|
Unpack it to your PATH or Harbour source root directory.
|
|
You can also use included copy named dos-make.exe instead.
|
|
|
|
> make install
|
|
|
|
To test it, type:
|
|
> cd tests
|
|
> ..\bin\hbmk2 hello.prg
|
|
> hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
on OS/2 hosts
|
|
-------------
|
|
(possible cross-build targets: MS-DOS, OS/2, Linux)
|
|
|
|
1.) You need to get GNU Make. If you use OS/2 host, we recommend this link:
|
|
ftp://hobbes.nmsu.edu/pub/os2/dev/util/make-3.81-r3-bin-static.zip
|
|
If you use other host, please refer to other platform instructions
|
|
in this section.
|
|
You can also use included copy named os2-make.exe instead.
|
|
|
|
> make install
|
|
|
|
To test it, type:
|
|
> cd tests
|
|
> ..\bin\hbmk2 hello.prg
|
|
> hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
NOTE: To select alternative TCP/IP stack, use these commands:
|
|
set HB_USER_CFLAGS=-DTCPV40HDRS %HB_USER_CFLAGS%
|
|
set HB_USER_LDFLAGS=-LC:\usr\lib\tcpipv4 %HB_USER_LDFLAGS%
|
|
|
|
on Linux hosts
|
|
--------------
|
|
(possible cross-build targets: Windows, Windows CE, MS-DOS, OS/2)
|
|
|
|
$ make install [HB_PLATFORM=<...>]
|
|
|
|
To test it, type:
|
|
$ cd tests
|
|
$ hbmk2 hello.prg
|
|
$ ./hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
on Darwin (Mac OS X) hosts
|
|
--------------------------
|
|
(possible cross-build targets: Windows, Windows CE, MS-DOS)
|
|
|
|
Platform specific prerequisite: XCode installed
|
|
|
|
$ make install [HB_PLATFORM=<...>]
|
|
|
|
To test it, type:
|
|
$ cd tests
|
|
$ hbmk2 hello.prg
|
|
$ ./hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
on BSD/HP-UX/Solaris/BeOS/Haiku/*nix hosts
|
|
------------------------------------------
|
|
(possible cross-build targets: Windows, Windows CE, MS-DOS)
|
|
|
|
$ gmake install [HB_PLATFORM=<...>]
|
|
OR
|
|
$ make install [HB_PLATFORM=<...>]
|
|
|
|
To test it, type:
|
|
$ cd tests
|
|
$ hbmk2 hello.prg
|
|
$ ./hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
NOTE for sunpro on Solaris:
|
|
---------------------------
|
|
If you have any GNU binutils stuff installed, do make sure
|
|
/usr/ccs/bin (the location of the native Sun C compilation
|
|
system tools) come *before* the GNU binutils components in
|
|
your $PATH.
|
|
|
|
on FreeBSD hosts
|
|
----------------
|
|
Platform specific prerequisites:
|
|
|
|
1.) You'll need to have the developer tools installed.
|
|
2.) Then you'll need to install gmake and optionally bison.
|
|
If you installed the ports collection, then all you need
|
|
to do to install bison and gmake is to run the following
|
|
commands, which may require that you run su root first to
|
|
get the correct permissions:
|
|
|
|
$ cd /usr/ports/devel/gmake
|
|
$ make
|
|
$ make install
|
|
$ make clean
|
|
$ cd /usr/ports/devel/bison
|
|
$ make
|
|
$ make install
|
|
$ make clean
|
|
|
|
$ gmake install
|
|
|
|
To test it, type:
|
|
$ cd tests
|
|
$ hbmk2 hello.prg
|
|
$ ./hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
|
|
2. HOW TO DO A PARTIAL [RE]BUILD
|
|
================================
|
|
|
|
If you want to [re]build only a specific part of Harbour, like
|
|
one library, all contrib libs or core libs, you have to do
|
|
everything the same as for a full build, the only difference
|
|
is that you first have to go into the specific source directory
|
|
you want to [re]build. When starting GNU Make, all components
|
|
under that dir will be built:
|
|
|
|
cd src/rtl
|
|
<make> [clean] [install]
|
|
|
|
|
|
3. HOW TO CREATE DISTRIBUTABLE PACKAGES
|
|
=======================================
|
|
|
|
Source .tgz on *nixes
|
|
---------------------
|
|
|
|
$ ./mpkg_src.sh
|
|
|
|
Binary .tgz on *nixes
|
|
---------------------
|
|
|
|
$ ./mpkg_tgz.sh
|
|
|
|
Binary .deb on Linux
|
|
--------------------
|
|
|
|
$ fakeroot debian/rules
|
|
|
|
Binary .rpm on Linux
|
|
--------------------
|
|
|
|
for native build:
|
|
$ ./mpkg_rpm.sh
|
|
for Windows cross-build:
|
|
$ ./mpkg_rpm_win.sh
|
|
for Windows CE cross-build:
|
|
$ ./mpkg_rpm_wce.sh
|
|
|
|
Binary .zip + .exe on Windows for all targets (except Linux)
|
|
------------------------------------------------------------
|
|
|
|
> set HB_DIR_NSIS=%ProgramFiles%\NSIS\
|
|
> set HB_DIR_ZIP=C:\info-zip\
|
|
> set HB_BUILD_PKG=yes
|
|
(then run build as usual, see: HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE)
|
|
|
|
Binary .zip on MS-DOS for all targets (except Linux)
|
|
----------------------------------------------------
|
|
|
|
> set HB_DIR_ZIP=C:\info-zip\
|
|
> set HB_BUILD_PKG=yes
|
|
(then run build as usual, see: HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE)
|
|
|
|
Unified .7z + .exe installer for Windows
|
|
----------------------------------------
|
|
|
|
[ To be completed. All required files and scripts reside in package/winuni.
|
|
This is a semi-manual process yet. ]
|
|
|
|
|
|
4. HOW TO ENABLE OPTIONAL COMPONENTS BEFORE BUILD
|
|
=================================================
|
|
|
|
Certain Harbour parts (typically contrib libraries) depend on 3rd
|
|
party components. To make these Harbour parts built, you need
|
|
to tell Harbour where to find the required 3rd party components
|
|
(typically headers).
|
|
|
|
On *nix systems most of these 3rd party components will
|
|
automatically be picked up if installed on well-known standard
|
|
system locations.
|
|
|
|
You only need to use manual setup if the dependency isn't available
|
|
on your platform on a system location, or you wish to use
|
|
a non-standard location. Typically you need to do that on non-*nix
|
|
(Windows, MS-DOS, OS/2) systems for all packages and for a few packages
|
|
on *nix which aren't available through official package managers
|
|
(ADS Client f.e.).
|
|
|
|
You can set these environment variables before starting
|
|
the build. Make sure to adjust them to your own directories:
|
|
|
|
HB_WITH_ADS=C:\ads\acesdk
|
|
HB_WITH_ALLEGRO=C:\allegro\include
|
|
HB_WITH_BLAT=C:\blat\full\source
|
|
HB_WITH_CURL=C:\curl\include
|
|
HB_WITH_CURSES= (on *nix systems and DJGPP, where it's autodetected)
|
|
HB_WITH_FIREBIRD=C:\Firebird\include
|
|
HB_WITH_FREEIMAGE=C:\FreeImage\Dist
|
|
HB_WITH_GD=C:\gd\include
|
|
HB_WITH_GPM= (on Linux only)
|
|
HB_WITH_LIBHARU=C:\libharu\include (defaults to locally hosted version)
|
|
HB_WITH_MYSQL=C:\mysql\include
|
|
HB_WITH_ODBC= (may only be needed on non-Windows systems)
|
|
HB_WITH_OPENSSL=C:\openssl\inc32 OR C:\openssl\include
|
|
HB_WITH_PCRE=C:\pcre (defaults to locally hosted version if not found)
|
|
HB_WITH_PGSQL=C:\pgsql\include
|
|
HB_WITH_PNG=C:\libpng (defaults to locally hosted version if not found)
|
|
HB_WITH_QT=C:\Qt\include
|
|
HB_WITH_SLANG= (on *nix systems)
|
|
HB_WITH_SQLITE3=C:\sqlite3 (defaults to locally hosted version if not found)
|
|
HB_WITH_WATT= (on MS-DOS systems)
|
|
HB_WITH_X11= (on *nix systems)
|
|
HB_WITH_ZLIB=C:\zlib (defaults to locally hosted version if not found)
|
|
|
|
To explicitly disable any given components, use the value 'no' (without
|
|
quotes). This may be useful to avoid autodetection of installed packages
|
|
on *nix systems. You may also use the value 'local' to force using the
|
|
locally hosted copy of these packages, where applicable. 'nolocal' will
|
|
explicitly disable using locally hosted copies.
|
|
|
|
NOTES: - You need to use native path format to your shell/OS.
|
|
- Spaces in directory names aren't currently supported.
|
|
(You can use 8.3 name alias on Windows platform, though)
|
|
- Don't put directory names inside double quotes.
|
|
- Use absolute paths.
|
|
|
|
Windows/Windows CE
|
|
------------------
|
|
|
|
Some contribs support build mode in which they can be linked
|
|
*statically* with 3rd party components:
|
|
|
|
HB_QT_STATIC=yes
|
|
|
|
Darwin (Mac OS X)
|
|
-----------------
|
|
|
|
1.) Install MacPorts, follow their instructions:
|
|
https://www.macports.org/
|
|
2.) $ sudo port install pcre slang allegro freeimage gd2 mysql5-devel postgresql84
|
|
$ sudo port install upx
|
|
|
|
Linux (generic)
|
|
---------------
|
|
|
|
For contrib/rddads lib:
|
|
Download and install 'Advantage Client Engine API for Linux' package
|
|
(f.e. aceapi-9.10.0.0.tar.gz)
|
|
|
|
For contrib/hbhpdf lib:
|
|
Download libharu from http://libharu.org/ -> './configure' -> 'make install'
|
|
|
|
Linux (Debian, Ubuntu, .deb based distros)
|
|
------------------------------------------
|
|
(tested with Ubuntu 7.04, 8.04, 9.04)
|
|
|
|
for zlib support: $ sudo apt-get install zlib1g-dev
|
|
for pcre regex support: $ sudo apt-get install libpcre3-dev
|
|
for gtcrs terminal lib: $ sudo apt-get install libncurses-dev
|
|
for gtsln terminal lib: $ sudo apt-get install libslang2-dev OR
|
|
$ sudo apt-get install libslang1-dev
|
|
for gtxwc terminal lib: $ sudo apt-get install libx11-dev
|
|
for console mouse support: $ sudo apt-get install libgpm-dev OR
|
|
$ sudo apt-get install libgpmg1-dev
|
|
for contrib/gtalleg lib: $ sudo apt-get install liballegro4.2-dev
|
|
for contrib/hbodbc lib: $ sudo apt-get install unixodbc-dev
|
|
for contrib/hbcurl lib: $ sudo apt-get install libcurl4-openssl-dev OR
|
|
$ sudo apt-get install libcurl4-gnutls-dev
|
|
for contrib/hbfbird lib: $ sudo apt-get install firebird2.1-dev OR
|
|
$ sudo apt-get install libfirebird2.0-dev
|
|
for contrib/hbfimage lib: $ sudo apt-get install libfreeimage-dev
|
|
for contrib/hbgd lib: $ sudo apt-get install libgd2-xpm-dev OR
|
|
$ sudo apt-get install libgd-xpm-dev
|
|
for contrib/hbmysql lib: $ sudo apt-get install libmysqlclient15-dev
|
|
for contrib/hbpgsql lib: $ sudo apt-get install libpq-dev
|
|
for contrib/hbqt lib: $ sudo apt-get install libqt4-dev
|
|
for contrib/hbsqlit3 lib: $ sudo apt-get install libsqlite3-dev
|
|
|
|
Linux (openSUSE, .rpm based distros)
|
|
------------------------------------
|
|
|
|
You'll need these packages to compile certain contribs and optional Harbour features:
|
|
|
|
- xorg-x11-devel OR XFree86-devel
|
|
- postgresql-devel
|
|
- firebird-devel
|
|
- gtk2-devel
|
|
- ncurses-devel AND ncurses
|
|
- slang-devel AND slang
|
|
- unixodbc-devel OR unixODBC-devel
|
|
- gd-devel
|
|
- libmysqlclient-devel OR mysql-devel OR MySQL-devel
|
|
- allegro-devel
|
|
- curl-devel
|
|
- gpm-devel
|
|
|
|
FreeBSD
|
|
-------
|
|
|
|
If you want to use the gtsln library instead of gtstd or gtcrs,
|
|
then you also need to install libslang. If you installed the ports
|
|
collection, then all you need to do to install libslang is to run
|
|
the following commands, which may require that you run su first to
|
|
get the correct permissions:
|
|
|
|
$ cd /usr/ports/devel/libslang
|
|
$ make
|
|
$ make install
|
|
$ make clean
|
|
|
|
|
|
5. SUPPORTED PLATFORMS AND C COMPILERS
|
|
======================================
|
|
|
|
You can use HB_PLATFORM values to select platforms:
|
|
|
|
linux - Linux
|
|
darwin - Mac OS X
|
|
bsd - FreeBSD / OpenBSD / NetBSD / *BSD
|
|
beos - BeOS / Haiku
|
|
hpux - HP-UX
|
|
sunos - Sun Solaris / OpenSolaris
|
|
win - MS Windows (all flavors)
|
|
wce - MS Windows CE
|
|
dos - MS-DOS (32-bit protected mode only)
|
|
(MS-DOS compatible systems also work, like dosemu)
|
|
os2 - OS/2 / eComStation
|
|
|
|
You can use HB_COMPILER values to manually select compilers:
|
|
|
|
linux
|
|
-----
|
|
gcc - GNU C
|
|
watcom - Open Watcom C++
|
|
icc - Intel(R) C/C++
|
|
sunpro - Sun Studio C/C++
|
|
|
|
darwin
|
|
------
|
|
gcc - GNU C
|
|
icc - Intel(R) C/C++
|
|
clang - Clang compiler frontend
|
|
|
|
bsd
|
|
---
|
|
gcc - GNU C
|
|
|
|
hpux
|
|
----
|
|
gcc - GNU C
|
|
|
|
beos
|
|
----
|
|
gcc - GNU C
|
|
|
|
sunos
|
|
-----
|
|
gcc - GNU C
|
|
sunpro - Sun Studio C/C++
|
|
|
|
win
|
|
---
|
|
mingw - MinGW GNU C 3.4.2 and above
|
|
mingw64 - MinGW GNU C x86-64
|
|
msvc - Microsoft Visual C++
|
|
msvc64 - Microsoft Visual C++ x86-64
|
|
msvcia64 - Microsoft Visual C++ IA-64 (Itanium)
|
|
|
|
Also supported, some features may be missing:
|
|
|
|
watcom - Open Watcom C++
|
|
bcc - Borland/CodeGear/Embarcadero C++ 4.x and above
|
|
icc - Intel(R) C/C++
|
|
iccia64 - Intel(R) C/C++ IA-64 (Itanium)
|
|
pocc - Pelles C 4.5 and 5.0
|
|
pocc64 - Pelles C x86-64 5.0
|
|
xcc - Pelles C for xhb
|
|
cygwin - Cygwin GNU C
|
|
|
|
wce
|
|
---
|
|
mingw - MinGW GNU C x86
|
|
mingwarm - MinGW GNU C ARM
|
|
msvcarm - Microsoft Visual C++ ARM
|
|
poccarm - Pelles C ARM 5.0
|
|
|
|
dos
|
|
---
|
|
djgpp - Delorie GNU C
|
|
watcom - Open Watcom C++
|
|
|
|
os2
|
|
---
|
|
gcc - EMX GNU C 3.3.5 or lower
|
|
gccomf - EMX GNU C 3.3.5 or upper
|
|
watcom - Open Watcom C++
|
|
|
|
|
|
6. OPTIONS AVAILABLE WHEN BUILDING HARBOUR
|
|
==========================================
|
|
|
|
You can fine-tune Harbour builds with below listed
|
|
environment variables. You can add most of these via the
|
|
GNU Make command line also, using 'make VARNAME=value' syntax.
|
|
All of these settings are optional.
|
|
|
|
General
|
|
-------
|
|
- HB_PLATFORM Override platform autodetection
|
|
- HB_COMPILER Override C compiler autodetection
|
|
See this section for possible values:
|
|
SUPPORTED PLATFORMS AND C COMPILERS
|
|
See also: HB_CC* settings.
|
|
|
|
- HB_USER_PRGFLAGS User Harbour compiler options
|
|
- HB_USER_CFLAGS User C compiler options
|
|
- HB_USER_LDFLAGS User linker options for executables
|
|
- HB_USER_AFLAGS User linker options for libraries
|
|
- HB_USER_DFLAGS User linker options for dynamic libraries
|
|
|
|
- HB_INSTALL_PREFIX Target root directory to install Harbour files.
|
|
This will default to Harbour source tree on
|
|
non-*nix systems. On *nix systems the default
|
|
is set to /usr/local/ or $(PREFIX) if specified,
|
|
and /usr/local/harbour-<arch>-<comp> for
|
|
cross-builds. It's always set to /pkg/<arch>/<comp>
|
|
when HB_BUILD_PKG is set to 'yes'.
|
|
Use absolute paths only. For a peace of mind,
|
|
avoid using spaces and quotes in the name.
|
|
You have to use path format native to your shell.
|
|
F.e. to specify C:\dir on Windows, with Cygwin
|
|
you should use /cygdrive/c/dir, with MSYS /c/dir.
|
|
It's also possible to use following macros:
|
|
{hb_top} - Source tree root dir
|
|
{hb_plat} - Target platform
|
|
{hb_comp} - Target compiler
|
|
{hb_cpu} - Target CPU
|
|
|
|
- HB_BIN_INSTALL Override directory to install executables
|
|
- HB_LIB_INSTALL Override directory to install libraries
|
|
- HB_DYN_INSTALL Override directory to install dynamic libraries
|
|
- HB_INC_INSTALL Override directory to install language headers
|
|
- HB_DOC_INSTALL Override directory to install documentation
|
|
|
|
Special
|
|
-------
|
|
- HB_BUILD_NAME=[<name>] Create named build. This allows to keep
|
|
multiple builds in parallel for any given
|
|
platform/compiler. F.e. debug / release.
|
|
NOTE: In current implementation it's
|
|
appended to compiler directory name, so all
|
|
filesystem/platform name rules and limits
|
|
apply. It's valid to use (back)slashes though.
|
|
- HB_BUILD_PKG=yes Create release package. Default: no
|
|
Requires 'clean install' in root source dir.
|
|
(currently on Windows/Windows CE/MS-DOS)
|
|
(only when using Windows NT shells)
|
|
- HB_BUILD_DLL=no Create Harbour dynamic libraries. Default: yes
|
|
- HB_BUILD_SHARED=yes Create Harbour executables in shared mode.
|
|
Default: yes when HB_INSTALL_PREFIX points
|
|
to a *nix system location, otherwise no.
|
|
- HB_BUILD_IMPLIB=yes Create import libraries for external .dll
|
|
dependencies (including contribs). Default: no
|
|
(for Windows targets created from Windows NT
|
|
shells only. Needs GNU Sed.)
|
|
- HB_BUILD_DEBUG=yes Create a debug build. Default: no
|
|
- HB_BUILD_STRIP=
|
|
[all|bin|lib|no] Strips symbols and debug information from binaries.
|
|
Default: no
|
|
- HB_BUILD_OPTIM=no Enable C compiler optimizations. Default: yes
|
|
- HB_BUILD_UNICODE=yes Create Unicode build (on Windows/Windows CE).
|
|
Default: no
|
|
- HB_BUILD_MODE=[cpp|c] Changes default build mode to C++ or C.
|
|
Default: c, except for msvc* and watcom
|
|
compilers, where it's cpp.
|
|
- HB_BUILD_PARTS=
|
|
[all|compiler|lib] Build only specific part of Harbour.
|
|
- HB_BUILD_EXTDEF=no Controls autodetection of external components
|
|
on default systems locations. Default: yes
|
|
- HB_CONTRIBLIBS=no Don't build any contrib libraries. Default: yes
|
|
- HB_CONTRIBLIBS=[<list>] Build space separated <list> of contrib
|
|
libraries. Build all if left empty.
|
|
- HB_CONTRIB_ADDONS=<list> Build space separated <list> of additional
|
|
libraries stored in the contrib directory.
|
|
- HB_EXTERNALLIBS=no Don't build any external libraries. Default: yes
|
|
- HB_EXTERNALLIBS=[<list>] Build space separated <list> of external
|
|
libraries. Build all if left empty.
|
|
- HB_EXTERNAL_ADDONS=<list> Build space separated <list> of additional
|
|
libraries stored in the external directory.
|
|
- HB_UTIL_ADDONS=<list> Build space separated <list> of additional
|
|
utilities stored in the utils directory.
|
|
- HB_COMPILER_VER=[<ver>] Set C compiler version. This is used with msvc
|
|
targets currently, and in the case of this
|
|
compiler, it will be autodetected.
|
|
<ver> format:
|
|
<09><00>[.<00>] = <major><minor>[.<revision>]
|
|
Default: filled by autodetection or empty
|
|
- HB_USER_LIBS Add user libs to link process
|
|
- HB_REBUILD_PARSER=yes Rebuild language parser sources. Typically
|
|
you only need this if your are Harbour core
|
|
developer modifying grammar rules (.y).
|
|
Requires GNU Bison 1.28 or upper in PATH.
|
|
Default: no
|
|
- HB_CCPATH=[<dir>/] Used with non-*nix gcc family compilers (and
|
|
sunpro) to specify path to compiler/linker/archive
|
|
tool to help them run from *nix hosts as cross-build
|
|
tools. Ending slash must be added.
|
|
- HB_CCPREFIX=[<prefix>] Used with gcc family to specify
|
|
compiler/linker/archive tool name prefix.
|
|
- HB_CCPOSTFIX=[<postfix>] Used with gcc family to specify compiler/linker
|
|
tool name postfix (usually version number).
|
|
|
|
Cross-building
|
|
--------------
|
|
|
|
You can build Harbour for target platforms different than host
|
|
platform. F.e. you can create Windows build on *nix systems, Linux
|
|
builds on Windows systems, etc. It's also possible to build targets
|
|
for different than host CPU architectures. F.e. you can create
|
|
Windows 64-bit build on 32-bit Windows platform, or Linux x86-64
|
|
build on x86 hosts, or Linux MIPS build on x86 host, etc.
|
|
|
|
Point this envvar to the directory where native Harbour executables
|
|
for your host platform can be found:
|
|
HB_BIN_COMPILE=<HARBOUR_NATIVE_BUILD_DIR>\bin
|
|
|
|
If you leave this value empty, the make system will try to autodetect it,
|
|
so in practice all you have to do is to create a native build first (no
|
|
'install' required), then create the cross-build. If you set this value
|
|
manually, it may be useful to know that only harbour, hbpp and hbmk2
|
|
executables are required for a cross-build process to succeed.
|
|
|
|
|
|
7. EXAMPLES
|
|
===========
|
|
|
|
for Windows hosts
|
|
-----------------
|
|
|
|
NOTES: - All code below should be copied to batch files or typed at NT
|
|
command line.
|
|
- Naturally, you'll need to adapt dirs to valid ones on your system.
|
|
Don't use spaces in dirs.
|
|
- You can use additional 'clean', 'install' or 'clean install'
|
|
(without quotes) make parameters depending on what you want to do.
|
|
- To redirect all output to a log file, append this after the make
|
|
command: '> log.txt 2>&1' (without quotes)
|
|
|
|
--- Windows SDK 7
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- Windows SDK 7 for Windows x86-64 (requires preceding build for native target)
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 + SDK
|
|
set WindowsSDKDir=%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 (Standard or above) for Windows x86-64 (requires preceding build for native target)
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 (Team Suite) for Windows IA-64 Itanium (requires preceding build for native target)
|
|
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_ia64
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 for Windows CE ARM (requires preceding build for native target)
|
|
set INCLUDE=%ProgramFiles%\Microsoft Visual Studio 9.0\VC\ce\include;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Include\Armv4i
|
|
set LIB=%ProgramFiles%\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Lib\ARMV4I
|
|
set PATH=%ProgramFiles%\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2005
|
|
call "%ProgramFiles%\Microsoft Visual Studio 8\VC\vcvarsall.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2005 for Windows CE ARM (requires preceding build for native target)
|
|
set INCLUDE=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\include;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Include\Armv4i
|
|
set LIB=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\lib\armv4i;%ProgramFiles%\Windows Mobile 5.0 SDK R2\PocketPC\Lib\ARMV4I
|
|
set PATH=%ProgramFiles%\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%ProgramFiles%\Microsoft Visual Studio 8\Common7\IDE;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC .NET 2003 (untested)
|
|
call "%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\vcvarsall.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MinGW GCC
|
|
set PATH=C:\mingw\bin;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- MinGW GCC using MSYS shell
|
|
set PATH=C:\msys\1.0.11\bin;C:\mingw\bin;%PATH%
|
|
sh -c make
|
|
---
|
|
|
|
--- MinGW GCC for Windows x86-64 (requires preceding build for native target)
|
|
set PATH=C:\mingw64\bin;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- MinGW GCC for Windows CE ARM (requires Cygwin + preceding build for native target)
|
|
set PATH=C:\mingwce\opt\mingw32ce\bin;C:\cygwin\bin;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Cygwin GCC using Cygwin shell
|
|
set PATH=C:\cygwin\bin
|
|
sh -c make
|
|
---
|
|
|
|
--- Intel(R) C++
|
|
call "%ProgramFiles%\Intel\Compiler\C++\10.1.014\IA32\Bin\iclvars.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- Intel(R) C++ for Windows IA-64 Itanium (requires preceding build for native target)
|
|
call "%ProgramFiles%\Intel\Compiler\C++\10.1.025\Itanium\Bin\iclvars.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- Borland C++ 5.5.1
|
|
set PATH=C:\Borland\BCC55\Bin;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Pelles C
|
|
set PATH=%ProgramFiles%\PellesC\Bin;%PATH%
|
|
set INCLUDE=%ProgramFiles%\PellesC\Include;%ProgramFiles%\PellesC\Include\Win;%INCLUDE%
|
|
set LIB=%ProgramFiles%\PellesC\Lib;%ProgramFiles%\PellesC\Lib\Win;%LIB%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Pelles C for Windows x86-64 (requires preceding build for native target)
|
|
set PATH=%ProgramFiles%\PellesC\Bin;%PATH%
|
|
set INCLUDE=%ProgramFiles%\PellesC\Include;%ProgramFiles%\PellesC\Include\Win;%INCLUDE%
|
|
set LIB=%ProgramFiles%\PellesC\Lib;%ProgramFiles%\PellesC\Lib\Win64;%LIB%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Pelles C for Windows CE ARM (requires preceding build for native target)
|
|
set PATH=%ProgramFiles%\PellesC\Bin;%PATH%
|
|
set INCLUDE=%ProgramFiles%\PellesC\Include\WinCE;%ProgramFiles%\PellesC\Include;%INCLUDE%
|
|
set LIB=%ProgramFiles%\PellesC\Lib;%ProgramFiles%\PellesC\Lib\WinCE;%LIB%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Delorie GNU C for MS-DOS (on Intel 32-bit Windows hosts only)
|
|
set DJGPP=C:\djgpp\djgpp.env
|
|
set PATH=C:\djgpp\bin;%PATH%
|
|
mingw32-make
|
|
---
|
|
|
|
--- Open Watcom C++
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH%
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\H;%WATCOM%\H\NT
|
|
mingw32-make
|
|
---
|
|
|
|
--- Open Watcom C++ for MS-DOS
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINNT;%PATH%
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\H
|
|
mingw32-make
|
|
---
|
|
|
|
--- Open Watcom C++ for OS/2 (requires preceding build for Windows target)
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH%
|
|
SET BEGINLIBPATH=%WATCOM%\BINP\DLL
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\H;%WATCOM%\H\OS2
|
|
mingw32-make
|
|
---
|
|
|
|
--- Open Watcom C++ for Linux (requires preceding build for Windows target)
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH%
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\LH
|
|
mingw32-make
|
|
---
|
|
|
|
--8<--
|
|
rem ; Add these *before* above sample scripts to configure 3rd party dependencies.
|
|
rem When using MSYS or Cygwin shell you'll have to use forward slashes and
|
|
rem also Cygwin drive notation for Cygwin.
|
|
set HB_WITH_ADS=C:\ads\acesdk
|
|
set HB_WITH_ALLEGRO=C:\allegro\include
|
|
set HB_WITH_APOLLO=C:\Apollo\include
|
|
set HB_WITH_BLAT=C:\blat\full\source
|
|
set HB_WITH_CURL=C:\curl\include
|
|
set HB_WITH_FIREBIRD=C:\Firebird\include
|
|
set HB_WITH_FREEIMAGE=C:\FreeImage\Dist
|
|
set HB_WITH_GD=C:\gd\include
|
|
set HB_WITH_MYSQL=C:\mysql\include
|
|
set HB_WITH_OPENSSL=C:\openssl\inc32
|
|
set HB_WITH_PGSQL=C:\pgsql\include
|
|
set HB_WITH_QT=C:\Qt\include
|
|
-->8--
|
|
|
|
--8<--
|
|
rem ; Add these *before* above sample scripts to configure 3rd party dependencies
|
|
rem for implib generation. These environment variables must point to the *root
|
|
rem directory* of given projects.
|
|
set HB_DIR_ADS=C:\ads\acesdk
|
|
set HB_DIR_ALLEGRO=C:\allegro
|
|
set HB_DIR_APOLLO=C:\Apollo
|
|
set HB_DIR_BLAT=C:\blat
|
|
set HB_DIR_CURL=C:\curl
|
|
set HB_DIR_FIREBIRD=C:\Firebird
|
|
set HB_DIR_FREEIMAGE=C:\FreeImage
|
|
set HB_DIR_GD=C:\gd
|
|
set HB_DIR_MYSQL=C:\mysql
|
|
set HB_DIR_OPENSSL=C:\openssl
|
|
set HB_DIR_PGSQL=C:\pgsql
|
|
set HB_DIR_QT=C:\Qt
|
|
|
|
set HB_BUILD_IMPLIB=yes
|
|
-->8--
|
|
|
|
--8<--
|
|
rem ; To create installation packages (.exe + .zip),
|
|
rem add these lines before above sample scripts and
|
|
rem pass 'clean install' to make:
|
|
set HB_DIR_NSIS=%ProgramFiles%\NSIS\
|
|
set HB_DIR_ZIP=C:\info-zip\
|
|
set HB_BUILD_PKG=yes
|
|
-->8--
|
|
|
|
for Windows x64 (x86-64) hosts
|
|
------------------------------
|
|
|
|
Same as regular Windows, but you'll have to change %ProgramFiles% to
|
|
%ProgramFiles(x86)% for 32-bit and mixed tools, you can build for
|
|
both x86 and x64 without building a native target first, and potential
|
|
differences in compilers to use native binaries if they are available.
|
|
|
|
--- Windows SDK 7
|
|
call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- Windows SDK 7 for Windows x86-64
|
|
call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008
|
|
call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 (Standard or above) for Windows x86-64
|
|
call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64
|
|
mingw32-make
|
|
---
|
|
|
|
--- MSVC 2008 (Team Suite) for Windows IA-64 Itanium (requires preceding build for native target)
|
|
call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_ia64
|
|
mingw32-make
|
|
---
|
|
|
|
for MS-DOS hosts
|
|
----------------
|
|
|
|
--- Delorie GNU C
|
|
set DJGPP=C:\djgpp\djgpp.env
|
|
set PATH=C:\djgpp\bin;%PATH%
|
|
make
|
|
---
|
|
|
|
--- Open Watcom C++
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINW;%PATH%
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\H
|
|
make
|
|
---
|
|
|
|
--8<--
|
|
rem ; Add these *before* above sample scripts to configure 3rd party dependencies.
|
|
rem You have to use 8.3 path notation.
|
|
set HB_WITH_ALLEGRO=C:\ALLEGR~1.2\include
|
|
set HB_WITH_FIREBIRD=C:\FIREBI~1.4\include
|
|
set HB_WITH_GD=C:\GD-20~1.34\include
|
|
set HB_WITH_MYSQL=C:\MYSQL-~1.67\include
|
|
set HB_WITH_PGSQL=C:\PGSQL-~1.3\include
|
|
set HB_WITH_WATT=C:\WATT\inc
|
|
-->8--
|
|
|
|
--8<--
|
|
rem ; To create installation packages (.zip),
|
|
rem add these lines before above sample scripts and
|
|
rem pass 'clean install' to make:
|
|
set HB_DIR_ZIP=C:\info-zip\
|
|
set HB_BUILD_PKG=yes
|
|
-->8--
|
|
|
|
for OS/2 hosts
|
|
--------------
|
|
|
|
--- GCC 3.3.4 and GCC 3.3.5
|
|
C:\usr\bin\gccenv.cmd
|
|
os2-make
|
|
---
|
|
|
|
--- GCC 4.x
|
|
C:\usr\local433\gcc440.cmd
|
|
set HB_COMPILER=gccomf
|
|
os2-make
|
|
---
|
|
|
|
--- Open Watcom C++
|
|
SET WATCOM=C:\watcom
|
|
SET PATH=%WATCOM%\BINP;%WATCOM%\BINW;%PATH%
|
|
SET BEGINLIBPATH=%WATCOM%\BINP\DLL
|
|
SET EDPATH=%WATCOM%\EDDAT
|
|
SET INCLUDE=%WATCOM%\H;%WATCOM%\H\OS2
|
|
SET HELP=%WATCOM%\BINP\HELP;%HELP%
|
|
SET BOOKSHELF=%WATCOM%\BINP\HELP;%BOOKSHELF%
|
|
os2-make
|
|
---
|
|
|
|
for Linux hosts
|
|
---------------
|
|
|
|
--- Open Watcom C++ for OS/2 (requires preceding build for Linux target)
|
|
export WATCOM="/opt/lng/watcom"
|
|
export INCLUDE="${WATCOM}/h:${WATCOM}/h/os2"
|
|
export PATH="${WATCOM}/binl:$PATH"
|
|
export HB_BUILD_EXTDEF=no
|
|
# ;
|
|
export HB_INSTALL_PREFIX="$(pwd)/hb-os2/watcom"
|
|
make "$@"
|
|
---
|
|
|
|
for Darwin (Mac OS X) hosts
|
|
---------------------------
|
|
|
|
--- To create "Universal" binaries, compatible with pre-Snow Leopard PowerPC and Intel systems
|
|
export HB_USER_LDFLAGS="-arch i386 -arch ppc"
|
|
export HB_USER_CFLAGS="$HB_USER_LDFLAGS"
|
|
export HB_COMPILER=gcc
|
|
make
|
|
---
|
|
|
|
for *nix hosts in general
|
|
-------------------------
|
|
|
|
--- GCC
|
|
gmake OR make
|
|
---
|
|
|
|
--- MinGW GCC for Windows x86
|
|
gmake OR make HB_PLATFORM=win
|
|
---
|
|
|
|
--- MinGW GCC for Windows CE ARM
|
|
gmake OR make HB_PLATFORM=wce
|
|
---
|
|
|
|
8. HOW TO GET THE HARBOUR SOURCES
|
|
=================================
|
|
|
|
1.) It's possible you're reading this file as part of the Harbour
|
|
source code package. If not, read along.
|
|
|
|
2.) Harbour source repository
|
|
|
|
You'll need Subversion (SVN) version control software installed
|
|
on your system, and issue this command:
|
|
svn co https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour
|
|
|
|
You can get subsequent updates using this command:
|
|
svn update
|
|
|
|
3.) Harbour nightly sources (updated once a day from source repository)
|
|
|
|
Download source archive from any of these links and unpack:
|
|
http://harbour-project.org/harbour-nightly.zip
|
|
http://harbour-project.org/harbour-nightly.tgz
|
|
http://harbour-project.org/harbour-nightly.bz2
|
|
|
|
4.) Harbour source download (stable)
|
|
|
|
Download source archive from this page and unpack:
|
|
http://sourceforge.net/project/showfiles.php?group_id=681&package_id=192305
|
|
|
|
|
|
9. TROUBLESHOOTING
|
|
==================
|
|
|
|
Please evaluate these points before reporting an issue on the developers'
|
|
mailing list.
|
|
|
|
- Make sure to have carefully read this document.
|
|
- Make sure to do a 'clean' before doing a build after refreshing
|
|
the sources.
|
|
- Make sure to install fresh source tree in a new local directory and
|
|
start over. See HOW TO GET THE HARBOUR SOURCES section for instructions
|
|
to get the source.
|
|
- Keep you PATH clean from old, mixed compiler tools or other Harbour
|
|
versions when building Harbour. The surest way to achieve this is to
|
|
leave only compiler directory in PATH:
|
|
set PATH=C:\<compilerdir>
|
|
- Remove all old, unnecessary environment variables from your environment.
|
|
Use only those documented in this file.
|
|
- Try to do no or only small modifications at once to command examples
|
|
included in this file. If it doesn't work, fall back to documented
|
|
examples as is.
|
|
|
|
|
|
10. QUICK START TO BUILD YOUR OWN HARBOUR APPLICATIONS
|
|
======================================================
|
|
|
|
For all platforms you'll need two things:
|
|
|
|
* Harbour binaries
|
|
|
|
Either a Harbour binary distribution or a local Harbour
|
|
build will be okay. If you're reading this text, it's
|
|
very likely you have one of these already.
|
|
|
|
* Supported ANSI C compiler
|
|
|
|
Your compiler of choice has to be placed in the PATH
|
|
(and configured appropriately according to instructions).
|
|
If you use official Harbour binary distribution on Windows,
|
|
you already have MinGW compiler embedded in the installation,
|
|
which will automatically be used, so you don't have to
|
|
make any extra steps here.
|
|
|
|
Examples to build a Harbour application:
|
|
|
|
- To build one simple .prg:
|
|
'hbmk2 hello.prg'
|
|
- To build multiple .prg sources into one application:
|
|
'hbmk2 mymain.prg client.prg'
|
|
- To build an application using a project file:
|
|
'hbmk2 myapp.hbp'
|
|
- To build an application using incremental mode:
|
|
'hbmk2 myapp.hbp -inc'
|
|
- To build an application which uses a contrib library:
|
|
'hbmk2 myapp.prg -lhbct'
|
|
- To build an application which uses a 3rd party library:
|
|
'hbmk2 myapp.prg -lsuplib -L<path_to_lib>'
|
|
- To build an application which uses a 3rd party library,
|
|
and the 3rd party lib has an .hbc file:
|
|
'hbmk2 myapp.prg rddleto.hbc -L<path_to_letodb>'
|
|
- To build an application which uses Windows resources:
|
|
'hbmk2 mymain.prg client.prg myres.rc'
|
|
- To build an application which links against Harbour dynamic libraries:
|
|
'hbmk2 -shared hello.prg'
|
|
- To build an application out of all .prg and .c sources residing
|
|
in 'source' subdir:
|
|
'hbmk2 -omyapp src/*.prg src/*.c'
|
|
|
|
Examples to build a Harbour static library:
|
|
|
|
- To build library 'mylib' from sources:
|
|
'hbmk2 mylibsrc.prg -omylib -hblib'
|
|
- To build library 'mylib' from sources using incremental mode:
|
|
'hbmk2 mylibsrc.prg -omylib -hblib -inc'
|
|
|
|
NOTES: - Most of the above features can be combined. F.e. to use
|
|
incremental build in any of the above commands, just add
|
|
'-inc' switch.
|
|
- List all available options:
|
|
'hbmk2 -help'
|
|
Besides the ones listed, you can use all regular Harbour
|
|
compiler command line options, like:
|
|
'-l', '-b', '-n', '-w3' (etc...)
|
|
- To make it easier to work with Harbour, it's recommended to
|
|
put Harbour binary directory into the PATH:
|
|
set PATH=C:\harbour\bin;%PATH% (on Windows)
|
|
(this is not a requirement though)
|
|
- You can access hbmk2 using absolute or relative paths, and
|
|
it will work equally well:
|
|
'C:\hb20\bin\hbmk2 hello.prg'
|
|
- GNU Make, MSYS, or any other extra tool is *not* needed
|
|
to build a Harbour application with above methods.
|
|
|
|
|
|
11. BUILD HOST-PLATFORM/SHELL - TARGET-PLATFORM/COMPILER COMPATIBILITY MATRIX
|
|
=============================================================================
|
|
|
|
host target target
|
|
plat plat/comp cpu
|
|
- ------ ------------- ----------------------------------------------------
|
|
win -> win/bcc x86
|
|
win -> win/cygwin x86
|
|
win -> win/gcc x86
|
|
win -> win/global x86
|
|
win -> win/icc x86
|
|
win -> win/icc64 x86-64 (not supported yet)
|
|
win -> win/iccia64 ia64
|
|
win -> win/mingw x86
|
|
win -> win/mingw64 x86-64
|
|
win -> win/msvc x86
|
|
win -> win/msvc64 x86-64
|
|
win -> win/msvcia64 ia64
|
|
win -> win/pocc x86
|
|
win -> win/pocc64 x86-64
|
|
win -> win/watcom x86
|
|
win -> win/xcc x86
|
|
x win -> wce/mingwarm arm
|
|
x win -> wce/mingw x86 (not fully supported yet)
|
|
x win -> wce/poccarm arm
|
|
x win -> wce/msvcarm arm
|
|
x win -> wce/msvcmips mips (not supported yet)
|
|
x win -> wce/msvcsh sh (not supported yet)
|
|
x win -> wce/msvc x86 (not supported yet)
|
|
x win -> dos/djgpp x86 (on Windows x86 only)
|
|
x win -> dos/watcom x86
|
|
x win -> os2/watcom x86
|
|
x win -> linux/watcom x86
|
|
dos -> dos/djgpp x86
|
|
dos -> dos/watcom x86
|
|
x dos -> win/watcom x86
|
|
x dos -> os2/watcom x86
|
|
x dos -> linux/watcom x86
|
|
os2 -> os2/gcc x86
|
|
os2 -> os2/watcom x86
|
|
x os2 -> win/watcom x86
|
|
x os2 -> dos/watcom x86
|
|
x os2 -> linux/watcom x86
|
|
linux -> linux/gcc (CPU cross-builds possible)
|
|
linux -> linux/icc (CPU cross-builds possible: x86, x86-64, ia64)
|
|
linux -> linux/sunpro (CPU cross-builds possible: x86, x86-64)
|
|
x linux -> wce/mingwarm arm
|
|
x linux -> wce/mingw x86
|
|
x linux -> win/mingw x86
|
|
x linux -> win/mingw64 x86-64
|
|
x linux -> win/watcom x86
|
|
x linux -> os2/watcom x86
|
|
x linux -> dos/watcom x86
|
|
x linux -> dos/djgpp x86
|
|
bsd -> bsd/gcc (CPU cross-builds possible)
|
|
x bsd -> wce/mingwarm arm
|
|
x bsd -> wce/mingw x86
|
|
x bsd -> win/mingw x86
|
|
x bsd -> dos/djgpp x86
|
|
darwin -> darwin/clang (CPU cross-builds possible: x86, x86-64, unibin)
|
|
darwin -> darwin/gcc (CPU cross-builds possible: x86, x86-64, ppc, ppc64, unibin)
|
|
darwin -> darwin/icc (CPU cross-builds possible: x86, x86-64)
|
|
x darwin -> wce/mingwarm arm
|
|
x darwin -> wce/mingw x86
|
|
x darwin -> win/mingw x86
|
|
x darwin -> dos/djgpp x86
|
|
hpux -> hpux/gcc (CPU cross-builds possible)
|
|
beos -> beos/gcc x86
|
|
x hpux -> wce/mingwarm arm
|
|
x hpux -> wce/mingw x86
|
|
x hpux -> win/mingw x86
|
|
x hpux -> dos/djgpp x86
|
|
sunos -> sunos/gcc (CPU cross-builds possible)
|
|
sunos -> sunos/sunpro (CPU cross-builds possible: x86, x86-64, sparc32, sparc64)
|
|
x sunos -> wce/mingwarm arm
|
|
x sunos -> wce/mingw x86
|
|
x sunos -> win/mingw x86
|
|
x sunos -> dos/djgpp x86
|
|
|
|
Leading 'x' marks cross-platform scenarios.
|
|
|
|
Supported shells per host platforms:
|
|
|
|
win / NT shell (cmd.exe)
|
|
win / POSIX shell (MSYS or Cygwin sh.exe) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
win / MS-DOS shell (command.com) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
dos / MS-DOS shell (command.com) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
dos / POSIX shell (bash.exe) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
os/2 / OS/2 shell (cmd.exe) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
os/2 / POSIX shell (bash.exe) (* not supported: HB_BUILD_PKG, HB_BUILD_IMPLIB)
|
|
*nix / POSIX shell (* not supported: HB_BUILD_PKG - implemented as standalone scripts)
|
|
|
|
|
|
12. LINKS TO EXTERNAL COMPONENTS
|
|
================================
|
|
|
|
C/C++ Compilers/Shells:
|
|
|
|
MinGW [win, *nix, free, open-soource]
|
|
http://www.tdragon.net/recentgcc/ (unofficial, recommended)
|
|
http://www.mingw.org/ (official, rarely updated, MSYS home)
|
|
MinGW x64 [win, *nix, free, open-source]
|
|
http://mingw-w64.org/
|
|
http://mingw-w64.sourceforge.net/
|
|
http://sourceforge.net/projects/mingw-w64/
|
|
http://www.cadforte.com/
|
|
MinGW CEGCC [win, *nix, free, open-source]
|
|
http://cegcc.sourceforge.net/
|
|
Cygwin [win, free, open-source]
|
|
http://www.cygwin.com/
|
|
OS/2 GCC [os2, free, open-source]
|
|
ftp://ftp.netlabs.org/pub/gcc/
|
|
ftp://ftp.netlabs.org/pub/gcc/GCC-3.3.5-csd3.zip
|
|
ftp://ftp.netlabs.org/pub/gcc/libc-0_6_3-csd3.exe
|
|
http://os2ports.smedley.info/index.php?page=gcc
|
|
http://os2ports.smedley.info/index.php?page=gcc44
|
|
DJGPP [dos, *nix, free, open-source]
|
|
http://www.delorie.com/djgpp/
|
|
Open Watcom [win, dos, os2, linux, free, open-source]
|
|
http://www.openwatcom.org/
|
|
XCode [darwin, free, closed-source]
|
|
http://developer.apple.com/TOOLS/Xcode/
|
|
MS Windows SDK [win, free]:
|
|
http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
|
|
(7.0 contains compilers for x86, x86_64 and IA-64)
|
|
MS Visual Studio Express [win, free, closed-source]
|
|
http://www.microsoft.com/express/
|
|
MS Visual Studio [win, commercial, closed-source]
|
|
http://www.microsoft.com/visualstudio/
|
|
MS Windows Mobile SDK [wce, free]:
|
|
http://www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155-717CBE5D25ED
|
|
Pelles C [win, wce, free, closed-source]
|
|
http://www.smorgasbordet.com/pellesc/
|
|
Borland/CodeGear/Embarcadero Compiler [win, free, closed-source]
|
|
https://downloads.embarcadero.com/free/c_builder
|
|
Intel Compiler [win, linux, darwin, commercial, closed-source]
|
|
http://software.intel.com/en-us/intel-compilers/
|
|
|
|
Libraries:
|
|
|
|
HB_WITH_ADS - Advantage Client Engine API [win, linux, free, closed-source]
|
|
http://www.sybase.com/products/databasemanagement/advantagedatabaseserver/client-engine-api
|
|
HB_WITH_ALLEGRO - Allegro (GUI) [multiplatform, free, open-source]
|
|
http://alleg.sourceforge.net/
|
|
HB_WITH_BLAT - Blat (SMTP client) [win, free, open-source]
|
|
http://www.blat.net/
|
|
HB_WITH_CURL - libcurl (file transfer) [multiplatform, free, open-source]
|
|
http://curl.haxx.se/
|
|
HB_WITH_FIREBIRD - firebird SQL [multiplatform, free, open-source]
|
|
http://www.firebirdsql.org/
|
|
HB_WITH_FREEIMAGE - FreeImage [multiplatform, free, open-source]
|
|
http://freeimage.sourceforge.net/
|
|
HB_WITH_GD - GD Graphics Library [multiplatform, free, open-source]
|
|
http://www.boutell.com/gd/
|
|
HB_WITH_LIBHARU - libharu (PDF creation) [multiplatform, free, open-source]
|
|
http://libharu.org/
|
|
HB_WITH_MYSQL - MySQL [multiplatform, free, open-source]
|
|
http://dev.mysql.com/downloads/
|
|
HB_WITH_OPENSSL - OpenSSL [multiplatform, free, open-source]
|
|
http://www.openssl.org/
|
|
HB_WITH_PCRE - Perl Compatible Regular Expressions [multiplatform, free, open-source]
|
|
http://www.pcre.org/
|
|
HB_WITH_PGSQL - PostgreSQL [multiplatform, free, open-source]
|
|
http://www.postgresql.org/
|
|
HB_WITH_PNG - libpng [multiplatform, free, open-source]
|
|
http://www.libpng.org/pub/png/libpng.html
|
|
HB_WITH_QT - Nokia QT (GUI) [win, wce, darwin, linux, free, open-source]
|
|
http://qt.nokia.com/products
|
|
How to build static and MSVC versions:
|
|
http://doc.trolltech.com/4.5/deployment-windows.html
|
|
HB_WITH_SQLITE3 - sqlite3 [multiplatform, free, open-source]
|
|
http://www.sqlite.org/
|
|
HB_WITH_WATT - Watt-32 (TCP/IP sockets) [dos, free, open-source]
|
|
http://www.bgnett.no/~giva/
|
|
HB_WITH_ZLIB - zlib [multiplatform, free, open-source]
|
|
http://www.zlib.net/
|
|
|
|
Tools:
|
|
|
|
Subversion (Version Control System) [multiplatform, free, open-source]:
|
|
http://subversion.tigris.org/
|
|
GNU Flex (lexical analyzer) [multiplatform, free, open-source]
|
|
Windows binary:
|
|
http://gnuwin32.sourceforge.net/packages/flex.htm
|
|
(not verified with current Harbour version)
|
|
GNU Bison (grammer paser generator) [multiplatform, free, open-source]
|
|
Windows binary:
|
|
http://gnuwin32.sourceforge.net/packages/bison.htm
|
|
(not verified with current Harbour version)
|
|
GNU Sed (stream editor) [multiplatform, free, open-source]
|
|
Windows binary:
|
|
http://gnuwin32.sourceforge.net/packages/sed.htm
|
|
UPX (executable compressor) [win, dos, *nix, free, open-source]
|
|
http://upx.sourceforge.net/
|
|
Nullsoft Installer [win, free, open-source]
|
|
http://nsis.sourceforge.net/
|
|
7-Zip [multiplatform, free, open-source]
|
|
http://www.7-zip.org/
|
|
Info-ZIP [multiplatform, free, open-source]
|
|
http://www.info-zip.org/
|
|
bzip2 [multiplatform, free, open-source]
|
|
Windows binary:
|
|
http://www.bzip.org/downloads.html
|
|
GNU Make
|
|
Windows binary + source:
|
|
http://sourceforge.net/projects/mingw/files/GNU%20Make/
|
|
http://sourceforge.net/projects/mingw/files/GNU%20Make/Current%20Release_%20mingw32-make-3.81-20080326/mingw32-make-3.81-20080326-3.tar.gz/download
|
|
http://sourceforge.net/projects/mingw/files/GNU%20Make/Current%20Release_%20mingw32-make-3.81-20080326/mingw32-make-3.81-20080326-src.tar.gz/download
|
|
(included in Harbour as win-make.exe)
|
|
MS-DOS binary + source:
|
|
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/
|
|
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381b.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/mak381s.zip
|
|
(included in Harbour as dos-make.exe)
|
|
OS/2 binary + source:
|
|
http://www.os2site.com/sw/dev/make/index.html
|
|
http://www.os2site.com/sw/dev/make/make-3.81-r3-bin-static.zip
|
|
http://www.os2site.com/sw/dev/make/make-3.81-r3.zip
|
|
http://www.os2site.com/sw/dev/make/make-3.81-r2.zip
|
|
(included in Harbour as os2-make.exe)
|
|
GNU core utils (mkdir, rm, cp, echo)
|
|
MS-DOS binary + source:
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41b.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41s.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/shl2011b.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/shtl208s.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2/djdev203.zip
|
|
ftp://ftp.delorie.com/pub/djgpp/current/v2/djlsr203.zip
|
|
(included in Harbour as dosmkdir.exe, dosrm.exe, doscp.exe, dosecho.exe)
|
|
OS/2 binary:
|
|
http://os2ports.smedley.info/index.php?page=build-environment
|
|
http://download.smedley.info/buildenv_20071022.zip
|
|
(included in Harbour as os2mkdir.exe, os2rm.exe, os2cp.exe)
|
|
|
|
|
|
13. HOW TO PARTICIPATE
|
|
======================
|
|
|
|
There are several ways to help making Harbour better:
|
|
|
|
- You can give feedback/suggestions to developers on available
|
|
channels.
|
|
- You can submit patches or source code on above channels.
|
|
Patches are accepted in 'svn diff' or 'diff -u' format.
|
|
Always .zip your patch/source files before attaching them.
|
|
The size limit for e-mails sent to the development list is
|
|
40KB. If you need more, upload it to a site where we can
|
|
access it, or use the sf.net page to submit it.
|
|
- Given a good history of valuable contributions, you can get
|
|
write access to the source repository.
|
|
- Of course there is more into Harbour contribution than writing
|
|
code, so you're welcome to do so in other areas like documentation,
|
|
helping fellow users, giving input on decisions, testing in
|
|
various environments, etc.
|
|
|
|
|
|
14. FOR MORE INFORMATION
|
|
========================
|
|
|
|
Homepage:
|
|
http://www.harbour-project.org/
|
|
|
|
User Forums:
|
|
http://sourceforge.net/apps/phpbb/harbour-project/
|
|
|
|
Sourceforge Page:
|
|
http://sourceforge.net/projects/harbour-project/
|
|
|
|
Developers' Mailing List Archives:
|
|
http://lists.harbour-project.org/pipermail/harbour/
|
|
|
|
Development Timeline:
|
|
http://sourceforge.net/apps/trac/harbour-project/timeline
|
|
|
|
Bug Tracker:
|
|
https://sourceforge.net/tracker/?group_id=681
|
|
|
|
Source Repository Browser:
|
|
http://harbour-project.svn.sourceforge.net/viewvc/harbour-project/
|
|
|
|
Source Repository Checkout (anonymous) [needs Subversion]:
|
|
svn co https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour
|
|
|
|
Miscellaneous documents:
|
|
/doc directory under this directory.
|
|
|
|
|
|
|
|
[ Copyright (c) 2009 Viktor Szakats (harbour.01 syenar.hu)
|
|
Licensed under Creative Commons Attribution-ShareAlike 3.0:
|
|
http://creativecommons.org/licenses/by-sa/3.0/
|
|
See COPYING. ]
|