1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-10 13:57:47 +03:00

r8979: Bunch of makefile fragment inclusion fixes:

- support whitespace
 - support "include " keyword
 - move swig stuff to .mk file
 - support autogenerated makefile portions (use "include echo foo|")
This commit is contained in:
Jelmer Vernooij 2005-08-03 04:15:16 +00:00 committed by Gerald (Jerry) Carter
parent 186bcabaa6
commit 43779c09b6
6 changed files with 146 additions and 174 deletions

78
source/Makefile.core Normal file
View File

@ -0,0 +1,78 @@
# master list of build config files for Samba4
include heimdal_build/config.mk
include config.mk
include dsdb/config.mk
include gtk/config.mk
include smbd/config.mk
include smbd/process_model.mk
include libnet/config.mk
include auth/config.mk
include nsswitch/config.mk
include lib/basic.mk
include lib/socket/config.mk
include lib/ldb/config.mk
include lib/talloc/config.mk
include lib/tdb/config.mk
include lib/tls/config.mk
include lib/registry/config.mk
include lib/messaging/config.mk
include lib/events/config.mk
include lib/popt/config.mk
include lib/cmdline/config.mk
include lib/socket_wrapper/config.mk
include lib/appweb/config.mk
include param/config.mk
include smb_server/config.mk
include rpc_server/config.mk
include ldap_server/config.mk
include web_server/config.mk
include winbind/config.mk
include nbt_server/config.mk
include cldap_server/config.mk
include auth/gensec/config.mk
include auth/kerberos/config.mk
include auth/ntlmssp/config.mk
include libcli/auth/config.mk
include libcli/ldap/config.mk
include libcli/config.mk
include utils/net/config.mk
include utils/config.mk
include ntvfs/posix/config.mk
include ntvfs/config.mk
include ntvfs/unixuid/config.mk
include ntptr/config.mk
include torture/config.mk
include librpc/config.mk
include client/config.mk
include libcli/config.mk
include libcli/security/config.mk
include lib/com/config.mk
include scripting/config.mk
include kdc/config.mk
include lib/replace/config.mk
include scripting/ejs/config.mk
binaries: $(BIN_PROGS) $(SBIN_PROGS)
manpages: $(MANPAGES)
showlayout:
@echo "Samba will be installed into:"
@echo " basedir: $(BASEDIR)"
@echo " bindir: $(BINDIR)"
@echo " sbindir: $(SBINDIR)"
@echo " libdir: $(LIBDIR)"
@echo " vardir: $(VARDIR)"
@echo " privatedir: $(PRIVATEDIR)"
@echo " piddir: $(PIDDIR)"
@echo " lockdir: $(LOCKDIR)"
@echo " swatdir: $(SWATDIR)"
@echo " mandir: $(MANDIR)"
showflags:
@echo "Samba will be compiled with flags:"
@echo " CFLAGS = $(CFLAGS)"
@echo " LD_FLAGS = $(LD_FLAGS)"
@echo " STLD_FLAGS = $(STLD_FLAGS)"
@echo " SHLD_FLAGS = $(SHLD_FLAGS)"

View File

@ -40,67 +40,68 @@ my %attribute_types = (
#
# $filename - the path of the config.mk file
# which should be parsed
#
# $result - the resulting structure
#
# $result->{ERROR_CODE} - the error_code, '0' means success
# $result->{ERROR_STR} - the error string
#
# $result->{$key}{KEY} - the key == the variable which was parsed
# $result->{$key}{VAL} - the value of the variable
sub _parse_config_mk($)
sub run_config_mk($$)
{
my $filename = shift;
my ($input, $filename) = @_;
my $result;
my $linenum = -1;
my $waiting = 0;
my $infragment = 0;
my $section = "GLOBAL";
my $makefile = "";
open(CONFIG_MK, $filename) or die("Can't open `$filename'\n");
my @lines = <CONFIG_MK>;
close(CONFIG_MK);
open(CONFIG_MK, "<$filename") or die("Can't open `$filename'\n");
while (<CONFIG_MK>) {
my $line = $_;
my $line = "";
my $prev = "";
foreach (@lines) {
$linenum++;
# lines beginning with '#' are ignored
next if ($line =~ /^\#.*$/);
next if (/^\#.*$/);
if (/^(.*)\\$/) {
$prev .= $1;
next;
} else {
$line = "$prev$_";
$prev = "";
}
if (not $waiting and ($line =~ /^\[([a-zA-Z0-9_:]+)\][\t ]*$/))
if ($line =~ /^\[([a-zA-Z0-9_:]+)\][\t ]*$/)
{
$section = $1;
$infragment = 0;
next;
}
# include
if ($line =~ /^include (.*)$/) {
$makefile .= run_config_mk($input, $1);
next;
}
# empty line
if ($line =~ /^[ \t]*$/) {
$waiting = 0;
$section = "GLOBAL";
if ($infragment) { $makefile.="\n"; }
next;
}
# global stuff is considered part of the makefile
if ($section eq "GLOBAL") {
$makefile .= $line;
$infragment = 1;
next;
}
# Assignment
if (not $waiting and
($line =~ /^([a-zA-Z0-9_]+)([\t ]*)=(.*)$/)) {
my $key = $1;
my $val = $3;
# Continuing lines
if ($val =~ /^(.*)\\$/) {
$val = $1;
($val.= " $1") while(($line = <CONFIG_MK>) =~ /^[\t ]*(.*)\\$/);
$val .= $line;
}
$result->{$section}{$key}{KEY} = $key;
$result->{$section}{$key}{VAL} = $val;
if ($line =~ /^([a-zA-Z0-9_]+)[\t ]*=(.*)$/) {
$result->{$section}{$1}{VAL} = $2;
$result->{$section}{$1}{KEY} = $1;
next;
}
@ -108,17 +109,6 @@ sub _parse_config_mk($)
die("$filename:$linenum: Bad line while parsing $filename");
}
close(CONFIG_MK);
return ($result,$makefile);
}
sub import_file($$)
{
my ($input, $filename) = @_;
my ($result, $makefile) = _parse_config_mk($filename);
foreach my $section (keys %{$result}) {
my ($type, $name) = split(/::/, $section, 2);
@ -143,25 +133,8 @@ sub import_file($$)
}
}
}
return $makefile;
}
sub import_files($$)
{
my ($input, $config_list) = @_;
open(IN, $config_list) or die("Can't open $config_list: $!");
my @mkfiles = grep{!/^#/} <IN>;
close(IN);
$| = 1;
my $makefragment = "";
foreach (@mkfiles) {
s/\n//g;
$makefragment.= import_file($input, $_);
}
return $makefragment;
}
1;

View File

@ -18,7 +18,7 @@ use strict;
my $INPUT = {};
my $mkfile = config_mk::import_files($INPUT, "config.list");
my $mkfile = config_mk::run_config_mk($INPUT, "Makefile.core");
my $DEPEND = smb_build::input::check($INPUT, \%config::enabled);
my $OUTPUT = output::create_output($DEPEND);
makefile::create_makefile_in($OUTPUT, $mkfile, "Makefile.in");

View File

@ -18,6 +18,7 @@ sub _prepare_path_vars()
$output = << '__EOD__';
prefix = @prefix@
exec_prefix = @exec_prefix@
selftest_prefix = @selftest_prefix@
VPATH = @srcdir@
srcdir = @srcdir@
builddir = @builddir@
@ -88,6 +89,8 @@ XSLTPROC=$config{XSLTPROC}
LEX=$config{LEX}
YACC=$config{YACC}
DEFAULT_TEST_TARGET=$config{DEFAULT_TEST_TARGET}
__EOD__
}
@ -102,7 +105,6 @@ __EOD__
sub _prepare_SUFFIXES()
{
return << '__EOD__';
.SUFFIXES:
.SUFFIXES: .c .et .y .l .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml
__EOD__
@ -134,20 +136,20 @@ pch_clean:
basics: idl proto_exists HEIMDAL_EXTERNAL
test: @DEFAULT_TEST_TARGET@
test: $(DEFAULT_TEST_TARGET)
test-swrap: all
./script/tests/selftest.sh @selftest_prefix@/st all SOCKET_WRAPPER
./script/tests/selftest.sh ${selftest_prefix}/st all SOCKET_WRAPPER
test-noswrap: all
./script/tests/selftest.sh @selftest_prefix@/st all
./script/tests/selftest.sh ${selftest_prefix}/st all
quicktest: all
./script/tests/selftest.sh @selftest_prefix@/st quick SOCKET_WRAPPER
./script/tests/selftest.sh ${selftest_prefix}/st quick SOCKET_WRAPPER
valgrindtest: all
SMBD_VALGRIND="xterm -n smbd -e valgrind -q --db-attach=yes --num-callers=30" \
./script/tests/selftest.sh @selftest_prefix@/st quick SOCKET_WRAPPER
./script/tests/selftest.sh ${selftest_prefix}/st quick SOCKET_WRAPPER
__EOD__
}
@ -174,7 +176,7 @@ sub _prepare_binaries($)
next unless defined $_->{OUTPUT_TYPE};
next unless ($_->{OUTPUT_TYPE} eq "BINARY");
push (@sbn_list, $_->{OUTPUT}) if ($_->{INSTALLDIR} eq "SBINDIR");
push(@sbn_list, $_->{OUTPUT}) if ($_->{INSTALLDIR} eq "SBINDIR");
push(@bbn_list, $_->{OUTPUT}) if ($_->{INSTALLDIR} eq "BINDIR");
}
@ -183,9 +185,6 @@ sub _prepare_binaries($)
return << "__EOD__";
BIN_PROGS = $bbn
SBIN_PROGS = $sbn
binaries: \$(BIN_PROGS) \$(SBIN_PROGS)
__EOD__
}
@ -203,8 +202,6 @@ sub _prepare_manpages($)
return << "__EOD__";
MANPAGES = $mp
manpages: \$(MANPAGES)
__EOD__
}
@ -416,11 +413,9 @@ sub _prepare_mergedobj_rule($)
return "" unless $ctx->{TARGET};
my $output = "";
my $tmpdepend = array2oneperline($ctx->{DEPEND_LIST});
$output .= "$ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST = $tmpdepend\n";
my $output = "$ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST = $tmpdepend\n";
$output .= "$ctx->{TARGET}: \$($ctx->{TYPE}_$ctx->{NAME}_DEPEND_LIST) \$($ctx->{TYPE}_$ctx->{NAME}_OBJS)\n";
@ -646,27 +641,6 @@ sub _prepare_target_settings($)
sub _prepare_install_rules()
{
return << '__EOD__';
showlayout:
@echo "Samba will be installed into:"
@echo " basedir: $(BASEDIR)"
@echo " bindir: $(BINDIR)"
@echo " sbindir: $(SBINDIR)"
@echo " libdir: $(LIBDIR)"
@echo " vardir: $(VARDIR)"
@echo " privatedir: $(PRIVATEDIR)"
@echo " piddir: $(PIDDIR)"
@echo " lockdir: $(LOCKDIR)"
@echo " swatdir: $(SWATDIR)"
@echo " mandir: $(MANDIR)"
showflags:
@echo "Samba will be compiled with flags:"
@echo " CFLAGS = $(CFLAGS)"
@echo " LD_FLAGS = $(LD_FLAGS)"
@echo " STLD_FLAGS = $(STLD_FLAGS)"
@echo " SHLD_FLAGS = $(SHLD_FLAGS)"
install: showlayout installbin installdat installswat
# DESTDIR is used here to prevent packagers wasting their time
@ -702,29 +676,6 @@ uninstallbin:
uninstallman:
@$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(MANPAGES)
# Swig extensions
swig: scripting/swig/_tdb.so scripting/swig/_dcerpc.so
scripting/swig/tdb_wrap.c: scripting/swig/tdb.i
swig -python scripting/swig/tdb.i
scripting/swig/_tdb.so: scripting/swig/tdb_wrap.o $(LIBRARY_swig_tdb_DEPEND_LIST)
$(SHLD) $(SHLD_FLAGS) -o scripting/swig/_tdb.so scripting/swig/tdb_wrap.o \
$(LIBRARY_swig_tdb_SHARED_LINK_LIST) $(LIBRARY_swig_tdb_SHARED_LINK_FLAGS)
SWIG_INCLUDES = librpc/gen_ndr/samr.i librpc/gen_ndr/lsa.i librpc/gen_ndr/spoolss.i
scripting/swig/dcerpc_wrap.c: scripting/swig/dcerpc.i scripting/swig/samba.i scripting/swig/status_codes.i $(SWIG_INCLUDES)
swig -python scripting/swig/dcerpc.i
scripting/swig/_dcerpc.so: scripting/swig/dcerpc_wrap.o $(LIBRARY_swig_dcerpc_DEPEND_LIST)
$(SHLD) $(SHLD_FLAGS) -o scripting/swig/_dcerpc.so scripting/swig/dcerpc_wrap.o $(LIBRARY_swig_dcerpc_SHARED_LINK_LIST) $(LIBRARY_swig_dcerpc_SHARED_LINK_FLAGS)
swig_clean:
-rm -f scripting/swig/_tdb.so scripting/swig/tdb.pyc \
scripting/swig/tdb.py scripting/swig/tdb_wrap.c \
scripting/swig/tdb_wrap.o
everything: all
etags:

View File

@ -1,53 +0,0 @@
# master list of build config files for Samba4
config.mk
heimdal_build/config.mk
dsdb/config.mk
gtk/config.mk
smbd/config.mk
smbd/process_model.mk
libnet/config.mk
auth/config.mk
nsswitch/config.mk
lib/basic.mk
lib/socket/config.mk
lib/ldb/config.mk
lib/talloc/config.mk
lib/tdb/config.mk
lib/tls/config.mk
lib/registry/config.mk
lib/messaging/config.mk
lib/events/config.mk
lib/popt/config.mk
lib/cmdline/config.mk
lib/socket_wrapper/config.mk
lib/appweb/config.mk
param/config.mk
smb_server/config.mk
rpc_server/config.mk
ldap_server/config.mk
web_server/config.mk
winbind/config.mk
nbt_server/config.mk
cldap_server/config.mk
auth/gensec/config.mk
auth/kerberos/config.mk
auth/ntlmssp/config.mk
libcli/auth/config.mk
libcli/ldap/config.mk
libcli/config.mk
utils/net/config.mk
utils/config.mk
ntvfs/posix/config.mk
ntvfs/config.mk
ntvfs/unixuid/config.mk
ntptr/config.mk
torture/config.mk
librpc/config.mk
client/config.mk
libcli/config.mk
libcli/security/config.mk
lib/com/config.mk
scripting/config.mk
kdc/config.mk
lib/replace/config.mk
scripting/ejs/config.mk

View File

@ -11,3 +11,26 @@ REQUIRED_SUBSYSTEMS = LIBTDB
REQUIRED_SUBSYSTEMS = LIBCLI NDR_MISC LIBBASIC CONFIG RPC_NDR_SAMR RPC_NDR_LSA
# End LIBRARY swig_dcerpc
#######################
# Swig extensions
swig: scripting/swig/_tdb.so scripting/swig/_dcerpc.so
scripting/swig/tdb_wrap.c: scripting/swig/tdb.i
swig -python scripting/swig/tdb.i
scripting/swig/_tdb.so: scripting/swig/tdb_wrap.o $(LIBRARY_swig_tdb_DEPEND_LIST)
$(SHLD) $(SHLD_FLAGS) -o scripting/swig/_tdb.so scripting/swig/tdb_wrap.o \
$(LIBRARY_swig_tdb_SHARED_LINK_LIST) $(LIBRARY_swig_tdb_SHARED_LINK_FLAGS)
SWIG_INCLUDES = librpc/gen_ndr/samr.i librpc/gen_ndr/lsa.i librpc/gen_ndr/spoolss.i
scripting/swig/dcerpc_wrap.c: scripting/swig/dcerpc.i scripting/swig/samba.i scripting/swig/status_codes.i $(SWIG_INCLUDES)
swig -python scripting/swig/dcerpc.i
scripting/swig/_dcerpc.so: scripting/swig/dcerpc_wrap.o $(LIBRARY_swig_dcerpc_DEPEND_LIST)
$(SHLD) $(SHLD_FLAGS) -o scripting/swig/_dcerpc.so scripting/swig/dcerpc_wrap.o $(LIBRARY_swig_dcerpc_SHARED_LINK_LIST) $(LIBRARY_swig_dcerpc_SHARED_LINK_FLAGS)
swig_clean:
-rm -f scripting/swig/_tdb.so scripting/swig/tdb.pyc \
scripting/swig/tdb.py scripting/swig/tdb_wrap.c \
scripting/swig/tdb_wrap.o