#-*- perl -*- # Copyright (C) 2000-2005 R Development Core Team # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # A copy of the GNU General Public License is available via WWW at # http://www.gnu.org/copyleft/gpl.html. You can also obtain it by # writing to the Free Software Foundation, Inc., 51 Franklin Street, # Fifth Floor, Boston, MA 02110-1301 USA. # Send any bug reports to r-bugs@r-project.org use Cwd; use File::Basename; use File::Path; use Getopt::Long; use R::Utils; my $revision = ' $Rev$ '; my $version; my $name; $revision =~ / ([\d\.]*) /; $version = $1; ($name = $0) =~ s|.*/||; my @knownoptions = ("help|h", "version|v", "output|o:s", "debug|d"); GetOptions (@knownoptions) || usage(); R_version($name, $version) if $opt_version; usage() if $opt_help; my $R_HOME = $ENV{'R_HOME'} || die "Error: Environment variable R_HOME not found\n"; my $debug; $debug = "DEBUG=T" if($opt_debug); my $dllname; if($opt_output){ $dllname = $opt_output; $dllname =~ s/\.dll$//; } else { $dllname = $ARGV[0]; $dllname =~ s/\.[^\.]+$//; } my @cfsrcs, @csrcs, @cxxsrcs; foreach $src (@ARGV) { if ($src =~ /\.(cc|cpp|C)$/) { push @cxxsrcs, $src; } elsif ($src =~ /\.c$/) { push @csrcs, $src; push @cfsrcs, $src; } elsif ($src =~ /\.(f90|f95)$/) { push @cfsrcs, $src; } else { push @cfsrcs, $src; } } my $srcs=join(" ", @cfsrcs); my $csrcs=join(" ", @csrcs); my $cxx=join(" ", @cxxsrcs); my $makefiles = "-f $R_HOME/src/gnuwin32/MakeDll"; ## Rcmd.exe ensures HOME is set if (-r "$HOME/.R/Makevars.win32") { $makefiles="$makefiles -f \"$HOME/.R/Makevars.win\""; } elsif (-r "$HOME/.R/Makevars") { $makefiles="$makefiles -f \"$HOME/.R/Makevars\""; } system("make -$makefiles RHOME=$R_HOME $debug DLLNAME=$dllname CSOURCES='$csrcs' CFSOURCES='$srcs' CXXSOURCES='$cxx' RCOBJ="); sub usage { print STDERR <. END exit 0; }