summaryrefslogtreecommitdiff
path: root/Build/source/mswin32/build.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/mswin32/build.pl')
-rw-r--r--Build/source/mswin32/build.pl452
1 files changed, 0 insertions, 452 deletions
diff --git a/Build/source/mswin32/build.pl b/Build/source/mswin32/build.pl
deleted file mode 100644
index 14606ad76f9..00000000000
--- a/Build/source/mswin32/build.pl
+++ /dev/null
@@ -1,452 +0,0 @@
-#
-# Build tool for Web2C & supp
-# Author: F. Popineau
-# Date : 04/11/98
-# Time-stamp: <04/03/19 00:52:22 popineau>
-#
-# Usage:
-# build <option>
-# [--static] builds/cleans up statically
-# [--debug] builds/cleans up in debug mode
-# [--depend] updates dependencies
-# [--clean] cleans up
-# [--distclean] removes everything that can be rebuild (needs to configure again)
-# [--dir <dir>] only in <dir> (relative to top !)
-# [--install] installs what has been built (incompaible with clean up targets)
-# [--from-scratch] full build, removes everything from the destination tree.
-# [--log <file>] logs everything onto <file>
-#
-# Hope these options are clear enough. This is a wrapper to nmake calls.
-#
-
-BEGIN {
-push @INC, 'c:/source/TeXLive/Master/Tools';
-}
-
-require "newgetopt.pl";
-use lib qw (. ./msvc);
-use FileUtils qw(canon_dir cleandir make_link newpath
- normalize substitute_var_val dirname
- rec_rmdir sync_dir walk_dir start_redirection
- stop_redirection sync_dir);
-use Tpm;
-use Cwd;
-use Time::gmtime;
-
-# list if functions to be called before nmake is run
-@prepare_func_list = ( );
-
-$fpTeXVersion = "0.7";
-$FtpDir = "c:/InetPub/ftp/fptex/$fpTeXVersion";
-
-$Gm = gmtime();
-$Date = sprintf("%02d-%02d-%02d", $Gm->year() + 1900, $Gm->mon(), $Gm->wday());
-# root directory
-$topdir = &dirname(cwd());
-$win32_dir = "$topdir/mswin32";
-$msvc_dir = "$topdir/texk/msvc";
-$tpmdir = "$win32_dir/factory/texmf-dist/tpm";
-$zipsrc_name = "$FtpDir/sources/fptex-$fpTeXVersion-$Date.zip";
-$destdir="c:/Program Files/TeXLive";
-$logfile = "";
-
-# the directories for which we build standalone packages
-# (aka: no DLL)
-@src_standalone = ( "libs/libgnuw32", "libs/libgsw32", "libs/geturl",
- "libs/zlib", "libs/libpng", "libs/jpeg", "libs/xpdf",
- "utils/bzip2", "utils/gzip", "utils/jpeg2ps",
- "texk/kpathsea", "texk/contrib",
- "texk/web2c",
- "texk/windvi", "texk/dvipsk",
- "texk/odvipsk", "texk/owindvi",
- "texk/gsftopk", "texk/tex4htk",
- "texk/dvipdfm", "texk/dvipdfmx",
- "utils/lcdf-typetools"
- );
-
-# list of directories in $(prefix) that will be created by nmake
-# and that will be removed before anything if asking to install `from_scratch'
-@fptex_dirs = ( "bin", "include", "lib", "setupw32" );
-
-# directories that should not end up in the zip archive
-# of sources
-@zipsrc_exclude_dirs = (
- "/(dynamic|dynamic-debug|static|static-debug|Release|Debug)\$",
- "/win32/(diff|setupw32|factory|ttfinst|worked-on)\$",
- "/win32/(deutsch|english|fptex.old|french|labels|slovak|tds)\$",
- "/utils/rxp-1.2\$",
- "/texk/(ltx2rtf-old|windvi-0.68|texdoctk-0.3.0|texdoctk-0.4.0)\$"
- );
-
-@zipsrc_exclude_patterns = (
- "\.(obj|dll|exe|opt)\$",
- "~\$"
-);
-
-
-&main;
-
-1;
-
-sub help
-{
- print "Usage: build [options]\n";
- print "\n";
- print " --dir <path> Apply to the subdir <path> (relative);\n";
- print " --log <file> Redirect stdin and stderr in <file>\n";
- print " --static Build statically linked versions;\n";
- print " --debug Build debug versions;\n";
- print " --sync Sync up with master;\n";
- print " --standalone Build standalone packages (ie: static, nodebug);\n";
- print " --zipsrc(=clean) Build a source archive, (possibly cleaning the tree before);\n";
- print "\n";
- print " Targets :\n";
- print " <none> Compiles;\n";
- print " --clean Clean up last build (only compilation);\n";
- print " --distclean Clean up last build (everything, must configure again);\n";
- print " --build Build everything;\n";
- print " --install Install everything build;\n";
- print " These targets are exclusive !\n";
- print "\n";
- print " --from_scratch Use with --install and --build only,\n";
- print " will remove everything from <prefix> directory,\n";
- print " --prefix Used with --install only,\n";
- print " will change temporarily the <prefix> directory,\n";
- print "\n";
- print " Support commands:\n";
- print " --help displays this help text and exits\n";
- print " --verbose some more messages\n";
-}
-
-sub read_config_var
-{
- local($file, $varname) = @_;
- local($val);
- open VER, "<$file";
- while (<VER>) {
- if ($_ =~ m/^$varname\s*=\s*(.*)$/) {
- $val = $1;
- }
- }
- close VER;
- return $val;
-}
-
-sub make_absolute
-{
- local ($rel) = @_;
- local ($current, $abs);
- $current = cwd();
- chdir $rel;
- $abs = cwd();
- print "current = $current, rel = $rel, abs = $abs\n";
- chdir $current;
- return $abs;
-}
-
-sub from_scratch
-{
- local ($d, $prefix, $l, $highest, $srcdir, $dstdir);
-
- $prefix = &read_config_var("$msvc_dir/paths.mak", "prefix");
- $prefix = &canon_dir($prefix, '\\');
- print "Prefix directory is $prefix .\n" if $opt_verbose;
-
- # Removing every fpTeX thing from prefix directory
- foreach $d ( @fptex_dirs ) {
- if (-d "$prefix\\$d") {
- &cleandir("$prefix\\$d");
- rmdir "$prefix\\$d";
- }
- }
-
- # Add an option to sync up with the TeXLive texmf tree
-}
-
-sub mask_env {
- $ENV{"SystemDrive"} = "foo";
- $ENV{"TEXMFCNF"} = "foo";
- $ENV{"TEXMFMAIN"} = "foo";
-# $ENV{"TEXMF"} = "foo";
- $ENV{"LATEX2HTML"} = "foo";
- $ENV{"GROFF_TMAC_PATH"}="foo";
- $ENV{"GROFF_FONT_PATH"}="foo";
-}
-
-sub ziplist {
- my ($dir, @l) = @_;
- $dir =~ s@\\@/@g;
- map {
- if (! -d "$dir/$_") {
- for $pattern (@zipsrc_exclude_patterns) {
- if ("$dir/$_" =~ m@$pattern@i) {
- goto suivant;
- }
- }
- print STDERR "$dir/$_\n" if ($opt_verbose);
- print ZIP "$dir/$_\n";
- }
- suivant:
- } @l;
-}
-
-sub zipprune {
- my ($dir) = @_;
- $dir =~ s@\\@/@g;
- map {
- if ($dir =~ m@$_@) {
- print STDERR "Pruning $dir...\n" if ($opt_verbose);
- return 1;
- }
- } @zipsrc_exclude_dirs;
- return 0;
-}
-
-sub do_zipsrc {
- unlink $zipsrc_name if (-f $zipsrc_name);
- open ZIP, "| zip -9\@or " . $zipsrc_name . " > nul";
- &walk_dir($topdir, \&ziplist, \&zipprune);
- close ZIP;
-}
-
-sub do_standalone {
- local($cmd, $cwd);
-
- # make the static binaries needed
- print STDERR "Installing in $prefix\n";
-
- &mask_env;
-
- &start_redirection($logfile);
-
- my $devel_flag = " DEVELOPMENT=1 " if ($opt_development);
- for $d (@src_standalone) {
- $d =~ s/texk/texk.development/ if ($opt_development);
- my $cwd = &getcwd;
- print "Changing directory to $topdir/${d}\n" if $opt_verbose;
- chdir("$topdir/${d}");
- $cmd = "nmake -f win32.mak NODEBUG=1 STATIC=1 ${devel_flag} all";
- print "Running $cmd\n" if $opt_verbose;
- system($cmd);
- $cmd = "nmake -f win32.mak NODEBUG=1 STATIC=1 ${devel_flag} install";
- print "Running $cmd\n" if $opt_verbose;
- system($cmd);
- chdir($cwd)
- }
-
- &stop_redirection($logfile);
-}
-
-sub do_sync {
-
- $cmd = "p4 sync";
- system($cmd);
-
- &sync_dir("$masterdir/texmf-dist", "$destdir/texmf-dist");
- &sync_dir("$masterdir/texmf", "$destdir/texmf");
- &sync_dir("$masterdir/texmf/web2c", "$destdir/texmf-var/web2c");
-
-}
-
-sub main {
-
- local ($changed_prefix);
-
- unless (&NGetOpt ("static", "debug",
- "clean", "distclean:s" ,
- "depend","from_scratch",
- "build:s", "install:s",
- "zipsrc:s",
- "standalone", "sync",
- "development",
- "dir=s", "log=s", "prefix=s",
- "verbose", "help"))
- {
- print STDERR "Try `configure --help'";
- exit 1;
- }
-
- if ($opt_help) {
- &help;
- exit 0;
- }
-
- $prefix = &read_config_var("$msvc_dir/paths.mak", "prefix");
-
- if ($opt_log) {
- $logfile = "$win32_dir\\$opt_log";
- if (! $opt_log =~ /\.log$/) {
- $opt_log .= ".log";
- }
- }
-
-# $topdir .= "/source";
-# if ($opt_development) {
-# $topdir .= ".development";
-# }
-
-# $win32_dir = eval($win32_dir);
-# $tpmdir = eval($tpmdir);
-
- if ($opt_standalone) {
- &do_standalone;
- exit 0;
- }
-
- if (defined($opt_zipsrc) && $opt_zipsrc ne "clean") {
- &do_zipsrc;
- exit 0;
- }
- if (defined($opt_zipsrc) && $opt_zipsrc eq "clean") {
- $opt_distclean = 1;
- }
-
- # build the command line
- $prog = "nmake -f win32.mak ";
- $prog .= "verbose=on " if ($opt_verbose);
- if ($opt_debug eq '') {
- $prog .= "NODEBUG=1 ";
- }
- if ($opt_static) {
- $prog .= "STATIC=1 ";
- }
-
- if ($opt_development) {
- $prog .= "DEVELOPMENT=1 ";
- }
-
- if ($opt_depend) {
- $prog .= "MAINT=1 ";
- $target = "depend ";
- }
- if (defined($opt_build)) {
- if ($target ne '') {
- print "Conflicting targets : $target and build\n";
- return 1;
- }
- $target = "all ";
- if ($opt_from_scratch) {
- push @prepare_func_list , ( \&from_scratch );
- }
- $target = "XEMTEX=1 $target" if ($opt_build =~ m/xemtex/i);
- $target = "NETPBM=1 $target" if ($opt_build =~ m/^netpbm$/i);
- $target = "GNU=1 $target" if ($opt_build =~ m/^gnu$/i);
- print "target = $target\n";
- }
- if (defined($opt_install)) {
- if ($target ne '') {
- print "Conflicting targets : $target and install\n";
- return 1;
- }
- $target = "install ";
- if ($opt_from_scratch) {
- push @prepare_func_list , ( \&from_scratch );
- }
- $target = "XEMTEX=1 $target" if ($opt_install =~ m/xemtex/i);
- $target = "NETPBM=1 $target" if ($opt_install =~ m/^netpbm$/i);
- $target = "GNU=1 $target" if ($opt_install =~ m/^gnu$/i);
- print "target = $target\n";
- }
- if ($opt_clean) {
- if ($target ne '') {
- print "Conflicting targets : $target and clean\n";
- return 1;
- }
- $target = "clean ";
- }
- if (defined($opt_distclean)) {
- if ($target ne '') {
- print "Conflicting targets : $target and distclean\n";
- return 1;
- }
- $prog .= "MAINT=1 ";
- $target = "distclean ";
- $target = "XEMTEX=1 $target" if ($opt_distclean =~ m/xemtex/i);
- $target = "NETPBM=1 $target" if ($opt_distclean =~ m/^netpbm$/i);
- $target = "GNU=1 $target" if ($opt_distclean =~ m/^gnu$/i);
- print "target = $target\n";
- }
-
- if ($target eq '') {
- print "No target specified.\nEnd.\n";
- exit 0;
- }
-
- if ($opt_prefix) {
- if ($target ne "install ") {
- print STDERR "$0: --prefix option ignored, wrong target.\n";
- }
- elsif (! -d $opt_prefix) {
- print STDERR "$0: $opt_prefix is not a directory, aborting.\n";
- exit 1;
- }
- else {
- $opt_prefix = &normalize($opt_prefix);
- if ($prefix ne $opt_prefix) {
- print STDERR "Replacing prefix $prefix with $opt_prefix.\n";
- @old_prefix = &substitute_var_val("$msvc_dir/paths.mak",
- "prefix", "$opt_prefix");
- $changed_prefix = 1;
- $old_prefix = $prefix;
- $prefix = $opt_prefix;
- }
- }
- }
-
- print STDERR "Installing in $prefix\n";
-
- &mask_env;
-
- $prog .= $target;
-
- $buildir = $topdir;
-
- if ($opt_dir) {
- $buildir .= "\\$opt_dir";
- }
-
- print STDERR "buildir = $buildir\n";
-
- if (-d $buildir) {
- chdir $buildir;
- }
- else {
- print "Non-existent dir: $opt_dir\n";
- return 1;
- }
-
- # start redirection if asked
- &start_redirection($logfile);
-
- if ($opt_sync) {
- &do_sync;
- }
-
- # Prepare functions
- for $f (@prepare_func_list) {
- if ($f) {
- &{$f};
- }
- }
-
- # Call the program
- #`$prog`;
- print STDOUT "Executing $prog in " . &getcwd . "\n";
- system($prog);
-
- # stop redirection
- stop_redirection($logfile);
-
- chdir $topdir;
-
- if ($#old_prefix > -1) {
- &substitute_var_val("$msvc_dir/paths.mk",
- "prefix", shift @old_prefix);
- }
-
- if ($opt_distclean && $opt_zipsrc) {
- &do_zipsrc;
- }
-
- print "This is the end!\n";
-}