See changelog 2001-03-26 19:10 GMT -3

This commit is contained in:
Luiz Rafael Culik
2001-03-26 22:13:26 +00:00
parent 7d97272e48
commit fccf02da34
2 changed files with 618 additions and 28 deletions

View File

@@ -33,7 +33,13 @@
*
*/
#if defined(HARBOUR_OBJ_GENERATION) || defined(HB_INCLUDE_WINEXCHANDLER)
#define HB_OS_WIN_32
#define HB_OS_WIN_32_USED
#endif
#include "hbapi.h"
#include "hbdefs.h"
#include "hbstack.h"
#include "hbapiitm.h"
#include "hbapierr.h"

View File

@@ -70,7 +70,9 @@ Static lGcc := .F.
Static lVcc := .F.
Static lForce := .F.
Static szProject:=""
Static lLibrary:=.f.
Static lIgnoreErrors:=.F.
Static aDir
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+ Function main()
@@ -91,7 +93,9 @@ Default p6 To ""
allParam:=p1 + p2 +p3+p4 + p5 +p6
allparam:=strtran(allparam,"/","-")
allparam:=strtran(allparam,"-el","-EL")
allparam:=strtran(allparam,"-e","-E")
allparam:=strtran(allparam,"-i","-I")
allparam:=strtran(allparam,"-p","-P")
allparam:=strtran(allparam,"-b","-B")
allparam:=strtran(allparam,"-g","-G")
@@ -103,13 +107,15 @@ If Pcount() == 0
? ""
? "Syntax: hbmake cFile [options]"
? ""
? "Options: /e Create an New Makefile"
? "Options: /e[l] Create an New Makefile,If /el is"
? " used it, creates an new make file to build an library"
? " /D Define an macro"
? " /p Print all command and depencies"
? " /b+ Use BCC as C compiler"
? " /g Use GCC as C compiler"
? " /v Use MSVC as C compiler"
? " /f Force Recompiltion of all files"
? " /i Ignore errors returned by Commamnd"
? " Note: /p and /D can be used together"
? " Options with + are the default Value"
? " -D switch can accept multiple macros in the same line"
@@ -148,6 +154,14 @@ if at("-G",allparam)>0
allparam:=strtran(allparam,"-V","")
Endif
if at("-EL",allparam)>0
allparam:=strtran(allparam,"-EL","")
lLibrary:=.T.
crtlibmakfile( cFile )
Return nil
Endif
if at("-E",allparam)>0
allparam:=strtran(allparam,"-E","")
@@ -156,6 +170,14 @@ if at("-E",allparam)>0
Return nil
Endif
if at("-I",allparam)>0
lIgnoreErrors := .T.
allparam:=strtran(allparam,"-I","")
Endif
if at("-P",allparam)>0
lPrint := .t.
allparam:=strtran(allparam,"-P","")
@@ -205,12 +227,27 @@ if at("-G",allparam)>0
Endif
if at("-EL",allparam)>0
allparam:=strtran(allparam,"-EL","")
lLibrary:=.T.
crtlibmakfile( cFile )
Return nil
Endif
if at("-E",allparam)>0
allparam:=strtran(allparam,"-E","")
crtmakfile( cFile )
Return nil
Endif
if at("-I",allparam)>0
lIgnoreErrors := .T.
allparam:=strtran(allparam,"-I","")
Endif
if at("-P",allparam)>0
@@ -241,6 +278,7 @@ compfiles()
else
CompUpdatedfiles()
endif
outstd(cLinkComm)
! ( cLinkcomm )
Return nil
@@ -320,6 +358,11 @@ While !leof
Endif
Endif
Endif
if aTemp[ 1 ] = "PROJECT"
if at('.lib',atemp[2])>0 .or. at('.a',atemp[2])>0
lLibrary:=.t.
endif
endif
If aTemp[ 1 ] = "OBJFILES"
aObjs := listasArray2( replacemacros(atemp[ 2 ]), " " )
/* for nPos:=1 to len(aObjs)
@@ -360,8 +403,11 @@ While !leof
szProject:=cTemp
aBuildOrder := listasarray2( ctemp, ":" )
// ? cTemp
if !llibrary
SetBuild()
else
SetLibBuild()
endif
Endif
If lComSec
If !Empty( ctemp )
@@ -749,8 +795,9 @@ Local cOld
Local nPos
Local nCount
Local nFiles
Local cErrText:=""
Local aOrder := listasarray2( aBuildOrder[ 2 ], " " )
Local lEnd:=.f.
For nCount := 1 To Len( aOrder )
If aOrder[ nCount ] == "$(CFILES)"
nPos := Ascan( aCommands, { | x, y | x[ 1 ] == ".prg.c:" } )
@@ -771,8 +818,15 @@ For nCount := 1 To Len( aOrder )
If nPos > 0
cComm := Strtran( cComm, "o$*", "o" + aCs[ nPos ] )
cComm := Strtran( cComm, "$**", aPrgs[ nFiles ] )
outstd( " ")
cComm += " > {test}.out"
! ( cComm )
cErrText := memoread( '{test}.out' )
lEnd := 'C2006' $ cErrText .or. 'No code generated' $ cErrText
if !lIgnoreErrors .and. lEnd
quit
endif
cComm := cold
Endif
Next
@@ -953,10 +1007,11 @@ Local cscreen := Savescreen( 0, 0, Maxrow(), Maxcol() )
local citem:=""
nLinkHandle := Fcreate( cFile )
Fwrite( nLinkHandle, "#BCC" + CRLF )
Fwrite( nLinkHandle, "VERSION=BCB01" + CRLF )
Fwrite( nLinkHandle, "VERSION=BCB.01" + CRLF )
Fwrite( nLinkHandle, "!ifndef BCB" + CRLF )
Fwrite( nLinkHandle, "BCB = $(MAKEDIR)\.." + CRLF )
Fwrite( nLinkHandle, "!endif" + CRLF )
Fwrite( nLinkHandle, CRLF )
Fwrite( nLinkHandle, "!ifndef BHC" + CRLF )
Fwrite( nLinkHandle, "BHC = $(HMAKEDIR)\.." + CRLF )
Fwrite( nLinkHandle, "!endif" + CRLF )
@@ -1318,7 +1373,8 @@ Local nCount
Local nFiles
Local aCtocompile:={}
Local aOrder := listasarray2( aBuildOrder[ 2 ], " " )
local lEnd
Local cErrText:=""
For nCount := 1 To Len( aOrder )
If aOrder[ nCount ] == "$(CFILES)"
nPos := Ascan( aCommands, { | x, y | x[ 1 ] == ".prg.c:" } )
@@ -1334,13 +1390,23 @@ For nCount := 1 To Len( aOrder )
Endif
For nFiles := 1 To Len( aPrgs )
nPos := Ascan( aCs, { | x | Left( x, At( ".", x ) ) == Left( aPrgs[ nFiles ], At( ".", aPrgs[ nFiles ] ) ) } )
if fileisnewer(aprgs[nPos])
if fileisnewer(aprgs[nFiles],aCs)
If nPos > 0
aadd(aCtocompile,acs[nPos])
cComm := Strtran( cComm, "o$*", "o" + aCs[ nPos ] )
cComm := Strtran( cComm, "$**", aPrgs[ nFiles ] )
outstd( " ")
// outstd( " ")
! ( cComm )
cErrText := memoread( '{test}.out' )
lEnd := 'C2006' $ cErrText .or. 'No code generated' $ cErrText
if file('{test}.out' )
ferase('{test}.out' )
endif
if !lIgnoreErrors .and. lEnd
quit
endif
cComm := cold
Endif
endif
@@ -1392,27 +1458,545 @@ For nCount := 1 To Len( aOrder )
Next
Return nil
function fileisnewer(cFile)
local aFile
local aobj
local lReturn:=.f.
local nDate,nTime
if !file(strtran(cFile,".prg",".c")) .or. !file(strtran(cFile,".PRG",".C"))
return .t.
function fileisnewer(cFile,as)
local nCount := 0
For nCount:=1 to len(aPrgs)
adir := { cFile,, filedate( cFile ), filetime( cFile ), ;
as[nCount], filedate( as[nCount] ), filetime( as[nCount] )}
if empty( adir[ 7 ] )
adir[ 2 ] := .t.
else
adir[ 2 ] := td2jul( adir[ 4 ], adir[ 3 ] ) > td2jul( adir[ 7 ], adir[ 6 ] )
endif
next
return aDir[2]
Func crtlibmakfile( cFile )
Local ain := {}
Local aOut := {}
Local aSrc := Directory( "*.prg" )
Local nLenaSrc := Len( asrc )
Local nLenaOut
Local ainC := {}
Local aOutC := {}
Local aSrcC := Directory( "*.c" )
Local nLenaSrcC := Len( asrcc )
Local nLenaOutC
Local lFwh := .f.
Local lCw := .f.
Local lRddAds := .f.
Local cOs := "Win32"
Local cCompiler := "BCC"
Local cfwhpath := space(40)
Local ccwpath := space(40)
Local cmainfile := ""
Local cRddAds := ""
Local lAutomemvar := .f.
Local lvarismemvar := .f.
Local ldebug := .f.
Local lSupressline := .f.
Local cGrap := "NONE"
Local cDefHarOpts := ""
Local cDefcOpts := ""
Local cDefLinkOpts := ""
Local lCompMod := .f.
Local x,y,nPos
Local lGenppo := .f.
Local getlist := {}
Local cTopFile := ""
Local cscreen := Savescreen( 0, 0, Maxrow(), Maxcol() )
local citem:=""
nLinkHandle := Fcreate( cFile )
Fwrite( nLinkHandle, "#BCC" + CRLF )
Fwrite( nLinkHandle, "VERSION=BCB.01" + CRLF )
Fwrite( nLinkHandle, "!ifndef BCB" + CRLF )
Fwrite( nLinkHandle, "BCB = $(MAKEDIR)\.." + CRLF )
Fwrite( nLinkHandle, "!endif" + CRLF )
Fwrite( nLinkHandle, CRLF )
Fwrite( nLinkHandle, "!ifndef BHC" + CRLF )
Fwrite( nLinkHandle, "BHC = $(HMAKEDIR)\.." + CRLF )
Fwrite( nLinkHandle, "!endif" + CRLF )
Fwrite( nLinkHandle, " " + CRLF )
Cls
Setcolor( 'w/b+,w/b,w+/b,w/b+,w/b,w+/b' )
@ 0, 0, Maxrow(), Maxcol() Box( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 ) + Space( 1 ) )
ATTENTION( "Enviroment options", 0 )
@ 1, 1 Say "Select Os"
@ 1, 12 Get cos radio { "Win32", "OS/2", "Linux" }
@ 1, 23 Say "Select C Compiler"
@ 1, 40 Get cCompiler radio { "BCC", "MSVC", "GCC" }
Read
@ 4, 1 Say "Library name with our extention" Get cfwhpath
ATTENTION( "Harbour Options", 5 )
@ 6, 1 Get lautomemvar checkbox "Automatic memvar declaration"
@ 6, 43 Get lvarismemvar checkbox "Variables are assumed M->"
@ 7, 1 Get lDebug checkbox "Debug info"
@ 7, 43 Get lSupressline checkbox "Suppress line number information"
@ 8, 1 Get lGenppo checkbox "Generate pre-processed output"
@ 8, 43 Get lCompMod checkbox "compile module only"
Read
lBcc := If( At( "BCC", cCompiler ) > 0, .t., .f. )
lVcc := If( At( "MSVC", cCompiler ) > 0, .t., .f. )
lGcc := If( At( "GCC", cCompiler ) > 0, .t., .f. )
if lAutomemvar
cDefHarOpts+=" -a "
endif
aFile:=directory(cFile)
aObj:=if(lGcc,directory(strtran(cFile,".prg",".o")),directory(strtran(cFile,".prg",".obj")))
nDate:=datediff(afile[1,3],aobj[1,3])
if nDate>0
lReturn:=.t.
if lvarismemvar
cDefHarOpts+=" -v "
endif
if ldebug
cDefHarOpts+=" -b "
endif
if lSupressline
cDefHarOpts+=" -l "
endif
if lGenppo
cDefHarOpts+=" -p "
endif
if lCompmod
cDefHarOpts+=" -m "
endif
If lBcc
Aadd( aCommands, { ".cpp.obj:", "$(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $*" } )
Aadd( aCommands, { ".c.obj:", "$(BCB)\BIN\bcc32 -I$(BHC)\include $(CFLAG1) $(CFLAG2) -o$* $**" } )
Aadd( aCommands, { ".prg.c:", "$(BHC)\bin\harbour -n -I$(BHC)\include $(HARBOURFLAGS) -I$(FWH)\include -o$* $**" } )
Aadd( aCommands, { ".rc.res:", "$(BCB)\BIN\brcc32 $(RFLAGS) $<" } )
Elseif lGcc
if at("linux",Getenv("HB_ARCHITECTURE"))>0 .or. cOs=="Linux"
Aadd( aCommands, { ".cpp.o:", "$(BCB)/gcc $(CFLAG1) $(CFLAG2) -o$* $*" } )
Aadd( aCommands, { ".c.o:", "$(BCB)/gcc -I$(HB_INC_INSTALL) $(CFLAG1) $(CFLAG2) -I. -o$* $**" } )
Aadd( aCommands, { ".prg.c:", "$(BHC)/harbour -n -I$(HB_INC_INSTALL) -I. -o$* $**" } )
else
Aadd( aCommands, { ".cpp.o:", "$(BCB)\gcc $(CFLAG1) $(CFLAG2) -o$* $*" } )
Aadd( aCommands, { ".c.o:", "$(BCB)\gcc -I$(BHC)/../include $(CFLAG1) $(CFLAG2) -I. -o$* $**" } )
Aadd( aCommands, { ".prg.c:", "$(BHC)\harbour -n -I$(BHC)/../include $(HARBOURFLAGS) -o$* $**" } )
endif
Elseif lVcc
Aadd( aCommands, { ".cpp.obj:", "$(BCB)\bin\cl $(CFLAG1) $(CFLAG2) -Fo$* $*" } )
Aadd( aCommands, { ".c.obj:", "$(BCB)\bin\cl -I$(BHC)\include $(CFLAG1) $(CFLAG2) -Fo$* $**" } )
Aadd( aCommands, { ".prg.c:", "$(BHC)\bin\harbour -n -I$(BHC)\include $(HARBOURFLAGS) -I$(C4W)\include -o$* $**" } )
Aadd( aCommands, { ".rc.res:", "$(BCB)\BIN\rc $(RFLAGS) $<" } )
Endif
attention( 'Spacebar to select, Enter to continue process', 22 )
Asize( aIn, nLenaSrc )
For x := 1 To nLenaSrc
aIn[ x ] := Pad( aSrc[ x, 1 ], 13 ) + ;
Str( aSrc[ x, 2 ], 8 ) + ' ' + ;
Dtoc( aSrc[ x, 3 ] ) + ' ' + ;
aSrc[ x, 4 ]
Next
aOut := Aclone( aIn )
pickarry( 10, 15, 19, 64, aIn, aOut )
nLenaOut := Len( aOut )
For x := 1 To nLenaOut
aOut[ x ] := lower(Trim( Left( aOut[ x ], 12 ) ))
Next
aOut := Asort( aOut )
/*
If Len( aOut ) == 1
cTopFile := aOut[ 1 ]
Else
attention( 'Select the TOP MODULE of your executable', 22 )
cTopFile := pickfile( "*.prg" )
Endif
*/
/*x:=ascan(aOut,{|x| lower(x)==lower(cTopFile)})
if x>0
adel(aout,x)
asize(aout,len(aout)-1)
endif
*/
aCs := aclone(aout)
For x := 1 To Len( aCs )
cItem:= aCs[ x ]
aCs[ x ]:=strtran( cItem, ".prg", ".c" )
Next
aObjs := aClone(aout)
For x := 1 To Len( aObjs )
cItem:=aObjs[ x ]
If !lGcc
aObjs[ x ]:=strtran( cItem, ".prg", ".obj" )
Else
aObjs[ x ]:=strtran( cItem, ".prg", ".o" )
Endif
Next
for nPos:=1 to Len(aCs)
cItem:=acS[nPos]
if (y:=FindCfile(citem,aSrcc))>0
if y>0
aDel(aSrcC,y)
aSize(aSrcc,Len(aSrcC)-1)
endif
endif
Next
nLenaSrcc:=Len(aSrcc)
Asize( aInC, nLenaSrcC )
For x := 1 To nLenaSrcC
aInC[ x ] := Pad( aSrcC[ x, 1 ], 13 ) + ;
Str( aSrcC[ x, 2 ], 8 ) + ' ' + ;
Dtoc( aSrcC[ x, 3 ] ) + ' ' + ;
aSrcc[ x, 4 ]
Next
aOutC := Aclone( aInC )
pickarry( 10, 15, 19, 64, aInC, aOutC )
nLenaOutC := Len( aOutC )
For x := 1 To nLenaOutC
aOutC[x ] := lower(Trim( Left( aOutC[ x ], 12 ) ))
Next
For x := 1 To Len( aOutC )
cItem:= aOutC[ x ]
aadd(aCs,cItem)
Next
//aObjs := aClone(aout)
For x := 1 To Len( aoutC )
cItem:=aOutc[ x ]
If !lGcc
aadd(aObjs, strtran(cItem,".c",".obj"))
Else
aadd(aObjs, strtran(cItem,".c",".o"))
Endif
Next
if lGcc
if at("linux",Getenv("HB_ARCHITECTURE"))>0 .or. cOs=="Linux"
Fwrite( nLinkHandle, "PROJECT = " + alltrim(lower(cfwhpath))+".a "+CRLF )
else
nTime:=timetosec(afile[1,4])-timetosec(aobj[1,4])
if nTime>0
lreturn:=.t.
else
lReturn:=.f.
endif
Fwrite( nLinkHandle, "PROJECT = " + alltrim(lower(cfwhpath))+".a "+CRLF )
endif
else
Fwrite( nLinkHandle, "PROJECT = " + alltrim(lower(cfwhpath))+".lib "+CRLF )
endif
Fwrite( nLinkHandle, "OBJFILES = " )
if len(aObjs)<1
Fwrite( nLinkHandle, +" $(OB) "+ CRLF )
else
//Fwrite( nLinkHandle, "OBJFILES = " + if(isupper(cTopfile),Strtran( cTopfile, ".PRG", ".OBJ" ),Strtran( cTopfile, ".prg", ".obj" )))
For x := 1 To Len( aobjs )
If x <> Len( aobjs )
Fwrite( nLinkHandle, " " + alltrim(aobjs[ x ]) )
Else
Fwrite( nLinkHandle, " " + alltrim(aobjs[ x ]) +" $(OB) "+ CRLF )
Endif
Next
endif
Fwrite( nLinkHandle, "CFILES = " )
if len(aCs)<1
Fwrite( nLinkHandle, +" $(CF)"+ CRLF )
//
else
//Fwrite( nLinkHandle, "CFILES = " + if(isupper(cTopfile),Strtran( cTopfile, ".PRG", ".C" ),Strtran( cTopfile, ".prg", ".c" )))
For x := 1 To Len( acs )
If x <> Len( acs )
Fwrite( nLinkHandle, " " + alltrim(aCs[ x ]) )
Else
Fwrite( nLinkHandle, " " + alltrim(aCs[ x ]) +" $(CF) "+ CRLF )
Endif
Next
endif
Fwrite( nLinkHandle, "RESFILES = " + CRLF )
Fwrite( nLinkHandle, "RESDEPEN = $(RESFILES)" + CRLF )
if lBcc .or. lVcc
If lFwh
Fwrite( nLinkHandle, "LIBFILES = " + CRLF )
elseif lCw
Fwrite( nLinkHandle, "LIBFILES = " + CRLF )
else
Fwrite( nLinkHandle, "LIBFILES = " + CRLF )
endif
return lReturn
elseif lGcc
Fwrite( nLinkHandle, "LIBFILES = " + CRLF )
endif
Fwrite( nLinkHandle, "DEFFILE = "+CRLF)
fWrite( nLinkHandle, "HARBOURFLAGS = " +cDefHarOpts+CRLF)
if lBcc
Fwrite( nLinkHandle, "CFLAG1 = -OS $(CFLAGS) -d -L$(BHC)\lib;$(FWH)\lib -c"+CRLF)
Fwrite( nLinkHandle, "CFLAG2 = -I$(BHC)\include;$(BCB)\include" +CRLF)
Fwrite( nLinkHandle, "RFLAGS = "+CRLF)
Fwrite( nLinkHandle, "LFLAGS = /P32"+CRLF)
Fwrite( nLinkHandle, "IFLAGS = " +CRLF)
Fwrite( nLinkHandle, "LINKER = tlib $(LFLAGS) $(PROJECT)"+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "ALLOBJ = $(OBJFILES)"+CRLF)
Fwrite( nLinkHandle, "ALLRES = $(RESFILES)"+CRLF)
Fwrite( nLinkHandle, "ALLLIB = "+CRLF)
Fwrite( nLinkHandle, ".autodepend"+CRLF)
elseif lVcc
Fwrite( nLinkHandle, "CFLAG1 = -I$(INCLUDE_DIR) -TP -W3 -nologo $(C_USR) $(CFLAGS)"+CRLF)
Fwrite( nLinkHandle, "CFLAG2 = -c"+CRLF)
Fwrite( nLinkHandle, "RFLAGS = "+CRLF)
Fwrite( nLinkHandle, "LFLAGS = "+CRLF)
Fwrite( nLinkHandle, "IFLAGS = "+CRLF)
Fwrite( nLinkHandle, "LINKER = lib $(PROJECT)"+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "ALLOBJ = "+CRLF)
Fwrite( nLinkHandle, "ALLRES = $(RESFILES)"+CRLF)
Fwrite( nLinkHandle, "ALLLIB = "+CRLF)
elseif lGcc
Fwrite( nLinkHandle, "CFLAG1 = "+if(at("linux",Getenv("HB_ARCHITECTURE"))>0 ,"-I$(HB_INC_INSTALL)"," -I$(BHC)/../include")+ " -c -Wall"+CRLF)
Fwrite( nLinkHandle, "CFLAG2 = "+if(at("linux",Getenv("HB_ARCHITECTURE"))>0 ,"-L$(HB_LIB_INSTALL)"," -L$(BHC)/../lib")+CRLF)
Fwrite( nLinkHandle, "RFLAGS = "+CRLF)
Fwrite( nLinkHandle, "LFLAGS = "+CRLF)
Fwrite( nLinkHandle, "IFLAGS = "+CRLF)
Fwrite( nLinkHandle, "LINKER = $(BCB)\ar -M <"+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "ALLOBJ = $(OBJFILES) "+CRLF)
Fwrite( nLinkHandle, "ALLRES = $(RESFILES) "+CRLF)
Fwrite( nLinkHandle, "ALLLIB = $(LIBFILES) "+CRLF)
Fwrite( nLinkHandle, ".autodepend"+CRLF)
endif
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "#COMMANDS"+CRLF)
For x:=1 to len(aCommands)
if lBcc
Fwrite( nLinkHandle, aCommands[x,1]+CRLF)
Fwrite( nLinkHandle, aCommands[x,2]+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
elseif lVcc
Fwrite( nLinkHandle, aCommands[x,1]+CRLF)
Fwrite( nLinkHandle, aCommands[x,2]+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
elseif lGcc
Fwrite( nLinkHandle, aCommands[x,1]+CRLF)
Fwrite( nLinkHandle, aCommands[x,2]+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
endif
next
if lBcc
Fwrite( nLinkHandle, "#BUILD"+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "$(PROJECT): $(CFILES) $(OBJFILES)"+CRLF)
Fwrite( nLinkHandle, " $(BCB)\BIN\$(LINKER) @&&!"+CRLF)
Fwrite( nLinkHandle, " $(ALLOBJ)"+CRLF)
Fwrite( nLinkHandle, "!"+CRLF)
elseif lVcc
Fwrite( nLinkHandle, "#BUILD"+CRLF)
Fwrite( nLinkHandle, ""+CRLF)
Fwrite( nLinkHandle, "$(PROJECT): $(CFILES) $(OBJFILES)"+CRLF)
Fwrite( nLinkHandle, " $(BCB)\BIN\$(LINKER) @&&!"+CRLF)
Fwrite( nLinkHandle, " $(ALLOBJ) "+CRLF)
Fwrite( nLinkHandle, "!"+CRLF)
elseif lGcc
Fwrite( nLinkHandle, "#BUILD"+CRLF)
Fwrite( nLinkHandle, " "+CRLF)
Fwrite( nLinkHandle, "$(PROJECT): $(CFILES) $(OBJFILES) "+CRLF)
Fwrite( nLinkHandle, " $(BCB)\$(LINKER) @&&!"+CRLF)
Fwrite( nLinkHandle, " $(PROJECT) "+CRLF)
Fwrite( nLinkHandle, " $(ALLOBJ) "+CRLF)
Fwrite( nLinkHandle, "!"+CRLF)
endif
Return nil
Function setlibBuild()
Local cRead
Local nPos
Local aMacro
Local aTemp
Local nCount
Local aCurobjs
Local nObjPos
Local cProject
// ? "setting link file"
cRead := Alltrim( readln( @leof ) )
nLinkHandle := Fcreate( clinker )
szProject:=cRead
amacro := listasarray2( cRead, ":" )
//cProject:=amacro[1]
// findmacro(amacro[1],@cProject)
If Len( amacro ) > 1
aTemp := listasarray2( amacro[ 2 ], " " )
For nPos := 1 To Len( aTemp )
Aadd( aBuildOrder, atemp[ nPos ] )
Next
//if lgcc
// fwrite(nLinkHandle,"CREATE " + cProject+CRLF)
//endif
Endif
Aadd( aBuildOrder, amacro[ 1 ] )
cRead := Strtran( cRead, "@&&!", "" )
amacro := listasarray2( cRead, '\' )
For nPos := 1 To Len( amacro )
If At( "$", amacro[ nPos ] ) > 0
findmacro( amacro[ nPos ], @cRead )
Endif
Next
if lbcc .or. lVcc
cLinkcomm := cRead + " @" + cLinker
else
cLinkcomm := cRead + " " + cLinker
endif
//#define CRLF hb_osnewline()
For nPos := 1 To 7
cRead := Alltrim( readln( @leof ) )
amacro := listasarray2( cRead, " " )
For ncount := 1 To Len( amacro )
If At( "$", amacro[ nCount ] ) > 0
if (amacro[ nCount ] =="$(ALLOBJ)")
findmacro( amacro[ nCount ], @cRead )
aCurObjs:=ListasArray2(cRead," ")
for nObjPos:=1 to Len(aCurObjs)
if lGcc
fWrite(nLinkhandle, "ADDMOD " + aCurObjs[nObjPos] +CRLF)
endif
if lBcc .or. lVcc
if nObjPos< Len(aCurObjs)
fWrite(nLinkhandle, "+-" + aCurObjs[nObjPos] + " &"+CRLF)
else
fWrite(nLinkhandle, "+-" + aCurObjs[nObjPos] +CRLF)
endif
endif
next
Elseif (amacro[ nCount] = "$(PROJECT)") .and. lGcc
Findmacro(amacro[ nCount ], @cRead )
fwrite(nLinkHandle,"CREATE " + cRead+CRLF)
endif
Endif
Next
Next
if lGcc
fwrite(nLinkHandle, "SAVE" +CRLF)
fwrite(nLinkHandle, "END " +CRLF)
endif
Fclose( nLinkhandle )
Return nil
func FindCfile(citem,aSrcc)
local nReturnPos:=0
nReturnPos:=aScan(aSrcc,{|x| lower(x[1])==cItem})
return nReturnPos
function filedate( cFileName )
local aFiles := directory( cFileName )
return if( len( aFiles ) == 1, aFiles[ 1, 3 ], ctod( '' ) )
function filetime( cFileName )
local aFiles := directory( cFileName )
return if( len( aFiles ) == 1, aFiles[ 1, 4 ], '' )
function TD2JUL( CTIME, DDATE )
return DDATE - ctod( '01/01/1900' ) + ( PRB_INT( TTOS( CTIME ) / 100000,, 5 ) )
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+ Function TTOS()
*+
*+ Called from ( td2jul.prg ) 1 - function td2jul()
*+
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
function TTOS( CTIME )
return ( val( substr( CTIME, 7, 2 ) ) ) + ;
( val( substr( CTIME, 4, 2 ) ) * 60 ) + ;
( val( substr( CTIME, 1, 2 ) ) * 3600 )
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+ Function PRB_INT()
*+
*+ Called from ( td2jul.prg ) 1 - function td2jul()
*+
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
function PRB_INT( SOMENUMBER, length, NUM_DECIMALS )
local NEGATIVE := ( SOMENUMBER < 0 )
local SOMESTRING
local dotat
default NUM_DECIMALS to 0
default length to 19
if NEGATIVE
SOMENUMBER := abs( SOMENUMBER )
endif
SOMENUMBER += .0000000000000005
SOMESTRING := alltrim( str( SOMENUMBER ) )
dotat := at( '.', somestring )
do case
case NUM_DECIMALS == 0
if dotat > 0
somestring := left( somestring, dotat - 1 )
endif
case NUM_DECIMALS > 0
if dotat > 0
somestring := left( somestring, dotat + num_decimals )
endif
endcase
if NEGATIVE
SOMESTRING := '-' + SOMESTRING
endif
return val( SOMESTRING )