2009-08-20 15:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* config/global.mk
    ! Fixed dos autodetection to not be overridden by explicit
      HB_ARCHITECTURE value since it prevent dos hosted cross
      build creation.
    ! Fixed *nix -> win/wce autodetection to not kick in on os2/dos
      platforms.

  * INSTALL
    + Updated cross-build matrix to not show some dos/os2 builds
      fully untested. They should now work in a generic sence.

  ; TOFIX: watcom rules should be synced across platforms to use
           shell specific tricks according to HB_SHELL excpect
           assuming it being the host native one.
           F.e. watcom/dos -> os2 builds will end with:
                Bad command or filename - "@..\..\..\..\..\config\dj-echo".
                watcom/dos -> linux builds will choke because of too long cmdlines.
This commit is contained in:
Viktor Szakats
2009-08-20 13:57:30 +00:00
parent 809b984774
commit d56a65142e
3 changed files with 102 additions and 81 deletions

View File

@@ -17,6 +17,25 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-08-20 15:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/global.mk
! Fixed dos autodetection to not be overridden by explicit
HB_ARCHITECTURE value since it prevent dos hosted cross
build creation.
! Fixed *nix -> win/wce autodetection to not kick in on os2/dos
platforms.
* INSTALL
+ Updated cross-build matrix to not show some dos/os2 builds
fully untested. They should now work in a generic sence.
; TOFIX: watcom rules should be synced across platforms to use
shell specific tricks according to HB_SHELL excpect
assuming it being the host native one.
F.e. watcom/dos -> os2 builds will end with:
Bad command or filename - "@..\..\..\..\..\config\dj-echo".
watcom/dos -> linux builds will choke because of too long cmdlines.
2009-08-20 15:38 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/dos/watcom.mk
* DOS shell specific hacks protected by HB_SHELL guard.

View File

@@ -368,18 +368,18 @@ OPTIONS AVAILABLE WHEN BUILDING HARBOUR
-> wce/mingwarm
-> wce/poccarm
-> wce/msvcarm
-> dos/djgpp (using DOS GNU make)
-> dos/djgpp (using MS-DOS build of GNU Make)
-> dos/watcom
-> os2/watcom
-> linux/watcom
on MS-DOS hosts:
-> win/watcom (*)
-> os2/watcom (*)
-> linux/watcom (*)
-> win/watcom
-> os2/watcom
-> linux/watcom
on OS/2 hosts:
-> win/watcom
-> dos/watcom (*)
-> linux/watcom (*)
-> dos/watcom
-> linux/watcom
on Linux hosts:
-> wce/mingwarm
-> win/mingw
@@ -390,8 +390,6 @@ OPTIONS AVAILABLE WHEN BUILDING HARBOUR
-> wce/mingwarm
-> win/mingw
(*): Theoretically possible, but not heard of such build yet.
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

View File

@@ -393,10 +393,12 @@ ifeq ($(HB_HOST_ARCH),)
ifneq ($(WINDIR),)
HB_HOST_ARCH := win
else
ifneq ($(HB_ARCHITECTURE),)
HB_HOST_ARCH := $(HB_ARCHITECTURE)
else
ifeq ($(HB_SHELL),dos)
HB_HOST_ARCH := dos
else
ifneq ($(HB_ARCHITECTURE),)
HB_HOST_ARCH := $(HB_ARCHITECTURE)
endif
endif
endif
endif
@@ -487,94 +489,96 @@ HB_COMP_AUTO :=
ifeq ($(HB_COMPILER),)
ifneq ($(HB_HOST_ARCH),$(HB_ARCHITECTURE))
# cross-build section *nix -> win/wce
ifeq ($(HB_ARCHITECTURE),win)
ifeq ($(filter $(HB_HOST_ARCH),dos os2),)
ifeq ($(HB_ARCHITECTURE),win)
ifeq ($(call find_in_path_par,$(HB_CCPREFIX),$(HB_CCPATH)),)
HB_CCPREFIX :=
HB_CCPATH :=
endif
ifeq ($(call find_in_path_par,$(HB_CCPREFIX),$(HB_CCPATH)),)
HB_CCPREFIX :=
HB_CCPATH :=
endif
# try to detect MinGW cross-compiler location using some default platform settings
ifeq ($(HB_CCPATH)$(HB_CCPREFIX),)
ifneq ($(call find_in_path_raw,debian_version,/etc),)
HB_CCPREFIX := i586-mingw32msvc-
else
ifneq ($(call find_in_path_raw,gentoo-release,/etc),)
ifneq ($(call find_in_path_par,i386-mingw32msvc-,/opt/xmingw/bin),)
HB_CCPATH := /opt/xmingw
HB_CCPREFIX := i386-mingw32msvc-
else
HB_CCPREFIX := i686-mingw32-
endif
# try to detect MinGW cross-compiler location using some default platform settings
ifeq ($(HB_CCPATH)$(HB_CCPREFIX),)
ifneq ($(call find_in_path_raw,debian_version,/etc),)
HB_CCPREFIX := i586-mingw32msvc-
else
ifeq ($(HB_ARCHITECTURE),bsd)
HB_CCPATH := /usr/local/mingw32
ifneq ($(call find_in_path_raw,gentoo-release,/etc),)
ifneq ($(call find_in_path_par,i386-mingw32msvc-,/opt/xmingw/bin),)
HB_CCPATH := /opt/xmingw
HB_CCPREFIX := i386-mingw32msvc-
else
HB_CCPREFIX := i686-mingw32-
endif
else
MINGW_OK := $(strip $(foreach d, i386-mingw i486-mingw i586-mingw i686-mingw i386-mingw32 i486-mingw32 i586-mingw32 i686-mingw32, $(if $(wildcard /usr/local/bin/$(d)-gcc),$(d),)))
ifneq ($(MINGW_OK),)
HB_CCPATH := /usr/local/bin
HB_CCPREFIX := $(MINGW_OK)-
ifeq ($(HB_ARCHITECTURE),bsd)
HB_CCPATH := /usr/local/mingw32
else
MINGW_OK := $(strip $(foreach d, i386-mingw i486-mingw i586-mingw i686-mingw i386-mingw32 i486-mingw32 i586-mingw32 i686-mingw32, $(if $(wildcard /usr/local/bin/$(d)-gcc),$(d),)))
ifneq ($(MINGW_OK),)
HB_CCPATH := /usr/local/bin
HB_CCPREFIX := $(MINGW_OK)-
endif
endif
endif
endif
endif
endif
# generic detection for mingw cross-compiler
ifeq ($(HB_CCPATH)$(HB_CCPREFIX),)
MINGW_BASE_LIST := /usr /usr/local /usr/local/mingw32 /opt/xmingw
MINGW_PREFIX := $(subst -gcc,,$(firstword $(call find_in_path_par,bin/i?86-mingw*-,$(MINGW_BASE_LIST))))
ifneq ($(MINGW_PREFIX),)
HB_CCPATH := $(dir $(MINGW_PREFIX))
HB_CCPREFIX := $(notdir $(MINGW_PREFIX))
else
MINGW_PREFIX := $(dir $(firstword $(call find_in_path_par,i?86-mingw*/bin/,$(MINGW_BASE_LIST))))
# generic detection for mingw cross-compiler
ifeq ($(HB_CCPATH)$(HB_CCPREFIX),)
MINGW_BASE_LIST := /usr /usr/local /usr/local/mingw32 /opt/xmingw
MINGW_PREFIX := $(subst -gcc,,$(firstword $(call find_in_path_par,bin/i?86-mingw*-,$(MINGW_BASE_LIST))))
ifneq ($(MINGW_PREFIX),)
HB_CCPATH := $(MINGW_PREFIX)
HB_CCPREFIX :=
endif
endif
endif
ifneq ($(HB_CCPATH)$(HB_CCPREFIX),)
HB_COMPILER := mingw
HB_ARCHITECTURE := win
export HB_TOOLS_PREF := hbw
export HB_XBUILD := win
ifneq ($(HB_HOST_BUILD),all)
HB_HOST_BUILD := lib
endif
else
$(error ! Harbour build couldn't find mingw32 cross-compiler. Please install it, or point HB_CCPATH/HB_CCPREFIX environment variables to it)
endif
else
ifeq ($(HB_ARCHITECTURE),wce)
ifeq ($(HB_CCPATH),)
HB_CCPATH := /opt/mingw32ce/bin/
endif
ifneq ($(call find_in_path_par,arm-wince-mingw32ce-gcc,$(HB_CCPATH)),)
HB_CCPREFIX := arm-wince-mingw32ce-
HB_CCPATH := $(HB_CCPATH)/
else
ifneq ($(call find_in_path_par,arm-mingw32ce-gcc,$(HB_CCPATH)),)
HB_CCPREFIX := arm-mingw32ce-
HB_CCPATH := $(HB_CCPATH)/
HB_CCPATH := $(dir $(MINGW_PREFIX))
HB_CCPREFIX := $(notdir $(MINGW_PREFIX))
else
HB_CCPATH :=
HB_CCPREFIX :=
MINGW_PREFIX := $(dir $(firstword $(call find_in_path_par,i?86-mingw*/bin/,$(MINGW_BASE_LIST))))
ifneq ($(MINGW_PREFIX),)
HB_CCPATH := $(MINGW_PREFIX)
HB_CCPREFIX :=
endif
endif
endif
ifneq ($(HB_CCPATH)$(HB_CCPREFIX),)
HB_COMPILER := mingwarm
HB_ARCHITECTURE := wce
export HB_TOOLS_PREF := hbce
export HB_XBUILD := wce
HB_COMPILER := mingw
HB_ARCHITECTURE := win
export HB_TOOLS_PREF := hbw
export HB_XBUILD := win
ifneq ($(HB_HOST_BUILD),all)
HB_HOST_BUILD := lib
endif
else
$(error ! Harbour build couldn't find cegcc cross-compiler. Please install it to /opt/mingw32ce, or point HB_CCPATH/HB_CCPREFIX environment variables to it)
$(error ! Harbour build couldn't find mingw32 cross-compiler. Please install it, or point HB_CCPATH/HB_CCPREFIX environment variables to it)
endif
else
ifeq ($(HB_ARCHITECTURE),wce)
ifeq ($(HB_CCPATH),)
HB_CCPATH := /opt/mingw32ce/bin/
endif
ifneq ($(call find_in_path_par,arm-wince-mingw32ce-gcc,$(HB_CCPATH)),)
HB_CCPREFIX := arm-wince-mingw32ce-
HB_CCPATH := $(HB_CCPATH)/
else
ifneq ($(call find_in_path_par,arm-mingw32ce-gcc,$(HB_CCPATH)),)
HB_CCPREFIX := arm-mingw32ce-
HB_CCPATH := $(HB_CCPATH)/
else
HB_CCPATH :=
HB_CCPREFIX :=
endif
endif
ifneq ($(HB_CCPATH)$(HB_CCPREFIX),)
HB_COMPILER := mingwarm
HB_ARCHITECTURE := wce
export HB_TOOLS_PREF := hbce
export HB_XBUILD := wce
ifneq ($(HB_HOST_BUILD),all)
HB_HOST_BUILD := lib
endif
else
$(error ! Harbour build couldn't find cegcc cross-compiler. Please install it to /opt/mingw32ce, or point HB_CCPATH/HB_CCPREFIX environment variables to it)
endif
endif
endif
endif