Page 1 of 3

Makefile para FWH64

PostPosted: Tue Nov 10, 2015 8:05 pm
by TOTOVIOTTI
Amigos,
estoy tratando de armar mi makefile para hacer la primera compilación de varios prgs para generar
mi sistema en 64 bits. Copiando el formato que en una publicación de Antonio realizó, fui copiando
y tratando de armar para mi formato, mi go.bat es:

@set oldpath=%path%
@set oldinclude=%include%
@set oldlib=%lib%
@set oldlibpath=%libpath%
if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64
c:\"Program Files (x86)\Microsoft Visual Studio 12.0"\VC\bin\nmake -funivac64.mak
@set path=%oldpath%
@set include=%oldinclude%
@set lib=%oldlib%
@set libpath=%oldlibpath%
@set oldpath=""
@set oldinclude=""
@set oldlib=
@set oldlibpath=
if errorlevel==0 univac.exe

y mi univac64.mak es el siguiente:

#Microsoft VS2013 make sample, (c) FiveTech Software 2014

HBDIR=d:\harbour64
FWDIR=d:\fwh64
VCDIR="c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC"
SDKDIR="c:\Program Files (x86)\Windows Kits\8.1"
RESDIR=d:\univ@c.64\recursos
FUENTES=d:\univ@c.64\fuentes

.SUFFIXES: .prg .c .obj .rc .res

univac.exe : principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj $(RESDIR)\alumnos.res $(RESDIR)\personal.res $(RESDIR)\administracion.res $(RESDIR)\biblioteca.res $(RESDIR)\univac.res > msvc.tmp

echo principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj > msvc.tmp

echo $(FWDIR)\lib\FiveH64.lib $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

echo $(HBDIR)\lib\hbrtl.lib >> msvc.tmp
echo $(HBDIR)\lib\hbvm.lib >> msvc.tmp
echo $(HBDIR)\lib\gtgui.lib >> msvc.tmp
echo $(HBDIR)\lib\hblang.lib >> msvc.tmp
echo $(HBDIR)\lib\hbmacro.lib >> msvc.tmp
echo $(HBDIR)\lib\hbrdd.lib >> msvc.tmp
echo $(HBDIR)\lib\rddntx.lib >> msvc.tmp
echo $(HBDIR)\lib\rddcdx.lib >> msvc.tmp
echo $(HBDIR)\lib\rddfpt.lib >> msvc.tmp
echo $(HBDIR)\lib\hbsix.lib >> msvc.tmp
echo $(HBDIR)\lib\hbdebug.lib >> msvc.tmp
echo $(HBDIR)\lib\hbcommon.lib >> msvc.tmp
echo $(HBDIR)\lib\hbpp.lib >> msvc.tmp
echo $(HBDIR)\lib\hbwin.lib >> msvc.tmp
echo $(HBDIR)\lib\hbcplr.lib >> msvc.tmp
echo $(HBDIR)\lib\xhb.lib >> msvc.tmp
echo $(HBDIR)\lib\hbpcre.lib >> msvc.tmp
echo $(HBDIR)\lib\hbct.lib >> msvc.tmp
echo $(HBDIR)\lib\hbcpage.lib >> msvc.tmp
echo $(HBDIR)\lib\hbzlib.lib >> msvc.tmp
echo $(HBDIR)\lib\png.lib >> msvc.tmp

echo kernel32.lib >> msvc.tmp
echo user32.lib >> msvc.tmp
echo gdi32.lib >> msvc.tmp
echo winspool.lib >> msvc.tmp
echo comctl32.lib >> msvc.tmp
echo comdlg32.lib >> msvc.tmp
echo advapi32.lib >> msvc.tmp
echo shell32.lib >> msvc.tmp
echo ole32.lib >> msvc.tmp
echo oleaut32.lib >> msvc.tmp
echo uuid.lib >> msvc.tmp
echo odbc32.lib >> msvc.tmp
echo odbccp32.lib >> msvc.tmp
echo iphlpapi.lib >> msvc.tmp
echo mpr.lib >> msvc.tmp
echo version.lib >> msvc.tmp
echo wsock32.lib >> msvc.tmp
echo msimg32.lib >> msvc.tmp
echo oledlg.lib >> msvc.tmp
echo psapi.lib >> msvc.tmp
echo gdiplus.lib >> msvc.tmp
echo winmm.lib >> msvc.tmp

echo $(RESDIR)\alumnos.res >> msvc.tmp
echo $(RESDIR)\personal.res >> msvc.tmp
echo $(RESDIR)\administracion.res >> msvc.tmp
echo $(RESDIR)\biblioteca.res >> msvc.tmp
echo $(RESDIR)\univac.res >> msvc.tmp

link @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:libc > link.log
@type link.log
@del *.c
@del msvc.tmp

principal.obj : principal.c
personal.obj : personal.c
alumnos_1.obj : alumnos_1.c
alumnos_2.obj : alumnos_2.c
alumnos_3.obj : alumnos_3.c
alumnos_4.obj : alumnos_4.c
administracion.obj: administracion.c
biblioteca.obj : biblioteca.c
tablas.obj : tablas.c
impresiones.obj : impresiones.c
imprime_a1.obj : imprime_a1.c
imprime_a2.obj : imprime_a2.c
imprime_v.obj : imprime_v.c
imprime_p1.obj : imprime_p1.c

principal.c : $(FUENTES)\principal.prg
personal.c : $(FUENTES)\personal.prg
alumnos_1.c : $(FUENTES)\alumnos_1.prg
alumnos_2.c : $(FUENTES)\alumnos_2.prg
alumnos_3.c : $(FUENTES)\alumnos_3.prg
alumnos_4.c : $(FUENTES)\alumnos_4.prg
administracion.c: $(FUENTES)\administracion.prg
biblioteca.c : $(FUENTES)\biblioteca.prg
tablas.c : $(FUENTES)\tablas.prg
impresiones.c : $(FUENTES)\impresiones.prg
imprime_a1.c : $(FUENTES)\imprime_a1.prg
imprime_a2.c : $(FUENTES)\imprime_a2.prg
imprime_v.c : $(FUENTES)\imprime_v.prg
imprime_p1.c : $(FUENTES)\imprime_p1.prg

.prg.c:
$(HBDIR)\bin\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include

.c.obj:
cl.exe -c -TC -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include $<


Que puedo estar haciendo mal, cuando compilo en 32 bits, enlazo los prgs de ésta manera y me funciona excelente,
pero no sé que puedo estar haciendo incorrecto que no hay forma de hacer nada.

Desde ya, muchas gracias!
Roberto

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 8:07 pm
by TOTOVIOTTI
Aclaración, tengo instalado el Visual Studio y el error que tira es:

d:\Univ@c.64>if exist "C:\Program Files\Microsoft Visual Studio 12.0\VC\vcvarsal
l.bat" call "C:\Program Files\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
_amd64

d:\Univ@c.64>if exist "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vc
varsall.bat" call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvars
all.bat" x86_amd64

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation. All rights reserved.

univac64.mak(14) : fatal error U1033: syntax error : 'echo' unexpected
Stop.

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:18 pm
by Antonio Linares
Es esta la línea 14 del fichero make ?

echo $(FWDIR)\lib\FiveH64.lib $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:20 pm
by TOTOVIOTTI
No Antonio, es ésta:

echo principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj > msvc.tmp

Gracias!

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:22 pm
by Antonio Linares
Cámbiala asi y comprueba que sucede:

echo principal.obj personal.obj > msvc.tmp

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:28 pm
by TOTOVIOTTI
Sigue dando lo mismo en la misma línea... :oops:

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:29 pm
by TOTOVIOTTI
Lo hice así y también me da el mismo error:

echo principal.obj > msvc.tmp

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:32 pm
by Antonio Linares
Prueba a cambiar esta línea asi:

univac.exe : principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj tablas.obj \
impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj $(RESDIR)\alumnos.res $(RESDIR)\personal.res \
$(RESDIR)\administracion.res $(RESDIR)\biblioteca.res $(RESDIR)\univac.res > msvc.tmp

A ver si hay variación

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:38 pm
by TOTOVIOTTI
Ahora si me lo tira en la línea que tú me marcaste antes:

echo $(FWDIR)\lib\FiveH64.lib $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:40 pm
by Antonio Linares
Estas líneas tambien tienes que modificarlas asi:

echo principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj \
tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj > msvc.tmp

A ver hasta donde llega ahora

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:47 pm
by cnavarro
Creo que el problema puede estar en:

En esta linea

Code: Select all  Expand view

univac.exe : principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj administracion.obj biblioteca.obj tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj imprime_v.obj imprime_p1.obj $(RESDIR)\alumnos.res $(RESDIR)\personal.res $(RESDIR)\administracion.res $(RESDIR)\biblioteca.res $(RESDIR)\univac.res > msvc.tmp
 


quita
Code: Select all  Expand view

 > msvc.tmp
 

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:50 pm
by TOTOVIOTTI
Quedaría asi?

univac.exe : principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj \
administracion.obj biblioteca.obj tablas.obj impresiones.obj imprime_a1.obj imprime_a2.obj \
imprime_v.obj imprime_p1.obj $(RESDIR)\alumnos.res $(RESDIR)\personal.res \
$(RESDIR)\administracion.res $(RESDIR)\biblioteca.res $(RESDIR)\univac.res > msvc.tmp

echo principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj \ (sigue dando aquí....)
administracion.obj biblioteca.obj \ tablas.obj impresiones.obj imprime_a1.obj \
imprime_a2.obj imprime_v.obj imprime_p1.obj > msvc.tmp

echo $(FWDIR)\lib\FiveH64.lib $(FWDIR)\lib\FiveHC64.lib >> msvc.tmp

Perdón por las molestias...
Roberto

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:51 pm
by TOTOVIOTTI
Cristóbal
he hecho como tú dices y tampoco...
Que trabado estoy...

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 10:55 pm
by cnavarro
Tienes que quitar lo que te he dicho
No tiene sentido realizar > sin un echo

Ahora que error te da?

Re: Makefile para FWH64

PostPosted: Tue Nov 10, 2015 11:15 pm
by Antonio Linares
Aqui sobra esta línea: (entre biblioteca y tablas)

echo principal.obj personal.obj alumnos_1.obj alumnos_2.obj alumnos_3.obj alumnos_4.obj \ (sigue dando aquí....)
administracion.obj biblioteca.obj \ tablas.obj impresiones.obj imprime_a1.obj \
imprime_a2.obj imprime_v.obj imprime_p1.obj > msvc.tmp