diff options
Diffstat (limited to 'gnu/gnu2bmake/gnu2bmake.tcl')
-rw-r--r-- | gnu/gnu2bmake/gnu2bmake.tcl | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/gnu/gnu2bmake/gnu2bmake.tcl b/gnu/gnu2bmake/gnu2bmake.tcl deleted file mode 100644 index 4040c53..0000000 --- a/gnu/gnu2bmake/gnu2bmake.tcl +++ /dev/null @@ -1,221 +0,0 @@ -#!/usr/local/bin/tcl -# -# ---------------------------------------------------------------------------- -# "THE BEER-WARE LICENSE" (Revision 42): -# <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you -# can do whatever you want with this stuff. If we meet some day, and you think -# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -# ---------------------------------------------------------------------------- -# -# $FreeBSD$ -# -####################################################################### -# Generic procedures usable in the process of gnu-to-bmake jobs. -# - -####################################################################### -# sh -- execute command. -# argv[1] shell command to execute. -# -proc sh {cmd} { - puts stdout "+ $cmd" - flush stdout - exec sh -e -c $cmd >&@ stdout -} - -####################################################################### -# cp -- execute cp(1) -# argv arguments to cp(1) -# -proc cp {args} { - sh "cp $args" -} - -####################################################################### -# copy_l -- Copy list of files, try to make(1) them if missing. -# argv[1] source directory -# argv[2] destination directory -# argv[3] list of filenames -# -proc copy_l {src dst files} { - foreach f $files { - if {![file exists $src/${f}]} { - sh "cd $src ; set +e ; make ${f}" - } - if {![file exists $src/${f}]} { - error "Couldn't produce ${f} in $src" - } - cp $src/${f} $dst - } -} - -####################################################################### -# copy_c -- Copy list of .c files, try to make(1) them if missing. -# argv[1] source directory -# argv[2] destination directory -# argv[3] list of filenames, with or without .c suffixes. -# -proc copy_c {src dst files} { - regsub -all {\.c} $files {} files - foreach f $files { - if {![file exists $src/${f}.c]} { - sh "cd $src ; set +e ; make ${f}.c ; exit 0" - } - if {![file exists $src/${f}.c]} { - sh "cd $src ; set +e ; make ${f}.o ; exit 0" - } - if {![file exists $src/${f}.c]} { - error "Couldn't produce ${f}.c in $src" - } - cp $src/${f}.c $dst - } -} - -####################################################################### -# find_source -- Return a list of sourcefiles. -# argv[1] source directory -# argv[2] source list. -# argv[3] list of extensions -# -proc find_source {dir files ext} { - set l "" - foreach f $files { - set k "" - foreach i $ext { - if {[file exists $dir/${f}${i}]} { set k ${f}${i} ; break } - } - if {$k == ""} { - error "cannot find source for $f using extensions <$ext>" - } - lappend l $k - } - return $l -} - -####################################################################### -# zap_suffix -- remove suffixes from list if filenames -# argv[1] list of filenames -# argv[2] (optional) regex matching suffixes to be removed, -# default removes all known suffixes, (AND warts too!). -# -proc zap_suffix {lst {suf {\.cc$|\.[cyolhsxS]$}}} { - set a "" - foreach i $lst { - regsub -all $suf $i {} i - lappend a $i - } - return $a -} - -####################################################################### -# add_suffix -- add suffixes to list if filenames -# argv[1] list of filenames -# argv[2] string to add. -# -proc add_suffix {lst suf} { - set l "" - foreach i $lst {lappend l ${i}${suf}} - return $l -} - -####################################################################### -# add_prefix -- add prefixes to list if filenames -# argv[1] list of filenames -# argv[2] string to add. -# -proc add_prefix {lst prf} { - set l "" - foreach i $lst {lappend l ${prf}${i}} - return $l -} - -####################################################################### -# basename -- removes directory-prefixes from list of names. -# argv[1] list of filenames -# -proc basename {lst} { - set l "" - foreach i $lst {regsub {.*/} $i {} i ; lappend l $i} - return $l -} - -####################################################################### -# makefile_macro -- return the contents of a Makefile macro -# argv[1] name of macro -# argv[2] source directory -# argv[3] (optional) name of makefile -# -proc makefile_macro {macro dir {makefile Makefile}} { - # Nobody will miss a core file, right ? - sh "cd $dir ; cp $makefile make.core" - set f [open $dir/make.core a] - puts $f "\n\nGNU2TCL_test:\n\t@echo \$\{$macro\}" - close $f - set a [exec sh -e -c "cd $dir ; make -f make.core GNU2TCL_test"] - sh "rm -f $dir/make.core" - return $a -} - -####################################################################### -# mk_prog -- Make a directory and Makefile for a program. -# argv[1] name of the parent-directory -# argv[2] name of the program -# argv[3] list of .c files (the SRCS macro content). -# argv[4] (optional) list of lines for the Makefile -# -proc mk_prog {ddir name list {make ""}} { - sh "mkdir $ddir/$name" - set f [open $ddir/$name/Makefile w] - puts $f "#\n# \$FreeBSD$\n#\n" - puts $f "PROG =\t$name" - puts $f "SRCS =\t[lsort $list]" - foreach i $make {puts $f $i} - puts $f "\n.include <bsd.prog.mk>" - close $f -} - -####################################################################### -# mk_lib -- Make a directory and Makefile for a library -# argv[1] name of the parent-directory -# argv[2] name of the library -# argv[3] list of .c files (the SRCS macro content). -# argv[4] (optional) list of lines for the Makefile -# -proc mk_lib {ddir name list {make ""}} { - sh "mkdir $ddir/$name" - set f [open $ddir/$name/Makefile w] - puts $f "#\n# \$FreeBSD$\n#\n" - puts $f "SRCS =\t[lsort $list]" - puts $f "LIB =\t$name" - foreach i $make {puts $f $i} - puts $f "\n.include <bsd.lib.mk>" - close $f -} - -####################################################################### -# common_set -- Return the files common to a list of lists. -# argv[] lists of filenames -# -proc common_set {args} { - set a(0) 0 ; unset a(0) - foreach i $args { - foreach j $i {if {[catch {incr a($j)} k]} {set a($j) 1}} - } - set j "" - foreach i [array names a] { - if {$a($i) > 1} {lappend j $i} - } - return $j -} - -####################################################################### -# reduce_by -- Remove elements from list, if present in 2nd list. -# argv[1] lists of filenames -# argv[2] lists of filenames to be removed. -# -proc reduce_by {l1 l2} { - set a(0) 0 ; unset a(0) - foreach j $l1 { if {[catch {incr a($j)} k]} {set a($j) 1} } - foreach j $l2 { catch {unset a($j)} } - return [array names a] -} |