############################# 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 = "reLyXmain.pl";
+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
# Create a list of possible directories to look in. Non-existent directories
# are OK, but empty or undefined values will make 'use lib' complain
-my $i = 0;
+
# case 1: for developers, e.g. - reLyX and $mainscript in same directory
-$maybe_dir[$i++] = ".";
-# case 2: environment variable LYX_DIR_12 has been set
-if (exists $ENV{LYX_DIR_10x}) { $maybe_dir[$i++] = "$ENV{LYX_DIR_10x}/reLyX"};
-# case 3: ran make but not make install.
-$maybe_dir[$i++] = "$dir/$srcdir";
+push @maybe_dir, "$dir";
+# case 2: ran make but not make install.
+push @maybe_dir, "$dir/$srcdir";
+# case 3: environment variable LYX_DIR_14x has been set
+if (exists $ENV{LYX_DIR_14x}) { push @maybe_dir, "$ENV{LYX_DIR_14x}/reLyX"};
# case 4: e.g., reLyX in /opt/bin, $mainscript in /opt/share/lyx/reLyX
-$maybe_dir[$i++] = "$dir/../share/$lyxname/reLyX"; # case 4
-# case 5: configure figured out where $mainscript is
-$maybe_dir[$i++] = "$lyxdir/reLyX";
+push @maybe_dir, "$dir/../share/$lyxname/reLyX"; # case 4
+# case 5: LyX/Mac -- reLyX is in a MacOS X application bundle
+push @maybe_dir, "$dir/../Resources/LyX/reLyX"; # case 5
+# case 6: 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 @maybe_dir;
+use lib $relyxdir;
# Now run the script. Perl will look in @INC to find the script (and
# other modules that $mainscript calls)