#!@PERL@ # This file is part of reLyX # Copyright (c) 1998-9 Amir Karger karger@post.harvard.edu # You are free to use and modify this code under the terms of # the GNU General Public Licence version 2 or later. ############################# reLyX wrapper use strict; use File::Basename; use Cwd 'abs_path'; $^W = 1; # same as 'perl -w' # Variables to make global, so subroutines can use them use vars qw($lyxdir $lyxname); my (@maybe_dir); my $mainscript; my $relyxdir; # Do this in a BEGIN block so it's done before the 'use lib' below BEGIN{ # Variables may not be assigned before the BEGIN block $mainscript = "reLyXmain.pl"; # This points to LyX library dir, e.g. /usr/local/share/lyx $lyxdir = "@LYX_DIR@"; # This is just "." if you compiled from the source directory my $srcdir = "@srcdir@"; # This is the name of the program, usually just "lyx" $lyxname = "@PACKAGE@"; # The name under which reLyX was invoked my $name = $0; # resolve any links to dirname while (defined (readlink($name))) {$name = readlink($name)}; my $dir = &dirname($name); # Create a list of possible directories to look in. Non-existent directories # are OK, but empty or undefined values will make 'use lib' complain # case 1: for developers, e.g. - reLyX and $mainscript in same directory push @maybe_dir, "$dir"; # case 2: ran make but not make install. push @maybe_dir, "$dir/$srcdir"; # case 3: environment variable LYX_DIR_12x has been set if (exists $ENV{LYX_DIR_12x}) { push @maybe_dir, "$ENV{LYX_DIR_12x}/reLyX"}; # case 4: e.g., reLyX in /opt/bin, $mainscript in /opt/share/lyx/reLyX push @maybe_dir, "$dir/../share/$lyxname/reLyX"; # case 4 # case 5: configure figured out where $mainscript is push @maybe_dir, "$lyxdir/reLyX"; # Decide which one is the real directory, based on the existence of # "$dir/$mainscript" my $found=0; foreach $dir (@maybe_dir) { if( -e "$dir/$mainscript" ) { $lyxdir = abs_path("$dir/.."); $relyxdir = abs_path($dir); $found = 1; last; } } if(!$found) { print "reLyX directory not found.\n"; exit(1); } else { ##just for debug purpose, remove for stable version print "reLyX directory is: $relyxdir\n"; } } # end BEGIN block # Now put those directories into @INC use lib $relyxdir; # Now run the script. Perl will look in @INC to find the script (and # other modules that $mainscript calls) require $mainscript; # require includes and runs the code... exit; ############################ end reLyX wrapper