-a, --copy-all copy all files in module tree (not just sources
required for build)
-b, --build-type=TYPE generate build infrastructure of TYPE
- (one of 'make', 'make+config', 'automake')
+ (one of 'make', 'make+config', 'automake', 'waf')
EOF
}
# parse options, setting the following flags
-copy_all=
build_type=
opts=$(getopt -o ab: --long copy-all,build-type: -n $progname -- "$@")
fi
eval set -- "$opts"
+MODFILES_ARGS="--no-tests --no-other"
while :
do
case "$1" in
-a|--copy-all)
- copy_all=1
+ MODFILES_ARGS=""
shift
;;
-b|--build-type)
# check --build-type argument sanity
case "$build_type" in
- ''|'make'|'make+config'|'automake')
+ ''|'make'|'make+config'|'automake'|'waf')
;;
*)
echo "Invalid build type '$build_type'" >&2
# We'll need the ccan_depends tool, but also a clean source tree. Build
# tools/ccan_depends, and store it in $tmpdir for later use
-echo "Building ccan_depends"
+echo "Building ccan_depends, modfiles"
ccan_depends="$tmpdir/ccan_depends"
-make -s -C "$srcdir" tools/ccan_depends
+modfiles="$tmpdir/modfiles"
+make -s -C "$srcdir" tools/ccan_depends tools/modfiles
[ $? -eq 0 ] || exit 1
cp "$srcdir/tools/ccan_depends" "$ccan_depends"
+cp "$srcdir/tools/modfiles" "$modfiles"
echo "Cleaning source tree"
make -s -C "$srcdir" clean
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
+ mkdir -p "$module_destdir"
+ # Copy license
+ license="$module_srcdir/LICENSE"
+ [ -e "$license" ] && cp -a "$license" "$module_destdir"
+ for f in $("$modfiles" $MODULES_ARGS --no-license --git-only "$module_dir"); do
+ mkdir -p $(dirname "$module_destdir"/"$f")
+ cp "$module_srcdir"/$f "$module_destdir"/$f
+ done
}
# generate list of directories to copy
# we're done with the dependency-tracking, remove the tool from our
# temporary directory
-rm "$ccan_depends"
+rm "$ccan_depends" "$modfiles"
echo "Adding licenses"
license_dir="$tmpdir/licenses"
EOF
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"
echo "Done. ccan source tree built in $outdir"