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:
parent
186bcabaa6
commit
43779c09b6
78
source/Makefile.core
Normal file
78
source/Makefile.core
Normal 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)"
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user