mirror of
https://github.com/nim-lang/Nim.git
synced 2026-03-02 06:38:31 +00:00
Modified the behaviour of the build scripts to accommodate new C sources
repo.
This commit is contained in:
@@ -5,6 +5,11 @@ SET CC=gcc
|
||||
SET LINKER=gcc
|
||||
SET COMP_FLAGS=?{c.ccompiler.flags}
|
||||
SET LINK_FLAGS=?{c.linker.flags}
|
||||
SET BIN_DIR=?{firstBinPath(c)}
|
||||
|
||||
if EXIST ..\koch.nim SET BIN_DIR=..\bin
|
||||
|
||||
if NOT EXIST %BIN_DIR%\nul mkdir %BIN_DIR%
|
||||
|
||||
REM call the compiler:
|
||||
|
||||
@@ -12,13 +17,13 @@ REM call the compiler:
|
||||
# var linkCmd = ""
|
||||
# for ff in items(c.cfiles[1][ord(target)]):
|
||||
# let f = ff.replace('/', '\\')
|
||||
ECHO %CC% %COMP_FLAGS% -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
%CC% %COMP_FLAGS% -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
ECHO %CC% %COMP_FLAGS% -Isrc -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
%CC% %COMP_FLAGS% -Isrc -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
# linkCmd.add(" " & changeFileExt(f, "o"))
|
||||
# end for
|
||||
|
||||
ECHO %LINKER% -o ?{firstBinPath(c)\toLower(c.name)}.exe ?linkCmd %LINK_FLAGS%
|
||||
%LINKER% -o ?{firstBinPath(c)\toLower(c.name)}.exe ?linkCmd %LINK_FLAGS%
|
||||
ECHO %LINKER% -o ?{"%BIN_DIR%"\toLower(c.name)}.exe ?linkCmd %LINK_FLAGS%
|
||||
%LINKER% -o ?{"%BIN_DIR%"\toLower(c.name)}.exe ?linkCmd %LINK_FLAGS%
|
||||
|
||||
# end block
|
||||
|
||||
|
||||
@@ -34,6 +34,16 @@ LINK_FLAGS="?{c.linker.flags}"
|
||||
# add(result, "# platform detection\n")
|
||||
ucpu=`uname -m`
|
||||
uos=`uname`
|
||||
# add(result, "# bin dir detection\n")
|
||||
binDir=?{firstBinPath(c)}
|
||||
|
||||
if [ -s ../koch.nim ]; then
|
||||
binDir="../bin"
|
||||
fi
|
||||
|
||||
if [ ! -d $binDir ]; then
|
||||
mkdir $binDir
|
||||
fi
|
||||
|
||||
# add(result, "# convert to lower case:\n")
|
||||
ucpu=`echo $ucpu | tr "[:upper:]" "[:lower:]"`
|
||||
@@ -117,12 +127,12 @@ case $myos in
|
||||
?{c.cpus[cpuA-1]})
|
||||
# var linkCmd = ""
|
||||
# for f in items(c.cfiles[osA][cpuA]):
|
||||
echo "$CC $COMP_FLAGS -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")}"
|
||||
$CC $COMP_FLAGS -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
echo "$CC $COMP_FLAGS -Isrc -c ?{f} -o ?{changeFileExt(f, "o")}"
|
||||
$CC $COMP_FLAGS -Isrc -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
# add(linkCmd, " \\\n" & changeFileExt(f, "o"))
|
||||
# end for
|
||||
echo "$LINKER -o ?{firstBinPath(c)/toLower(c.name)} ?linkCmd $LINK_FLAGS"
|
||||
$LINKER -o ?{firstBinPath(c)/toLower(c.name)} ?linkCmd $LINK_FLAGS
|
||||
# end for
|
||||
echo "$LINKER -o ?{"$binDir"/toLower(c.name)} ?linkCmd $LINK_FLAGS"
|
||||
$LINKER -o ?{"$binDir"/toLower(c.name)} ?linkCmd $LINK_FLAGS
|
||||
;;
|
||||
# end for
|
||||
*)
|
||||
|
||||
@@ -357,7 +357,10 @@ proc readCFiles(c: var TConfigData, osA, cpuA: int) =
|
||||
quit("Cannot open: " & f)
|
||||
|
||||
proc buildDir(os, cpu: int): string =
|
||||
return "build" / ($os & "_" & $cpu)
|
||||
return "src" / ($os & "_" & $cpu)
|
||||
|
||||
proc getOutputDir(c: var TConfigData): string =
|
||||
if c.outdir.len > 0: c.outdir else: "build"
|
||||
|
||||
proc writeFile(filename, content, newline: string) =
|
||||
var f: TFile
|
||||
@@ -392,11 +395,14 @@ proc writeInstallScripts(c: var TConfigData) =
|
||||
writeFile(deinstallShFile, GenerateDeinstallScript(c), "\10")
|
||||
|
||||
proc srcdist(c: var TConfigData) =
|
||||
if not existsDir(getOutputDir(c) / "src"):
|
||||
createDir(getOutputDir(c) / "src")
|
||||
for x in walkFiles(c.libpath / "lib/*.h"):
|
||||
CopyFile(dest="build" / extractFilename(x), source=x)
|
||||
echo(getOutputDir(c) / "src" / extractFilename(x))
|
||||
CopyFile(dest=getOutputDir(c) / "src" / extractFilename(x), source=x)
|
||||
for osA in 1..c.oses.len:
|
||||
for cpuA in 1..c.cpus.len:
|
||||
var dir = buildDir(osA, cpuA)
|
||||
var dir = getOutputDir(c) / buildDir(osA, cpuA)
|
||||
if existsDir(dir): removeDir(dir)
|
||||
createDir(dir)
|
||||
var cmd = ("nimrod compile -f --symbolfiles:off --compileonly " &
|
||||
@@ -409,14 +415,15 @@ proc srcdist(c: var TConfigData) =
|
||||
quit("Error: call to nimrod compiler failed")
|
||||
readCFiles(c, osA, cpuA)
|
||||
for i in 0 .. c.cfiles[osA][cpuA].len-1:
|
||||
var dest = dir / extractFilename(c.cfiles[osA][cpuA][i])
|
||||
let dest = dir / extractFilename(c.cfiles[osA][cpuA][i])
|
||||
let relDest = buildDir(osA, cpuA) / extractFilename(c.cfiles[osA][cpuA][i])
|
||||
CopyFile(dest=dest, source=c.cfiles[osA][cpuA][i])
|
||||
c.cfiles[osA][cpuA][i] = dest
|
||||
c.cfiles[osA][cpuA][i] = relDest
|
||||
# second pass: remove duplicate files
|
||||
removeDuplicateFiles(c)
|
||||
writeFile(buildShFile, GenerateBuildShellScript(c), "\10")
|
||||
writeFile(buildBatFile32, GenerateBuildBatchScript(c, tWin32), "\13\10")
|
||||
writeFile(buildBatFile64, GenerateBuildBatchScript(c, tWin64), "\13\10")
|
||||
writeFile(getOutputDir(c) / buildShFile, GenerateBuildShellScript(c), "\10")
|
||||
writeFile(getOutputDir(c) / buildBatFile32, GenerateBuildBatchScript(c, tWin32), "\13\10")
|
||||
writeFile(getOutputDir(c) / buildBatFile64, GenerateBuildBatchScript(c, tWin64), "\13\10")
|
||||
writeInstallScripts(c)
|
||||
|
||||
# --------------------- generate inno setup -----------------------------------
|
||||
@@ -467,8 +474,8 @@ when haveZipLib:
|
||||
# -- prepare build files for .deb creation
|
||||
|
||||
proc debDist(c: var TConfigData) =
|
||||
if not existsFile("build.sh"): quit("No build.sh found.")
|
||||
if not existsFile("install.sh"): quit("No install.sh found.")
|
||||
if not existsFile(getOutputDir(c) / "build.sh"): quit("No build.sh found.")
|
||||
if not existsFile(getOutputDir(c) / "install.sh"): quit("No install.sh found.")
|
||||
|
||||
if c.debOpts.shortDesc == "": quit("shortDesc must be set in the .ini file.")
|
||||
if c.debOpts.licenses.len == 0:
|
||||
|
||||
Reference in New Issue
Block a user