diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-25 20:51:58 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-10-25 20:51:58 +0000 |
commit | a9d2342f6af5d9e1fb2a6e42d71493300c0c39f9 (patch) | |
tree | f37c14d206f0f3f728f7ee18fc1addaf4aaae0f5 /configure | |
parent | 01241d4574bf256aca1b6a379fe2c5685681d758 (diff) |
Make install list list automatically generated from build targets and provide facility for installing extra files.
Using this, cert.pem and key.pem are only copied to the conf dir if you enabled an ssl module.
Also, this provides facility for a 'make deinstall' which should be safe for use in all situations as it always specifies a file by name and never uses wildcards to rm.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8362 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 120 |
1 files changed, 74 insertions, 46 deletions
@@ -49,9 +49,10 @@ my @immutabledeps = ( # ############################################################################################### -# List of commands that make up 'make install' +# List of commands that make up 'make install' and 'make deinstall' my $install_list = ""; +my $uninstall_list = ""; # This is a list of all files in the core. Each cpp file is mapped to a shared object file, # whos file extension is omitted (these can vary from system to system). Auto detected by @@ -1188,6 +1189,7 @@ EOF if (opendir(MDIRHANDLE, "src/modules/$name") != 0) { closedir(MDIRHANDLE); $modules .= "$name.so "; + $uninstall_list = $uninstall_list . " -rm \$(MODULES)/$name.so\n"; } } } @@ -1211,9 +1213,9 @@ EOF # We can actually parse any file starting with . and ending with .inc, # but right now we only parse .inspircd.inc to form './inspircd' - print "Writing dynamic-build \033[1;32msrc/Makefile\033[0m\n"; - write_dynamic_makefile(); + print "Writing \033[1;32mMakefiles\033[0m\n"; write_dynamic_modules_makefile(); + write_dynamic_makefile(); opendir(DIRHANDLE, $this); @@ -1251,6 +1253,7 @@ EOF $tmp =~ s/\@MAKEORDER\@/$config{MAKEORDER}/; $tmp =~ s/\@VERSION\@/$version/; $tmp =~ s/\@INSTALL_LIST\@/$install_list/; + $tmp =~ s/\@UNINSTALL_LIST\@/$uninstall_list/; open(FILEHANDLE, ">$file"); print FILEHANDLE $tmp; @@ -1308,8 +1311,6 @@ EOCHEESE my $modules = ""; my $cmflags = ""; my $liflags = ""; - my $crud = ""; - foreach $i (@modlist) { ### # Write Entry to the MakeFile @@ -1338,7 +1339,8 @@ m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/ch \$(CC) -pipe -I../../include \$(FLAGS) $cmflags \$(PICLDFLAGS) $liflags -export-dynamic -o m_$i.so m_$i.cpp "; } - $crud = $crud . " install -m \$(INSTMODE) m_$i.so \$(MODPATH)\n"; + $install_list = $install_list . " install -m \$(INSTMODE) src/modules/m_$i.so \$(MODPATH)\n"; + $uninstall_list = $uninstall_list . " -rm \$(MODULES)/m_$i.so\n"; ### # End Write Entry to the MakeFile ### @@ -1363,13 +1365,11 @@ m_$i.so: m_$i.cpp ../../include/modules.h ../../include/users.h ../../include/ch } print FILEHANDLE "\n$mfrules\n"; closedir(MDIRHANDLE); - $crud = $crud . " install -m \$(INSTMODE) $name.so \$(MODPATH)\n"; + $install_list = $install_list . " install -m \$(INSTMODE) src/modules/$name.so \$(MODPATH)\n"; } } } closedir(DIRHANDLE); - - print FILEHANDLE "modinst:\n \@echo \"Installing modules...\"\n" . $crud; } sub read_module_directory { @@ -1440,6 +1440,7 @@ sub write_dynamic_makefile { my $i = 0; my @cmdlist = (); + my %existing_install_list = (); opendir(DIRHANDLE, "src/commands"); foreach $name (sort readdir(DIRHANDLE)) { @@ -1447,6 +1448,7 @@ sub write_dynamic_makefile { $cmdlist[$i++] = $1; $install_list = $install_list . " -install -m \$(INSTMODE) src/commands/cmd_" . $1 . ".so \$(LIBPATH)\n"; + $uninstall_list = $uninstall_list . " -rm \$(LIBPATH)/cmd_$1.so\n"; } } closedir(DIRHANDLE); @@ -1464,54 +1466,79 @@ sub write_dynamic_makefile $config{USE_PORTS} = 0; } - print "Scanning src folder for core files"; - opendir(DIRHANDLE, "src"); - foreach $name (sort readdir(DIRHANDLE)) + foreach my $dir (("src","src/commands","src/modes","src/socketengines","src/modules")) { - if ($name =~ /\.cpp$/) + print "Scanning \033[1;32m$dir\033[0m for core files "; + opendir(DIRHANDLE, $dir); + foreach $name (sort readdir(DIRHANDLE)) { - open (CPP, "<src/$name") or die("Can't open src/$name to scan it! oh bugger"); - while (chomp($line = <CPP>)) + if ($name =~ /\.cpp$/) { - if ($line =~ /\/\* \$Core: (\w+) \*\//i) - { - $filelist{$name} = $1; - print "."; - } - elsif ($line =~ /\/\* \$ExtraDeps: (.*?) \*\//i) - { - $specialdeps{$name} = $1; - } - elsif ($line =~ /\/\* \$ExtraObjects: (.*?) \*\//i) - { - $extraobjects{$name} = $1; - } - elsif ($line =~ /\/\* \$ExtraBuild: (.*?) \*\//i) - { - $extrabuildlines{$name} = $1; - } - elsif ($line =~ /\/\* \$ExtraSources: (.*?) \*\//i) - { - $extrasources{$name} = $1; - } - elsif ($line =~ /\/\* \$If: (\w+) \*\//i) - { - if (($config{$1} !~ /y/i) and ($config{$1} ne "1")) + open (CPP, "<$dir/$name") or die("Can't open $dir/$name to scan it! oh bugger"); + while (chomp($line = <CPP>)) + { + if ($line =~ /\/\* \$Core: (\w+) \*\//i) + { + $filelist{$name} = $1; + print "."; + } + elsif ($line =~ /\/\* \$ExtraDeps: (.*?) \*\//i) + { + $specialdeps{$name} = $1; + } + elsif ($line =~ /\/\* \$ExtraObjects: (.*?) \*\//i) + { + $extraobjects{$name} = $1; + } + elsif ($line =~ /\/\* \$ExtraBuild: (.*?) \*\//i) + { + $extrabuildlines{$name} = $1; + } + elsif ($line =~ /\/\* \$ExtraSources: (.*?) \*\//i) + { + $extrasources{$name} = $1; + } + elsif ($line =~ /\/\* \$If: (\w+) \*\//i) { - # Skip to 'endif' - while (chomp($line = <CPP>)) + if (($config{$1} !~ /y/i) and ($config{$1} ne "1")) { - die ("\$If buildsystem instruction within another \$If in file src/$name") if ($line =~ /\/\* \$If: (\w+) \*\//i); - last if ($line =~ /\/\* \$EndIf \*\//i); + # Skip to 'endif' + while (chomp($line = <CPP>)) + { + die ("\$If buildsystem instruction within another \$If in file $dir/$name") if ($line =~ /\/\* \$If: (\w+) \*\//i); + last if ($line =~ /\/\* \$EndIf \*\//i); + } + } + } + elsif ($line =~ /\/\* \$Install: (.*?) \*\//i) + { + if (!exists($existing_install_list{$1})) + { + $idir = (split(' ',$1))[1]; + $ifile = (split(' ',$1))[0]; + $install_list = $install_list . " -install -m \$(INSTMODE) $1\n"; + $ifile =~ s/.*\///g; + $uninstall_list = $uninstall_list . " -rm $idir/$ifile\n"; + } + } + elsif ($line =~ /\/\* \$CopyInstall: (.*?) \*\//i) + { + if (!exists($existing_install_list{$1})) + { + $idir = (split(' ',$1))[1]; + $ifile = (split(' ',$1))[0]; + $install_list = $install_list . " -cp $1\n" if (!exists($existing_install_list{$1})); + $ifile =~ s/.*\///g; + $uninstall_list = $uninstall_list . " -rm $idir/$ifile\n"; } } } + close CPP; } - close CPP; } + closedir(DIRHANDLE); + print " done!\n"; } - closedir(DIRHANDLE); - print " done!\n"; $freebsd4libs = $config{CRAQ}; @@ -1534,6 +1561,7 @@ sub write_dynamic_makefile $all = $all . $filelist{$cpp} . "." . $libraryext . " "; $all_libsonly = $all_libsonly . $filelist{$cpp} . "." . $libraryext . " "; $install_list = $install_list . " -install -m \$(INSTMODE) src/" . $filelist{$cpp} . "." . $libraryext . " \$(LIBPATH)\n"; + $uninstall_list = $uninstall_list . " -rm \$(LIBPATH)/" . $filelist{$cpp} . "." . $libraryext . "\n"; } $all = $all . "moo inspircd\n"; |