* INSTALL
+ Added new section: HOW TO DO A PARTIAL [RE]BUILD
This wouldn't have been possible a week ago, the
situation was so much different and complicated for
various cases.
! Cleaned msys/cygwin/<DIR> references and NOTEs.
* config/dyn.mk
* config/bin.mk
* config/global.mk
+ config/bsd/libs.mk
* config/bsd/gcc.mk
+ config/hpux/libs.mk
* config/hpux/gcc.mk
+ config/darwin/libs.mk
* config/darwin/gcc.mk
* config/darwin/icc.mk
+ config/linux/libs.mk
* config/linux/global.mk
+ config/sunos/libs.mk
* config/sunos/gcc.mk
* config/sunos/sunpro.mk
% Moved "system" library logic to compiler libs.mk files
for all *nix compilers.
* config/dos/djgpp.mk
* config/global.mk
* DJGPP with win-based make messages converted to a warning
and moved next to the other similar warning detecting
another non-ideal combination.
1023 lines
37 KiB
Plaintext
1023 lines
37 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/
|
|
|
|
|
|
HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE
|
|
============================================
|
|
|
|
NOTE: Before reporting a problem on the 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.
|
|
|
|
NOTES: - 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-r2-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.
|
|
|
|
on Linux hosts
|
|
--------------
|
|
(possible cross-build targets: Windows, Windows CE, MS-DOS, OS/2)
|
|
|
|
[ $ export HB_PLATFORM=<...> ]
|
|
$ make install
|
|
|
|
To test it, type:
|
|
$ cd tests
|
|
$ hbmk2 hello.prg
|
|
$ ./hello
|
|
You should see 'Hello world!' on screen.
|
|
|
|
on Darwin/BSD/HP-UX/Solaris/*nix hosts
|
|
--------------------------------------
|
|
(possible cross-build targets: Windows, Windows CE, MS-DOS)
|
|
|
|
[ $ export HB_PLATFORM=<...> ]
|
|
$ gmake install
|
|
OR
|
|
$ make install
|
|
|
|
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.
|
|
|
|
|
|
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 source/rtl
|
|
<make> [clean] [install]
|
|
|
|
|
|
HOW TO ENABLE OPTIONAL COMPONENTS BEFORE BUILD
|
|
==============================================
|
|
|
|
Some 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 some 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_INC_ADS=C:\ads\acesdk
|
|
HB_INC_ALLEGRO=C:\allegro\include
|
|
HB_INC_BLAT=C:\blat\full\source
|
|
HB_INC_CURL=C:\curl\include
|
|
HB_INC_FIREBIRD=C:\Firebird\include
|
|
HB_INC_FREEIMAGE=C:\FreeImage\Dist
|
|
HB_INC_GD=C:\gd\include
|
|
HB_INC_LIBHARU=C:\libharu\include (defaults to locally hosted version)
|
|
HB_INC_LIBPNG=C:\libpng (defaults to locally hosted version on win/dos/os2)
|
|
HB_INC_MYSQL=C:\mysql\include
|
|
HB_INC_ODBC= (may only be needed on non-Windows systems)
|
|
HB_INC_OPENSSL=C:\openssl\inc32
|
|
HB_INC_PGSQL=C:\pgsql\include
|
|
HB_INC_QT=C:\Qt\include
|
|
HB_INC_SQLITE3=C:\sqlite3 (defaults to locally hosted version on win/dos/os2)
|
|
|
|
NOTES: - You need to use native path format to your shell.
|
|
- Spaces in directory names aren't currently supported.
|
|
(You can use short 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_ALLEGRO_STATIC=yes
|
|
HB_QT_STATIC=yes
|
|
|
|
Darwin (Mac OS X)
|
|
-----------------
|
|
1.) Install MacPorts, follow their instructions:
|
|
http://www.macports.org/
|
|
2.) sudo port install allegro freeimage gd2 mysql5-devel postgresql83
|
|
|
|
Linux (generic)
|
|
---------------
|
|
|
|
For contrib/rddads lib:
|
|
Download and install 'Advantage Client Engine API for Linux' package
|
|
(f.e. aceapi-9.00.0.0.tar.gz)
|
|
|
|
For contrib/hbhpdf lib:
|
|
Download libharu from http://libharu.org/ -> './configure' -> 'make install'
|
|
|
|
Linux (Debian, Ubuntu)
|
|
----------------------
|
|
(tested with Ubuntu 7.04, 8.04, 9.04)
|
|
|
|
for gtcrs terminal lib: sudo apt-get install libncurses-dev
|
|
for gtsln terminal lib: sudo apt-get install libslang2-dev
|
|
for gtxwc terminal lib: sudo apt-get install libx11-dev
|
|
for console mouse (GPM) support: sudo apt-get install libgpmg1-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 libfirebird2.0-dev OR
|
|
sudo apt-get install firebird2.1-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
|
|
|
|
Linux (openSUSE)
|
|
----------------
|
|
|
|
You'll need these packages to compile certain contribs and optional Harbour features:
|
|
- xorg-x11-devel
|
|
- postgresql-devel
|
|
- gtk2-devel
|
|
- ncurses-devel
|
|
- slang-devel
|
|
- unixodbc-devel
|
|
- gd-devel
|
|
- libmysqlclient-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
|
|
|
|
|
|
SUPPORTED PLATFORMS AND C COMPILERS
|
|
===================================
|
|
|
|
You can use HB_PLATFORM values to select platforms:
|
|
|
|
linux - Linux
|
|
darwin - Mac OS X
|
|
bsd - *BSD
|
|
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 system also work, like dosemu)
|
|
os2 - OS/2
|
|
|
|
You can use HB_COMPILER values to 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++
|
|
|
|
bsd
|
|
---
|
|
gcc - GNU C
|
|
|
|
hpux
|
|
----
|
|
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
|
|
|
|
Also supported, some features may be missing:
|
|
|
|
watcom - Open Watcom C++
|
|
bcc - Borland/CodeGear C++ 4.x and above
|
|
icc - Intel(R) C/C++
|
|
iccia64 - Intel(R) C/C++ IA-64
|
|
pocc - Pelles C 4.5 and above
|
|
pocc64 - Pelles C x86-64 5.0 and above
|
|
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 and above
|
|
|
|
dos
|
|
---
|
|
djgpp - Delorie GNU C
|
|
watcom - Open Watcom C++ 9.x and above
|
|
|
|
os2
|
|
---
|
|
gcc - EMX GNU C
|
|
watcom - Open Watcom C++
|
|
|
|
|
|
OPTIONS AVAILABLE WHEN BUILDING HARBOUR
|
|
=======================================
|
|
|
|
You can fine-tune Harbour builds with below listed
|
|
environment variables. All of these 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
|
|
|
|
- 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_IMPLIB=yes Create import libraries for external .dll
|
|
dependencies (including contribs). Default: no
|
|
(for Windows targets created on Windows NT
|
|
shells only)
|
|
- HB_BUILD_DEBUG=yes Create a debug build. 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_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_VISUALC_VER_PRE80=yes Set this if you're using a pre-8.0
|
|
(= pre-MSVS 2005) version of MSVC compiler.
|
|
Default: no
|
|
- 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 to
|
|
specify path to compiler/linker/archive tool
|
|
to help them run from *nix hosts as cross-build
|
|
tools. Ending slash must be used.
|
|
- 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.
|
|
|
|
|
|
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)
|
|
|
|
--- 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 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 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 HB_VISUALC_VER_PRE80=yes
|
|
---
|
|
|
|
--- 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 (requires preceding build for native target)
|
|
call "%ProgramFiles%\Intel\Compiler\C++\10.1.025\Itanium\Bin\iclvars.bat"
|
|
mingw32-make
|
|
---
|
|
|
|
--- Borland/CodeGear C++
|
|
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_INC_ADS=C:\ads\acesdk
|
|
set HB_INC_ALLEGRO=C:\allegro\include
|
|
set HB_INC_APOLLO=C:\Apollo\include
|
|
set HB_INC_BLAT=C:\blat\full\source
|
|
set HB_INC_CURL=C:\curl\include
|
|
set HB_INC_FIREBIRD=C:\Firebird\include
|
|
set HB_INC_FREEIMAGE=C:\FreeImage\Dist
|
|
set HB_INC_GD=C:\gd\include
|
|
set HB_INC_MYSQL=C:\mysql\include
|
|
set HB_INC_OPENSSL=C:\openssl\inc32
|
|
set HB_INC_PGSQL=C:\pgsql\include
|
|
set HB_INC_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 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_INC_ALLEGRO=C:\ALLEGR~1.2\include
|
|
set HB_INC_FIREBIRD=C:\FIREBI~1.4\include
|
|
set HB_INC_GD=C:\GD-20~1.34\include
|
|
set HB_INC_MYSQL=C:\MYSQL-~1.67\include
|
|
set HB_INC_PGSQL=C:\PGSQL-~1.3\include
|
|
-->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
|
|
--------------
|
|
|
|
--- 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%
|
|
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"
|
|
# ; eliminate libraries which scans for local host header files
|
|
export HB_XBUILD=yes
|
|
# ;
|
|
export HB_INSTALL_PREFIX="$(pwd)/hb-os2/watcom"
|
|
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
|
|
---
|
|
|
|
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
|
|
|
|
|
|
TROUBLESHOOTING
|
|
===============
|
|
|
|
Please evaluate these points before reporting an issue on the 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.
|
|
|
|
|
|
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 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 source/*.prg source/*.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.
|
|
|
|
|
|
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/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/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)
|
|
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 (* 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)
|
|
|
|
|
|
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' Mail Archives:
|
|
http://lists.harbour-project.org/pipermail/harbour/
|
|
|
|
Development Timeline:
|
|
http://sourceforge.net/apps/trac/harbour-project/timeline
|
|
|
|
Source Repository Browser:
|
|
http://harbour-project.svn.sourceforge.net/viewvc/harbour-project/
|
|
|
|
Source Repository Checkout (anonymous):
|
|
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. ]
|