#!/bin/sh

# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Generates a header file with a named constant table made up of "name", value
# entries by including several build target header files and emitting the list
# of defines.  Use of the preprocessor is needed to recursively include all
# relevant headers.

set -e

if [ $# -ne 1 ] && [ $# -ne 2 ]; then
  echo "Usage: $(basename "$0") OUTFILE"
  echo "Usage: $(basename "$0") CC OUTFILE"
  exit 1
fi

if [ $# -eq 2 ]; then
  CC="$1"
  shift
fi
OUTFILE="$1"

INCLUDES='
#include <errno.h>
#include <fcntl.h>
#include <linux/prctl.h>
#include <linux/sched.h>
#include <stddef.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/types.h>'

# Passes the previous list of #includes to the C preprocessor and prints out
# all #defines whose name is all-caps.  Excludes a few symbols that are known
# macro functions that don't evaluate to a constant.
cat <<-EOF > "${OUTFILE}"
/* GENERATED BY MAKEFILE */
$INCLUDES

#include "libconstants.h"
const struct constant_entry constant_table[] = {
$(echo "$INCLUDES" | \
  ${CC} -dD - -E | \
  grep '^#define [A-Z][A-Z0-9_]* ' | \
  grep -v '\(SIGRTMAX\|SIGRTMIN\|SIG_\|NULL\)' | \
  sort | \
  uniq | \
  sed -e 's/#define \([A-Z0-9_]\+\).*$/#ifdef \1\n  { "\1", \1 },\n#endif  \/\/ \1/')
  { NULL, 0 },
};
EOF
