### This -*- perl -*- script writes the Makefile by ukai ### ### Author: Internet Message Group ### Created: Apr 23, 1997 ### Revised: Dec 20, 2002 ### ### perl Makefile.PL ### make ### make install or make install_rpop ### require 5.004; use Config; BEGIN { $VERSION = '100'; $im_db_type = "DB"; # this should be in BEGIN section. if ($im_db_type) { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File SDBM_File ODBM_File); unshift(@AnyDBM_File::ISA, "${im_db_type}_File"); print "try DB type: @AnyDBM_File::ISA\n"; } else { print "ignore DB type\n"; } } if (open(CONFIN, "configure.in")) { while () { /^im_/ && eval "\$$_"; } close(CONFIN); } if ($Config{'osname'} ne 'MSWin32') { $prefix = "/usr/local"; $libdir = "\$exec_prefix/lib"; } else { $prefix = $Config{'prefix'}; $prefix =~ s:\\:/:g; $libdir = $Config{'sitelib'}; $libdir =~ s:\\:/:g; } chomp($im_hostname); if ($Config{osname} eq "solaris") { $im_usecl='yes'; } else { $im_usecl='no'; } $im_nosync='no'; # checking DB type if ($im_db_type) { use AnyDBM_File; $im_db_type="$AnyDBM_File::ISA[0]"; $im_db_type =~ s/_File$//; print "Your DB type is $im_db_type\n"; } # generate im*.in -> im*.PL opendir(DIR, ".") or die "cannot opendir .: $!"; @programs_to_install = @pl_files = (); foreach (grep(/\.in$/ && !/^(configure|Makefile|IM)/, readdir DIR)) { open(IN, "$_") or die "cannot open $_.in: $!"; s/.in$//; push(@programs_to_install, "$_"); open(PL, ">$_.PL") or die "cannot open $_.PL: $!"; push(@pl_files, "$_.PL"); print PL <<"!SUBST!"; use Config; (\$file = \$0) =~ s/\\.PL\$//i; open(OUT, ">\$file") or die "Cannot create \$file: $!"; chmod(0755, \$file); print "Extracting \$file (with variable substitutions)\n"; print OUT << \"!GROK!THIS\"; \$Config{'startperl'} !GROK!THIS while () { /^#! \\\@im_path_perl\\\@/ && next; s/\\\@im_my_siteperl\\\@//; s/\\\@im_src_siteperl\\\@//; print OUT; } close(OUT); exit 0; __END__ !SUBST! while () { print PL $_; } close(IN); close(PL); } closedir(DIR); # generate IM/Config.pm.in -> IM/Config.pm # cnf.im/SiteConfig.in -> cnf.im/SiteConfig @generate_files = ('IM/Config.pm', 'cnf.im/SiteConfig'); foreach (@generate_files) { open(IN, "$_.in") or die "cannot open $_.in: $!"; open(PM, ">$_") or die "cannot open $_: $!"; print "Extracting $_ (with variable substitutions)\n"; while () { s/\@prefix\@/$prefix/; # Config.pm.in s/\@exec_prefix\@/$prefix/; s/\@libdir\@/$libdir/; s/\@im_db_type\@/$im_db_type/; s/\@im_file_attr\@/$im_file_attr/; s/\@im_hostname\@/$im_hostname/; s/\@im_usecl\@/$im_usecl/; s/\@im_nosync\@/$im_nosync/; print PM; } close(IN); close(PM); } closedir(DIR); # write Makefile use ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'IM', 'VERSION' => $VERSION, 'EXE_FILES' => \@programs_to_install, 'MAN1PODS' => {}, 'MAN3PODS' => {}, 'PREFIX' => $prefix, 'clean' => { FILES => join(' ', '$(EXE_FILES)', @pl_files, @generate_files) }, 'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz' } ); # special rules sub MY::postamble { my($self) = shift; my(@m); if ($Config{'osname'} ne 'MSWin32') { push (@m, qq{ prefix=$prefix exec_prefix=$prefix libdir=\$(exec_prefix)/lib IM_SITECONFIG_DIR=\$(libdir)/im install:: install_config install_config: cnf.im/SiteConfig \$(MKPATH) \$(IM_SITECONFIG_DIR) for cnf_im in SiteConfig ; do \\ if \$(TEST_F) \$(IM_SITECONFIG_DIR)/\$\$cnf_im; then \\ (\$(CP) cnf.im/\$\$cnf_im \$(IM_SITECONFIG_DIR)/\$\$cnf_im.new;) \\ else \\ (\$(CP) cnf.im/\$\$cnf_im \$(IM_SITECONFIG_DIR);) \\ fi \\ done \$(CHMOD) -R 0644 \$(IM_SITECONFIG_DIR)/* \$(CHMOD) 755 \$(IM_SITECONFIG_DIR) uninstall:: uninstall_config uninstall_config:: \$(RM_F) \$(IM_SITECONFIG_DIR)/SiteConfig install_rpop: install \$(PERL) -e 'chown(0, (getgrnam("mail"))[2], \@ARGV) and chmod(04755, \@ARGV);' \$(INSTALLSCRIPT)/imget }); } else { push (@m, qq{ install:: install_progs install_progs: \$(CP) Win32\*.exe \$(INSTALLBIN) }); join "", @m; } } ### Copyright (C) 1997, 1998, 1999 IM developing team ### All rights reserved. ### ### Redistribution and use in source and binary forms, with or without ### modification, are permitted provided that the following conditions ### are met: ### ### 1. Redistributions of source code must retain the above copyright ### notice, this list of conditions and the following disclaimer. ### 2. Redistributions in binary form must reproduce the above copyright ### notice, this list of conditions and the following disclaimer in the ### documentation and/or other materials provided with the distribution. ### 3. Neither the name of the team nor the names of its contributors ### may be used to endorse or promote products derived from this software ### without specific prior written permission. ### ### THIS SOFTWARE IS PROVIDED BY THE TEAM AND CONTRIBUTORS ``AS IS'' AND ### ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ### IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ### PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE TEAM OR CONTRIBUTORS BE ### LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ### CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ### SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ### BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ### WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE ### OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN ### IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.