From 3deece559159150a0710d8160f39583ba7f2e582 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 31 Oct 2010 02:17:29 +0100 Subject: s4: Remove the old perl/m4/make/mk-based build system. The new waf-based build system now has all the same functionality, and the old build system has been broken for quite some time. Autobuild-User: Jelmer Vernooij Autobuild-Date: Sun Oct 31 02:01:44 UTC 2010 on sn-devel-104 --- source4/build/smb_build/config_mk.pm | 284 ----------------------------------- 1 file changed, 284 deletions(-) delete mode 100644 source4/build/smb_build/config_mk.pm (limited to 'source4/build/smb_build/config_mk.pm') diff --git a/source4/build/smb_build/config_mk.pm b/source4/build/smb_build/config_mk.pm deleted file mode 100644 index 8c7d75221c..0000000000 --- a/source4/build/smb_build/config_mk.pm +++ /dev/null @@ -1,284 +0,0 @@ -# Samba Build System -# - config.mk parsing functions -# -# Copyright (C) Stefan (metze) Metzmacher 2004 -# Copyright (C) Jelmer Vernooij 2005 -# Released under the GNU GPL -# - -package smb_build::config_mk; -use smb_build::input; -use File::Basename; - -use strict; - -my $section_types = { - "EXT_LIB" => { - "LIBS" => "list", - "CFLAGS" => "list", - "CPPFLAGS" => "list", - "LDFLAGS" => "list", - }, - "PYTHON" => { - "LIBRARY_REALNAME" => "string", - "PRIVATE_DEPENDENCIES" => "list", - "PUBLIC_DEPENDENCIES" => "list", - "ENABLE" => "bool", - "LDFLAGS" => "list", - }, - "SUBSYSTEM" => { - "PRIVATE_DEPENDENCIES" => "list", - "PUBLIC_DEPENDENCIES" => "list", - - "ENABLE" => "bool", - - "CFLAGS" => "list", - "LDFLAGS" => "list", - "STANDARD_VISIBILITY" => "string", - "INIT_FUNCTION_SENTINEL" => "string" - }, - "MODULE" => { - "SUBSYSTEM" => "string", - - "INIT_FUNCTION" => "string", - - "PRIVATE_DEPENDENCIES" => "list", - - "ALIASES" => "list", - - "ENABLE" => "bool", - - "OUTPUT_TYPE" => "list", - - "CFLAGS" => "list" - }, - "BINARY" => { - - "PRIVATE_DEPENDENCIES" => "list", - - "ENABLE" => "bool", - - "INSTALLDIR" => "string", - "LDFLAGS" => "list", - "STANDARD_VISIBILITY" => "string", - - "USE_HOSTCC" => "bool" - }, - "LIBRARY" => { - "LIBRARY_REALNAME" => "string", - - "INIT_FUNCTION_TYPE" => "string", - "INIT_FUNCTION_SENTINEL" => "string", - "OUTPUT_TYPE" => "list", - - "PRIVATE_DEPENDENCIES" => "list", - "PUBLIC_DEPENDENCIES" => "list", - - "ENABLE" => "bool", - - "CFLAGS" => "list", - "LDFLAGS" => "list", - "STANDARD_VISIBILITY" => "string" - } -}; - -use vars qw(@parsed_files); - -@parsed_files = (); - -sub _read_config_file($$$) -{ - use Cwd; - - my ($srcdir, $builddir, $filename) = @_; - my @dirlist; - - # We need to change our working directory because config.mk files can - # give shell commands as the argument to "include". These shell - # commands can take arguments that are relative paths and we don't have - # a way of sensibly rewriting these. - my $cwd = getcwd; - chomp $cwd; - - if ($srcdir ne $builddir) { - # Push the builddir path on the front, so we prefer builddir - # to srcdir when the file exists in both. - @dirlist = ($builddir, $srcdir); - } else { - @dirlist = ($srcdir); - } - - foreach my $d (@dirlist) { - my @lines; - my $basedir; - - chdir $cwd; - chdir $d; - - # We need to catch the exception from open in the case where - # the filename is actually a shell pipeline. Why is this - # different to opening a regular file? Because this is perl! - eval { - open(CONFIG_MK, "./$filename"); - @lines = ; - close(CONFIG_MK); - }; - - chdir $cwd; - next unless (@lines); - - # I blame abartlett for this crazy hack -- jpeach - if ($filename =~ /\|$/) { - $basedir = $builddir; - } else { - $basedir = dirname($filename); - push(@parsed_files, $filename); - } - $basedir =~ s!^($builddir|$srcdir)[/]!!; - return ($filename, $basedir, @lines); - } - - chdir $cwd; - return; -} - -########################################################### -# The parsing function which parses the file -# -# $result = _parse_config_mk($input, $srcdir, $builddir, $filename) -# -# $filename - the path of the config.mk file -# which should be parsed -sub run_config_mk($$$$) -{ - sub run_config_mk($$$$); - my ($input, $srcdir, $builddir, $filename) = @_; - my $result; - my $linenum = -1; - my $infragment = 0; - my $section = "GLOBAL"; - my $makefile = ""; - - my $basedir; - - my $parsing_file; - my @lines; - - $ENV{builddir} = $builddir; - $ENV{srcdir} = $srcdir; - - ($parsing_file, $basedir, @lines) = - _read_config_file($srcdir, $builddir, $filename); - - die ("$0: can't open '$filename'") - unless ($parsing_file and $basedir and @lines); - - my $line = ""; - my $prev = ""; - - # Emit a line that lets us match up final makefile output with the - # corresponding input files. The curlies are so you can match the - # BEGIN/END pairs in a text editor. - $makefile .= "# BEGIN{ $parsing_file\n"; - - foreach (@lines) { - $linenum++; - - # lines beginning with '#' are ignored - next if (/^\#.*$/); - - if (/^(.*)\\$/) { - $prev .= $1; - next; - } else { - $line = "$prev$_"; - $prev = ""; - } - - if ($line =~ /^\[([-a-zA-Z0-9_.:]+)\][\t ]*$/) - { - $section = $1; - $infragment = 0; - - $result->{$section}{EXISTS}{KEY} = "EXISTS"; - $result->{$section}{EXISTS}{VAL} = 1; - next; - } - - # include - if ($line =~ /^mkinclude (.*)$/) { - my $subfile= $1; - my $subdir = dirname($filename); - $subdir =~ s/^\.$//g; - $subdir =~ s/^\.\///g; - $subdir .= "/" if ($subdir ne ""); - $makefile .= "basedir := $subdir\n"; - $makefile .= run_config_mk($input, $srcdir, $builddir, $subdir.$subfile); - next; - } - - # empty line - if ($line =~ /^[ \t]*$/) { - $section = "GLOBAL"; - if ($infragment) { $makefile.="\n"; } - next; - } - - # global stuff is considered part of the makefile - if ($section eq "GLOBAL") { - if (!$infragment) { $makefile.="\n"; } - $makefile .= $line; - $infragment = 1; - next; - } - - # Assignment - if ($line =~ /^([a-zA-Z0-9_]+)[\t ]*=(.*)$/) { - $result->{$section}{$1}{VAL} = $2; - $result->{$section}{$1}{KEY} = $1; - - next; - } - - die("$parsing_file:$linenum: Bad line"); - } - - $makefile .= "# }END $parsing_file\n"; - - foreach my $section (keys %{$result}) { - my ($type, $name) = split(/::/, $section, 2); - - my $sectype = $section_types->{$type}; - if (not defined($sectype)) { - die($parsing_file.":[".$section."] unknown section type \"".$type."\"!"); - } - - $input->{$name}{NAME} = $name; - $input->{$name}{TYPE} = $type; - $input->{$name}{MK_FILE} = $parsing_file; - $input->{$name}{BASEDIR} = $basedir; - - foreach my $key (values %{$result->{$section}}) { - next if ($key->{KEY} eq "EXISTS"); - $key->{VAL} = smb_build::input::strtrim($key->{VAL}); - my $vartype = $sectype->{$key->{KEY}}; - if (not defined($vartype)) { - die($parsing_file.":[".$section."]: unknown attribute type \"$key->{KEY}\"!"); - } - if ($vartype eq "string") { - $input->{$name}{$key->{KEY}} = $key->{VAL}; - } elsif ($vartype eq "list") { - $input->{$name}{$key->{KEY}} = [smb_build::input::str2array($key->{VAL})]; - } elsif ($vartype eq "bool") { - if (($key->{VAL} ne "YES") and ($key->{VAL} ne "NO")) { - die("Invalid value for bool attribute $key->{KEY}: $key->{VAL} in section $section"); - } - $input->{$name}{$key->{KEY}} = $key->{VAL}; - } - } - } - - return $makefile; -} - -1; -- cgit