Como gerar o harbour 3.2?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como gerar o harbour 3.2?

Mensagem 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 ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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.

Código: Selecionar todos

set PATH=%WINDIR%\system32;%WINDIR%
Seu problema parece ser local ou talvez com o MinGW. De onde baixou ? Posso fazer um teste com ele.
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como gerar o harbour 3.2?

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como gerar o harbour 3.2?

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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

set HB_COMPILER=mingw
set HB_CPU=x86

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
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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:

Código: Selecionar todos

set HB_COMPILER=mingw
set HB_CPU=x86
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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'.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Como gerar o harbour 3.2?

Mensagem 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.
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como gerar o harbour 3.2?

Mensagem 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...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder