File: Makefile.PL

package info (click to toggle)
im 91-1
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 832 kB
  • ctags: 8
  • sloc: sh: 1,507; makefile: 110
file content (155 lines) | stat: -rw-r--r-- 3,710 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# This -*- perl -*- script writes the Makefile by ukai
#
# perl Makefile.pl
# make
# make install or make install_rpop
#
require 5.004;

BEGIN {
$VERSION = '91';
$im_version="version 980506;
$im_revised="May 06, 1998";
$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";
}
}

use Config;

$prefix = "/usr/local";
$libdir = "\$exec_prefix/lib";

if (open(CONFIN, "configure.in")) {
    while (<CONFIN>) {
	/^im_cv/ && eval "\$$_";
    }
    close(CONFIN);
}
# print "$im_version, $im_revised\n";

# 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 (<DATA>) {
    /^#! \\\@im_path_perl\\\@/ && next;
    s/\\\@im_version\\\@/$im_version/;
    s/\\\@im_revised\\\@/$im_revised/;
    print OUT;
}
close(OUT);
exit 0;
__END__
!SUBST!
    while (<IN>) {
	print PL $_;
    }
    close(IN);
    close(PL);
}
closedir(DIR);


# generate IM.in/*.pm.in -> IM/*.pm
@modules_files = ();
opendir(DIR, "IM.in") or die "cannot opendir IM.in: $!";
foreach (grep(/\.in$/, readdir DIR)) {
    open(IN, "IM.in/$_") or die "cannot open IM.in/$_: $!";
    s/\.in$//;
    open(PM, ">IM/$_") or die "cannot open IM/$_: $!";
    push(@modules_files, "IM/$_");
    print "Extracting IM/$_ (with variable substitutions)\n";
    while (<IN>) {
	s/\@im_version\@/$im_version/;
	s/\@im_revised\@/$im_revised/;
	s/\@im_db_type\@/$im_db_type/;
	s/\@prefix\@/$prefix/;	# Config.pm.in
	s/\@libdir\@/$libdir/;	# Config.pm.in
	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' => {},
    'clean' => { FILES => join(' ', '$(EXE_FILES)', 
			       @pl_files, @modules_files) },
    'dist' => { COMPRESS => 'gzip -9f', SUFFIX => 'gz' }
); 


# special rules
sub MY::postamble {
    my ($self) = shift;
    my (@m);
    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)/Config
	\$(RM_F) \$(IM_SITECONFIG_DIR)/SiteConfig

install_rpop: install
	\$(PERL) -e 'chown(0, (getgrnam("mail"))[2], \@ARGV) and chmod(04555, \@ARGV);' \$(INSTALLSCRIPT)/imget
    });
    join "", @m;
}