From 7facdcc161b75c7a3a85a0f6380f5b83394183c4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 3 Aug 2005 05:28:08 +0000 Subject: r8985: Automatically generate make dependency rules for the asn1 and error table files. This removes the need for HEIMDAL_EXTERNAL (This used to be commit 2f481ac93c0151b82dab737d49ae8d0d3cbbbbbe) --- source4/Makefile.core | 86 ++++++++++++++++++++ source4/build/smb_build/makefile.pm | 139 +------------------------------- source4/heimdal_build/asn1_deps.pl | 31 +++++++ source4/heimdal_build/build_external.sh | 43 ---------- source4/heimdal_build/config.mk | 21 +++-- source4/heimdal_build/et_deps.pl | 14 ++++ source4/lib/talloc/config.mk | 10 +-- source4/scripting/config.mk | 4 +- 8 files changed, 150 insertions(+), 198 deletions(-) create mode 100755 source4/heimdal_build/asn1_deps.pl delete mode 100755 source4/heimdal_build/build_external.sh create mode 100755 source4/heimdal_build/et_deps.pl diff --git a/source4/Makefile.core b/source4/Makefile.core index 8e593224eb..5f417b4624 100644 --- a/source4/Makefile.core +++ b/source4/Makefile.core @@ -52,8 +52,10 @@ include kdc/config.mk include lib/replace/config.mk include scripting/ejs/config.mk +all: binaries binaries: $(BIN_PROGS) $(SBIN_PROGS) manpages: $(MANPAGES) +everything: all showlayout: @echo "Samba will be installed into:" @@ -75,4 +77,88 @@ showflags: @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 +# duplicating the Makefile. Remove it and you will have the privilege +# of packaging each samba release for multiple versions of multiple +# distributions and operating systems, or at least supplying patches +# to all the packaging files required for this, prior to committing +# the removal of DESTDIR. Do not remove it even though you think it +# is not used. + +installdirs: + @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PRIVATEDIR) $(DESTDIR)$(PIDDIR) $(DESTDIR)$(LOCKDIR) $(DESTDIR)$(PRIVATEDIR)/tls + +installbin: binaries installdirs + @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) + @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS) + +installdat: installdirs + @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir) + +installswat: installdirs + @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir) $(DESTDIR)$(LIBDIR) + +installman: installdirs + @$(SHELL) $(srcdir)/script/installman.sh $(DESTDIR)$(MANDIR) $(MANPAGES) + +uninstall: uninstallbin uninstallman + +uninstallbin: + @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(SBIN_PROGS) + @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS) + +uninstallman: + @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(MANPAGES) + + +etags: + etags `find $(srcdir) -name "*.[ch]"` + +ctags: + ctags `find $(srcdir) -name "*.[ch]"` + +idl_full: build/pidl/Parse/Pidl/IDL.pm + @CPP="$(CPP)" PERL="$(PERL)" script/build_idl.sh FULL @PIDL_ARGS@ + +idl: build/pidl/Parse/Pidl/IDL.pm + @CPP="$(CPP)" PERL="$(PERL)" script/build_idl.sh PARTIAL @PIDL_ARGS@ + +build/pidl/Parse/Pidl/IDL.pm: build/pidl/idl.yp + -yapp -s -m 'Parse::Pidl::IDL' -o build/pidl/Parse/Pidl/IDL.pm build/pidl/idl.yp + +smb_interfaces: build/pidl/smb_interfaces.pm + $(PERL) -Ibuild/pidl script/build_smb_interfaces.pl \ + include/smb_interfaces.h + +build/pidl/smb_interfaces.pm: build/pidl/smb_interfaces.yp + -yapp -s -m 'smb_interfaces' -o build/pidl/smb_interfaces.pm build/pidl/smb_interfaces.yp + +pch: proto include/includes.h.gch + +pch_clean: + -rm -f include/includes.h.gch + +basics: idl proto_exists + +test: $(DEFAULT_TEST_TARGET) + +test-swrap: all + ./script/tests/selftest.sh ${selftest_prefix}/st all SOCKET_WRAPPER + +test-noswrap: all + ./script/tests/selftest.sh ${selftest_prefix}/st all + +quicktest: all + ./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 + +.y.c: + $(YACC) -d -o $@ $< + +.l.c: + $(LEX) -o $@ $< diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm index 42728a2a9c..d8283ce9a0 100644 --- a/source4/build/smb_build/makefile.pm +++ b/source4/build/smb_build/makefile.pm @@ -105,51 +105,7 @@ __EOD__ sub _prepare_SUFFIXES() { return << '__EOD__'; -.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__ -} - -sub _prepare_IDL() -{ - return << '__EOD__'; -idl_full: build/pidl/Parse/Pidl/IDL.pm - @CPP="$(CPP)" PERL="$(PERL)" script/build_idl.sh FULL @PIDL_ARGS@ - -idl: build/pidl/Parse/Pidl/IDL.pm - @CPP="$(CPP)" PERL="$(PERL)" script/build_idl.sh PARTIAL @PIDL_ARGS@ - -build/pidl/Parse/Pidl/IDL.pm: build/pidl/idl.yp - -yapp -s -m 'Parse::Pidl::IDL' -o build/pidl/Parse/Pidl/IDL.pm build/pidl/idl.yp - -smb_interfaces: build/pidl/smb_interfaces.pm - $(PERL) -Ibuild/pidl script/build_smb_interfaces.pl \ - include/smb_interfaces.h - -build/pidl/smb_interfaces.pm: build/pidl/smb_interfaces.yp - -yapp -s -m 'smb_interfaces' -o build/pidl/smb_interfaces.pm build/pidl/smb_interfaces.yp - -pch: proto include/includes.h.gch - -pch_clean: - -rm -f include/includes.h.gch - -basics: idl proto_exists HEIMDAL_EXTERNAL - -test: $(DEFAULT_TEST_TARGET) - -test-swrap: all - ./script/tests/selftest.sh ${selftest_prefix}/st all SOCKET_WRAPPER - -test-noswrap: all - ./script/tests/selftest.sh ${selftest_prefix}/st all - -quicktest: all - ./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 +.SUFFIXES: .x .c .et .y .l .d .o .h .h.gch .a .so .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml __EOD__ } @@ -221,36 +177,6 @@ dynconfig.o: dynconfig.c Makefile __EOD__ } -sub _prepare_et_rule() -{ - return << '__EOD__'; - -.et.c: - $(MAKE) bin/compile_et - ./bin/compile_et $< - mv `basename $@` $@ - -__EOD__ -} - -sub _prepare_yacc_rule() -{ - return << '__EOD__'; -.y.c: - $(YACC) -d -o $@ $< - -__EOD__ -} - -sub _prepare_lex_rule() -{ - return << '__EOD__'; -.l.c: - $(LEX) -o $@ $< - -__EOD__ -} - sub _prepare_depend_CC_rule() { return << '__EOD__'; @@ -580,6 +506,7 @@ clean: delheaders @-find heimdal/lib/gssapi -name 'asn1_*.[xc]' -exec rm -f '{}' \; @-find heimdal/lib/hdb -name 'asn1_*.[xc]' -exec rm -f '{}' \; + distclean: clean -rm -f bin/.dummy -rm -f include/config.h include/smb_build.h @@ -638,55 +565,6 @@ sub _prepare_target_settings($) return $output; } -sub _prepare_install_rules() -{ - return << '__EOD__'; -install: showlayout installbin installdat installswat - -# DESTDIR is used here to prevent packagers wasting their time -# duplicating the Makefile. Remove it and you will have the privilege -# of packaging each samba release for multiple versions of multiple -# distributions and operating systems, or at least supplying patches -# to all the packaging files required for this, prior to committing -# the removal of DESTDIR. Do not remove it even though you think it -# is not used. - -installdirs: - @$(SHELL) $(srcdir)/script/installdirs.sh $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(PRIVATEDIR) $(DESTDIR)$(PIDDIR) $(DESTDIR)$(LOCKDIR) $(DESTDIR)$(PRIVATEDIR)/tls - -installbin: all installdirs - @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(SBIN_PROGS) - @$(SHELL) $(srcdir)/script/installbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(BIN_PROGS) - -installdat: installdirs - @$(SHELL) $(srcdir)/script/installdat.sh $(DESTDIR)$(LIBDIR) $(srcdir) - -installswat: installdirs - @$(SHELL) $(srcdir)/script/installswat.sh $(DESTDIR)$(SWATDIR) $(srcdir) $(DESTDIR)$(LIBDIR) - -installman: installdirs - @$(SHELL) $(srcdir)/script/installman.sh $(DESTDIR)$(MANDIR) $(MANPAGES) - -uninstall: uninstallbin uninstallman - -uninstallbin: - @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(SBIN_PROGS) - @$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS) - -uninstallman: - @$(SHELL) $(srcdir)/script/uninstallman.sh $(DESTDIR)$(MANDIR) $(MANPAGES) - -everything: all - -etags: - etags `find $(srcdir) -name "*.[ch]"` - -ctags: - ctags `find $(srcdir) -name "*.[ch]"` - -__EOD__ -} - sub _prepare_rule_lists($) { my $depend = shift; @@ -703,9 +581,7 @@ sub _prepare_rule_lists($) ($output .= _prepare_custom_rule($key) ) if $key->{TYPE} eq "TARGET"; } - $output .= _prepare_IDL(); $output .= _prepare_proto_rules(); - $output .= _prepare_install_rules(); return $output; } @@ -735,9 +611,6 @@ sub _prepare_makefile_in($) $output .= _prepare_dummy_MAKEDIR(); $output .= _prepare_std_CC_rule("c","o",$config{PICFLAG},"Compiling","Rule for std objectfiles"); $output .= _prepare_std_CC_rule("h","h.gch",$config{PICFLAG},"Precompiling","Rule for precompiled headerfiles"); - $output .= _prepare_lex_rule(); - $output .= _prepare_yacc_rule(); - $output .= _prepare_et_rule(); $output .= _prepare_depend_CC_rule(); @@ -750,14 +623,6 @@ sub _prepare_makefile_in($) $output .= _prepare_target_settings($CTX); $output .= _prepare_rule_lists($CTX); - my @all = (); - - foreach my $part (values %{$CTX}) { - push (@all, $part->{TARGET}) if defined ($part->{OUTPUT_TYPE}) and $part->{OUTPUT_TYPE} eq "BINARY"; - } - - $output .= _prepare_make_target({ TARGET => "all", DEPEND_LIST => \@all }); - if ($config{developer} eq "yes") { $output .= <<__EOD__ #-include \$(_ALL_OBJS_OBJS:.o=.d) diff --git a/source4/heimdal_build/asn1_deps.pl b/source4/heimdal_build/asn1_deps.pl new file mode 100755 index 0000000000..4cff3e2fae --- /dev/null +++ b/source4/heimdal_build/asn1_deps.pl @@ -0,0 +1,31 @@ +#!/usr/bin/perl +# Generate make dependency rules for asn1 files +# Jelmer Vernooij 2005 +# GPL + +use File::Basename; + +my $file = shift; +my $prefix = shift; + +if (not defined ($prefix)) { $prefix = "asn1"; } + +$dirname = dirname($file); +$basename = basename($file); + +my $header = "$dirname/$prefix.h"; + +print "$header: $file bin/asn1_compile\n"; +print "\t\@echo \"Compiling ASN1 file $file\"\n"; +print "\t\@cd $dirname && ../../../bin/asn1_compile $basename $prefix\n\n"; + +open(IN,$file) or die("Can't open $file: $!"); +foreach() { + if (/^([A-Za-z0-9_-]+)[ \t]*::= /) { + my $output = $1; + $output =~ s/-/_/g; + print "$dirname/asn1_$output.c: $header\n"; + print "\t\@mv $dirname/asn1_$output.x $dirname/asn1_$output.c\n\n"; + } +} +close(IN); diff --git a/source4/heimdal_build/build_external.sh b/source4/heimdal_build/build_external.sh deleted file mode 100755 index 9d80625a38..0000000000 --- a/source4/heimdal_build/build_external.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -##################### -# build generated asn1 files in heimdal/ tree -# tridge@samba.org, June 2005 - -CC="$1" - -TOP=`pwd` -ASN1_COMPILE=$TOP/bin/asn1_compile - -build_asn1() { - f=$1 - name=$2 - - dir=`dirname $f` - file=`basename $f` - echo Building $f - cd $dir && $ASN1_COMPILE $file $name || exit 1 - for f in *.x; do - base=`basename $f .x` - rm -f $base.c && cp $base.x $base.c - done - cd $TOP || exit 1 -} - -build_cp() { - f=$1 - dir=`dirname $f` - file=`basename $f` - base=`basename $f in` - echo Building $f - echo cp $base"in" $base - cd $dir && cp $base"in" $base - cd $TOP || exit 1 -} - -build_cp heimdal/lib/roken/vis.hin -build_cp heimdal/lib/roken/err.hin - -make bin/asn1_compile || exit 1 -build_asn1 heimdal/lib/hdb/hdb.asn1 hdb_asn1 -build_asn1 heimdal/lib/gssapi/spnego.asn1 spnego_asn1 -build_asn1 heimdal/lib/asn1/k5.asn1 krb5_asn1 diff --git a/source4/heimdal_build/config.mk b/source4/heimdal_build/config.mk index d2a29626f6..03aea81b5a 100644 --- a/source4/heimdal_build/config.mk +++ b/source4/heimdal_build/config.mk @@ -354,7 +354,6 @@ REQUIRED_SUBSYSTEMS = ASN1_COMPILER LIBREPLACE # End BINARY asn1_compile ####################### - ####################### # Start SUBSYSTEM COMPILE_ET [SUBSYSTEM::COMPILE_ET] @@ -380,15 +379,21 @@ REQUIRED_SUBSYSTEMS = COMPILE_ET LIBREPLACE # End BINARY compile_et ####################### +heimdal/lib/roken/vis.hin: heimdal/lib/roken/vis.h + @cp heimdal/lib/roken/vis.h heimdal/lib/roken/vis.hin -####################### -# Start TARGET HEIMDAL_EXTERNAL -[TARGET::HEIMDAL_EXTERNAL] -CMD = heimdal_build/build_external.sh "@HOSTCC@" -REQUIRED_SUBSYSTEMS = ASN1_COMPILER -# END TARGET HEIMDAL_EXTERNAL -####################### +heimdal/lib/roken/err.hin: heimdal/lib/roken/err.h + @cp heimdal/lib/roken/err.h heimdal/lib/roken/err.hin + +include ./heimdal_build/asn1_deps.pl heimdal/lib/hdb/hdb.asn1 hdb_asn1| +include ./heimdal_build/asn1_deps.pl heimdal/lib/gssapi/spnego.asn1 spnego_asn1| +include ./heimdal_build/asn1_deps.pl heimdal/lib/asn1/k5.asn1 krb5_asn1| +include ./heimdal_build/et_deps.pl heimdal/lib/asn1/asn1_err.et| +include ./heimdal_build/et_deps.pl heimdal/lib/hdb/hdb_err.et| +include ./heimdal_build/et_deps.pl heimdal/lib/krb5/heim_err.et| +include ./heimdal_build/et_deps.pl heimdal/lib/krb5/k524_err.et| +include ./heimdal_build/et_deps.pl heimdal/lib/krb5/krb5_err.et| ####################### # Start SUBSYSTEM HEIMDAL diff --git a/source4/heimdal_build/et_deps.pl b/source4/heimdal_build/et_deps.pl new file mode 100755 index 0000000000..d7be6074fe --- /dev/null +++ b/source4/heimdal_build/et_deps.pl @@ -0,0 +1,14 @@ +#!/usr/bin/perl + +use File::Basename; + +my $file = shift; +my $dirname = dirname($file); +my $basename = basename($file); + +my $header = $file; $header =~ s/\.et$/.h/; +my $source = $file; $source =~ s/\.et$/.c/; +print "$source: $file bin/compile_et\n"; +print "\t\@cd $dirname && ../../../bin/compile_et $basename\n\n"; + +print "$header: $source\n"; diff --git a/source4/lib/talloc/config.mk b/source4/lib/talloc/config.mk index a1032a6e41..7b47eacaf6 100644 --- a/source4/lib/talloc/config.mk +++ b/source4/lib/talloc/config.mk @@ -1,13 +1,10 @@ ################################################ # Start SUBSYSTEM LIBTALLOC [SUBSYSTEM::LIBTALLOC] -INIT_OBJ_FILES = \ - lib/talloc/talloc.o -REQUIRED_SUBSYSTEMS = \ - LIBREPLACE +INIT_OBJ_FILES = lib/talloc/talloc.o +REQUIRED_SUBSYSTEMS = LIBREPLACE NOPROTO = YES MANPAGE = lib/talloc/talloc.3 -# # End SUBSYSTEM LIBTALLOC ################################################ @@ -17,8 +14,7 @@ MANPAGE = lib/talloc/talloc.3 MAJOR_VERSION = 0 MINOR_VERSION = 0 RELEASE_VERSION = 1 -REQUIRED_SUBSYSTEMS = \ - LIBTALLOC +REQUIRED_SUBSYSTEMS = LIBTALLOC # # End LIBRARY LIBTALLOC ################################################ diff --git a/source4/scripting/config.mk b/source4/scripting/config.mk index d292e01f1f..9e6be54457 100644 --- a/source4/scripting/config.mk +++ b/source4/scripting/config.mk @@ -31,6 +31,4 @@ scripting/swig/_dcerpc.so: scripting/swig/dcerpc_wrap.o $(LIBRARY_swig_dcerpc_DE $(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 + -rm -f scripting/swig/_tdb.so scripting/swig/tdb.pyc scripting/swig/tdb.py scripting/swig/tdb_wrap.c scripting/swig/tdb_wrap.o -- cgit