#!/bin/sh
cd /tmp
umask 022

CC=cc
CPP=cpp
PATH="$PATH:/lib"

TEMP=def$$
trap 'rm -f ${TEMP}*; trap 0; exit' 0 1 2 3 15

set `type $CC`
q=$#
set x `type $CC`
shift $q
cc=$1

set `type $CPP`
q=$#
set x `type $CPP`
shift $q
cpp=$1

strings - "$cc" 2>/dev/null | tr ' ' '\012' > ${TEMP}.x

if test -x "$cpp"; then
strings - "$cpp" 2>/dev/null | tr ' ' '\012' >> ${TEMP}.x
else
echo "Warning: cpp not found."
fi

sort < ${TEMP}.x | uniq | awk '
/^-D[A-Za-z_][A-Za-z_0-9]*$/ {
		printf("#ifdef %s\n", substr($0,3))
		printf("\"%s\": %s\n", substr($0,3), substr($0,3))
		print "#endif"
	}
/^[A-Za-z_][A-Za-z_0-9]*$/ {
		printf("#ifdef %s\n", $0)
		printf("\"%s\": %s\n", $0, $0)
		print "#endif"
	}
' > ${TEMP}.c

echo "Defines in cc are:"
cc -E ${TEMP}.c | sed -n -e 's/"\([^:]*\)":/\1:/p' | sort | uniq
