diff options
Diffstat (limited to 'tmake/bin/progen.bat')
-rw-r--r-- | tmake/bin/progen.bat | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/tmake/bin/progen.bat b/tmake/bin/progen.bat deleted file mode 100644 index 54475ee..0000000 --- a/tmake/bin/progen.bat +++ /dev/null @@ -1,266 +0,0 @@ -@rem = '--*-PERL-*--'; -@rem = ' -@echo off -rem setlocal -set ARGS= -:loop -if .%1==. goto endloop -set ARGS=%ARGS% %1 -shift -goto loop -:endloop -rem ***** This assumes PERL is in the PATH ***** -perl.exe -S progen.bat %ARGS% -goto endofperl -@rem '; -#!/usr/bin/perl -############################################################################ -# $Id$ -# -# Generates a tmake project file. -# -# Copyright (C) 1996-1998 by Troll Tech AS. All rights reserved. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation for any purpose and without fee is hereby granted, provided -# that this copyright notice appears in all copies. -# No representations are made about the suitability of this software for any -# purpose. It is provided "as is" without express or implied warranty. -# -############################################################################ - -# Default project settings -$project{"TEMPLATE"} = "app"; -$project{"CONFIG"} = "qt warn_on release"; - -@project_extra = (); - -while ( @ARGV ) { # parse command line args - $_ = shift @ARGV; - if ( s/^-// ) { - if ( /^o(.*)/ ) { - $outfile = ($1 eq "") ? shift @ARGV : $1; - ($outfile eq "-") && ($outfile = ""); - } elsif ( /^n(.*)/ ) { - $project{"TARGET"} = ($1 eq "") ? shift @ARGV : $1; - } elsif ( /^t(.*)/ ) { - $project{"TEMPLATE"} = ($1 eq "") ? shift @ARGV : $1; - $project{"TEMPLATE"} =~ s/\.t$//i; - } elsif ( /lower/ ) { - $tolower = 1; - } else { - &progen_usage; - } - } elsif ( /^\s*(?:[\w\-]+:)?\w+\s*[\+\-\*\/]?=/ ) { # project override - push( @project_extra, $_ ); - } else { - push (@files, $_ ); - } -} - -$outfile eq "" || open(STDOUT,">" . $outfile) || - &progen_error("Can't create \"$outfile\""); - -if ( ! @files ) { - @files = &find_files(".",".*",1); -} - -if ( $tolower ) { - foreach $f ( @files ) { - $f =~ tr/A-Z/a-z/; - } -} - -@hdr = sort grep(/\.(h|hh|hpp|hxx)$/i,@files); -@src = sort grep(/\.(c|cpp|cc|cxx)$/i && ! /moc_/i,@files); - -# Remove source files that are included by other source files -foreach $f ( @src ) { - $srcdict{$f} = 1; -} -foreach $f ( @src ) { - if ( open(F,"< $f") ) { - while ( <F> ) { - if ( /^\s*#\s*include\s+\"([^\"]*)\"/ ) { - $srcdict{$1} = 0; - } - } - } -} -foreach $f( @src ) { - $srcdict{$f} && (push(@src2,$f)); -} -@src = @src2; - -$project{"HEADERS"} = join(" ",sort @hdr); -$project{"SOURCES"} = join(" ",sort @src); - -foreach $p ( @project_extra ) { - if ( $p =~ /^\s*((?:[\w\-]+:)?\w+)\s*([\+\-\*\/])?=\s*(.*)/ ) { - if ( $project{$1} ne "" ) { - Project($p); - } - } -} - -$project{"HEADERS"} =~ s/\s+/ \\\n\t\t /g; -$project{"SOURCES"} =~ s/\s+/ \\\n\t\t /g; - -print "TEMPLATE\t= " . $project{"TEMPLATE"} . "\n"; -print "CONFIG\t\t= " . $project{"CONFIG"} . "\n"; -print "HEADERS\t\t= " . $project{"HEADERS"} . "\n"; -print "SOURCES\t\t= " . $project{"SOURCES"} . "\n"; -if ( $project{"TARGET"} ne "" ) { - print "TARGET\t\t= " . $project{"TARGET"} . "\n"; -} - -foreach ( @project_extra ) { - if ( /^\s*((?:[\w\-]+:)?\w+)\s*([\+\-\*\/])?=\s*(.*)/ ) { - if ( $project{$1} eq "" ) { - $t = $1; - if ( length($t) < 8 ) { - $t .= "\t\t"; - } elsif ( length($t) < 16 ) { - $t .= "\t"; - } else { - $t .= " "; - } - print "$t$2= $3\n"; - } - } -} - -exit 0; - - -# -# progen_usage() -# -# Prints a message about program usage and exits -# - -sub progen_usage { - print STDERR "Usage:\n progen [options] [files]\n"; - print STDERR "Options:\n"; - print STDERR " -lower Lower-case letters filenames (useful for non-Unix)\n"; - print STDERR " -n name Specify a project name (= TARGET)\n"; - print STDERR " -o file Write output to \"file\"\n"; - print STDERR " -t file Specify a template file other than qtapp\n"; - exit 1; -} - - -# -# progen_error(msg) -# -# Prints the message and exits -# - -sub progen_error { - my($msg) = @_; - print STDERR "progen error: " . $msg . "\n"; - exit 1; -} - - -# -# Finds files. -# -# Examples: -# find_files("/usr","\.cpp$",1) - finds .cpp files in /usr and below -# find_files("/tmp","^#",0) - finds #* files in /tmp -# - -sub find_files { - my($dir,$match,$descend) = @_; - my($file,$p,@files); - local(*D); - $dir =~ s=\\=/=g; - ($dir eq "") && ($dir = "."); - if ( opendir(D,$dir) ) { - if ( $dir eq "." ) { - $dir = ""; - } else { - ($dir =~ /\/$/) || ($dir .= "/"); - } - foreach $file ( readdir(D) ) { - next if ( $file =~ /^\.\.?$/ ); - $p = $dir . $file; - ($file =~ /$match/i) && (push @files, $p); - if ( $descend && -d $p && ! -l $p ) { - push @files, &find_files($p,$match,$descend); - } - } - closedir(D); - } - return @files; -} - - -# -# strip_project_val(tag) -# -# Strips white space from project value strings. -# - -sub strip_project_val { - my($v) = @_; - $v =~ s/^\s+//; # trim white space - $v =~ s/\s+$//; - return $v; -} - - -# -# Project(strings) -# -# This is a powerful function for setting or reading project variables. -# Returns the resulting project variables (joined with space between). -# -# This is a slightly modified version of the Project function in tmake. - -sub Project { - my @settings = @_; - my($r,$t,$s,$v,$p,$c); - $r = ""; - foreach ( @settings ) { - $v = $_; - if ( $v =~ s/^\s*((?:[\w\-]+:)?\w+)\s*(\+=|\*=|\-=|\/=|=)\s*// ) { - $t = $1; - $s = $2; - $v = strip_project_val($v); - $p = $project{$t}; - if ( $s eq "=" ) { # set variable - $p = $v; - } elsif ( $s eq "+=" ) { # append - if ( $p eq "" ) { - $p = $v; - } else { - $p .= " " . $v; - } - } elsif ( $s eq "*=" ) { # append if not contained - if ( !($p =~ /(?:^|\s)\Q$v\E(?:\s|$)/) ) { - if ( $p eq "" ) { - $p = $v; - } else { - $p .= " " . $v; - } - } - } elsif ( $s eq "-=" ) { # subtract - $p =~ s/$v//g; - } elsif ( $s eq "/=" ) { # sed - $cmd = '$p =~ ' . $v; - eval $cmd; - } - $project{$t} = strip_project_val($p); - } else { - $p = strip_project_val($project{$v}); - } - if ( $p ne "" ) { - $r = ($r eq "") ? $p : ($r . " " . $p); - } - } - return $r; -} -__END__ -:endofperl |