|
|
@ -195,8 +195,8 @@ namespace eval ::punkboot::lib { |
|
|
|
} |
|
|
|
} |
|
|
|
x86_64 { |
|
|
|
x86_64 { |
|
|
|
if {$tcl_platform(wordSize) == 4} { |
|
|
|
if {$tcl_platform(wordSize) == 4} { |
|
|
|
# See Example <1> at the top of this file. |
|
|
|
# See Example <1> at the top of this file. |
|
|
|
set cpu ix86 |
|
|
|
set cpu ix86 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
ppc - |
|
|
|
ppc - |
|
|
@ -216,26 +216,26 @@ namespace eval ::punkboot::lib { |
|
|
|
switch -glob -- $plat { |
|
|
|
switch -glob -- $plat { |
|
|
|
windows { |
|
|
|
windows { |
|
|
|
if {$tcl_platform(platform) == "unix"} { |
|
|
|
if {$tcl_platform(platform) == "unix"} { |
|
|
|
set plat cygwin |
|
|
|
set plat cygwin |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
set plat win32 |
|
|
|
set plat win32 |
|
|
|
} |
|
|
|
} |
|
|
|
if {$cpu eq "amd64"} { |
|
|
|
if {$cpu eq "amd64"} { |
|
|
|
# Do not check wordSize, win32-x64 is an IL32P64 platform. |
|
|
|
# Do not check wordSize, win32-x64 is an IL32P64 platform. |
|
|
|
set cpu x86_64 |
|
|
|
set cpu x86_64 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
sunos { |
|
|
|
sunos { |
|
|
|
set plat solaris |
|
|
|
set plat solaris |
|
|
|
if {[string match "ix86" $cpu]} { |
|
|
|
if {[string match "ix86" $cpu]} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
set cpu x86_64 |
|
|
|
set cpu x86_64 |
|
|
|
} |
|
|
|
} |
|
|
|
} elseif {![string match "ia64*" $cpu]} { |
|
|
|
} elseif {![string match "ia64*" $cpu]} { |
|
|
|
# sparc |
|
|
|
# sparc |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
append cpu 64 |
|
|
|
append cpu 64 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
darwin { |
|
|
|
darwin { |
|
|
@ -243,24 +243,24 @@ namespace eval ::punkboot::lib { |
|
|
|
# Correctly identify the cpu when running as a 64bit |
|
|
|
# Correctly identify the cpu when running as a 64bit |
|
|
|
# process on a machine with a 32bit kernel |
|
|
|
# process on a machine with a 32bit kernel |
|
|
|
if {$cpu eq "ix86"} { |
|
|
|
if {$cpu eq "ix86"} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
set cpu x86_64 |
|
|
|
set cpu x86_64 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
aix { |
|
|
|
aix { |
|
|
|
set cpu powerpc |
|
|
|
set cpu powerpc |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
append cpu 64 |
|
|
|
append cpu 64 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
hp-ux { |
|
|
|
hp-ux { |
|
|
|
set plat hpux |
|
|
|
set plat hpux |
|
|
|
if {![string match "ia64*" $cpu]} { |
|
|
|
if {![string match "ia64*" $cpu]} { |
|
|
|
set cpu parisc |
|
|
|
set cpu parisc |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
if {$tcl_platform(wordSize) == 8} { |
|
|
|
append cpu 64 |
|
|
|
append cpu 64 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
osf1 { |
|
|
|
osf1 { |
|
|
@ -2296,8 +2296,23 @@ if {$::punkboot::command eq "bin"} { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#find runtimes |
|
|
|
#find runtimes |
|
|
|
set rtfolder $sourcefolder/runtime |
|
|
|
#set rtfolder $sourcefolder/runtime |
|
|
|
|
|
|
|
#AAA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch -glob -- $this_platform_generic { |
|
|
|
|
|
|
|
macosx-* { |
|
|
|
|
|
|
|
#assuming universal binaries x86_64 and arm |
|
|
|
|
|
|
|
set rt_os_arch macosx |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
default { |
|
|
|
|
|
|
|
set rt_os_arch $this_platform_generic |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
set rtfolder $binfolder/runtime/$rt_os_arch |
|
|
|
|
|
|
|
set rt_sourcefolder $sourcefolder/runtime ;#where our config lives |
|
|
|
#review - when building kits for other platforms - it's unlikely runtime will be marked as executable - we should probably process all files in runtime folder except those with certain extensions |
|
|
|
#review - when building kits for other platforms - it's unlikely runtime will be marked as executable - we should probably process all files in runtime folder except those with certain extensions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set rtfolder_files [glob -nocomplain -dir $rtfolder -types {f} -tail *] |
|
|
|
set rtfolder_files [glob -nocomplain -dir $rtfolder -types {f} -tail *] |
|
|
|
set exclusions {.config .md .ico .txt .doc .pdf .htm .html} ;#we don't encourage other files in runtime folder aside from mapvfs.config - but lets ignore some common possibilities |
|
|
|
set exclusions {.config .md .ico .txt .doc .pdf .htm .html} ;#we don't encourage other files in runtime folder aside from mapvfs.config - but lets ignore some common possibilities |
|
|
|
lappend exclusions .zip .7z .pea .bz2 .tar .gz .tgz .z .xz ;#don't allow archives to directly be treated as runtimes - tolerate presence but require user to unpack or rename if they're to be used as runtimes |
|
|
|
lappend exclusions .zip .7z .pea .bz2 .tar .gz .tgz .z .xz ;#don't allow archives to directly be treated as runtimes - tolerate presence but require user to unpack or rename if they're to be used as runtimes |
|
|
@ -2311,7 +2326,7 @@ foreach f $rtfolder_files { |
|
|
|
} |
|
|
|
} |
|
|
|
if {![llength $runtimes]} { |
|
|
|
if {![llength $runtimes]} { |
|
|
|
puts stderr "No executable runtimes found in $rtfolder - unable to build any .vfs folders into executables." |
|
|
|
puts stderr "No executable runtimes found in $rtfolder - unable to build any .vfs folders into executables." |
|
|
|
puts stderr "Add runtimes to $sourcefolder/runtime if required" |
|
|
|
puts stderr "Add runtimes to $rtfolder if required" |
|
|
|
#todo - don't exit - it is valid to use runtime of - to just build a .kit/.zipkit ? |
|
|
|
#todo - don't exit - it is valid to use runtime of - to just build a .kit/.zipkit ? |
|
|
|
exit 0 |
|
|
|
exit 0 |
|
|
|
} |
|
|
|
} |
|
|
@ -2350,7 +2365,7 @@ if {$sdxpath eq ""} { |
|
|
|
#build a dict keyed on runtime executable name. |
|
|
|
#build a dict keyed on runtime executable name. |
|
|
|
#If no mapfile (or no mapfile entry for that runtime) - the runtime will be paired with a matching .vfs folder in src folder. e.g punk.exe to src/punk.vfs |
|
|
|
#If no mapfile (or no mapfile entry for that runtime) - the runtime will be paired with a matching .vfs folder in src folder. e.g punk.exe to src/punk.vfs |
|
|
|
#If vfs folders or runtime executables which are explicitly listed in the mapfile don't exist - warn on stderr - but continue. if such nonexistants found; prompt user for whether to continue or abort. |
|
|
|
#If vfs folders or runtime executables which are explicitly listed in the mapfile don't exist - warn on stderr - but continue. if such nonexistants found; prompt user for whether to continue or abort. |
|
|
|
set mapfile $rtfolder/mapvfs.config |
|
|
|
set mapfile $rt_sourcefolder/mapvfs.config |
|
|
|
set runtime_vfs_map [dict create] |
|
|
|
set runtime_vfs_map [dict create] |
|
|
|
set vfs_runtime_map [dict create] |
|
|
|
set vfs_runtime_map [dict create] |
|
|
|
if {[file exists $mapfile]} { |
|
|
|
if {[file exists $mapfile]} { |
|
|
|