#!/usr/bin/perl -w use strict qw(vars) ; require 5.006 ; use ExtUtils::MakeMaker ; use ExtUtils::Embed ; use Config ; use File::Copy ; no warnings ; BEGIN { eval { require File::Spec::Functions ; File::Spec::Functions->import() } ; if ($@) { *catfile = sub { return "$_[0]/$_[1]" } } } if ( $ARGV[0] =~ /renametree/i ) { renametree( $ARGV[1] , $ARGV[2] ) ; exit; } ######## # NAME # ######## my $NAME = 'PLDelphi' ; my $VERSION = '0.02' ; ####### # EXT # ####### my $dll = ".$Config{so}" ; my $o = $Config{_o}; my $LIBNAME = ($dll =~ /\.(?:so|o)$/) ? "lib$NAME" : $NAME ; ######### # FILES # ######### my $C_FILES = "$NAME.c" ; my $O_FILES = "$NAME$o" ; my $INTERFACE = "$NAME.i" ; my $CLEAN_FILES = "$LIBNAME$dll" ; #opendir (DIRLOG, '.'); #while (my $filename = readdir DIRLOG) { $DELPHI_FILES .= " $filename" if $filename =~ /\.pas$/ ;} #closedir (DIRLOG); ######## # VARS # ######## my $debug = 0; my $pccflags = ccopts; my $pldflags = ldopts; my $ld = $Config{ld}; my $cc = $Config{cc}; chomp($pldflags) ; my( $out, $ccdebug, $lddebug , $ldlnk , $warn, $rm, $mv ); my $is_MSVC = $cc =~ m/^cl/; if( $is_MSVC ) { $out = '-out:'; $ccdebug = $debug ? '-Zi ' : ''; $lddebug = $debug ? '-debug ' : '-release '; $warn = '-W3'; $ldlnk = '' ; } else { $out = '-o '; $ccdebug = $debug ? '-g ' : ''; $lddebug = $debug ? '' : '-s '; $warn = '-Wall -Wno-comments '; $ldlnk = ' -shared' ; } $rm = $^O eq 'MSWin32' ? '$(PERL) -MExtUtils::Command -e rm_f' : 'rm'; $mv = $^O eq 'MSWin32' ? '$(PERL) -MExtUtils::Command -e mv' : 'mv'; my $cflags = "$ccdebug$warn$pccflags"; my $ldflags = "$lddebug$pldflags$ldlnk"; my $includes = '' ; ################## # CREATE LIB DIR # ################## ################# # WRITEMAKEFILE # ################# print "Writing Makefile for $NAME\n"; open OUT, "> Makefile" or die "open 'Makefile': $!"; print OUT < '' , \%{ maniread('MANIFEST-BUILT') } } ,'built');" .SUFFIXES: $o EOT ############## # RENAMETREE # ############## sub renametree { my $basedir = $_[0] || './basiclib' ; my $ext = exists $_[1] ? $_[1] : 'txt' ; $ext =~ s/\W//gs ; $ext = "-$ext" if $ext ; my @dir = catdir($basedir , 0,1,1) ; foreach my $dir_i ( @dir ) { my $new_file = $dir_i ; $new_file =~ s/\.(\w+)(?:-\w+)?$/.$1$ext/ ; rename($dir_i , $new_file) ; ##print "$dir_i >> $new_file\n" ; } } ########## # CATDIR # (DIR , CUT_BASE , RECURSIVE , ONLY_FILES) ########## sub catdir { my ( $dir , $cut , $r , $f ) = @_ ; my @files ; my @DIR = $dir ; foreach my $DIR ( @DIR ) { my $DH ; opendir ($DH, $DIR); while (my $filename = readdir $DH) { if ($filename ne "\." && $filename ne "\.\.") { my $file = "$DIR/$filename" ; if ($r && -d $file) { push(@DIR , $file) ;} else { if (!$f || !-d $file) { $file =~ s/^\Q$dir\E\/?//s if $cut ; push(@files , $file) ; } } } } closedir ($DH) ; } return( @files ) ; } ####### # END # #######