#!/bin/sh trap 'rm -f confdefs.opt_*.h confdefs.*_macros.h confdefs.*.keyword' 1 2 3 9 19 num_of_opt=$# while [ $# -gt 0 ] do cc_opt_name=`echo $1 | sed 's/[^0-9A-Za-z_]/_/g'` if test x = x"${cc_opt_name}" then cc_opt_name="NONE" fi eval ${cc_opt_name}=\"$1\" cc_opt_list="${cc_opt_list} ${cc_opt_name}" shift done for cc_opt_name in ${cc_opt_list} do get_opt_command="echo $"${cc_opt_name} eval cc_opt=`$get_opt_command` eval $get_opt_command | tr ' -+=.,' '\n\n\n\n\n\n' | sort -f | uniq > confdefs.opt_${cc_opt_name}.keyword echo | ${CC} ${CPPFLAGS} ${CFLAGS} ${cc_opt} -E -dD - | fgrep '#define' | sort -f | uniq > confdefs.opt_${cc_opt_name}.h done cat confdefs.opt_*.keyword | sort -f | uniq -c \ | sed -n "/^ *1 */s/^ *1 *//p" > confdefs.unique.keyword cat confdefs.opt_*.h | awk '{printf("#define %s \n", $2)}' | sort -f | uniq -c \ | sed -n "/^ *${num_of_opt} *#/s/^ *${num_of_opt} *#/#/p" > confdefs.common_macros.h cat confdefs.opt_*.h | sort -f | uniq -c \ | sed -n "/^ *${num_of_opt} *#/s/^ *${num_of_opt} *#/#/p" > confdefs.same_macros.h cat confdefs.opt_*.h | awk '{printf("#define %s \n", $2)}' \ | fgrep -vf confdefs.common_macros.h | sort -f | uniq -c \ | sed -n "/^ *1 *#/s/^ *1 *#/#/p" > confdefs.uniqbool_macros.h cat confdefs.opt_*.h | fgrep -vf confdefs.uniqbool_macros.h | sort -f | uniq -c \ | sed -n "/^ *1 *#/s/^ *1 *#/#/p" > confdefs.uniqvalue_macros.h for cc_opt_name in ${cc_opt_list} do get_opt_command="echo $"${cc_opt_name} eval cc_opt=`$get_opt_command` echo "checking cpp macro specific to ${cc_opt}..." | tr '\n' ' ' opt_bool_macros=`fgrep -f confdefs.uniqbool_macros.h < confdefs.opt_${cc_opt_name}.h | awk '{printf(" %s", $2)}'` opt_value_macros=`fgrep -f confdefs.uniqvalue_macros.h < confdefs.opt_${cc_opt_name}.h | sed 's/#define \([^ ]*\) /\1=/g' | tr '\n' ' '` if test `echo ${opt_bool_macros} | wc -w` -gt 0 then if test `echo ${opt_bool_macros} | tr ' ' '\n' | fgrep -f confdefs.unique.keyword | fgrep -f confdefs.opt_${cc_opt_name}.keyword | wc -l` -gt 0 then opt_bool_macros=`echo ${opt_bool_macros} | tr ' ' '\n' | fgrep -f confdefs.unique.keyword | fgrep -f confdefs.opt_${cc_opt_name}.keyword | tail -1` elif test `echo ${opt_bool_macros} | tr ' ' '\n' | fgrep -vf confdefs.unique.keyword | fgrep -if confdefs.opt_${cc_opt_name}.keyword | wc -l` -gt 0 then opt_bool_macros=`echo ${opt_bool_macros} | tr ' ' '\n' | fgrep -f confdefs.unique.keyword | fgrep -if confdefs.opt_${cc_opt_name}.keyword | tail -1` fi opt_bool_macros=`echo ${opt_bool_macros} | tr ' ' '\n' | tail -1` echo ${opt_bool_macros} elif test `echo ${opt_value_macros} | wc -w` -gt 0 then if test `echo ${opt_value_macros} | tr ' ' '\n' | fgrep -vf confdefs.unique.keyword | fgrep -f confdefs.opt_${cc_opt_name}.keyword | wc -l` -gt 0 then opt_value_macros=`echo ${opt_value_macros} | tr ' ' '\n' | fgrep -f confdefs.unique.keyword | fgrep -f confdefs.opt_${cc_opt_name}.keyword | tail -1` elif test `echo ${opt_value_macros} | tr ' ' '\n' | fgrep -vf confdefs.unique.keyword | fgrep -if confdefs.opt_${cc_opt_name}.keyword | wc -l` -gt 0 then opt_value_macros=`echo ${opt_value_macros} | tr ' ' '\n' | fgrep -f confdefs.unique.keyword | fgrep -if confdefs.opt_${cc_opt_name}.keyword | tail -1` fi opt_value_macros=`echo ${opt_value_macros} | tr ' ' '\n' | tail -1` echo ${opt_value_macros} else echo "not found" fi done rm -f confdefs.opt_*.h confdefs.*_macros.h confdefs.*.keyword