Merge branch 'build-enhancements'

* build-enhancements:
  [build] Fix dist for the newly introduced m4 macro directory
  [build] Fix interaction between shave, gtk-doc and libtool 1.x
  [build] Add dolt
  [build] Beautify autotools' output
  [gitignore] update gitignore files for tests/
This commit is contained in:
Emmanuele Bassi 2009-02-19 14:42:40 +00:00
commit 9bdbe8a06a
14 changed files with 456 additions and 8 deletions

3
.gitignore vendored
View File

@ -8,6 +8,7 @@ clutter-*.pc
clutter.pc
.deps
.libs
*.o
*.lo
*.la
ChangeLog*
@ -50,6 +51,8 @@ doc/reference/cogl/cogl.interfaces
doc/reference/cogl/cogl.prerequisites
doc/reference/cogl/cogl.signals
doc/reference/cogl/*.stamp
doltcompile
doltlibtool
gtk-doc.make
install-sh
libtool

View File

@ -1,12 +1,14 @@
NULL =
SUBDIRS = clutter tests po
SUBDIRS = build clutter tests po
if BUILD_GTK_DOC
SUBDIRS += doc
endif
DIST_SUBDIRS = clutter tests doc po
DIST_SUBDIRS = build clutter tests doc po
ACLOCAL_AMFLAGS = -I build/autotools
pcfiles = \
clutter-$(CLUTTER_API_VERSION).pc \

View File

@ -18,6 +18,14 @@ if test -z $GTKDOCIZE; then
echo "EXTRA_DIST =" > gtk-doc.make
else
gtkdocize || exit $?
# we need to patch gtk-doc.make to support pretty output with
# libtool 1.x. Should be fixed in the next version of gtk-doc.
# To be more resilient with the various versions of gtk-doc one
# can find, just sed gkt-doc.make rather than patch it.
sed -e 's#) --mode=compile#) --tag=CC --mode=compile#' gtk-doc.make > gtk-doc.temp \
&& mv gtk-doc.temp gtk-doc.make
sed -e 's#) --mode=link#) --tag=CC --mode=link#' gtk-doc.make > gtk-doc.temp \
&& mv gtk-doc.temp gtk-doc.make
fi
GLIB_GETTEXTIZE=`which glib-gettextize`

1
build/Makefile.am Normal file
View File

@ -0,0 +1 @@
SUBDIRS = autotools

8
build/autotools/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
gtk-doc.m4
libtool.m4
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
shave
shave-libtool

View File

@ -0,0 +1,12 @@
null=
EXTRA_DIST= gtk-doc.m4 \
libtool.m4 \
ltoptions.m4 \
ltsugar.m4 \
ltversion.m4 \
lt~obsolete.m4 \
shave.m4 \
shave.in \
shave-libtool.in \
$(null)

178
build/autotools/dolt.m4 Normal file
View File

@ -0,0 +1,178 @@
dnl dolt, a replacement for libtool
dnl Copyright © 2007-2008 Josh Triplett <josh@freedesktop.org>
dnl Copying and distribution of this file, with or without modification,
dnl are permitted in any medium without royalty provided the copyright
dnl notice and this notice are preserved.
dnl
dnl To use dolt, invoke the DOLT macro immediately after the libtool macros.
dnl Optionally, copy this file into acinclude.m4, to avoid the need to have it
dnl installed when running autoconf on your project.
AC_DEFUN([DOLT], [
AC_REQUIRE([AC_CANONICAL_HOST])
# dolt, a replacement for libtool
# Josh Triplett <josh@freedesktop.org>
AC_PATH_PROG(DOLT_BASH, bash)
AC_MSG_CHECKING([if dolt supports this host])
dolt_supported=yes
if test x$DOLT_BASH = x; then
dolt_supported=no
fi
if test x$GCC != xyes; then
dolt_supported=no
fi
case $host in
i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux* \
|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*)
pic_options='-fPIC'
;;
i?86-apple-darwin*)
pic_options='-fno-common'
;;
*)
dolt_supported=no
;;
esac
if test x$dolt_supported = xno ; then
AC_MSG_RESULT([no, falling back to libtool])
LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
else
AC_MSG_RESULT([yes, replacing libtool])
dnl Start writing out doltcompile.
cat <<__DOLTCOMPILE__EOF__ >doltcompile
#!$DOLT_BASH
__DOLTCOMPILE__EOF__
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
args=("$[]@")
for ((arg=0; arg<${#args@<:@@@:>@}; arg++)) ; do
if test x"${args@<:@$arg@:>@}" = x-o ; then
objarg=$((arg+1))
break
fi
done
if test x$objarg = x ; then
echo 'Error: no -o on compiler command line' 1>&2
exit 1
fi
lo="${args@<:@$objarg@:>@}"
obj="${lo%.lo}"
if test x"$lo" = x"$obj" ; then
echo "Error: libtool object file name \"$lo\" does not end in .lo" 1>&2
exit 1
fi
objbase="${obj##*/}"
__DOLTCOMPILE__EOF__
dnl Write out shared compilation code.
if test x$enable_shared = xyes; then
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
libobjdir="${obj%$objbase}.libs"
if test ! -d "$libobjdir" ; then
mkdir_out="$(mkdir "$libobjdir" 2>&1)"
mkdir_ret=$?
if test "$mkdir_ret" -ne 0 && test ! -d "$libobjdir" ; then
echo "$mkdir_out" 1>&2
exit $mkdir_ret
fi
fi
pic_object="$libobjdir/$objbase.o"
args@<:@$objarg@:>@="$pic_object"
__DOLTCOMPILE__EOF__
cat <<__DOLTCOMPILE__EOF__ >>doltcompile
"\${args@<:@@@:>@}" $pic_options -DPIC || exit \$?
__DOLTCOMPILE__EOF__
fi
dnl Write out static compilation code.
dnl Avoid duplicate compiler output if also building shared objects.
if test x$enable_static = xyes; then
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
non_pic_object="$obj.o"
args@<:@$objarg@:>@="$non_pic_object"
__DOLTCOMPILE__EOF__
if test x$enable_shared = xyes; then
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
"${args@<:@@@:>@}" >/dev/null 2>&1 || exit $?
__DOLTCOMPILE__EOF__
else
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
"${args@<:@@@:>@}" || exit $?
__DOLTCOMPILE__EOF__
fi
fi
dnl Write out the code to write the .lo file.
dnl The second line of the .lo file must match "^# Generated by .*libtool"
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
{
echo "# $lo - a libtool object file"
echo "# Generated by doltcompile, not libtool"
__DOLTCOMPILE__EOF__
if test x$enable_shared = xyes; then
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
echo "pic_object='.libs/${objbase}.o'"
__DOLTCOMPILE__EOF__
else
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
echo pic_object=none
__DOLTCOMPILE__EOF__
fi
if test x$enable_static = xyes; then
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
echo "non_pic_object='${objbase}.o'"
__DOLTCOMPILE__EOF__
else
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
echo non_pic_object=none
__DOLTCOMPILE__EOF__
fi
cat <<'__DOLTCOMPILE__EOF__' >>doltcompile
} > "$lo"
__DOLTCOMPILE__EOF__
dnl Done writing out doltcompile; substitute it for libtool compilation.
chmod +x doltcompile
LTCOMPILE='$(top_builddir)/doltcompile $(COMPILE)'
LTCXXCOMPILE='$(top_builddir)/doltcompile $(CXXCOMPILE)'
dnl automake ignores LTCOMPILE and LTCXXCOMPILE when it has separate CFLAGS for
dnl a target, so write out a libtool wrapper to handle that case.
dnl Note that doltlibtool does not handle inferred tags or option arguments
dnl without '=', because automake does not use them.
cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
#!$DOLT_BASH
__DOLTLIBTOOL__EOF__
cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
top_builddir_slash="${0%%doltlibtool}"
: ${top_builddir_slash:=./}
args=()
modeok=false
tagok=false
for arg in "$[]@"; do
case "$arg" in
--silent) ;;
--mode=compile) modeok=true ;;
--tag=CC|--tag=CXX) tagok=true ;;
*) args@<:@${#args[@]}@:>@="$arg" ;;
esac
done
if $modeok && $tagok ; then
. ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
else
exec ${top_builddir_slash}libtool "$[]@"
fi
__DOLTLIBTOOL__EOF__
dnl Done writing out doltlibtool; substitute it for libtool.
chmod +x doltlibtool
LIBTOOL='$(top_builddir)/doltlibtool'
fi
AC_SUBST(LTCOMPILE)
AC_SUBST(LTCXXCOMPILE)
# end dolt
])

View File

@ -0,0 +1,70 @@
#!/bin/sh
# we need sed
SED=@SED@
if test -z "$SED" ; then
SED=sed
fi
Xsed="$SED -e s/^X//"
lt_unmangle ()
{
last_result=`echo -n X$1 | $Xsed -e 's#.libs/##' -e 's#[^0-9a-zA-Z_]\+_la##'`
}
# the real libtool to use
LIBTOOL="$1"
shift
# if 1, don't print anything, the underlaying wrapper will do it
pass_though=0
# scan the arguments, keep the right ones for libtool, and discover the mode
preserved_args=
while test "$#" -gt 0; do
opt="$1"
shift
case $opt in
--mode=*)
mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'`
preserved_args="$preserved_args $opt"
;;
-o)
lt_output="$1"
preserved_args="$preserved_args $opt"
;;
*)
preserved_args="$preserved_args $opt"
;;
esac
done
case "$mode" in
compile)
# shave will be called and print the actual CC/CXX/LINK line
preserved_args="$preserved_args --shave-mode=$mode"
pass_though=1
;;
link)
preserved_args="$preserved_args --shave-mode=$mode"
Q=" LINK "
;;
*)
# let's u
# echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
;;
esac
lt_unmangle "$lt_output"
output=$last_result
if test -z $V; then
if test $pass_though -eq 0; then
echo "$Q$output"
fi
$LIBTOOL --silent $preserved_args
else
echo $LIBTOOL $preserved_args
$LIBTOOL $preserved_args
fi

70
build/autotools/shave.in Normal file
View File

@ -0,0 +1,70 @@
#!/bin/sh
# we need sed
SED=@SED@
if test -z "$SED" ; then
SED=sed
fi
Xsed="$SED -e s/^X//"
lt_unmangle ()
{
last_result=`echo -n X$1 | $Xsed -e 's#.libs/##' -e 's#[^0-9a-zA-Z_]\+_la##'`
}
# the tool to wrap (cc, cxx, ar, ranlib, ..)
tool="$1"
shift
# the reel tool (to call)
REEL_TOOL="$1"
shift
pass_through=0
preserved_args=
while test "$#" -gt 0; do
opt="$1"
shift
case $opt in
--shave-mode=*)
mode=`echo "X$opt" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'`
;;
-o)
lt_output="$1"
preserved_args="$preserved_args $opt"
;;
*)
preserved_args="$preserved_args $opt"
;;
esac
done
# mode=link is handled in the libtool wrapper
case "$mode" in
compile)
Q=" CC "
;;
link)
pass_through=1
;;
*)
# no "libtool" mode has been given, we are called by the Makefile:
# -> assume compilation
mode=compile
Q=" CC "
;;
esac
lt_unmangle "$lt_output"
output=$last_result
if test -z $V; then
if test $pass_through -eq 0; then
echo "$Q$output"
fi
$REEL_TOOL $preserved_args
else
echo $REEL_TOOL $preserved_args
$REEL_TOOL $preserved_args
fi

36
build/autotools/shave.m4 Normal file
View File

@ -0,0 +1,36 @@
dnl Make automake/libtool output more friendly to humans
dnl
dnl SHAVE_INIT([shavedir])
dnl
dnl shavedir: the directory where the shave script is, it defaults to
dnl $(top_builddir)
dnl
dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrite CC and
dnl LIBTOOL, you don't want the configure tests to have these variables
dnl re-defined.
dnl * This macro requires GNU make's -s option.
AC_DEFUN([SHAVE_INIT], [
dnl where can we find the shave scripts?
m4_if([$1],,
[shavedir='$(top_builddir)'],
[shavedir='$(top_builddir)'/$1])
AC_SUBST(shavedir)
dnl make is now quiet
AC_SUBST([MAKEFLAGS], [-s])
AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
dnl we need sed
AC_CHECK_PROG(SED,sed,sed,false)
dnl substitute libtool
SHAVE_SAVED_LIBTOOL=$LIBTOOL
AC_SUBST(SHAVE_SAVED_LIBTOOL)
LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'"
AC_SUBST(LIBTOOL)
dnl substitute cc
SHAVE_SAVED_CC=$CC
AC_SUBST(SHAVE_SAVED_CC)
CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'"
AC_SUBST(CC)
])

View File

@ -1,4 +1,7 @@
NULL =
NULL =
V = @
Q = $(V:1=)
QUIET_GEN = $(Q:@=@echo ' GEN '$@;)
SUBDIRS = cogl pango $(backendextra) $(clutterbackend)
@ -98,7 +101,7 @@ source_h = \
clutter-marshal.h: stamp-clutter-marshal.h
@true
stamp-clutter-marshal.h: clutter-marshal.list
$(GLIB_GENMARSHAL) \
$(QUIET_GEN)$(GLIB_GENMARSHAL) \
--prefix=clutter_marshal \
--header \
$(srcdir)/clutter-marshal.list > xgen-cmh \
@ -107,7 +110,7 @@ stamp-clutter-marshal.h: clutter-marshal.list
&& echo timestamp > $(@F)
clutter-marshal.c: clutter-marshal.h Makefile
( echo "#include \"clutter-marshal.h\"" ; \
$(QUIET_GEN)( echo "#include \"clutter-marshal.h\"" ; \
$(GLIB_GENMARSHAL) \
--prefix=clutter_marshal \
--body \
@ -118,7 +121,7 @@ clutter-marshal.c: clutter-marshal.h Makefile
clutter-enum-types.h: stamp-clutter-enum-types.h
@true
stamp-clutter-enum-types.h: $(source_h) Makefile
( $(GLIB_MKENUMS) \
$(QUIET_GEN)( $(GLIB_MKENUMS) \
--template $(srcdir)/clutter-enum-types.h.in \
$(source_h) ) >> xgen-ceth && \
(cmp xgen-ceth clutter-enum-types.h || cp xgen-ceth clutter-enum-types.h) && \
@ -126,7 +129,7 @@ stamp-clutter-enum-types.h: $(source_h) Makefile
echo timestamp > $(@F)
clutter-enum-types.c: clutter-enum-types.h
( $(GLIB_MKENUMS) \
$(QUIET_GEN)( $(GLIB_MKENUMS) \
--template $(srcdir)/clutter-enum-types.c.in \
$(source_h) ) >> xgen-cetc && \
cp xgen-cetc clutter-enum-types.c && \

View File

@ -22,6 +22,7 @@ AC_PREREQ(2.53)
AC_INIT([clutter],
[clutter_version],
[http://bugzilla.o-hand.com/enter_bug.cgi?product=Clutter])
AC_CONFIG_MACRO_DIR([build/autotools])
AC_CONFIG_SRCDIR([clutter/clutter.h])
AM_CONFIG_HEADER([config.h])
@ -61,6 +62,7 @@ AM_PROG_CC_C_O
#AC_PROG_OBJC
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
DOLT
# Make libtool respect the make -s switch (kudos to jacob berman)
changequote(,)dnl
@ -650,8 +652,14 @@ ALL_LINGUAS=""
AM_GLIB_GNU_GETTEXT
GLIB_DEFINE_LOCALEDIR(LOCALEDIR)
SHAVE_INIT([build/autotools])
AC_CONFIG_FILES([
Makefile
build/Makefile
build/autotools/Makefile
build/autotools/shave
build/autotools/shave-libtool
clutter/Makefile
clutter/clutter-version.h
clutter/clutter-json.h

49
tests/.gitignore vendored Normal file
View File

@ -0,0 +1,49 @@
test-actors
test-behave
test-clip
test-cogl-offscreen
test-cogl-primitives
test-cogl-tex-convert
test-cogl-tex-foreign
test-cogl-tex-getset
test-cogl-tex-polygon
test-cogl-tex-tile
test-depth
test-devices
test-effects
test-entry
test-entry-auto
test-events
test-fbo
test-fullscreen
test-grab
test-invariants
test-label-cache
test-layout
test-model
test-multistage
test-offscreen
test-opacity
test-paint-wrapper
test-perspective
test-pick
test-pixmap
test-project
test-random-text
test-rotate
test-scale
test-score
test-script
test-shader
test-stage-read-pixels
test-text
test-texture-quality
test-textures
test-threads
test-timeline
test-timeline-dup-frames
test-timeline-interpolate
test-timeline-rewind
test-timeline-smoothness
test-unproject
test-viewport

View File

@ -39,7 +39,7 @@ wrappers: test-conformance$(EXEEXT)
@for i in $(UNIT_TESTS); \
do \
unit=`basename $$i | sed -e s/_/-/g`; \
echo "GEN $$unit"; \
echo " GEN $$unit"; \
( echo "#!/bin/sh" ; echo "$(top_srcdir)/tests/conform/test-launcher.sh '$$i'" ) > $$unit$(EXEEXT) ; \
chmod +x $$unit$(EXEEXT); \
done