Página 1 de 1
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 11:54
por JoséQuintas
! 'hbdossrl' library skipped (platform or compiler not supported)
gcc -I. -I../../../../../../include -Wmissing-braces -Wreturn-type -Wformat -Wimplicit-int -Wimplicit-function-declaration -O3 -fomit-frame-pointer -march=i586 -mtune=pentiumpro -DUNICODE -Id:/github/harbour32/src/3rd/zlib -DPNG_NO_STDIO -DPNG_ARM_NEON_OPT=0 -opng.o -c ../../../png.c
cc1.exe: error: CPU you selected does not support x86-64 instruction set
mingw32-make[4]: *** [../../../../../../config/rules.mk:88: png.o] Error 1
mingw32-make[3]: *** [../../../config/lib.mk:68: descend] Error 2
mingw32-make[2]: *** [../../config/dir.mk:68: png.inst] Error 2
mingw32-make[1]: *** [../config/dir.mk:68: 3rd.inst] Error 2
mingw32-make: *** [config/dir.mk:68: src.inst] Error 2
Normalmente no 3.4 eu apenas compilo, sem problemas.
Como corrigir isso no 3.2 ?
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 16:55
por marcosgambeta
Fiz um teste usando o MINGW 7.3 da minha instalação do Qt Framework. Compilei apenas o 'core' (sem 'contrib').
Compilação 32-bit sem problemas:
Código: Selecionar todos
set PATH=%WINDIR%\system32;%WINDIR%
set PATH=C:\Qt\Tools\mingw730_32\bin;%PATH%
set HB_INSTALL_PREFIX=%CD%\hb32mingw32
set HB_BUILD_CONTRIB_DYN=no
set HB_BUILD_CONTRIBS=no
Código: Selecionar todos
D:\HARBOUR32>harbour -build
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2104281802)
Compiler: MinGW GNU C 7.3 (32-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2021-04-28 20:02 UTC+0200 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: 4643587824552fd877e7f02ad11596e0b30c465d
Built on: Jul 18 2022 15:10:14
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------
Compilação 64-bit sem problemas:
Código: Selecionar todos
set PATH=%WINDIR%\system32;%WINDIR%
set PATH=C:\Qt\Tools\mingw730_64\bin;%PATH%
set HB_INSTALL_PREFIX=%CD%\hb32mingw64
set HB_BUILD_CONTRIB_DYN=no
set HB_BUILD_CONTRIBS=no
Código: Selecionar todos
D:\HARBOUR32>harbour -build
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2104281802)
Compiler: MinGW GNU C 7.3 (64-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2021-04-28 20:02 UTC+0200 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: 4643587824552fd877e7f02ad11596e0b30c465d
Built on: Jul 18 2022 15:50:53
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------
Eu costumo usar a linha abaixo apenas para evitar que outros compiladores interfiram no processo. Não é um requisito, mas sim opcional.
Seu problema parece ser local ou talvez com o MinGW. De onde baixou ? Posso fazer um teste com ele.
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 17:28
por JoséQuintas
marcosgambeta escreveu:Seu problema parece ser local ou talvez com o MinGW. De onde baixou ? Posso fazer um teste com ele.
O que sempre usei foi o do source-forge 32+64 juntos, mas só harbour 3.4.
x86_64-7.3.0-release-posix-sjlj-rt_v5-rev0
É só com o harbour 3.2 o problema.
Baixando o nightly que também é com 7.3 funciona.
Nele, tem versão separada do mingw pra 32 e 64 bits.
Meu aplicativo compilado com harbour 3.2 tá travando muito, provavelmente por causa dos parâmetros da WVG.
Talvez uma boa oportunidade pro harbour++ que tem wvg+hbwin do 3.4.
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 19:14
por JoséQuintas
Mas de qualquer forma é curiosa a mensagem de erro. Diz que a CPU que escolhi não aceita instruções X86/X64, como se eu tivesse escolhido outro tipo de máquina/sistema operacional.
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 20:28
por marcosgambeta
Testei o Harbour 3.2 com este arquivo: x86_64-7.3.0-release-posix-sjlj-rt_v5-rev0.
Deixando no automático, gerou um Harbour 64-bit e a compilação de programas 64-bit ocorreu sem problemas.
Mas quando tentei gerar um Harbour 32-bit com esta mesma instalação do MinGW, ocorreu o mesmo erro que ocorreu com você.
Código: Selecionar todos
cc1.exe: error: CPU you selected does not support x86-64 instruction set
mingw32-make[4]: *** [../../../../../../config/rules.mk:88: png.o] Error 1
mingw32-make[3]: *** [../../../config/lib.mk:68: descend] Error 2
mingw32-make[2]: *** [../../config/dir.mk:71: png] Error 2
mingw32-make[1]: *** [../config/dir.mk:71: 3rd] Error 2
mingw32-make: *** [config/dir.mk:71: src] Error 2
Então, o problema é uma limitação do Harbour 3.2 ou um erro nos scripts. E deve ocorrer no Harbour++ também, visto que usei o Harbour 3.2 como base.
Uma solução, enquanto o problema não for resolvido, seria usar a versão 32-bit deste MinGW:
i686-7.3.0-release-posix-sjlj-rt_v5-rev0.7z
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 20:54
por marcosgambeta
marcosgambeta escreveu:Uma solução, enquanto o problema não for resolvido, seria usar a versão 32-bit deste MinGW:
i686-7.3.0-release-posix-sjlj-rt_v5-rev0.7z
Testei com o arquivo citado acima e compilou sem erros no modo automático.
Então, o problema é a compilação cruzada: gerar um Harbour 32-bit usando uma instalação 64-bit do MinGW.
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 22:32
por marcosgambeta
José,
Consegui gerar um Harbour 32-bit com o MinGW 64-bit.
Código: Selecionar todos
D:\HARBOUR32A>harbour -build
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Harbour Build Info
---------------------------
Version: Harbour 3.2.0dev (r2104281802)
Compiler: MinGW GNU C 7.3 (32-bit)
Platform: Windows 10 10.0
PCode version: 0.3
ChangeLog last entry: 2021-04-28 20:02 UTC+0200 Aleksander Czajczynski (hb fki.pl)
ChangeLog ID: 4643587824552fd877e7f02ad11596e0b30c465d
Built on: Jul 18 2022 21:04:55
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
---------------------------
Código: Selecionar todos
D:\HARBOUR32A>gcc --version
gcc (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Precisa alterar este arquivo: config\win\mingw.mk (linhas 65 a 75)
De:
Código: Selecionar todos
#ifeq ($(HB_COMPILER),mingw64)
# CFLAGS += -m64
# DFLAGS += -m64
# LDFLAGS += -m64
# RCFLAGS += -m64
#else
# CFLAGS += -m32
# DFLAGS += -m32
# LDFLAGS += -m32
# RCFLAGS += -m32
#endif
Para:
Código: Selecionar todos
ifeq ($(HB_COMPILER),mingw64)
CFLAGS += -m64
DFLAGS += -m64
LDFLAGS += -m64
RCFLAGS += --target=pe-x86-64
else
CFLAGS += -m32
DFLAGS += -m32
LDFLAGS += -m32
RCFLAGS += --target=pe-i386
endif
Ao usar o hbmk2, precisa informar parâmetros extras. Veja exemplo abaixo:
Código: Selecionar todos
hbmk2 programa -comp=mingw -cpu=x86 -cflag=-m32 -resflag=--target=pe-i386 -ldflag=-m32
Se definir HB_COMPILER e HB_CPU, não precisa indicar na linha de comando:
Como gerar o harbour 3.2?
Enviado: 18 Jul 2022 23:45
por marcosgambeta
Um detalhe que esqueci de mencionar: todos os testes foram apenas com o 'core' do Harbour. Falta repetir os testes, mas incluindo a pasta 'contrib'.
Como gerar o harbour 3.2?
Enviado: 19 Jul 2022 14:22
por marcosgambeta
No arquivo "utils\hbmk2\hbmk2.prg", introduzi o código abaixo (da linha 4388 em diante):
Código: Selecionar todos
SWITCH hbmk[ _HBMK_cCOMP ]
CASE "mingw64"
AAdd( hbmk[ _HBMK_aOPTC ], "-m64" )
AAdd( hbmk[ _HBMK_aOPTL ], "-m64" )
AAdd( hbmk[ _HBMK_aOPTD ], "-m64" )
AAdd( hbmk[ _HBMK_aOPTRES ], "--target=pe-x86-64" )
EXIT
CASE "mingw"
AAdd( hbmk[ _HBMK_aOPTC ], "-m32" )
AAdd( hbmk[ _HBMK_aOPTL ], "-m32" )
AAdd( hbmk[ _HBMK_aOPTD ], "-m32" )
AAdd( hbmk[ _HBMK_aOPTRES ], "--target=pe-i386" )
EXIT
ENDSWITCH
O código acima vem to Harbour 3.4. Com esta alteração no hbmk2, não haverá necessidade de ficar informando os parâmetros na linha de comando ou nos arquivos .hbp/.hbc.
Agora é só questão de fazer compilações limpas (32-bit e 64-bit) para ver se ficou tudo funcionando. Aparentemente, a alteração no arquivo mingw.mk e esta acima seriam suficientes.
Como gerar o harbour 3.2?
Enviado: 29 Fev 2024 07:36
por JoséQuintas
Tinha esquecido disto.
Fui mostrar pro Leonardo, e o problema ressurgiu.
O detalhe é:
Se já gerou a parte problemática antes, ela é pulada, e tudo bem.
Se for gerar instalação limpa, não vai.
Sem problemas.
Essa parte nunca foi, e nunca será incorporada no 3.2
Depois de ver aquilo da compilação com -gc3... sei lá...
Fiquei imaginando se no 3.4 funciona no modo normal....
O harbour 3.4 é muito bom, nunca tive problema nenhum.
Estou usando 3.2 pra ficar compatível com o povão, pra contribuir pra libs.
Vou ter que usar igual o povão, fazer o que...