#!/bin/sh
# Generate an ordered list of directories to search for sysdep files.

# Copyright (C) 1991, 1992 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.

# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB.  If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.

# Reads standard input for the initial list of system directories.  Each of
# these directories may contain a file `Implies', containing a list of other
# directories to search.  The contents of the `Implies' file are inserted
# between the directory containing the file and following directories.
# Comments starting with `#' in the initial list or the `Implies' files are
# ignored.  The output is a list of names of subdirectories within the sysdep
# directory to search for sysdep files.
#
# This script expects to be run from a makefile, with `sysdep_dir' defined in
# the environment as the base directory for sysdep files.

if [ x$sysdep_dir = x ]; then
  echo "$0: Not run in proper environment!  sysdep_dir undefined." >&2
  exit 1
fi

sysnames="`sed 's/#.*$//'`"

names=''

if [ x"$sysnames" != x ]; then
  set $sysnames
  while [ $# -gt 0 ]; do
    name=$1
    shift

    if [ -f $sysdep_dir/$name/Implies ]; then
      # Collect more names from the `Implies' file.
      implied="`sed 's/#.*$//' < $sysdep_dir/$name/Implies`"
    else
      implied=''
    fi

    # Add NAME to the list of names.
    names="$names $name"

    # Find the parent of NAME, using the empty string if it has none.
    parent="`echo $name | sed -n -e '/\//!q' -e 's=/[^/]*$==p'`"

    # Append the names implied by NAME, and NAME's parent (if it has one),
    # to the list of names to be processed (the argument list).
    sysnames="`echo $* $implied $parent`"
    if [ "$sysnames" != "" ]; then
      set $sysnames
    fi
  done
fi

names="$names generic stub"

# Uniquize the list.
seen=''
for name in $names; do
  if echo "$seen" | fgrep -x $name >/dev/null; then
    # Already in the list.
    true;
  else
    # A new one.
    if [ "$seen" = "" ]; then
      seen="$name"
    else
      seen="$seen
$name"
    fi
  fi
done

echo "$seen"
