{"id":15372030,"url":"https://github.com/vszakats/hb","last_synced_at":"2025-04-13T00:48:56.568Z","repository":{"id":7514944,"uuid":"8865337","full_name":"vszakats/hb","owner":"vszakats","description":"Harbour fork (from https://github.com/harbour/core) + updates \u0026 fixes = 3.4","archived":false,"fork":false,"pushed_at":"2025-03-25T22:42:52.000Z","size":319866,"stargazers_count":86,"open_issues_count":1,"forks_count":97,"subscribers_count":51,"default_branch":"main","last_synced_at":"2025-04-13T00:48:39.713Z","etag":null,"topics":["c","clipper","compiler","cross","cross-platform","dbf","harbour","scripting-language","tui","xbase"],"latest_commit_sha":null,"homepage":"https://vszakats.github.io/hb/","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vszakats.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.txt","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-03-18T22:08:23.000Z","updated_at":"2025-03-25T22:43:05.000Z","dependencies_parsed_at":"2023-12-22T07:28:04.364Z","dependency_job_id":"4f85b766-0dc9-4094-804d-fa509db94023","html_url":"https://github.com/vszakats/hb","commit_stats":{"total_commits":25397,"total_committers":92,"mean_commits":"276.05434782608694","dds":0.6725203764224121,"last_synced_commit":"83173b807b4eceda0a46704aa6544e92240cc21c"},"previous_names":["vszakats/harbour-core"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vszakats%2Fhb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vszakats%2Fhb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vszakats%2Fhb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vszakats%2Fhb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vszakats","download_url":"https://codeload.github.com/vszakats/hb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650436,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","clipper","compiler","cross","cross-platform","dbf","harbour","scripting-language","tui","xbase"],"created_at":"2024-10-01T13:49:26.834Z","updated_at":"2025-04-13T00:48:56.547Z","avatar_url":"https://github.com/vszakats.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to Harbour\n[![License](https://img.shields.io/badge/license-GPLv2%20%2B%20Library%20Exception-blue.svg)](LICENSE.txt \"License\")\n[![Download](https://img.shields.io/badge/download-snapshot_binary_(3.4)-blue.svg)](https://github.com/vszakats/hb/releases \"Download snapshot release\")\n\u003cbr\u003e\n[![Build status](https://ci.appveyor.com/api/projects/status/4rd806hk73q83qo4/branch/main?svg=true)](https://ci.appveyor.com/project/vsz/hb/branch/main)\n[![Coverity Status](https://scan.coverity.com/projects/3208/badge.svg)](https://scan.coverity.com/projects/3208)\n\nHarbour is the open/free software implementation of a cross-platform,\nmulti-threading, object-oriented, scriptable programming language, backwards\ncompatible with xBase languages. Harbour consists of a compiler and runtime\nlibraries with multiple UI, database and I/O backends, its own build system\nand a collection of libraries and bindings for popular APIs.\n\n# Table of Contents\n\n1. [How to Get](#how-to-get)\n2. [How to Build](#how-to-build)\n3. [How to Do a Partial Build](#how-to-do-a-partial-build)\n4. [How to Create Packages for Distribution](#how-to-create-packages-for-distribution)\n5. [How to Enable Optional Components](#how-to-enable-optional-components)\n6. [Build Options](#build-options)\n7. [Build Examples](#build-examples)\n8. [Build Your Own Harbour App](#build-your-own-harbour-app)\n9. [Debugging Options](#debugging-options)\n10. [Supported Platforms and C Compilers](#supported-platforms-and-c-compilers)\n11. [Platform Matrix](#platform-matrix)\n12. [External Links](#external-links)\n13. [Harbour Links](#harbour-links)\n14. [Guarantees and Liability](#guarantees-and-liability)\n\n---\n\n# How to Get\n\n## Stable versions (non-fork/mainline)\n\n### Harbour stable binary download\n\n\u003chttps://github.com/vszakats/hb/releases/tag/v3.0.0\u003e\n\n\u003e NOTE: It is identical to the mainline stable release, but\n\u003e not supported or recommended by this fork.\n\n### Harbour stable source download\n\n\u003chttps://github.com/vszakats/hb/archive/v3.0.0.zip\u003e\n\n## Unstable versions\n\n\u003e TIP:\n\u003e [For](https://groups.google.com/forum/#!msg/harbour-users/2fwUzdKwpKA/32nI4WhZLfYJ)\n\u003e [users](https://groups.google.com/forum/#!msg/harbour-users/Ro99f8S6my0/KvfjhCx_jE4J)\n\u003e [contributing](CONTRIBUTING.md) to development, it's recommended to follow\n\u003e [commits](https://github.com/vszakats/hb/commits/main) and reading\n\u003e [ChangeLog.txt](ChangeLog.txt?raw=true).\n\n### Harbour live source repository\n\nYou will need Git version control software installed on your system\nand use this command (remove the `--depth` option to clone the whole\nhistory \u0026mdash; useful for development):\n\n    git clone --depth=10 https://github.com/vszakats/hb.git\n\nYou can get subsequent updates using this command:\n\n    git pull\n\n### Harbour unstable sources\n\nDownload source archive from any of these URLs and unpack:\n\n* \u003chttps://github.com/vszakats/hb/archive/main.zip\u003e\n* \u003chttps://github.com/vszakats/hb/archive/main.tar.gz\u003e\n\n### Harbour unstable binaries (updated after each commit)\n\n#### Windows (MinGW, 64-bit hosted, 32/64-bit targets, compressed archive)\n\n* \u003chttps://github.com/vszakats/hb/releases\u003e\n\n#### Mac (using Homebrew)\n\n    brew install https://raw.githubusercontent.com/vszakats/hb/main/package/hb@3.4.rb --HEAD\n\n### Follow commits using:\n\n* [Web browser](https://github.com/vszakats/hb/commits/main)\n* [RSS feed](https://github.com/vszakats/hb/commits/main.atom)\n* Any compatible mobile/desktop client app\n\n# How to Build\n\nFor all platforms you will need:\n\n* Supported ANSI C89 compiler\n* GNU Make (3.81 or upper)\n* Harbour sources\n\n## on Windows hosts\n\nPlatform specific prerequisites:\n\n1. Windows 7 or upper system is recommended to *build* Harbour. (64-bit\n   edition is recommended.)\n2. Consider using the binary release. On Windows, it is recommended for most\n   people. You can still rebuild specific contribs this way.\n3. Make sure to have your C compiler of choice installed in `PATH`. Refer to\n   your C compiler installation and setup instructions for details. Make sure\n   no tools in your `PATH` belonging to other C compilers are interfering with\n   your setup. Also avoid to keep multiple copies of the same compiler, or\n   different versions of the same compiler in `PATH` at the same time. For the\n   list of supported compilers,\n   look up [Supported Platforms and C Compilers](#supported-platforms-and-c-compilers).\n4. A native build of GNU Make is required. It is usually named\n   `mingw32-make.exe`. It's distributed in MSYS2, mingw-w64 packages. You can\n   find download links [here](#external-links).\n   Unpack it to your `PATH` or Harbour source root directory, and run it as\n   `mingw32-make`.\n\nTo build:\n\n    $ mingw32-make\n\nTo test it, type:\n\n    $ cd tests\n    $ ..\\bin\\\u003cplat\u003e\\\u003ccomp\u003e\\hbmk2 hello.prg\n    $ hello\n\nYou should see `Hello, world!` on screen.\n\n## on Windows hosts with POSIX shells (MSYS2)\n\nTo build:\n\n    $ sh -c make\n\nTo test it, type:\n\n    $ cd tests\n    $ ..\\bin\\\u003cplat\u003e\\\u003ccomp\u003e\\hbmk2 hello.prg\n    $ hello\n\nYou should see `Hello, world!` on screen.\n\n## on Linux hosts (possible cross-build targets: Windows, Windows CE, MS-DOS, OS/2)\n\nTo build:\n\n    $ make [HB_PLATFORM=\u003c...\u003e]\n\nTo test it, type:\n\n    $ cd tests\n    $ ../bin/\u003cplat\u003e/\u003ccomp\u003e/hbmk2 hello.prg\n    $ ./hello\n\nYou should see `Hello, world!` on screen.\n\n## on Darwin (Mac) hosts (possible cross-build targets: Windows)\n\nPlatform specific prerequisite:\n   Xcode or Command Line Tools for Xcode installed\n\nTo build:\n\n    $ make [HB_PLATFORM=\u003c...\u003e]\n\nTo test it, type:\n\n    $ cd tests\n    $ ../bin/\u003cplat\u003e/\u003ccomp\u003e/hbmk2 hello.prg\n    $ ./hello\n\nYou should see `Hello, world!` on screen.\n\n\u003e You can override default (host) architecture by adding\n\u003e values below to `HB_USER_CFLAGS`, `HB_USER_LDFLAGS` envvars,\n\u003e you can use multiple values:\u003cbr\u003e\n\u003e \u003cbr\u003e\n\u003e ARM64: `-arch arm64`\u003cbr\u003e\n\u003e Intel 64-bit: `-arch x86_64`\u003cbr\u003e\n\n## on FreeBSD hosts\n\nPlatform specific prerequisites:\n\n1. You will need to have the developer tools installed.\n2. Then you will need to install gmake and optionally bison:\n\n        $ pkg install gmake bison\n\nTo build:\n\n    $ gmake\n\nTo test it, type:\n\n    $ cd tests\n    $ ../bin/\u003cplat\u003e/\u003ccomp\u003e/hbmk2 hello.prg\n    $ ./hello\n\nYou should see `Hello, world!` on screen.\n\n## on Minix hosts\n\nInstall GNU make from the Minix pkgsrc repository; for details see\n[here](https://wiki.minix3.org/doku.php?id=usersguide:installingbinarypackages).\n\nYou may also install GCC, if you wish to use that instead of Clang, the Minix\nsystem compiler.\n\n## on other \\*nix hosts\n\nTo build:\n\n    $ gmake [HB_PLATFORM=\u003c...\u003e]\n\nOr\n\n    $ make [HB_PLATFORM=\u003c...\u003e]\n\nTo test it, type:\n\n    $ cd tests\n    $ ../bin/\u003cplat\u003e/\u003ccomp\u003e/hbmk2 hello.prg\n    $ ./hello\n\nYou should see `Hello, world!` on screen.\n\n\u003e For sunpro on Solaris:\u003cbr\u003e\n\u003e If you have any GNU binutils stuff installed, do make sure `/usr/ccs/bin`\n\u003e (the location of the native Sun C compilation system tools) come *before*\n\u003e the GNU binutils components in your `$PATH`.\n\n\n# How to Do a Partial Build\n\nIf you want to build only a specific part of Harbour, like one core library\nor all core libraries, or all contrib packages, you have to do everything\nthe same way as for a full build, the only difference is that you first\nhave to go into the specific source directory you'd like to build. When\nstarting GNU Make, all components under that directory will be built:\n\n    cd src/rtl\n    \u003cmake\u003e [clean]\n\nIf you want to rebuild one specific contrib package, use this:\n\n## On \\*nix systems\n\n    $ cd contrib/\u003cname\u003e\n    $ make.hb [clean] [custom hbmk2 options]\n\n## On Windows\n\n    $ cd contrib/\u003cname\u003e\n    $ hbmk2 make.hb [clean] [custom hbmk2 options]\n\n\u003e Where `make.hb` and `hbmk2` must be in `PATH`.\n\n# How to Create Packages for Distribution\n\n## Source .tgz on \\*nix\n\n    $ package/mpkg_src.sh\n\n## Binary .tgz on \\*nix\n\n    $ export HB_BUILD_PKG=yes\n    $ make clean install\n\n## Binary .deb on Linux\n\n    $ fakeroot debian/rules binary\n\n## Binary .rpm on Linux\n\n    $ package/mpkg_rpm.sh\n\nYou can fine-tune the build with these options:\n\n    --with static      - link all binaries with static libs\n    --with localzlib   - build local copy of zlib library\n    --with localpcre2  - build local copy of pcre2 library\n    --with localpcre1  - build local copy of pcre1 library\n    --without x11      - do not build components dependent on x11 (gtxwc)\n    --without curses   - do not build components dependent on curses (gtcrs)\n    --without slang    - do not build components dependent on slang (gtsln)\n    --without gpllib   - do not build components dependent on GPL 3rd party code\n    --without gpm      - build components without gpm support (gttrm, gtsln, gtcrs)\n\n## Binary .rpm on Linux (cross-builds)\n\n### for Windows\n\n    $ package/mpkg_rpm_win.sh\n\n### for Windows CE\n\n    $ package/mpkg_rpm_wce.sh\n\n## Binary .7z archive on Windows for all targets (except Linux)\n\n    $ set HB_DIR_7Z=C:\\7-zip\\\n    $ set HB_BUILD_PKG=yes\n\nThen run build as usual with `clean install` options.\nSee: [How to Build](#how-to-build)\n\n\n# How to Enable Optional Components\n\nCertain Harbour parts \u0026mdash; typically contrib packages \u0026mdash; depend on\n3rd party components. To make these Harbour parts built, you need to tell\nHarbour where to find the headers for these 3rd party components.\n\nOn \\*nix systems most of these 3rd party components will automatically\nbe used if installed on well-known standard system locations.\n\nYou only need to use manual setup if the dependency isn't available on your\nplatform on a system location, or you wish to use a non-standard location.\nTypically, you need to do this on non-\\*nix (e.g. Windows) systems for all\npackages and for a few packages on \\*nix that are not available via\nofficial package managers (e.g. ADS Client).\n\nNote that Harbour will use 3rd party **binary** packages in their default,\nunmodified \u0026mdash; \"vanilla\" \u0026mdash; install layout created by their\nofficial/mainstream install kits. If you manually move, rename, remove, add\nfiles under the 3rd party packages' root directory, or use a source package,\nthe default Harbour build process (especially Windows implib generation)\nmight not work as expected.\n\nYou can set these environment variables before starting the build. Make sure\nto adjust them to your own directories:\n\n    HB_WITH_CURSES= (on \\*nix systems and DJGPP, auto-detected on both)\n    HB_WITH_GPM= (on Linux only)\n    HB_WITH_PCRE2=C:\\pcre2 (defaults to vendored copy if not found)\n    HB_WITH_PCRE=C:\\pcre (defaults to vendored copy if not found)\n    HB_WITH_PNG=C:\\libpng (defaults to vendored copy if not found)\n    HB_WITH_SLANG= (on \\*nix systems)\n    HB_WITH_WATT= (on MS-DOS systems)\n    HB_WITH_X11= (on \\*nix systems)\n    HB_WITH_ZLIB=C:\\zlib (defaults to vendored copy if not found)\n\nTo explicitly disable any given components, use the value `no`. This may be\nuseful to avoid auto-detection of installed packages on \\*nix systems. You\nmay also use the value `local` to force using the vendored copy (foreign\nsources hosted inside the Harbour source repository) of these packages,\nwhere applicable. `nolocal` will explicitly disable using the vendored\ncopy.\n\nSee contrib-specific dependencies and build notes in the projects' `.hbp`\nfile and find occasional link notes inside their `.hbc` files.\n\n\n\u003e NOTES:\n\u003e\n\u003e    * you need to use path format native to your shell/OS\n\u003e    * don't put directory names inside double quotes\n\u003e    * use absolute paths\n\n## Darwin (Mac)\n\n1. Install [Homebrew](https://brew.sh/)\n2. Install packages:\n\n        $ brew install valgrind pcre pcre2 s-lang upx uncrustify optipng jpegoptim\n\n3. Install [X11](https://www.xquartz.org/) (optional, for `gtxwc`)\n\n        $ brew cask install xquartz\n\n\n## Linux (.deb based distros: Debian, \\*buntu)\n\nYou will need these base packages to build/package/test/use Harbour:\n\n      bash git gcc binutils fakeroot debhelper valgrind upx uncrustify p7zip-full\n\nYou will need these packages to compile optional core Harbour features:\n\n      for gtcrs terminal lib:    libncurses-dev\n      for gtsln terminal lib:    libslang2-dev OR libslang1-dev\n      for gtxwc terminal lib:    libx11-dev\n      for console mouse support: libgpm-dev OR libgpmg1-dev\n\nOptional, to override vendored sources:\n\n      for zlib support:          zlib1g-dev\n      for pcre2 (regex) support: libpcre2-dev\n      for pcre1 (regex) support: libpcre3-dev\n\n## Linux (.rpm based distros: openSUSE, Fedora, CentOS)\n\nYou will need these base packages to build/package/test/use Harbour:\n\n      bash git gcc make glibc-devel rpm-build valgrind upx uncrustify p7zip\n\nYou will need these packages to compile optional core Harbour features:\n\n      for gtcrs terminal lib:    ncurses-devel ncurses\n      for gtsln terminal lib:    slang-devel slang\n      for gtxwc terminal lib:    xorg-x11-devel OR XFree86-devel\n      for console mouse support: gpm-devel OR gpm\n\n## pacman based systems (Windows/MSYS2, Arch Linux)\n\nFor Windows/MSYS2 environment:\n\n      git base-devel msys2-devel mingw-w64-{x86_64,i686}-toolchain upx uncrustify p7zip\n\nPackages for optional core Harbour features:\n\n      for gtcrs terminal lib:    ncurses\n      for gtsln terminal lib:    slang\n      for gtxwc terminal lib:    libx11\n      for console mouse support: gpm\n\n\u003e NOTES:\n\u003e\n\u003e   * See [this](https://distrowatch.com/dwres.php?resource=package-management)\n\u003e       on package management in various distros.\n\u003e   * On openSUSE, if you want to build 32-bit Harbour on a 64-bit host,\n\u003e       install above packages with `-32bit` suffix, e.g. `slang-devel-32bit`\n\n## OpenSolaris\n\n    $ pkg install SUNWgit SUNWgcc SUNWgmake\n\n## FreeBSD\n\nIf you want to use the `gtsln` library instead of `gtstd` or `gtcrs`, then you\nalso need to install `libslang`. If you installed the ports collection, then\nall you need to do to install `libslang` is to run the following command,\nwhich may require that you run `su` first to get the right permissions:\n\n    $ pkg install libslang2\n\n\n# Build Options\n\nYou can fine-tune Harbour builds with below listed environment variables.\nYou can add most of these via the GNU Make command-line also, using\n`make VARNAME=value` syntax. These settings are optional and all settings\nare case-sensitive.\n\n## General\n\n   - `HB_BUILD_VERBOSE=yes`\n\n     Enable verbose build output. Redirect it to file by appending this to\n     the build command: `\u003e log.txt 2\u003e\u00261`\u003cbr\u003e\n     Default: `no`\n\n   - `HB_PLATFORM`             Override platform auto-detection\n   - `HB_COMPILER`             Override C compiler auto-detection\n\n     Set these only if auto-detection doesn't suit your purpose.\n\n     See this for possible values:\n     [Supported Platforms and C Compilers](#supported-platforms-and-c-compilers)\u003cbr\u003e\n     See also: `HB_CC*` settings.\n\n   - `HB_BUILD_CONTRIBS=no [\u003cl\u003e]`\n\n     Do not build any, or space separated `\u003cl\u003e` list of, contrib packages.\n     Please note that packages which are dependencies of other \u0026mdash;\n     enabled \u0026mdash; packages will still build, unless their dependents\n     get disabled as well.\n\n   - `HB_BUILD_CONTRIBS=[\u003cl\u003e]`\n\n     Build space separated `\u003cl\u003e` list of contrib libraries.\n     Build all if left empty (default).\n\n   - `HB_BUILD_STRIP=[all|bin|lib|no]`\n\n     Strip symbols and debug information from binaries.\n     Default: `no`\n\n   - `HB_BUILD_3RDEXT=no`\n\n     Enable auto-detection of 3rd party components on default system\n     locations. Default: `yes`\n\n   - `HB_BUILD_NOGPLLIB=yes`\n\n     Disable components dependent on GPL 3rd party code, to allow using\n     Harbour for nonfree/proprietary projects. Default: `no`\n\n   - `HB_CCPATH=[\u003cdir\u003e/]`\n\n     Used with non-\\*nix gcc family compilers (and sunpro) to specify path\n     to compiler/linker/archive tool to help them run from \\*nix hosts as\n     cross-build tools. Always add an ending slash.\n\n   - `HB_CCPREFIX=[\u003cprefix\u003e]`\n\n     Used with gcc compiler family to specify compiler/linker/archive tool\n     name prefix.\n\n   - `HB_CCSUFFIX=[\u003csuffix\u003e]`\n\n     Used with gcc/clang compiler families to specify compiler/linker tool\n     name suffix \u0026mdash; usually version number.\n\n   - `HB_INSTALL_PREFIX`\n\n     Target root directory to install Harbour files.\n     On \\*nix systems the default is `/usr/local/` or `$(PREFIX)` if\n     specified, and `/usr/local/harbour-\u003carch\u003e-\u003ccomp\u003e` for cross-builds.\n     It's always set to `./pkg/\u003carch\u003e/\u003ccomp\u003e` when `HB_BUILD_PKG` is `yes`.\n     On non-\\*nix systems, you must set it to a valid directory when using\n     `install`. Use absolute paths only.\n     You have to use path format native to your shell.\n     E.g. to specify `C:\\dir` on Windows.\n\n     \u003e WARNING:\n     \u003e\n     \u003e Harbour is fully functional on all platforms, without installing it\n     \u003e to any other directory. On \\*nix systems, if you must install, please\n     \u003e use a stable installer package instead.\n\n## For developing Harbour itself\n\n   - `HB_USER_PRGFLAGS`        User Harbour compiler options\n   - `HB_USER_CFLAGS`          User C compiler options\n   - `HB_USER_DCFLAGS`         User C compiler options (for dynamic libraries only)\n   - `HB_USER_RESFLAGS`        User resource compiler options (on win, wce, os2)\n   - `HB_USER_LDFLAGS`         User linker options for executables\n   - `HB_USER_AFLAGS`          User linker options for libraries\n   - `HB_USER_DFLAGS`          User linker options for dynamic libraries\n\n   - `HB_BUILD_DEBUG=yes`\n\n     Create debug build. Default: `no`\n\n   - `HB_BUILD_OPTIM=no`\n\n     Enable C compiler optimizations. Default: `yes`\n\n   - `HB_BUILD_PKG=yes`\n\n     Create release package. Default: `no`\n     Requires `clean install` in root source dir.\n\n   - `HB_BUILD_CONTRIB_DYN=yes`\n\n     Create contrib dynamic libraries (in addition to static).\n     Default: `no`,\n     except Windows and darwin platforms, where it's `yes`.\n\n   - `HB_BUILD_3RD_DYN=yes`\n\n     Create dynamic libraries of vendored 3rd party libraries\n     (in addition to static). Default: `no`\n\n   - `HB_BUILD_SHARED=yes`\n\n     Create Harbour executables in shared mode.\n     Default: `yes` on non-\\*nix platforms that support\n     is and on \\*nix when `HB_INSTALL_PREFIX` points to\n     a system location, otherwise `no`.\n\n   - `HB_BUILD_PARTS=[all|compiler|lib]`\n\n     Build only specific part of Harbour.\n\n   - `HB_BUILD_NAME=[\u003cname\u003e]`\n\n     Create named build. This allows keeping multiple builds in parallel for\n     any given platform/compiler. E.g. debug / release.\n\n     \u003e It is appended to compiler directory name, so all file-system/platform\n     \u003e name rules and limits apply. (Back)slashes will be stripped from the\n     \u003e name though.\n\n   - `HB_USER_LIBS=[\u003clist\u003e]`\n\n     Add space separated `\u003clist\u003e` of libs to link process.\n     Lib names should be without extension and path.\n\n   - `HB_BUILD_LIBPATH`\n\n     Use extra library path when building contrib packages. It will be passed\n     to `hbmk2` via its `-L` option, _after_ any other custom option.\n\n   - `HB_INSTALL_IMPLIB=no`\n\n     Copy import libraries created for external .dll dependencies to the\n     library install directory in `install` build phase. Default: `yes`\u003cbr\u003e\n     For Windows and OS/2 targets only. Please note that this feature isn't\n     supported with all possible binary distributions of 3rd party packages.\n     We test only the official/mainstream ones. Also note that the created\n     implibs will require .dlls compatible with the ones used at build time.\n\n   - `HB_INSTALL_3RDDYN=yes`\n\n     Copy dynamic libraries of external .dll dependencies to the dynamic\n     library directory in `install` build phase. Default: `no`\n\n   - `HB_REBUILD_EXTERN=yes`\n\n     Rebuild extern headers. For developers doing Harbour code updates\n     and releases. Default: `no`\n\n   - `HB_REBUILD_PARSER=yes`\n\n     Rebuild language parser sources. You only need this if your are Harbour\n     core developer updating grammar rules (.y). Requires GNU Bison 1.28 or\n     upper in `PATH`. Default: `no`\n\n   - `HB_BUILD_MODE=[cpp|c]`\n\n     Set default build mode to C++ or C. Default: `c`\n\n     This serves only to test Harbour code base for issues revealed by\n     stricter C++ compiler rules and/or to ensure C/C++ interoperability.\n     C++ mode is deprecated and not supported for production use.\n\n   - `HB_BUILD_POSTRUN_HOST=[\u003cl\u003e]`\n\n     Run space separated `\u003cl\u003e` list of commands after successfully finishing\n     a build. Commands will run in the host binary directory.\n\n   - `HB_BUILD_POSTRUN=[\u003cl\u003e]`\n\n     Run space separated `\u003cl\u003e` list of commands after successfully finishing\n     a build. Commands will run in the target binary directory if possible\n     to run on the host platform.\n\n## Cross-builds\n\nYou can build Harbour for target platforms different from host platform. E.g.\nyou can create Windows build on \\*nix systems, Linux builds on Windows systems,\netc. It's also possible to build targets for different from host CPU\narchitectures. E.g. you can create Windows 64-bit build on 32-bit Windows\nplatform, or Linux x86-64 build on x86 hosts, or Linux MIPS build on x86 host,\netc.\n\nPoint this envvar to the directory where native Harbour executables for your\nhost platform can be found:\n\n      HB_HOST_BIN=\u003cpath-to-harbour-native-build\u003e\\bin\n\nIf you leave this value empty, the make system will try to auto-detect it, so\nin practice all you have to do is to create a native build first (no `install`\nrequired), then create the cross-build. If you set this value manually, it may\nbe useful to know that `harbour`, `hbpp` and `hbmk2` executables are required\nfor a cross-build process to succeed.\n\n\n# Build Examples\n\n## on Windows 64-bit hosts\n\n\u003e NOTES:\n\u003e\n\u003e - Copy code below to batch files or type it at the command-line.\n\u003e - Naturally, you will need to adapt path names to valid ones on your system.\n\u003e - You can use `clean`, `install` or `clean install` make parameters\n\u003e   depending on what you want to do.\n\u003e - To redirect all output to a log file, append this after the make command:\n\u003e   `\u003e log.txt 2\u003e\u00261`\n\n```batchfile\n:: MinGW-w64 LLVM/Clang via MSYS2 (x86 target)\nset PATH=C:\\msys64\\mingw32\\bin;C:\\msys64\\usr\\bin;%PATH%\nset HB_COMPILER=clang\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 LLVM/Clang via MSYS2 (x64 target)\nset PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%\nset HB_COMPILER=clang64\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC via MSYS2 (x86 target)\nset PATH=C:\\msys64\\mingw32\\bin;C:\\msys64\\usr\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC via MSYS2 (x64 target)\nset PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC (x86 target)\nset PATH=C:\\mingw\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC (x64 target)\nset PATH=C:\\mingw64\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2017 or upper\n:: For configuration, see:\n::   https://docs.microsoft.com/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds\n:: Then:\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2015 (x86 target)\ncall \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\"\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2015 (x64 target)\ncall \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\" x86_amd64\nmingw32-make\n```\n\n```batchfile\n:: Open Watcom C/C++\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINNT64;%WATCOM%\\BINNT;%PATH%\nset INCLUDE=%WATCOM%\\H;%WATCOM%\\H\\NT;%WATCOM%\\H\\NT\\DIRECTX;%WATCOM%\\H\\NT\\DDK;%INCLUDE%\nmingw32-make\n```\n\n```batchfile\n:: LLVM/Clang-cl (pre-experimental)\ncall \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\"\nset PATH=%ProgramFiles(x86)%\\LLVM 3.6.svn;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: Intel(R) C++ (x86 target)\ncall \"%ProgramFiles(x86)%\\Intel\\Compiler\\11.1\\054\\bin\\ia32\\iclvars_ia32.bat\"\nmingw32-make\n```\n\n```batchfile\n:: Intel(R) C++ (x64 target)\ncall \"%ProgramFiles(x86)%\\Intel\\Compiler\\11.1\\054\\bin\\intel64\\iclvars_intel64.bat\"\nmingw32-make\n```\n\n## on Windows 32-bit hosts\n\nSame as 64-bit Windows, with the difference that you will have to change\n`%ProgramFiles(x86)%` to `%ProgramFiles%` for 32-bit and mixed tools.\nBuilding 64-bit targets requires a preceding 32-bit build and to do\na cross-build. It's recommended to use a 64-bit environment for Windows\ndevelopment.\n\n```batchfile\n:: MinGW-w64 LLVM/Clang via MSYS2 (x86 target)\nset PATH=C:\\msys64\\mingw32\\bin;C:\\msys64\\usr\\bin;%PATH%\nset HB_COMPILER=clang\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 LLVM/Clang via MSYS2 (x64 target)\n:: (requires preceding build for x86 target)\nset PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%\nset HB_COMPILER=clang64\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC via MSYS2 (x86 target)\nset PATH=C:\\msys64\\mingw32\\bin;C:\\msys64\\usr\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC via MSYS2 (x64 target)\n:: (requires preceding build for x86 target)\nset PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC (x86 target)\nset PATH=C:\\mingw\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MinGW-w64 GCC (x64 target)\n:: (requires preceding build for x86 target)\nset PATH=C:\\mingw64\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2017 or upper\n:: For configuration, see:\n::   https://docs.microsoft.com/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds\n:: Then:\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2015 (x86 target)\ncall \"%ProgramFiles%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\"\nmingw32-make\n```\n\n```batchfile\n:: MSVC 2015 (x64 target)\n:: (requires preceding build for x86 target)\ncall \"%ProgramFiles%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\" x86_amd64\nmingw32-make\n```\n\n```batchfile\n:: MinGW GCC (Windows CE ARM target)\n:: (requires Cygwin + preceding build for x86 target)\nset PATH=C:\\mingwce\\opt\\mingw32ce\\bin;C:\\cygwin\\bin;%PATH%\n:: optional:\nset CYGWIN=nodosfilewarning\nmingw32-make\n```\n\n```batchfile\n:: Delorie GNU C for MS-DOS\nset DJGPP=C:\\djgpp\\djgpp.env\nset PATH=C:\\djgpp\\bin;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: Open Watcom C/C++\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINNT;%WATCOM%\\BINW;%PATH%\nset INCLUDE=%WATCOM%\\H;%WATCOM%\\H\\NT;%WATCOM%\\H\\NT\\DIRECTX;%WATCOM%\\H\\NT\\DDK;%INCLUDE%\nmingw32-make\n```\n\n```batchfile\n:: Open Watcom C/C++ for MS-DOS\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINNT;%PATH%\nset INCLUDE=%WATCOM%\\H\nmingw32-make\n```\n\n```batchfile\n:: Open Watcom C/C++ for OS/2\n:: (requires preceding build for Windows target)\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINNT;%WATCOM%\\BINW;%PATH%\nset INCLUDE=%WATCOM%\\H;%WATCOM%\\H\\OS2\nset BEGINLIBPATH=%WATCOM%\\BINP\\DLL\nmingw32-make\n```\n\n```batchfile\n:: Open Watcom C/C++ for Linux\n:: (requires preceding build for Windows target)\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINNT;%WATCOM%\\BINW;%PATH%\nset INCLUDE=%WATCOM%\\LH\nmingw32-make\n```\n\n```batchfile\n:: LLVM/Clang-cl (pre-experimental)\ncall \"%ProgramFiles%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\"\nset PATH=%ProgramFiles%\\LLVM 3.6.svn;%PATH%\nmingw32-make\n```\n\n```batchfile\n:: VxWorks GCC x86\n:: (requires preceding build for Windows target)\nwrenv -p vxworks-6.8\nset HB_COMPILER=gcc\nmingw32-make\n```\n\n```batchfile\n:: VxWorks GCC ARM\n:: (requires preceding build for Windows target)\nwrenv -p vxworks-6.8\nset HB_COMPILER=gcc\nset HB_CPU=arm\nset HB_BUILD_NAME=arm\nmingw32-make\n```\n\n```batchfile\n:: VxWorks Wind River Compiler x86\n:: (requires preceding build for Windows target)\nwrenv -p vxworks-6.8\nset HB_COMPILER=diab\nmingw32-make\n```\n\n```batchfile\nrem Open Watcom C/C++\nset WATCOM=C:\\watcom\nset PATH=%WATCOM%\\BINP;%WATCOM%\\BINW;%PATH%\nset INCLUDE=%WATCOM%\\H;%WATCOM%\\H\\OS2\nset BEGINLIBPATH=%WATCOM%\\BINP\\DLL\nos2-make\n```\n\n## on Linux hosts\n\n```sh\n# Open Watcom C/C++ for OS/2\n# (requires preceding build for Linux target)\nexport WATCOM='/opt/lng/watcom'\nexport PATH=\"${WATCOM}/binl:$PATH\"\nexport INCLUDE=\"${WATCOM}/h:${WATCOM}/h/os2\"\nexport HB_BUILD_3RDEXT=no\nmake\n```\n\n## on Mac hosts\n\n```sh\n# To create \"Universal 2\" binaries, compatible with Apple Silicon (ARM64) and Intel (x86-64)\n# Requires: Xcode 12.2, SDK MacOSX11.0, MACOSX_DEPLOYMENT_TARGET=11.00\nexport HB_USER_LDFLAGS='-arch arm64 -arch x86_64'\nexport HB_USER_DFLAGS=\"${HB_USER_LDFLAGS}\"\nexport HB_USER_CFLAGS=\"${HB_USER_LDFLAGS}\"\nmake\n```\n\n## on \\*nix hosts in general\n\n```sh\nmake\n```\n\n```sh\n# MinGW GCC for Windows x86\nmake HB_PLATFORM=win\n```\n\n```sh\n# MinGW GCC for Windows CE ARM\nmake HB_PLATFORM=wce\n```\n\n\n# Build Your Own Harbour App\n\nFor all platforms you will need:\n\n* Harbour binaries\n\n    Either a Harbour binary distribution or a local Harbour build will be okay.\n    If you're reading this text, it's likely you have one of these already.\n\n* Supported ANSI C89 compiler\n\n    You need to add your compiler of choice to the `PATH` \u0026mdash; and\n    configure it according to its instructions.\n    If you use the official Harbour binary distribution on Windows, you already\n    have the MinGW C compiler embedded in the installation, which will\n    automatically be used, so you don't have to make extra steps here.\n\nUse `hbmk2` to build your app from source. It's recommended to put it in the\n`PATH` (e.g. by using `set PATH=C:\\hb\\bin;%PATH%` on Windows).\n\nSee `hbmk2` [documentation, with examples](utils/hbmk2/doc/hbmk2.en.md).\n\n\n# Debugging Options\n\n## Tracing\n\nBuild Harbour with:\n\n    HB_BUILD_DEBUG=yes\n\nRun app with:\n\n    HB_TR_LEVEL=debug\n    # to override default STDERR output:\n    HB_TR_OUTPUT=\u003cfilename\u003e\n    # to enable additional system specific logging output,\n    # OutputDebugString() on Windows, syslog() on \\*nix systems:\n    HB_TR_SYSOUT=yes\n\n## Memory statistics/tracking\n\nBuild Harbour with:\n\n    HB_USER_CFLAGS=-DHB_FM_STATISTICS\n\n## Valgrind (on linux and darwin targets)\n\nBuild Harbour with:\n\n    HB_BUILD_DEBUG=yes\n\nBuild app with:\n\n    $ hbmk2 myapp -debug\n\nRun app with:\n\n    $ valgrind --tool=memcheck --leak-check=yes --num-callers=16 -v ./myapp 2\u003e myapp.log\n\n## CodeGuard (on win/bcc target only)\n\nBuild Harbour with:\n\n    HB_USER_CFLAGS=-vG\n    HB_USER_LIBS=cg32\n\n## Harbour Debugger\n\nBuild app with:\n\n    $ hbmk2 myapp -b -run\n\nor run script with:\n\n    $ hbrun myapp --hb:debug\n\nPress \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eD\u003c/kbd\u003e in the app.\n\n\n# Supported Platforms and C Compilers\n\n## You can override target platform auto-detection with these `HB_PLATFORM` values:\n\n* linux    - Linux\n* darwin   - macOS / iOS and derivatives\n* bsd      - \\*BSD\n* android  - Android\n* win      - MS Windows (Win9x deprecated)\n* wce      - MS Windows CE\n* dos      - MS-DOS (32-bit protected mode only)\n             (MS-DOS compatible systems also work, like dosemu)\n* os2      - OS/2 Warp 4 / eComStation\n* aix      - IBM AIX\n* hpux     - HP-UX\n* sunos    - Sun Solaris / OpenSolaris\n* qnx      - QNX (experimental)\n* vxworks  - VxWorks (experimental)\n* minix    - Minix 3 (experimental, tested on 3.2.1; earlier releases will not work)\n* cygwin   - Cygwin (experimental)\n* beos     - BeOS / Haiku (deprecated)\n\n## You can override C compiler auto-detection with these `HB_COMPILER` values:\n\n### linux\n* gcc      - GNU C\n* clang    - LLVM/Clang\n* watcom   - Open Watcom C/C++\n* icc      - Intel(R) C/C++\n* sunpro   - Sun Studio C/C++\n* open64   - Open64 C/C++\n\n### darwin\n* clang    - Apple LLVM/Clang\n* gcc      - GNU C\n* icc      - Intel(R) C/C++\n\n### bsd\n* gcc      - GNU C\n* clang    - LLVM/Clang\n* pcc      - Portable C Compiler (experimental)\n\n### android\n* gcc      - GNU C x86\n* gccarm   - GNU C ARM\n\n### win\n* clang    - LLVM/Clang (5.0.0 and above)\n* clang64  - LLVM/Clang x86-64 (5.0.0 and above)\n* mingw    - MinGW GNU C (4.4.0 and above, 6.x or newer recommended)\n* mingw64  - MinGW GNU C x86-64\n* msvc     - Microsoft Visual C++ (2013 and above)\n* msvc64   - Microsoft Visual C++ x86-64 (2013 and above)\n\n### win (experimental)\n* clang-cl - LLVM/Clang-cl\n* clang-cl64 - LLVM/Clang-cl x86-64\n* watcom   - Open Watcom C/C++\n* icc      - Intel(R) C/C++\n* icc64    - Intel(R) C/C++ x86-64\n\n### win (deprecated)\n* bcc      - Borland/CodeGear/Embarcadero C++ 5.5 and above\n* bcc64    - Embarcadero C++ 6.5 and above\n* pocc     - Pelles C 4.5 and above\n* pocc64   - Pelles C x86-64 5.0 and above\n* iccia64  - Intel(R) C/C++ IA-64 (Itanium)\n* msvcia64 - Microsoft Visual C++ IA-64 (Itanium)\n\n### wce\n* mingw    - MinGW GNU C x86\n* mingwarm - MinGW GNU C ARM (CEGCC 0.55 and above)\n* msvcarm  - Microsoft Visual C++ ARM\n* poccarm  - Pelles C ARM 5.0 and above (deprecated)\n\n### dos\n* djgpp    - Delorie GNU C\n* watcom   - Open Watcom C/C++\n\n### os2\n* gcc      - EMX GNU C 3.3.5 or lower\n* gccomf   - EMX GNU C 3.3.5 or upper\n* watcom   - Open Watcom C/C++\n\n### aix\n* gcc      - GNU C\n\n### hpux\n* gcc      - GNU C\n\n### sunos\n* gcc      - GNU C\n* sunpro   - Sun Studio C/C++\n\n### qnx (experimental)\n* gcc      - GNU C\n\n### vxworks (experimental)\n* gcc      - GNU C\n* diab     - Wind River Compiler\n\n### minix (experimental)\n* clang    - LLVM/Clang\n* gcc      - GNU C\n\n### cygwin (experimental)\n* gcc      - GNU C\n\n### beos (deprecated)\n* gcc      - GNU C\n\n\n# Platform Matrix\n\n host\u003cbr\u003eplatform | target\u003cbr\u003eplatform/compiler | target CPU\n :------- | :---------------- | :---------------------------------------\n linux    | linux/gcc         | (CPU cross-builds possible)\n linux    | linux/clang       | (CPU cross-builds possible)\n linux    | linux/icc         | (CPU cross-builds possible: x86, x86-64, ia64)\n linux    | linux/sunpro      | (CPU cross-builds possible: x86, x86-64)\n linux    | linux/open64      | (CPU cross-builds possible: x86-64, ia64, ...)\n linux    | wce/mingwarm      | arm\n linux    | wce/mingw         | x86\n linux    | win/mingw         | x86\n linux    | win/mingw64       | x86-64\n linux    | win/watcom        | x86\n linux    | os2/watcom        | x86\n linux    | dos/watcom        | x86\n linux    | dos/djgpp         | x86\n linux    | android/gcc       | x86\n linux    | android/gccarm    | arm\n linux    | vxworks/gcc       | (CPU cross-builds possible: x86, arm, mips, ppc)\n linux    | vxworks/diab      | (CPU cross-builds possible: x86, arm, mips, ppc, sparc)\n win      | win/clang         | x86\n win      | win/clang64       | x86-64\n win      | win/mingw         | x86\n win      | win/mingw64       | x86-64\n win      | win/msvc          | x86\n win      | win/msvc64        | x86-64\n win      | wce/mingwarm      | arm\n win      | wce/msvcarm       | arm\n win      | dos/djgpp         | x86    (on Windows x86 hosts only)\n win      | dos/watcom        | x86\n win      | os2/watcom        | x86\n win      | linux/watcom      | x86\n win      | android/gcc       | x86\n win      | android/gccarm    | arm\n win      | vxworks/gcc       | (CPU cross-builds possible: x86, arm, mips, ppc)\n win      | vxworks/diab      | (CPU cross-builds possible: x86, arm, mips, ppc, sparc)\n win      | cygwin/gcc        | x86\n win      | win/clang-cl      | x86    (experimental)\n win      | win/clang-cl64    | x86-64 (experimental)\n win      | win/icc           | x86    (experimental)\n win      | win/icc64         | x86-64 (experimental)\n win      | win/watcom        | x86    (experimental)\n win      | win/bcc           | x86    (deprecated)\n win      | win/bcc64         | x86-64 (deprecated)\n win      | win/iccia64       | ia64   (deprecated)\n win      | win/msvcia64      | ia64   (deprecated)\n win      | win/pocc          | x86    (deprecated)\n win      | win/pocc64        | x86-64 (deprecated)\n win      | wce/poccarm       | arm    (deprecated)\n os2      | os2/gcc           | x86\n os2      | os2/watcom        | x86\n os2      | win/watcom        | x86\n os2      | dos/watcom        | x86\n os2      | linux/watcom      | x86\n darwin   | darwin/clang      | (CPU cross-builds possible: x86, x86-64, unibin)\n darwin   | darwin/gcc        | (CPU cross-builds possible: x86, x86-64, ppc, ppc64, unibin)\n darwin   | darwin/icc        | (CPU cross-builds possible: x86, x86-64)\n darwin   | wce/mingwarm      | arm\n darwin   | wce/mingw         | x86\n darwin   | win/mingw         | x86\n darwin   | win/mingw64       | x86-64\n darwin   | dos/djgpp         | x86\n darwin   | android/gcc       | x86\n darwin   | android/gccarm    | arm\n bsd      | bsd/gcc           | (CPU cross-builds possible)\n bsd      | bsd/clang         | (CPU cross-builds possible)\n bsd      | bsd/pcc           | (experimental)\n bsd      | wce/mingwarm      | arm\n bsd      | wce/mingw         | x86\n bsd      | win/mingw         | x86\n bsd      | dos/djgpp         | x86\n hpux     | hpux/gcc          | (CPU cross-builds possible)\n qnx      | qnx/gcc           | (CPU cross-builds possible - not tested)\n beos     | beos/gcc          | x86\n hpux     | wce/mingwarm      | arm\n hpux     | wce/mingw         | x86\n hpux     | win/mingw         | x86\n hpux     | dos/djgpp         | x86\n minix    | minix/clang       | x86\n minix    | minix/gcc         | x86\n aix      | aix/gcc           | (CPU cross-builds possible: ppc, ppc64)\n sunos    | sunos/gcc         | (CPU cross-builds possible)\n sunos    | sunos/sunpro      | (CPU cross-builds possible: x86, x86-64, sparc32, sparc64)\n sunos    | wce/mingwarm      | arm\n sunos    | wce/mingw         | x86\n sunos    | win/mingw         | x86\n sunos    | dos/djgpp         | x86\n sunos    | vxworks/gcc       | (CPU cross-builds possible: x86, arm, mips, ppc)\n sunos    | vxworks/diab      | (CPU cross-builds possible: x86, arm, mips, ppc, sparc)\n\nSupported shells per host platforms:\n\n* \\*nix / POSIX shell\n* win  / NT shell (`cmd.exe`)\n* win  / POSIX shell (MSYS2 `sh.exe`)\n* win  / MS-DOS shell (`command.com`)\n* dos  / MS-DOS shell (`command.com`)\n* dos  / POSIX shell (`bash.exe`)\n* os/2 / OS/2 shell (`cmd.exe`)\n* os/2 / POSIX shell (`bash.exe`)\n\n\n# External Links\n\n* C/C++ Compilers/Shells:\n\n     * [LLVM/Clang](https://releases.llvm.org/) [multi-platform, free software, open source]\n     * LLVM/Clang via [MSYS2](https://www.msys2.org/) (recommended) [win, multi-platform, free software, open source]\n        * MinGW-w64 below + `pacman --sync mingw-w64-{i686,x86_64}-clang`\n        * \u003chttps://stackoverflow.com/questions/25019057/how-are-msys-msys2-and-msysgit-related-to-each-other\u003e\n     * MinGW-w64 via [MSYS2](https://www.msys2.org/) [win, free software, open source]\n        * `pacman --sync git base-devel msys2-devel mingw-w64-{i686,x86_64}-toolchain`\n     * [MinGW-w64](https://sourceforge.net/projects/mingw-w64/) ([more](https://en.wikipedia.org/wiki/MinGW#MinGW-w64)) [win, \\*nix, free software, open source]\n        * [64-bit: threads-posix, seh](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/)\n        * [32-bit: threads-posix, dwarf-2](https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/)\n     * [Dr. Mingw](https://github.com/jrfonseca/drmingw) Just-in-Time debugger [win, free software, open source]\n        * MSYS2 package: mingw-w64-{i686,x86_64}-drmingw\n     * [Xcode](https://apps.apple.com/app/xcode/id497799835) / [Command Line Tools for Xcode](https://developer.apple.com/downloads/) [darwin, zero price, proprietary with open source components]\n     * [MS Windows SDK](https://developer.microsoft.com/windows/downloads/sdk-archive/) [zero price, proprietary]\n     * [MS Visual C++ Build Tools](https://go.microsoft.com/fwlink/?LinkId=691126) [win, zero price, proprietary]\n     * [MS Visual Studio Community](https://visualstudio.microsoft.com/vs/express/) [win, zero price, proprietary]\n     * [MS Windows Mobile SDK](https://www.microsoft.com/download/details.aspx?id=42) [wce, zero price, proprietary]\n     * [MinGW CEGCC](https://sourceforge.net/projects/cegcc/files/cegcc/) [win, \\*nix, free software, open source]\n     * [Open Watcom](https://github.com/open-watcom) [multi-platform, free software, open source]\n     * [Intel Compiler](https://software.intel.com/c-compilers) [multi-platform, commercial, proprietary]\n     * [Cygwin](https://cygwin.com/) [win, free software, open source]\n\n* Libraries:\n\n     * `HB_WITH_PCRE2`, `HB_WITH_PCRE` - [Perl Compatible Regular Expressions](https://pcre.org/) [multi-platform, free software, open source]\n     * `HB_WITH_PNG` - [libpng](https://github.com/glennrp/libpng) [multi-platform, free software, open source]\n     * `HB_WITH_WATT` - Watt-32 (TCP/IP sockets) [dos, free software, open source, vendored]\n     * `HB_WITH_ZLIB` - [zlib](https://zlib.net/) [multi-platform, free software, open source]\n\n* Tools:\n\n     * [Git](https://git-scm.com/) (2.2.0 or upper) [multi-platform, free software, open source]\n        * on Windows:\n           * \u003chttps://gitforwindows.org/\u003e\n           * via Windows Subsystem for Linux on Windows 10 Anniversary Update\n     * [AppVeyor CI](https://www.appveyor.com/) [continuous integration, web service, free plan available]\n     * GNU Bison (grammar parser generator) [multi-platform, free software, open source]\n        * Windows binary: See at Git or MSYS2.\n     * [Cppcheck](https://github.com/danmar/cppcheck) (static analysis) [multi-platform, free software, open source]\n     * [Valgrind](https://valgrind.org/) (dynamic executable analysis tool) [linux, darwin, free software, open source]\n     * [Uncrustify](https://github.com/uncrustify/uncrustify) (source formatter) [multi-platform, free software, open source]\n     * [UPX](https://upx.github.io/) (executable compressor) [multi-platform, free software, open source]\n     * [GNU Make](https://www.gnu.org/software/make/) [multi-platform, free software, open source]\n\n* Package searches\n\n     * [Repology](https://repology.org/) (General)\n     * deb ([Debian](https://packages.debian.org/search))\n     * deb ([Ubuntu](https://packages.ubuntu.com/))\n     * rpm ([Fedora](https://apps.fedoraproject.org/packages/))\n     * pacman ([Arch Linux](https://www.archlinux.org/packages/))\n     * [pkgng](https://www.freebsd.org/ports/), [ports](https://www.freshports.org/) (FreeBSD)\n     * [Homebrew](https://formulae.brew.sh/) (macOS)\n     * [MSYS2](https://github.com/Alexpux/MINGW-packages) (Windows)\n\n* Documentation:\n\n     * [Netiquette Guidelines](https://tools.ietf.org/html/rfc1855)\n     * [Getting Started with Git](https://git-scm.com/book/en/Getting-Started-First-Time-Git-Setup)\n     * [Pro Git](https://git-scm.com/book) [free book]\n     * Using gettext (`.po` files)\n       * \u003chttps://docs.transifex.com/formats/gettext\u003e\n       * \u003chttps://web.archive.org/web/20160427125642/heiner-eichmann.de/autotools/using_gettext.html\u003e\n     * [Markdown](https://daringfireball.net/projects/markdown/syntax)\n\n* Community forums:\n\n  * General:\n     * [English](https://groups.google.com/forum/#!forum/harbour-users)\n     * [Italian](https://groups.google.com/forum/#!forum/harbourita)\n     * [Portuguese](https://pctoledo.websiteseguro.com/forum/viewforum.php?f=4)\n     * [Russian](https://clipper.borda.ru/?0-4)\n\n  * Product-oriented:\n     * [Harbour mainline development](https://groups.google.com/forum/#!forum/harbour-devel)\n     * [hbqt (GUI)](https://groups.google.com/forum/#!forum/qtcontribs)\n     * [hwgui (GUI)](https://sourceforge.net/p/hwgui/mailman/hwgui-developers/)\n     * [xHarbour fork](https://groups.google.com/forum/#!forum/comp.lang.xharbour)\n\n# Harbour Links\n\n  * [Homepage](https://vszakats.github.io/hb/)\n  * [How to contribute](CONTRIBUTING.md)\n  * [Source code](https://github.com/vszakats/hb)\n  * [Issues](https://github.com/vszakats/hb/issues)\n  * [Localization](https://www.transifex.com/harbour/harbour/) (Resource [hbmk2-vsz](https://www.transifex.com/harbour/harbour/hbmk2-vsz/) (requires login))\n  * Documents:\n     * [hbmk2 documentation](utils/hbmk2/doc/hbmk2.en.md)\n     * [hbrun documentation](contrib/hbrun/doc/hbrun.en.md)\n     * [ChangeLog](ChangeLog.txt?raw=true)\n     * Comparing [Harbour with xHarbour](doc/xhb-diff.txt?raw=true)\n     * CA-Cl*pper 5.3 [online documentation](https://harbour.github.io/ng/c53g01c/menu.html)\n     * Harbour [online documentation](https://harbour.github.io/doc/)\n     * Harbour [internal documents](doc/)\n     * [Harbour for Beginners](https://www.kresin.ru/en/hrbfaq_3.html) \u0026mdash; by Alexander Kresin\n     * [Harbour Wiki](https://github.com/Petewg/V-harbour-core/wiki) \u0026mdash; by Pete D\n     * [Harbour Magazine](https://medium.com/harbour-magazine) \u0026mdash; by José Luis Sánchez\n     * [Wikipedia](https://en.wikipedia.org/wiki/Harbour_compiler)\n     * [Stack Overflow](https://stackoverflow.com/questions/tagged/clipper)\n\n\n# Guarantees and Liability\n\n   This document and all other parts of Harbour are distributed in the\n   hope they will be useful, but WITHOUT GUARANTEE that they are complete,\n   accurate, non-infringing or usable for any purpose whatsoever.\n   Contributors are NOT LIABLE for any damages that result from using\n   Harbour in any ways. For more legal details, see [LICENSE](LICENSE.txt).\n\n   If you feel you can make Harbour better: contribute.\n   [See how](CONTRIBUTING.md).\n\n   Information in this document is subject to change without notice and does\n   not represent any future commitment by the participants of the project.\n\n   This and related documents use the term \"recommended\" for practices and\n   tools *tested most*, *focused on*, *used and deployed* by the\n   maintainer/developer of this fork. While this is strongly believed to\n   result in the best Harbour experience for most people, it's a subjective\n   decision. If you don't like it, use what fits you best.\n\n---\nThis document Copyright \u0026copy;\u0026nbsp;2009\u0026ndash;present [Viktor Szakats](https://vsz.me/hb)\u003cbr\u003e\n[![Creative Commons Attribution-ShareAlike 4.0](https://mirrors.creativecommons.org/presskit/buttons/80x15/svg/by-sa.svg)](https://creativecommons.org/licenses/by-sa/4.0/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvszakats%2Fhb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvszakats%2Fhb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvszakats%2Fhb/lists"}