From 5ac8a99794197b0105c19f6cc2885576b2a78f5e Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Thu, 22 Jun 2023 05:12:27 +1000 Subject: [PATCH] rename make_punk86.tcl to make.tcl and fix to handle modules in subdirectories --- src/{make_punk86.tcl => make.tcl} | 43 ++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) rename src/{make_punk86.tcl => make.tcl} (72%) diff --git a/src/make_punk86.tcl b/src/make.tcl similarity index 72% rename from src/make_punk86.tcl rename to src/make.tcl index c98994ec..fd230586 100644 --- a/src/make_punk86.tcl +++ b/src/make.tcl @@ -12,14 +12,45 @@ set dirname [file normalize [file dirname [info script]]] # ---------------------------------------- set src_module_dir $dirname/modules -set src_modules [glob -nocomplain -dir $src_module_dir -type f -tail *.tm] -set target_module_dir [file dirname $dirname]/modules -file mkdir $target_module_dir -foreach m $src_modules { - puts stdout "copying module $src_module_dir/$m to $target_module_dir" - file copy -force $src_module_dir/$m $target_module_dir +proc copy_modules_in_dir {srcdir basedir {subdirlist {}}} { + set src_modules [glob -nocomplain -dir $srcdir -type f -tail *.tm] + if {![file exists $basedir]} { + error "copy_modules_in_dir basedir:'$basedir' doesn't exist" + } + if {[llength $subdirlist] == 0} { + set target_module_dir $basedir + } else { + set target_module_dir $basedir/[file join {*}$subdirlist] + } + foreach m $src_modules { + puts stdout "copying module $srcdir/$m to $target_module_dir" + file copy -force $srcdir/$m $target_module_dir + } + set subdirs [glob -nocomplain -dir $srcdir -type d -tail *] + #puts stderr "subdirs: $subdirs" + foreach d $subdirs { + if {[string match "#*" $d]} { + continue + } + if {![file exists $target_module_dir/$d]} { + file mkdir $target_module_dir/$d + } + copy_modules_in_dir $srcdir/$d $basedir [list {*}$subdirlist $d] + } } + + +set src_modules [glob -nocomplain -dir $src_module_dir -type f -tail *.tm] +set target_modules_base [file dirname $dirname]/modules +file mkdir $target_modules_base +copy_modules_in_dir $src_module_dir $target_modules_base +#foreach m $src_modules { +# puts stdout "copying module $src_module_dir/$m to $target_module_dir" +# file copy -force $src_module_dir/$m $target_module_dir +#} + + # ---------------------------------------- # if {![file exists $dirname/punk86.vfs]} {