]> git.ipfire.org Git - thirdparty/bird.git/blame - tools/mergedirs
Released as 1.0.0, but marked it as a BETA version.
[thirdparty/bird.git] / tools / mergedirs
CommitLineData
25697773
MM
1#!/bin/sh
2
49e7e5ee
MM
3if [ -z "$4" ] ; then
4 echo "Usage: mergedirs <src-dir> <src-dir-rel> <obj-dir> <list-of-dirs>"
25697773
MM
5 exit 1
6 fi
2c2f67bd 7cpp=${CPP:-gcc -E}
49e7e5ee
MM
8SRCDIR=$1
9shift
10SRCREL=$1
11case $SRCDIR in
12 /*) ;;
13 *) SRCREL="../$SRCREL" ;;
14 esac
15shift
25697773
MM
16OBJDIR=$1
17LIBDIR=$OBJDIR/lib
d2ed2579 18CONFDIR=$OBJDIR/conf
25697773 19shift
d2ed2579 20
eeb05158 21echo "Merging system-dependent modules ($@)"
25697773 22MODULES=`for a in $@ ; do
eab0d1e5 23 cat $SRCDIR/sysdep/config.h $SRCDIR/$a/Modules |
54165b13 24 $cpp -U unix -D MACROS_ONLY -I $OBJDIR - |
2c2f67bd 25 sed "/^[ ]*\$/d;/^#/d;s@\\(.*\\)@\\1 $a/\\1@"
25697773
MM
26 done |
27 sort +0 -1 -u |
28 cut -d ' ' -f 2`
d2ed2579
MM
29rm -rf $LIBDIR $CONFDIR
30mkdir -p $LIBDIR $CONFDIR
25697773 31for a in $MODULES ; do
25697773 32 b=`basename $a`
d2ed2579 33 case $b in
49e7e5ee 34 *.h) ln -s $SRCREL/$a $LIBDIR/$b
d2ed2579
MM
35 ;;
36 *.c) OBJ=`echo $b | sed 's/\.c$/\.o/'`
37 OBJS="$OBJS $OBJ"
38 SRCS="$SRCS \\
49e7e5ee
MM
39 $b"
40 ln -s $SRCREL/$a $LIBDIR/$b
d2ed2579 41 ;;
49e7e5ee
MM
42 *.Y) CONFS="$CONFS\$(srcdir)/$a "
43 ln -s $SRCREL/$a $CONFDIR/$b
d2ed2579
MM
44 ;;
45 *) echo "$b: Unknown file type"
46 exit 1
47 ;;
48 esac
25697773 49 done
d2ed2579 50
25697773 51cat >$LIBDIR/Makefile <<EOF
49e7e5ee
MM
52source=$SRCS
53lib-dest=birdlib.a
54root-rel=../
25697773 55
49e7e5ee 56include ../Rules
25697773 57EOF
d2ed2579 58
49e7e5ee
MM
59sed <$SRCDIR/conf/Makefile >$CONFDIR/Makefile "s|@CONFS@|$CONFS|"
60CONFS=`cd $SRCDIR ; ls conf/*.[chl]`
61for a in $CONFS ; do
62 ln -s $SRCREL/$a $CONFDIR/
63done