summaryrefslogtreecommitdiffstats
path: root/contrib/unbound
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2013-09-15 00:05:16 +0000
committerdes <des@FreeBSD.org>2013-09-15 00:05:16 +0000
commitf5cbd4e274ad51ad3805bcbafdff71eaa8d5699a (patch)
tree1e3e2f1e2ea49e5521a819f8e3d9db896cc2ae54 /contrib/unbound
parent2f70e45a585f3e7be1b3af4b165ecef0fc5086ff (diff)
downloadFreeBSD-src-f5cbd4e274ad51ad3805bcbafdff71eaa8d5699a.zip
FreeBSD-src-f5cbd4e274ad51ad3805bcbafdff71eaa8d5699a.tar.gz
Two helper scripts for porting Unbound:
- freebsd-configure.sh runs ./configure with the correct parameters and regenerates the lex and yacc code. - freebsd-sources.pl untangles the upstream Makefile and generates source lists for our Makefiles. Approved by: re (blanket)
Diffstat (limited to 'contrib/unbound')
-rwxr-xr-xcontrib/unbound/freebsd-configure.sh38
-rwxr-xr-xcontrib/unbound/freebsd-sources.pl72
2 files changed, 110 insertions, 0 deletions
diff --git a/contrib/unbound/freebsd-configure.sh b/contrib/unbound/freebsd-configure.sh
new file mode 100755
index 0000000..0f4fbc91
--- /dev/null
+++ b/contrib/unbound/freebsd-configure.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set -e
+
+error() {
+ echo "$@" >&2
+ exit 1
+}
+
+unbound=$(dirname $(realpath $0))
+cd $unbound
+
+ldnssrc=$(realpath $unbound/../ldns)
+[ -f $ldnssrc/ldns/ldns.h ] || error "can't find LDNS sources"
+export CFLAGS="-I$ldnssrc"
+
+ldnsbld=$(realpath $unbound/../../lib/libldns)
+[ -f $ldnsbld/Makefile ] || error "can't find LDNS build directory"
+
+ldnsobj=$(realpath $(make -C$ldnsbld -V.OBJDIR))
+[ -f $ldnsobj/libldns.a ] || error "can't find LDNS object directory"
+export LDFLAGS="-L$ldnsobj"
+
+./configure \
+ --with-conf-file=/etc/unbound/unbound.conf \
+ --with-run-dir=/var/unbound \
+ --with-username=unbound
+
+# Regenerate the configuration parser
+{
+cat <<EOF
+#include "config.h"
+#include "util/configyyrename.h"
+EOF
+/usr/bin/flex -L -t util/configlexer.lex
+} >util/configlexer.c
+
+/usr/bin/yacc -o util/configparser.c util/configparser.y
diff --git a/contrib/unbound/freebsd-sources.pl b/contrib/unbound/freebsd-sources.pl
new file mode 100755
index 0000000..4cd66e3
--- /dev/null
+++ b/contrib/unbound/freebsd-sources.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+#-
+# Copyright (c) 2013 Dag-Erling Smørgrav
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $Id$
+#
+
+use strict;
+use warnings;
+use Text::Wrap;
+
+our @targets = qw(LIBUNBOUND DAEMON UBANCHOR CHECKCONF);
+
+our %target_names = (
+ LIBUNBOUND => "libunbound",
+ DAEMON => "unbound",
+ UBANCHOR => "unbound-anchor",
+ CHECKCONF => "unbound-checkconf",
+);
+
+sub get_sources($) {
+ my ($target) = @_;
+ local $/;
+
+ open(MAKE, "-|", "make", "-V${target}_OBJ_LINK")
+ or die("failed to exec make: $!\n");
+ my $objs = <MAKE>;
+ close(MAKE);
+ chomp($objs);
+ $objs =~ s/\.l?o\b/.c/g;
+ return (split(/\s+/, $objs));
+}
+
+MAIN:{
+ my %sources;
+ foreach my $target (@targets) {
+ $sources{$target} = {
+ map({ $_ => 1 }
+ grep({ !exists($sources{LIBUNBOUND}->{$_}) }
+ get_sources($target)))
+ };
+ print("# $target_names{$target}\n");
+ my $SRCS = fill("SRCS=\t", "\t", sort keys %{$sources{$target}});
+ $SRCS =~ s/\n/ \\\n/gm;
+ print("$SRCS\n");
+ }
+}
+
+1;
+
OpenPOWER on IntegriCloud