[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha3-121-gceda331

Jelmer Vernooij jelmer at samba.org
Mon Apr 14 12:52:31 GMT 2008


The branch, v4-0-test has been updated
       via  ceda3312a98b069d0711f3cb33de3ae71e91ebaa (commit)
      from  9d3d64e1387e9f20383c255bba27128cf4b9519e (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit ceda3312a98b069d0711f3cb33de3ae71e91ebaa
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Mon Apr 14 14:51:57 2008 +0200

    Move standard make compilation rules to build/make.

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile                   |   26 +++-
 source/build/make/lex_compile.sh  |   51 +++++++
 source/build/make/python.mk       |   58 ++++++++
 source/build/make/rules.mk        |  288 +++++++++++++++++++++++++++++++++++++
 source/build/make/yacc_compile.sh |   43 ++++++
 source/dynconfig.mk               |    3 +-
 source/rules.mk                   |  191 ------------------------
 source/script/lex_compile.sh      |   51 -------
 source/script/yacc_compile.sh     |   43 ------
 source/scripting/python/config.mk |   17 +--
 10 files changed, 466 insertions(+), 305 deletions(-)
 create mode 100755 source/build/make/lex_compile.sh
 create mode 100644 source/build/make/python.mk
 create mode 100644 source/build/make/rules.mk
 create mode 100755 source/build/make/yacc_compile.sh
 delete mode 100644 source/rules.mk
 delete mode 100755 source/script/lex_compile.sh
 delete mode 100755 source/script/yacc_compile.sh


Changeset truncated at 500 lines:

diff --git a/source/Makefile b/source/Makefile
index ab3ef47..8c74b48 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -19,6 +19,25 @@ BNLD_FLAGS = $(LDFLAGS) $(SYS_LDFLAGS)
 HOSTCC_FLAGS = -D_SAMBA_HOSTCC_ $(CFLAGS)
 HOSTLD_FLAGS = $(LDFLAGS) $(SYS_LDFLAGS)
 
+$(srcdir)/version.h: $(srcdir)/VERSION
+	@$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/
+
+.DEFAULT_GOAL := all
+
+ifneq ($(automatic_deps),yes)
+ALL_PREDEP = proto
+.NOTPARALLEL:
+endif
+
+regen_version::
+	@$(SHELL) script/mkversion.sh VERSION $(srcdir)/version.h $(srcdir)/
+
+clean_pch::
+	@echo "Removing precompiled headers"
+	@-rm -f include/includes.h.gch
+
+pch:: clean_pch include/includes.h.gch
+
 .DEFAULT_GOAL := all
 
 ifneq ($(automatic_dependencies),yes)
@@ -26,9 +45,12 @@ ALL_PREDEP = proto
 .NOTPARALLEL:
 endif
 
-include rules.mk
+include build/make/rules.mk
+include build/make/python.mk
 include data.mk
 
+BINARIES += $(BIN_PROGS) $(SBIN_PROGS)
+
 DEP_FILES = $(patsubst %.ho,%.hd,$(patsubst %.o,%.d,$(ALL_OBJS))) \
 		   include/includes.d
 
@@ -55,7 +77,7 @@ endif
 DEFAULT_HEADERS = $(srcdir)/lib/util/dlinklist.h \
 		  $(srcdir)/version.h
 
-binaries::
+binaries:: $(BINARIES)
 libraries:: $(STATIC_LIBS) $(SHARED_LIBS)
 modules:: $(PLUGINS)
 headers:: $(PUBLIC_HEADERS) $(DEFAULT_HEADERS)
diff --git a/source/build/make/lex_compile.sh b/source/build/make/lex_compile.sh
new file mode 100755
index 0000000..9bba725
--- /dev/null
+++ b/source/build/make/lex_compile.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+LEX="$1"
+SRC="$2"
+DEST="$3"
+shift 3
+ARGS="$*"
+
+dir=`dirname $SRC`
+file=`basename $SRC`
+base=`basename $SRC .l`
+if [ -z "$LEX" ]; then
+	# if $DEST is more recent than $SRC, we can just touch
+	# otherwise we touch but print out warnings
+	if [ -r $DEST ]; then
+		if [ x`find $SRC -newer $DEST -print` = x$SRC ]; then
+			echo "warning: lex not found - cannot generate $SRC => $DEST" >&2
+			echo "warning: lex not found - only updating the timestamp of $DEST" >&2
+		fi
+		touch $DEST;
+		exit;
+	fi
+	echo "error: lex not found - cannot generate $SRC => $DEST" >&2
+	exit 1;
+fi
+# if $DEST is more recent than $SRC, we can just touch
+if [ -r $DEST ]; then
+	if [ x`find $SRC -newer $DEST -print` != x$SRC ]; then
+		touch $DEST;
+		exit;
+	fi
+fi
+TOP=`pwd`
+if cd $dir && $LEX $ARGS $file; then
+	if [ -r $base.yy.c ];then
+	        # we must guarantee that config.h comes first
+	        echo "#include \"config.h\"" > $base.c
+		sed -e "s|$base\.yy\.c|$DEST|" $base.yy.c >> $base.c
+		rm -f $base.yy.c
+	elif [ -r $base.c ];then
+	        # we must guarantee that config.h comes first
+		mv $base.c $base.c.tmp
+	        echo "#include \"config.h\"" > $base.c
+		sed -e "s|$base\.yy\.c|$DEST|" $base.c.tmp >> $base.c
+		rm -f $base.c.tmp
+	elif [ ! -r base.c ]; then
+		echo "$base.c nor $base.yy.c generated."
+		exit 1
+	fi
+fi
+cd $TOP
diff --git a/source/build/make/python.mk b/source/build/make/python.mk
new file mode 100644
index 0000000..57bf016
--- /dev/null
+++ b/source/build/make/python.mk
@@ -0,0 +1,58 @@
+pythonbuilddir = $(builddir)/bin/python
+
+# Install Python
+# Arguments: Module path
+define python_module_template
+
+installpython:: $$(pythonbuilddir)/$(1) ;
+	cp $$< $$(DESTDIR)$$(PYTHONDIR)/$(1)
+
+uninstallpython:: 
+	rm -f $$(DESTDIR)$$(PYTHONDIR)/$(1) ;
+
+pythonmods:: $$(pythonbuilddir)/$(1) ;
+
+endef
+
+define python_py_module_template
+
+$$(pythonbuilddir)/$(1): $(2) ;
+	mkdir -p $$(@D)
+	cp $$< $$@
+
+$(call python_module_template,$(1))
+
+endef
+
+# Python C module
+# Arguments: Module path, object files
+define python_c_module_template
+
+$$(pythonbuilddir)/$(1): $(2) ; 
+	@echo Linking $$@
+	@mkdir -p $$(@D)
+	@$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+
+$(call python_module_template,$(1))
+endef
+
+# Swig extensions
+swig:: pythonmods
+
+.SUFFIXES: _wrap.c .i
+
+.i_wrap.c:
+	[ "$(SWIG)" == "no" ] || $(SWIG) -O -Wall -I$(srcdir)/scripting/swig -python -keyword $<
+
+realdistclean::
+	@echo "Removing SWIG output files"
+	# FIXME: Remove _wrap.c files
+
+pythonmods::
+
+clean::
+	@echo "Removing python modules"
+	@rm -rf $(pythonbuilddir)
+
+pydoctor:: pythonmods
+	LD_LIBRARY_PATH=bin/shared PYTHONPATH=$(pythonbuilddir) pydoctor --project-name=Samba --project-url=http://www.samba.org --make-html --docformat=restructuredtext --add-package $(pythonbuilddir)/samba
diff --git a/source/build/make/rules.mk b/source/build/make/rules.mk
new file mode 100644
index 0000000..faefb4e
--- /dev/null
+++ b/source/build/make/rules.mk
@@ -0,0 +1,288 @@
+# Rules file for Samba 4
+# This relies on GNU make.
+#
+# Dependencies command
+DEPENDS = $(CC) -M -MG -MP -MT $(<:.c=.o) -MT $@ \
+    $(CFLAGS) $(CPPFLAGS) $< -o $@
+# Dependencies for host objects
+HDEPENDS = $(CC) -M -MG -MP -MT $(<:.c=.ho) -MT $@ \
+    $(HOSTCC_FLAGS) $(CPPFLAGS) $< -o $@
+# Dependencies for precompiled headers
+PCHDEPENDS = $(CC) -M -MG -MT include/includes.h.gch -MT $@ \
+    $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+# Run a static analysis checker
+CHECK = $(CC_CHECKER) $(CFLAGS) $(PICFLAG) $(CPPLAGS) -c $< -o $@
+
+# Run the configured compiler
+COMPILE = $(CC) $(CFLAGS) $(PICFLAG) \
+		  $(CPPFLAGS) \
+		  -c $< -o $@
+
+# Run the compiler for the build host
+HCOMPILE = $(HOSTCC) $(HOSTCC_FLAGS) $(CPPFLAGS) -c $< -o $@
+
+# Precompile headers
+PCHCOMPILE = @$(CC) -Ilib/replace \
+    $(CFLAGS) $(PICFLAG) $(CPPFLAGS) -c $< -o $@
+
+# Partial linking
+PARTLINK = @$(PROG_LD) -r
+
+make_utility_dir = $(srcdir)/build/make/
+
+include/config.h:
+	@echo "include/config.h not present"
+	@echo "You need to rerun ./autogen.sh and ./configure"
+	@/bin/false
+
+pch::
+
+clean:: clean_pch
+	@echo Removing objects
+	@-find . -name '*.o' -exec rm -f '{}' \;
+	@echo Removing hostcc objects
+	@-find . -name '*.ho' -exec rm -f '{}' \;
+	@echo Removing binaries
+	@-rm -f $(BIN_PROGS) $(SBIN_PROGS) $(BINARIES) $(TORTURE_PROGS)
+	@echo Removing libraries
+	@-rm -f $(STATIC_LIBS) $(SHARED_LIBS)
+	@-rm -f bin/static/*.a bin/shared/*.$(SHLIBEXT) bin/mergedobj/*.o
+	@echo Removing modules
+	@-rm -f bin/modules/*/*.$(SHLIBEXT)
+	@-rm -f bin/*_init_module.c
+	@echo Removing dummy targets
+	@-rm -f bin/.*_*
+	@echo Removing generated files
+	@-rm -f bin/*_init_module.c
+	@-rm -rf librpc/gen_* 
+	@echo Removing proto headers
+	@-rm -f $(PROTO_HEADERS)
+
+distclean:: clean
+	-rm -f include/config.h include/config_tmp.h include/build.h
+	-rm -f data.mk
+	-rm -f config.status
+	-rm -f config.log config.cache
+	-rm -f config.pm config.mk
+	-rm -f $(PC_FILES)
+
+removebackup::
+	-rm -f *.bak *~ */*.bak */*~ */*/*.bak */*/*~ */*/*/*.bak */*/*/*~
+
+realdistclean:: distclean removebackup
+	-rm -f include/config_tmp.h.in
+	-rm -f version.h
+	-rm -f configure
+	-rm -f $(MANPAGES)
+
+check:: test
+
+unused_macros:
+	$(srcdir)/script/find_unused_macros.pl `find . -name "*.[ch]"` | sort
+
+# Create a static library
+%.a:
+	@echo Linking $@
+	@rm -f $@
+	@mkdir -p $(@D)
+	@$(STLD) $(STLD_FLAGS) $@ $^
+
+###############################################################################
+# Templates
+###############################################################################
+
+# Partially link
+# Arguments: target object file, source object files
+define partial_link_template 
+$(1): $(2) ;
+	@echo Partially linking $$@
+	@mkdir -p $$(@D)
+	$$(PARTLINK) -o $$@ $$^
+endef
+
+# Link a binary
+# Arguments: target file, depends, flags
+define binary_link_template
+$(1): $(2) ;
+	@echo Linking $$@
+	@$$(BNLD) $$(BNLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+endef
+
+# Link a host-machine binary
+# Arguments: target file, depends, flags
+define host_binary_link_template
+$(1): $(2) ;
+	@echo Linking $$@
+	@$$(HOSTLD) $$(HOSTLD_FLAGS) -L$${builddir}/bin/static -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+endef
+
+# Create a prototype header
+# Arguments: header file, c files
+define proto_header_template
+$(1): $(2) ;
+	@echo "Creating $$@"
+	@$$(PERL) $$(srcdir)/script/mkproto.pl --srcdir=$$(srcdir) --builddir=$$(builddir) --public=/dev/null --private=$$@ $$^
+endef
+
+# Shared module
+# Arguments: Target, dependencies, objects
+define shared_module_template
+
+$(1): $(2) ;
+	@echo Linking $$@
+	@mkdir -p $$(@D)
+	@$$(MDLD) $$(LDFLAGS) $$(MDLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) $(3)
+
+endef
+
+# Shared library
+# Arguments: Target, dependencies, link flags, soname
+define shared_library_template
+$(1): $(2)
+	@echo Linking $$@
+	@mkdir -p $$(@D)
+	@$$(SHLD) $$(LDFLAGS) $$(SHLD_FLAGS) $$(INTERN_LDFLAGS) -o $$@ $$(INSTALL_LINK_FLAGS) \
+		$(3) \
+		$$(if $$(SONAMEFLAG), $$(SONAMEFLAG)$(notdir $(4)))
+
+ifneq ($(notdir $(1)),$(notdir $(4)))
+$(4): $(1)
+	@echo "Creating symbolic link for $$@"
+	@ln -fs $$(<F) $$@
+endif
+
+ifneq ($(notdir $(1)),$(notdir $(5)))
+$(5): $(1)
+	@echo "Creating symbolic link for $$@"
+	@ln -fs $$(<F) $$@
+endif
+endef
+
+# Shared alias
+# Arguments: Target, subsystem name, alias name
+define shared_module_alias_template
+bin/modules/$(2)/$(3).$$(SHLIBEXT): $(1)
+	@ln -fs $$(<F) $$@
+
+PLUGINS += bin/modules/$(2)/$(3).$$(SHLIBEXT)
+
+uninstallplugins::
+	@-rm $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
+installplugins::
+	@ln -fs $(1) $$(DESTDIR)$$(modulesdir)/$(2)/$(3).$$(SHLIBEXT)
+
+endef
+
+define shared_module_install_template
+installplugins:: bin/modules/$(1)/$(2)
+	@echo Installing$(2) as $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
+	@mkdir -p $$(DESTDIR)$$(modulesdir)/$(1)/
+	@cp bin/modules/$(1)/$(2) $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
+uninstallplugins::
+	@echo Uninstalling $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
+	@-rm $$(DESTDIR)$$(modulesdir)/$(1)/$(2)
+
+endef
+
+###############################################################################
+# File types
+###############################################################################
+
+.SUFFIXES: .x .c .et .y .l .d .o .h .h.gch .a .$(SHLIBEXT) .1 .1.xml .3 .3.xml .5 .5.xml .7 .7.xml .8 .8.xml .ho .idl .hd
+
+.c.d:
+	@echo "Generating dependencies for $<"
+	@$(DEPENDS)
+
+.c.hd:
+	@echo "Generating host-compiler dependencies for $<"
+	@$(HDEPENDS)
+
+include/includes.d: include/includes.h
+	@echo "Generating dependencies for $<"
+	@$(PCHDEPENDS)
+
+.c.o:
+	@if test -n "$(CC_CHECKER)"; then \
+		echo "Checking  $< with '$(CC_CHECKER)'"; \
+		$(CHECK) ; \
+	fi
+	@echo "Compiling $<"
+	@-mkdir -p `dirname $@`
+	@$(COMPILE) && exit 0 ; \
+	$(COMPILE) 
+
+
+
+.c.ho:
+	@echo "Compiling $< with host compiler"
+	@-mkdir -p `dirname $@`
+	@$(HCOMPILE) && exit 0;\
+		echo "The following command failed:" 1>&2;\
+		echo "$(HCOMPILE)" 1>&2;\
+		$(HCOMPILE) >/dev/null 2>&1
+
+.h.h.gch:
+	@echo "Precompiling $<"
+	@$(PCHCOMPILE)
+
+.y.c:
+	@echo "Building $< with $(YACC)"
+	@-$(make_utility_dir)/yacc_compile.sh "$(YACC)" "$<" "$@"
+
+.l.c:
+	@echo "Building $< with $(LEX)"
+	@-$(make_utility_dir)/script/lex_compile.sh "$(LEX)" "$<" "$@"
+
+%.a:
+	@echo Linking $@
+	@rm -f $@
+	@mkdir -p $(@D)
+	@$(STLD) $(STLD_FLAGS) $@ $^
+
+
+DOCBOOK_MANPAGE_URL = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+
+.1.xml.1:
+	$(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $<
+
+.3.xml.3:
+	$(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $<
+
+.5.xml.5:
+	$(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $<
+
+.7.xml.7:
+	$(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $<
+
+.8.xml.8:
+	$(XSLTPROC) -o $@ $(DOCBOOK_MANPAGE_URL) $<
+
+dist:: idl_full manpages configure distclean 
+
+configure: 
+	./autogen.sh
+
+showflags::
+	@echo 'Samba will be compiled with flags:'
+	@echo '  CPP        = $(CPP)'
+	@echo '  CPPFLAGS   = $(CPPFLAGS)'
+	@echo '  CC         = $(CC)'
+	@echo '  CFLAGS     = $(CFLAGS)'
+	@echo '  PICFLAG    = $(PICFLAG)'
+	@echo '  BNLD       = $(BNLD)'
+	@echo '  BNLD_FLAGS = $(BNLD_FLAGS)'
+	@echo '  STLD       = $(STLD)'
+	@echo '  STLD_FLAGS = $(STLD_FLAGS)'
+	@echo '  SHLD       = $(SHLD)'
+	@echo '  SHLD_FLAGS = $(SHLD_FLAGS)'
+	@echo '  MDLD       = $(MDLD)'
+	@echo '  MDLD_FLAGS = $(MDLD_FLAGS)'
+	@echo '  SHLIBEXT   = $(SHLIBEXT)'
+
+etags:
+	etags `find $(srcdir) -name "*.[ch]"`
+
+ctags:
+	ctags `find $(srcdir) -name "*.[ch]"`
diff --git a/source/build/make/yacc_compile.sh b/source/build/make/yacc_compile.sh
new file mode 100755
index 0000000..a56a51d
--- /dev/null
+++ b/source/build/make/yacc_compile.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+YACC="$1"
+SRC="$2"
+DEST="$3"
+
+dir=`dirname $SRC`
+file=`basename $SRC`
+base=`basename $SRC .y`
+if [ -z "$YACC" ]; then
+	# if $DEST is more recent than $SRC, we can just touch
+	# otherwise we touch but print out warnings
+	if [ -r $DEST ]; then
+		if [ x`find $SRC -newer $DEST -print` = x$SRC ]; then
+			echo "warning: yacc not found - cannot generate $SRC => $DEST" >&2
+			echo "warning: yacc not found - only updating the timestamp of $DEST" >&2
+		fi
+		touch $DEST;
+		exit;
+	fi
+	echo "error: yacc not found - cannot generate $SRC => $DEST" >&2
+	exit 1;
+fi
+# if $DEST is more recent than $SRC, we can just touch
+if [ -r $DEST ]; then
+	if [ x`find $SRC -newer $DEST -print` != x$SRC ]; then


-- 
Samba Shared Repository


More information about the samba-cvs mailing list