#!/usr/bin/tclsh set dmd dmd set ld gcc set libs "-llua -lm -lphobos -lpthread -ldl" set target sigsegv set dmdflags "-O -g" if {[catch { proc do {args} { puts [join $args] uplevel #0 "eval exec -- [join $args]" } switch -- [lindex $argv 0] { "clean" { # bad option "ff": must be atime, attributes, channels, copy, delete, # dirname, executable, exists, extension, isdirectory, isfile, join, link, # lstat, mtime, mkdir, nativename, normalize, owned, pathtype, readable, # readlink, rename, rootname, separator, size, split, stat, system, tail, # type, volumes, or writable foreach objfile [glob -- *.o irclib/*.o dlua/*.o $target] { do rm $objfile } } "default" { set obj "" set obj2 "" foreach srcfile [glob -- *.d irclib/*.d dlua/*.d] { set objfile [string range $srcfile 0 end-2].o if {(![file exists $objfile]) || ([file mtime $srcfile] > [file mtime $objfile])} { do $dmd -c $srcfile -of$objfile $dmdflags append obj "$objfile " } else { append obj2 "$objfile " } } if {$obj != ""} { set obj [string range $obj 0 end-1] do $ld $obj $obj2 -o $target $libs } else { puts "up to date" } } } } error]} { puts "$error" exit 1 }