LOG_FILE="$(basename $0).log"
# For only standard headers:
- PATTERN='^#include <'
+# PATTERN='^#include <'
# For all headers:
-# PATTERN='^#include'
+ PATTERN='^#include'
# Exclude common headers with regex
# (e.g. 'debug.h' will exclude 'support/debug.h')
# require headers not needed on win/linux. So check the logs before
# deleting "redundant" standard libraries, Qt headers or includes around
# various ifdefs...
-EXCLUDE='\(debug.h\|cstdio\|config\)'
+EXCLUDE='\(debug.h\|cstdio\|config.h\)'
NCORES=$(grep "CPU" /proc/cpuinfo | wc -l)
PREFIX=''
# This is not a clean make.
- IFS='' ERROR_OUTPUT=$(make -j${NCORES} 2>&1)
+ make -j${NCORES} 2>/dev/null 1>/dev/null
ERROR_CODE=$?
- # Without the grep, ERROR_OUTPUT might contain messages such as:
- # 2885 translated messages, 2169 fuzzy translations, 1356 untranslated messages.
- ERROR_OUTPUT=$(echo "${ERROR_OUTPUT}" | grep -i "error: ")
# The sed regex is more strict than it needs to be.
if (( ERROR_CODE != 0 )); then
+ # Use just one core, so we don't mix outputs
+ IFS='' ERROR_OUTPUT=$(make 2>&1)
+ # Without the grep, ERROR_OUTPUT might contain messages such as:
+ # 2885 translated messages, 2169 fuzzy translations, 1356 untranslated messages.
+ ERROR_OUTPUT=$(echo "${ERROR_OUTPUT}" | grep -i "error: ")
+
cppORh=$(echo "${ERROR_OUTPUT}" | head -n 1 | \
sed 's/.*\.\(cpp\|h\):[0-9]\+:[0-9]\+: error: .*/\1/')
if [ "${cppORh}" = "cpp" ]; then
echo "BUILD_FN exited without error after removing the following include statements invididually:" > "${LOG_FILE}" \
|| { echo "ERROR: could not create log file, ${LOG_FILE}"; exit 1; }
-find -regex ".*\(cpp\|h\)$" | \
+find -regex ".*\(cpp\|h\)$" | grep -vE "frontends/qt4/ui_|frontends/qt4/moc_" | sort |
while read FILE_
do
FILE_COPY=$( tempfile )
if [ "${BUILD_FN_RET}" = 0 ]; then
echo "${FILE_}::${INCLUDE}" >> "${LOG_FILE}"
elif [ -n "${PREFIX}" ]; then
- echo "${PREFIX}${FILE_}::${INCLUDE}" >> "${LOG_FILE}"
+ if [ ${FILE_:(-2):2} == .h ]; then
+ echo "${PREFIX}${FILE_}::${INCLUDE}" >> "${LOG_FILE}"
+ fi
fi
fi
done