makedefs.pl revision 0c27b3fe77ac1d5094ba3521e8142d9e7973133f
#
# Copyright (C) 2001, 2004, 2007, 2009, 2012-2014, 2016 Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# $Id$
# This script goes through all of the lib header files and creates a .def file
# for each DLL for Win32. It recurses as necessary through the subdirectories
#
# This program should only be run if it is necessary to regenerate
# the .def files. Normally these files should be updated by hand, adding
# new functions to the end and removing obsolete ones.
# If you do regenerate them you will also need to modify them by hand to
# to pick up those routines not detected by this program (like openlog).
#
# Search String: ^(([_a-z0-9])*( ))*prefix_[_a-z0-9]+_[a-z0-9]+( )*\(
# List of directories
@isccfgdirlist = ("isccfg/include/isccfg");
@isccfgprefixlist = ("cfg");
@iscccdirlist = ("isccc/include/isccc");
@iscccprefixlist = ("isccc");
@lwresprefixlist = ("lwres");
@bind9dirlist = ("bind9/include/bind9");
@bind9prefixlist = ("bind9");
@irsprefixlist = ("irs");
# Run the changes for each directory in the directory list
$ind = 0;
foreach $dir (@iscdirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@isccfgdirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@dnsdirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@iscccdirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@lwresdirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@bind9dirlist) {
$ind++;
}
close OUTDEFFILE;
$ind = 0;
foreach $dir (@irsdirlist) {
$ind++;
}
close OUTDEFFILE;
exit;
#
# Subroutines
#
sub createdeffile {
$xdir = $_[0];
#
# Get the List of files in the directory to be processed.
#
#^(([_a-z0-9])*( ))*prefix_[_a-z]+_[a-z]+( )*\(
$prefix = $_[1];
$pattern = "\^\(\(\[\_a\-z0\-9\]\)\*\( \)\)\*\(\\*\( \)\+\)\*$prefix";
$pattern = "$pattern\_\[\_a\-z0\-9\]\+_\[a\-z0\-9\]\+\( \)\*\\\(";
closedir(DIR);
#
# Open the file and locate the pattern.
#
open (HFILE, "$xdir/$filename") ||
die "Can't open file $filename : $!";
while (<HFILE>) {
if(/$pattern/) {
$func = $&;
chop($func);
if($space >= 0) {
# strip out return values
}
print OUTDEFFILE "$func\n";
}
}
# Set up the Patterns
close(HFILE);
}
}
# This is the routine that applies the changes
# output the result to the platform specific directory.
sub createoutfile {
$outfile = "lib$_[0].def";
open (OUTDEFFILE, ">$outfile")
|| die "Can't open output file $outfile: $!";
print OUTDEFFILE "LIBRARY lib$_[0]\n";
print OUTDEFFILE "\n";
print OUTDEFFILE "; Exported Functions\n";
print OUTDEFFILE "EXPORTS\n";
print OUTDEFFILE "\n";
}