Commit 9f5e1ef7 authored by Rusty Russell's avatar Rusty Russell

Merge branch 'master' of ozlabs.org:ccan

parents ea4bd098 b1f28e17
...@@ -7,18 +7,18 @@ usage() { ...@@ -7,18 +7,18 @@ usage() {
Usage: $progname [options] <outdir> <depends>... Usage: $progname [options] <outdir> <depends>...
options: options:
-t, --exclude-tests exclude test/ directories from ccan modules -a, --copy-all copy all files in module tree (not just sources
-c, --exclude-configurator exclude configurator. config.h must be required for build)
supplied by another method (eg, autotools) -b, --build-type=TYPE generate build infrastructure of TYPE
(one of 'make', 'make+config', 'automake', 'waf')
EOF EOF
} }
# parse options, setting the following flags # parse options, setting the following flags
exclude_tests= copy_all=
exclude_configurator= build_type=
opts=$(getopt -o tc --long exclude-tests,exclude-configurator -n $progname \ opts=$(getopt -o ab: --long copy-all,build-type: -n $progname -- "$@")
-- "$@")
if [ $? != 0 ] if [ $? != 0 ]
then then
...@@ -31,13 +31,13 @@ eval set -- "$opts" ...@@ -31,13 +31,13 @@ eval set -- "$opts"
while : while :
do do
case "$1" in case "$1" in
-t|--exclude-tests) -a|--copy-all)
exclude_tests=1 copy_all=1
shift shift
;; ;;
-c|--exclude-configurator) -b|--build-type)
exclude_configurator=1 build_type="$2"
shift shift 2
;; ;;
--) --)
shift shift
...@@ -58,6 +58,15 @@ then ...@@ -58,6 +58,15 @@ then
exit 1 exit 1
fi fi
# check --build-type argument sanity
case "$build_type" in
''|'make'|'make+config'|'automake'|'waf')
;;
*)
echo "Invalid build type '$build_type'" >&2
exit 1
esac
srcdir=$(dirname $0)/../ srcdir=$(dirname $0)/../
outdir="$1" outdir="$1"
shift shift
...@@ -89,6 +98,25 @@ make -s -C "$srcdir" clean ...@@ -89,6 +98,25 @@ make -s -C "$srcdir" clean
# clean up on error # clean up on error
trap 'rm -rf $tmpdir' EXIT trap 'rm -rf $tmpdir' EXIT
copy_ccan_module() {
module_dir="$1"
module_srcdir="$srcdir/$module_dir"
module_destdir="$tmpdir/$module_dir"
if [ -n "$copy_all" ]
then
# bulk copy
mkdir -p "$(dirname "$module_destdir")"
cp -a "$module_srcdir" "$module_destdir"
else
mkdir -p "$module_destdir"
# only copy sources & license
license="$module_srcdir/LICENSE"
cp -a "$module_srcdir"/*.[ch] "$module_destdir"
[ -e "$license" ] && cp -a "$license" "$module_destdir"
fi
}
# generate list of directories to copy # generate list of directories to copy
for module in $modules for module in $modules
do do
...@@ -110,15 +138,8 @@ done | ...@@ -110,15 +138,8 @@ done |
sort -u | sort -u |
while read dir while read dir
do do
module_srcdir="$srcdir/$dir"
module_destdir="$tmpdir/$dir"
echo "Adding $dir" echo "Adding $dir"
mkdir -p "$(dirname "$module_destdir")" copy_ccan_module $dir
cp -a "$module_srcdir" "$module_destdir"
if [ -n "$exclude_tests" ]
then
rm -rf "$module_destdir/test"
fi
done done
# we're done with the dependency-tracking, remove the tool from our # we're done with the dependency-tracking, remove the tool from our
...@@ -139,26 +160,43 @@ do ...@@ -139,26 +160,43 @@ do
cp "$license_src" "$license_dest" cp "$license_src" "$license_dest"
done done
# add ccan Makefile
echo "Adding build infrastructure" echo "Adding build infrastructure"
cp "$srcdir/Makefile-ccan" "$tmpdir/"
# add top-level Makefile # generate automake Makefile.am
top_makefile="$tmpdir/Makefile" automakefile="$tmpdir/Makefile.am"
cat > "$top_makefile" << EOF if [ "$build_type" = "automake" ]
then
(
echo "noinst_LIBRARIES = libccan.a"
echo "libccan_a_SOURCES = \\"
cd "$tmpdir"
find ccan -maxdepth 2 -name '*.[ch]' |
sed -e 's,^,\t,;$!s,$, \\,'
) > "$automakefile"
fi
makefile="$tmpdir/Makefile"
if [ "$build_type" = "make" -o "$build_type" = "make+config" ]
then
# add ccan Makefile
cp "$srcdir/Makefile-ccan" "$tmpdir/"
# add top-level Makefile
cat > "$makefile" << EOF
all: libccan.a all: libccan.a
include Makefile-ccan include Makefile-ccan
EOF EOF
fi
# optionally add configurator, and relevant parts to top-level Makefile # optionally add configurator, and relevant parts to top-level Makefile
if [ -z "$exclude_configurator" ] if [ "$build_type" = "make+config" ]
then then
echo "Adding configurator" echo "Adding configurator"
mkdir -p "$tmpdir/tools/configurator" mkdir -p "$tmpdir/tools/configurator"
cp -a "$srcdir/tools/configurator" "$tmpdir/tools/" cp -a "$srcdir/tools/configurator" "$tmpdir/tools/"
cat >> "$top_makefile" <<EOF cat >> "$makefile" <<EOF
tools/configurator/configurator: tools/configurator/configurator.c tools/configurator/configurator: tools/configurator/configurator.c
config.h: tools/configurator/configurator Makefile Makefile-ccan config.h: tools/configurator/configurator Makefile Makefile-ccan
...@@ -171,6 +209,18 @@ objs = \$(patsubst %.c, %.o, \$(wildcard ccan/*/*.c)) ...@@ -171,6 +209,18 @@ objs = \$(patsubst %.c, %.o, \$(wildcard ccan/*/*.c))
EOF EOF
fi fi
if [ "$build_type" = "waf" ]
then
echo "Adding waf wscript"
cat > "$tmpdir/wscript" << EOF
def build(ctx):
ctx(features = 'c cstlib',
source = ctx.path.ant_glob('**/*.c'),
target = 'ccan',
includes = '.')
EOF
fi
mv "$tmpdir" "$outdir" mv "$tmpdir" "$outdir"
echo "Done. ccan source tree built in $outdir" echo "Done. ccan source tree built in $outdir"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment