#!/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>'

# Generate a dependency file which helps the build tool to see when it
# should regenerate ${OUTFILE}.
echo "${INCLUDES}" | ${CC} - -E -M -MF "${OUTFILE}.d.tmp"
# Correct the output filename.
(echo "${OUTFILE}: \\" ; sed -e 's/^-\.o://' -e 's/^-://' "${OUTFILE}.d.tmp") \
  > "${OUTFILE}.d"
rm "${OUTFILE}.d.tmp"

# sed expression which extracts constants and converts them from:
#   #define AT_FDWCD foo
# to:
# #ifdef AT_FDCWD
#   { "AT_FDWCD", AT_FDCWD },
# endif
SED_MULTILINE='s@#define ([[:upper:]][[:upper:]0-9_]*).*@#ifdef \1\
  { "\1", (unsigned long) \1 },\
#endif  // \1@'

# 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 -E '^#define [[:upper:]][[:upper:]0-9_]*(\s)+[[:alnum:]]' | \
  grep -Ev '(SIGRTMAX|SIGRTMIN|SIG_|NULL)' | \
  sort -u | \
  sed -Ee "${SED_MULTILINE}")
  { NULL, 0 },
};
EOF
