xref: /freebsd/contrib/unbound/freebsd-sources.pl (revision 98e0ffaefb0f241cda3a72395d3be04192ae0d47)
1439fafc7SDag-Erling Smørgrav#!/usr/bin/perl -w
2439fafc7SDag-Erling Smørgrav#-
3439fafc7SDag-Erling Smørgrav# Copyright (c) 2013 Dag-Erling Smørgrav
4439fafc7SDag-Erling Smørgrav# All rights reserved.
5439fafc7SDag-Erling Smørgrav#
6439fafc7SDag-Erling Smørgrav# Redistribution and use in source and binary forms, with or without
7439fafc7SDag-Erling Smørgrav# modification, are permitted provided that the following conditions
8439fafc7SDag-Erling Smørgrav# are met:
9439fafc7SDag-Erling Smørgrav# 1. Redistributions of source code must retain the above copyright
10439fafc7SDag-Erling Smørgrav#    notice, this list of conditions and the following disclaimer.
11439fafc7SDag-Erling Smørgrav# 2. Redistributions in binary form must reproduce the above copyright
12439fafc7SDag-Erling Smørgrav#    notice, this list of conditions and the following disclaimer in the
13439fafc7SDag-Erling Smørgrav#    documentation and/or other materials provided with the distribution.
14439fafc7SDag-Erling Smørgrav#
15439fafc7SDag-Erling Smørgrav# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16439fafc7SDag-Erling Smørgrav# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17439fafc7SDag-Erling Smørgrav# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18439fafc7SDag-Erling Smørgrav# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19439fafc7SDag-Erling Smørgrav# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20439fafc7SDag-Erling Smørgrav# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21439fafc7SDag-Erling Smørgrav# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22439fafc7SDag-Erling Smørgrav# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23439fafc7SDag-Erling Smørgrav# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24439fafc7SDag-Erling Smørgrav# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25439fafc7SDag-Erling Smørgrav# SUCH DAMAGE.
26439fafc7SDag-Erling Smørgrav#
27a6a72607SDag-Erling Smørgrav# $FreeBSD$
28439fafc7SDag-Erling Smørgrav#
29439fafc7SDag-Erling Smørgrav
30439fafc7SDag-Erling Smørgravuse strict;
31439fafc7SDag-Erling Smørgravuse warnings;
32439fafc7SDag-Erling Smørgravuse Text::Wrap;
33439fafc7SDag-Erling Smørgrav
3405ff931fSDag-Erling Smørgravour @targets = qw(LIBUNBOUND DAEMON UBANCHOR CHECKCONF CONTROL);
35439fafc7SDag-Erling Smørgrav
36439fafc7SDag-Erling Smørgravour %target_names = (
37439fafc7SDag-Erling Smørgrav    LIBUNBOUND => "libunbound",
38439fafc7SDag-Erling Smørgrav    DAEMON => "unbound",
39439fafc7SDag-Erling Smørgrav    UBANCHOR => "unbound-anchor",
40439fafc7SDag-Erling Smørgrav    CHECKCONF => "unbound-checkconf",
4105ff931fSDag-Erling Smørgrav    CONTROL => "unbound-control",
42439fafc7SDag-Erling Smørgrav);
43439fafc7SDag-Erling Smørgrav
44439fafc7SDag-Erling Smørgravsub get_sources($) {
45439fafc7SDag-Erling Smørgrav    my ($target) = @_;
46439fafc7SDag-Erling Smørgrav    local $/;
47439fafc7SDag-Erling Smørgrav
48439fafc7SDag-Erling Smørgrav    open(MAKE, "-|", "make", "-V${target}_OBJ_LINK")
49439fafc7SDag-Erling Smørgrav	or die("failed to exec make: $!\n");
50439fafc7SDag-Erling Smørgrav    my $objs = <MAKE>;
51439fafc7SDag-Erling Smørgrav    close(MAKE);
52439fafc7SDag-Erling Smørgrav    chomp($objs);
53439fafc7SDag-Erling Smørgrav    $objs =~ s/\.l?o\b/.c/g;
54*7ca2a890SDag-Erling Smørgrav    return map {
55*7ca2a890SDag-Erling Smørgrav	/lexer/ && s/c$/l/;
56*7ca2a890SDag-Erling Smørgrav	/parser/ && s/c$/y/;
57*7ca2a890SDag-Erling Smørgrav	$_;
58*7ca2a890SDag-Erling Smørgrav    } split(/\s+/, $objs);
59439fafc7SDag-Erling Smørgrav}
60439fafc7SDag-Erling Smørgrav
61439fafc7SDag-Erling SmørgravMAIN:{
62439fafc7SDag-Erling Smørgrav    my %sources;
63439fafc7SDag-Erling Smørgrav    foreach my $target (@targets) {
64439fafc7SDag-Erling Smørgrav	$sources{$target} = {
65439fafc7SDag-Erling Smørgrav	    map({ $_ => 1 }
66439fafc7SDag-Erling Smørgrav		grep({ !exists($sources{LIBUNBOUND}->{$_}) }
67439fafc7SDag-Erling Smørgrav		     get_sources($target)))
68439fafc7SDag-Erling Smørgrav	};
69439fafc7SDag-Erling Smørgrav	print("# $target_names{$target}\n");
70439fafc7SDag-Erling Smørgrav	my $SRCS = fill("SRCS=\t", "\t", sort keys %{$sources{$target}});
71439fafc7SDag-Erling Smørgrav	$SRCS =~ s/\n/ \\\n/gm;
72439fafc7SDag-Erling Smørgrav	print("$SRCS\n");
73439fafc7SDag-Erling Smørgrav    }
74439fafc7SDag-Erling Smørgrav}
75439fafc7SDag-Erling Smørgrav
76439fafc7SDag-Erling Smørgrav1;
77