| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 1 | : |
| Jan-Marek Glogowski | 806f4d8 | 2014-03-04 11:49:46 +0000 | [diff] [blame] | 2 | # |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 3 | # This script checks various configure parameters and uses three files: |
| 4 | # * autogen.input (ro) |
| 5 | # * autogen.lastrun (rw) |
| 6 | # * autogen.lastrun.bak (rw) |
| 7 | # |
| Andrea Gelmini | 64a3124 | 2017-08-17 16:41:20 +0200 | [diff] [blame] | 8 | # If _no_ parameters: |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 9 | # Read args from autogen.input or autogen.lastrun |
| 10 | # Else |
| 11 | # Backup autogen.lastrun as autogen.lastrun.bak |
| 12 | # Write autogen.lastrun with new commandline args |
| Jan-Marek Glogowski | 806f4d8 | 2014-03-04 11:49:46 +0000 | [diff] [blame] | 13 | # |
| 14 | # Run configure with checked args |
| 15 | # |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 16 | eval 'exec perl -S $0 ${1+"$@"}' |
| 17 | if 0; |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 18 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 19 | use strict; |
| Michael Meeks | 02f385b | 2012-03-29 17:27:08 +0100 | [diff] [blame] | 20 | use Cwd ('cwd', 'realpath'); |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 21 | use File::Basename; |
| 22 | |
| 23 | my $src_path=dirname(realpath($0)); |
| 24 | my $build_path=realpath(cwd()); |
| 25 | # since this looks crazy, if you have a symlink on a path up to and including |
| 26 | # the current directory, we need our configure to run in the realpath of that |
| 27 | # such that compiled (realpath'd) dependency filenames match the filenames |
| 28 | # used in our makefiles - ie. this gets dependencies right via SRC_ROOT |
| 29 | chdir ($build_path); |
| 30 | # more amazingly, if you don't clobber 'PWD' shells will re-assert their |
| 31 | # old path from the environment, not cwd. |
| 32 | $ENV{PWD} = $build_path; |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 33 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 34 | sub clean() |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 35 | { |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 36 | system ("rm -Rf autom4te.cache"); |
| 37 | system ("rm -f missing install-sh mkinstalldirs libtool ltmain.sh"); |
| Tor Lillqvist | ca0c54d | 2013-03-28 15:26:25 +0200 | [diff] [blame] | 38 | print "Cleaned the build tree\n"; |
| Jan Holesovsky | 5da12b1 | 2010-12-01 19:03:56 +0100 | [diff] [blame] | 39 | } |
| 40 | |
| Tor Lillqvist | e3a07b8 | 2011-07-03 17:05:14 +0300 | [diff] [blame] | 41 | my $aclocal; |
| Tor Lillqvist | 1739972 | 2011-07-03 10:52:21 +0300 | [diff] [blame] | 42 | |
| Michael Meeks | dd771be | 2011-05-30 15:23:15 +0100 | [diff] [blame] | 43 | # check we have various vital tools |
| 44 | sub sanity_checks($) |
| 45 | { |
| 46 | my $system = shift; |
| 47 | my @path = split (':', $ENV{'PATH'}); |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 48 | my %required = |
| 49 | ( |
| 50 | 'pkg-config' => "pkg-config is required to be installed", |
| 51 | 'autoconf' => "autoconf is required", |
| Tor Lillqvist | 1739972 | 2011-07-03 10:52:21 +0300 | [diff] [blame] | 52 | $aclocal => "$aclocal is required", |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 53 | ); |
| Michael Meeks | dd771be | 2011-05-30 15:23:15 +0100 | [diff] [blame] | 54 | |
| 55 | for my $elem (@path) { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 56 | for my $app (keys %required) { |
| Tor Lillqvist | 29a2abb | 2011-05-31 10:32:37 +0300 | [diff] [blame] | 57 | if (-f "$elem/$app") { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 58 | delete $required{$app}; |
| 59 | } |
| Michael Meeks | dd771be | 2011-05-30 15:23:15 +0100 | [diff] [blame] | 60 | } |
| 61 | } |
| Michael Meeks | dd771be | 2011-05-30 15:23:15 +0100 | [diff] [blame] | 62 | if ((keys %required) > 0) { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 63 | print ("Various low-level dependencies are missing, please install them:\n"); |
| 64 | for my $app (keys %required) { |
| Tor Lillqvist | 29a2abb | 2011-05-31 10:32:37 +0300 | [diff] [blame] | 65 | print "\t $app: " . $required{$app} . "\n"; |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 66 | } |
| 67 | exit (1); |
| Michael Meeks | dd771be | 2011-05-30 15:23:15 +0100 | [diff] [blame] | 68 | } |
| 69 | } |
| 70 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 71 | # one argument per line |
| 72 | sub read_args($) |
| Jan Holesovsky | 5da12b1 | 2010-12-01 19:03:56 +0100 | [diff] [blame] | 73 | { |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 74 | my $file = shift; |
| 75 | my $fh; |
| 76 | my @lst; |
| 77 | open ($fh, $file) || die "can't open file: $file"; |
| 78 | while (<$fh>) { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 79 | chomp(); |
| Stephan Bergmann | 2f9ee54 | 2018-01-18 15:25:58 +0100 | [diff] [blame] | 80 | s/^\s+//; |
| Christian Lohmaier | 86908b3 | 2014-05-30 11:18:20 +0200 | [diff] [blame] | 81 | s/\s+$//; |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 82 | # migrate from the old system |
| 83 | if ( substr($_, 0, 1) eq "'" ) { |
| Jan-Marek Glogowski | 806f4d8 | 2014-03-04 11:49:46 +0000 | [diff] [blame] | 84 | print STDERR "Migrating options from the old autogen.lastrun format, using:\n"; |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 85 | my @opts; |
| 86 | @opts = split(/'/); |
| 87 | foreach my $opt (@opts) { |
| 88 | if ( substr($opt, 0, 1) eq "-" ) { |
| 89 | push @lst, $opt; |
| Jan-Marek Glogowski | 806f4d8 | 2014-03-04 11:49:46 +0000 | [diff] [blame] | 90 | print STDERR " $opt\n"; |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 91 | } |
| 92 | } |
| Tor Lillqvist | e058530 | 2011-08-24 17:49:28 +0300 | [diff] [blame] | 93 | } elsif ( substr($_, 0, 1) eq "#" ) { |
| 94 | # comment |
| Isamu Mogi | 92e484c | 2013-07-20 09:45:36 +0900 | [diff] [blame] | 95 | } elsif ( length == 0 ) { |
| 96 | # empty line |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 97 | } else { |
| 98 | push @lst, $_; |
| Jan Holesovsky | b2a2b92 | 2011-04-06 08:48:26 +0200 | [diff] [blame] | 99 | } |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 100 | } |
| 101 | close ($fh); |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 102 | # print "read args from file '$file': @lst\n"; |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 103 | return @lst; |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 104 | } |
| 105 | |
| Stephan Bergmann | 4ecfc23 | 2017-05-17 10:24:00 +0200 | [diff] [blame] | 106 | sub show_distro_configs($$) |
| 107 | { |
| 108 | my ($prefix, $path) = @_; |
| 109 | my $dirh; |
| 110 | opendir ($dirh, "$path"); |
| 111 | while (($_ = readdir ($dirh))) { |
| 112 | if (-d "$path/$_") { |
| 113 | show_distro_configs( |
| 114 | $prefix eq "" ? "$_/" : "$prefix/$_/", "$path/$_") |
| 115 | unless $_ eq '.' || $_ eq '..'; |
| 116 | next; |
| 117 | } |
| 118 | /(.*)\.conf$/ || next; |
| 119 | print STDERR "\t$prefix$1\n"; |
| 120 | } |
| 121 | closedir ($dirh); |
| 122 | } |
| 123 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 124 | sub invalid_distro($$) |
| 125 | { |
| 126 | my ($config, $distro) = @_; |
| Stephan Bergmann | d21f976 | 2017-05-17 10:28:07 +0200 | [diff] [blame] | 127 | print STDERR "Can't find distro option set: $config\n"; |
| Tor Lillqvist | 47bca2f | 2011-04-08 13:28:48 +0300 | [diff] [blame] | 128 | print STDERR "Distros with distro option sets are:\n"; |
| Stephan Bergmann | 4ecfc23 | 2017-05-17 10:24:00 +0200 | [diff] [blame] | 129 | show_distro_configs("", "$src_path/distro-configs"); |
| Stephan Bergmann | d21f976 | 2017-05-17 10:28:07 +0200 | [diff] [blame] | 130 | exit (1); |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 131 | } |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 132 | |
| Miklos Vajna | aefc43b | 2015-03-08 16:58:35 +0100 | [diff] [blame] | 133 | # Avoid confusing "aclocal: error: non-option arguments are not accepted: '.../m4'." error message. |
| 134 | die "\$src_path must not contain spaces, but it is '$src_path'." if ($src_path =~ / /); |
| 135 | |
| Arnaud Versini | 6b114c2 | 2013-10-17 15:01:45 +0200 | [diff] [blame] | 136 | # Alloc $ACLOCAL to specify which aclocal to use |
| 137 | $aclocal = $ENV{ACLOCAL} ? $ENV{ACLOCAL} : 'aclocal'; |
| 138 | |
| 139 | my $system = `uname -s`; |
| 140 | chomp $system; |
| 141 | |
| 142 | sanity_checks ($system) unless($system eq 'Darwin'); |
| 143 | |
| Norbert Thiebaud | 4c23184 | 2015-12-29 13:32:18 -0600 | [diff] [blame] | 144 | # If we are running in a LODE env, make sure we find the right aclocal |
| 145 | # by making sure that LODE_HOME/opt/bin is in the PATH |
| 146 | if (defined $ENV{LODE_HOME}) |
| 147 | { |
| 148 | my $lode_path = quotemeta "$ENV{LODE_HOME}/opt/bin"; |
| 149 | if($ENV{PATH} !~ $lode_path) |
| 150 | { |
| 151 | $ENV{PATH}="$ENV{LODE_HOME}/opt/bin:$ENV{PATH}"; |
| 152 | print STDERR "add LODE_HOME/opt/bin in PATH\n"; |
| 153 | } |
| 154 | } |
| 155 | |
| Arnaud Versini | 6b114c2 | 2013-10-17 15:01:45 +0200 | [diff] [blame] | 156 | my $aclocal_flags = $ENV{ACLOCAL_FLAGS}; |
| 157 | |
| 158 | $aclocal_flags .= " -I $src_path/m4"; |
| 159 | $aclocal_flags .= " -I $src_path/m4/mac" if ($system eq 'Darwin'); |
| 160 | $aclocal_flags .= " -I /opt/freeware/share/aclocal" if ($system eq 'AIX'); |
| 161 | |
| 162 | $ENV{AUTOMAKE_EXTRA_FLAGS} = '--warnings=no-portability' if (!($system eq 'Darwin')); |
| 163 | |
| 164 | if ($src_path ne $build_path) |
| 165 | { |
| 166 | system ("ln -sf $src_path/configure.ac configure.ac"); |
| 167 | system ("ln -sf $src_path/g g"); |
| Luboš Luňák | 2bf2bc2 | 2014-03-23 16:21:51 +0100 | [diff] [blame] | 168 | my @modules = <$src_path/*/Makefile>; |
| 169 | foreach my $module (@modules) |
| 170 | { |
| 171 | my $dir = basename (dirname ($module)); |
| 172 | mkdir ($dir); |
| 173 | system ("ln -sf $src_path/$dir/Makefile $dir/Makefile"); |
| 174 | } |
| 175 | my @external_modules = <$src_path/external/*/Makefile>; |
| 176 | mkdir ("external"); |
| 177 | system ("ln -sf $src_path/external/Module_external.mk external/"); |
| 178 | foreach my $module (@external_modules) |
| 179 | { |
| 180 | my $dir = basename (dirname ($module)); |
| 181 | mkdir ("external/$dir"); |
| 182 | system ("ln -sf $src_path/external/$dir/Makefile external/$dir/Makefile"); |
| 183 | } |
| Arnaud Versini | 6b114c2 | 2013-10-17 15:01:45 +0200 | [diff] [blame] | 184 | } |
| 185 | system ("$aclocal $aclocal_flags") && die "Failed to run aclocal"; |
| 186 | unlink ("configure"); |
| 187 | system ("autoconf -I ${src_path}") && die "Failed to run autoconf"; |
| 188 | die "Failed to generate the configure script" if (! -f "configure"); |
| 189 | |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 190 | # Handle help arguments first, so we don't clobber autogen.lastrun |
| Josh Heidenreich | 6635337 | 2012-03-13 08:57:16 +1030 | [diff] [blame] | 191 | for my $arg (@ARGV) { |
| 192 | if ($arg =~ /^(--help|-h|-\?)$/) { |
| Mike Kaganski | c10e82a | 2016-12-14 10:27:23 +0300 | [diff] [blame] | 193 | print STDOUT "autogen.sh - libreoffice configuration helper\n"; |
| 194 | print STDOUT " --clean forcibly re-generate configuration\n"; |
| 195 | print STDOUT " --best-effort don't fail on un-known configure with/enable options\n"; |
| 196 | print STDOUT "\nOther arguments passed directly to configure:\n\n"; |
| Josh Heidenreich | 6635337 | 2012-03-13 08:57:16 +1030 | [diff] [blame] | 197 | system ("./configure --help"); |
| 198 | exit; |
| 199 | } |
| 200 | } |
| 201 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 202 | my @cmdline_args = (); |
| Tor Lillqvist | ca0c54d | 2013-03-28 15:26:25 +0200 | [diff] [blame] | 203 | |
| 204 | my $input = "autogen.input"; |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 205 | my $lastrun = "autogen.lastrun"; |
| Tor Lillqvist | ca0c54d | 2013-03-28 15:26:25 +0200 | [diff] [blame] | 206 | |
| Luboš Luňák | 68c314f | 2013-04-03 18:01:35 +0200 | [diff] [blame] | 207 | if (!@ARGV) { |
| 208 | if (-f $input) { |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 209 | if (-f $lastrun) { |
| 210 | print STDERR <<WARNING; |
| 211 | ******************************************************************** |
| 212 | * |
| 213 | * Reading $input and ignoring $lastrun! |
| 214 | * Consider removing $lastrun to get rid of this warning. |
| 215 | * |
| 216 | ******************************************************************** |
| 217 | WARNING |
| 218 | } |
| Luboš Luňák | 68c314f | 2013-04-03 18:01:35 +0200 | [diff] [blame] | 219 | @cmdline_args = read_args ($input); |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 220 | } elsif (-f $lastrun) { |
| 221 | print STDERR "Reading $lastrun. Please rename it to $input to avoid this message.\n"; |
| 222 | @cmdline_args = read_args ($lastrun); |
| Luboš Luňák | 68c314f | 2013-04-03 18:01:35 +0200 | [diff] [blame] | 223 | } |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 224 | } else { |
| Jan-Marek Glogowski | 806f4d8 | 2014-03-04 11:49:46 +0000 | [diff] [blame] | 225 | if (-f $input) { |
| 226 | print STDERR <<WARNING; |
| 227 | ******************************************************************** |
| 228 | * |
| 229 | * Using commandline arguments and ignoring $input! |
| 230 | * |
| 231 | ******************************************************************** |
| 232 | WARNING |
| 233 | } |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 234 | @cmdline_args = @ARGV; |
| 235 | } |
| Jan Holesovsky | 55d3dff | 2010-08-24 15:03:44 +0200 | [diff] [blame] | 236 | |
| Enrico Weigelt, metux ITS | 695c194 | 2012-11-17 11:12:31 +0100 | [diff] [blame] | 237 | my @args; |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 238 | my $default_config = "$src_path/distro-configs/default.conf"; |
| Michael Meeks | 1e03a68 | 2014-11-13 16:27:30 +0000 | [diff] [blame] | 239 | my $option_checking = 'fatal'; |
| 240 | |
| Enrico Weigelt, metux ITS | c1caa1d | 2012-11-17 11:12:31 +0100 | [diff] [blame] | 241 | if (-f $default_config) { |
| Tor Lillqvist | ca0c54d | 2013-03-28 15:26:25 +0200 | [diff] [blame] | 242 | print STDERR "Reading default config file: $default_config.\n"; |
| Enrico Weigelt, metux ITS | c1caa1d | 2012-11-17 11:12:31 +0100 | [diff] [blame] | 243 | push @args, read_args ($default_config); |
| 244 | } |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 245 | for my $arg (@cmdline_args) { |
| 246 | if ($arg eq '--clean') { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 247 | clean(); |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 248 | } elsif ($arg =~ m/--with-distro=(.*)$/) { |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 249 | my $config = "$src_path/distro-configs/$1.conf"; |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 250 | if (! -f $config) { |
| 251 | invalid_distro ($config, $1); |
| Stephan Bergmann | 1dfb956 | 2012-06-05 11:57:31 +0200 | [diff] [blame] | 252 | } |
| Stephan Bergmann | d21f976 | 2017-05-17 10:28:07 +0200 | [diff] [blame] | 253 | push @args, read_args ($config); |
| Michael Meeks | 1e03a68 | 2014-11-13 16:27:30 +0000 | [diff] [blame] | 254 | } elsif ($arg =~ m/--best-effort$/) { |
| 255 | $option_checking = 'warn'; |
| Stephan Bergmann | 1dfb956 | 2012-06-05 11:57:31 +0200 | [diff] [blame] | 256 | } else { |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 257 | push @args, $arg; |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 258 | } |
| 259 | } |
| Tor Lillqvist | e3a07b8 | 2011-07-03 17:05:14 +0300 | [diff] [blame] | 260 | |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 261 | if (defined $ENV{NOCONFIGURE}) { |
| 262 | print "Skipping configure process."; |
| 263 | } else { |
| Tor Lillqvist | c32d54f | 2017-09-22 16:51:22 +0300 | [diff] [blame] | 264 | # Save autogen.lastrun only if we did get some arguments on the command-line |
| 265 | if (! -f $input && @ARGV) { |
| 266 | if (scalar(@cmdline_args) > 0) { |
| 267 | # if there's already an autogen.lastrun, make a backup first |
| 268 | if (-e $lastrun) { |
| 269 | open (my $fh, $lastrun) || warn "Can't open $lastrun.\n"; |
| 270 | open (BAK, ">$lastrun.bak") || warn "Can't create backup file $lastrun.bak.\n"; |
| 271 | while (<$fh>) { |
| 272 | print BAK; |
| 273 | } |
| 274 | close (BAK) && close ($fh); |
| 275 | } |
| 276 | # print "Saving command-line args to $lastrun\n"; |
| 277 | my $fh; |
| 278 | open ($fh, ">autogen.lastrun") || die "Can't open autogen.lastrun: $!"; |
| 279 | for my $arg (@cmdline_args) { |
| 280 | print $fh "$arg\n"; |
| 281 | } |
| 282 | close ($fh); |
| 283 | } |
| 284 | } |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 285 | push @args, "--srcdir=$src_path"; |
| Michael Meeks | 1e03a68 | 2014-11-13 16:27:30 +0000 | [diff] [blame] | 286 | push @args, "--enable-option-checking=$option_checking"; |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 287 | |
| Samuel Mehrbrodt | 3526da1 | 2015-09-22 11:18:57 +0200 | [diff] [blame] | 288 | print "Running ./configure with '" . join (" ", @args), "'\n"; |
| Norbert Thiebaud | 2a9692a | 2011-08-18 00:25:58 -0500 | [diff] [blame] | 289 | system ("./configure", @args) && die "Error running configure"; |
| Michael Meeks | 434df16 | 2011-04-05 16:16:33 +0100 | [diff] [blame] | 290 | } |
| Tor Lillqvist | 98bbdc8 | 2011-05-29 19:41:15 +0300 | [diff] [blame] | 291 | |
| 292 | # Local Variables: |
| Tor Lillqvist | 471fd2e | 2011-05-31 10:00:39 +0300 | [diff] [blame] | 293 | # mode: perl |
| 294 | # cperl-indent-level: 4 |
| Tor Lillqvist | 98bbdc8 | 2011-05-29 19:41:15 +0300 | [diff] [blame] | 295 | # tab-width: 4 |
| 296 | # indent-tabs-mode: nil |
| 297 | # End: |
| 298 | |
| Miklos Vajna | a36addc | 2012-01-09 22:29:10 +0100 | [diff] [blame] | 299 | # vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: # |