7575# ------------------------------------------------------------------------
7676
7777LOG_TESTS_INC := log-tests-$(FB_LANG ) .inc
78+ LOG_TESTS_LOG_LST := log-tests-log-$(FB_LANG ) .lst
79+ LOG_TESTS_OBJ_LST := log-tests-obj-$(FB_LANG ) .lst
80+
81+ LOG_TESTS_RESULTS_LOG := log-tests-results-$(FB_LANG ) .log
7882FAILED_LOG_TESTS_INC := failed-log-tests-$(FB_LANG ) .inc
7983FAILED_LOG := failed-$(FB_LANG ) .log
8084
@@ -144,6 +148,12 @@ $(LOGLIST_MULTI_MODULE_OK) \
144148$(LOGLIST_MULTI_MODULE_FAIL ) \
145149)
146150
151+ OBJLIST_ALL := $(strip \
152+ $(OBJLIST_COMPILE_ONLY_OK ) \
153+ $(OBJLIST_COMPILE_ONLY_FAIL ) \
154+ $(OBJLIST_COMPILE_AND_RUN_OK ) \
155+ $(OBJLIST_COMPILE_AND_RUN_FAIL ) \
156+ )
147157
148158# set ABORT_CMD := false to abort on failed tests, true to continue anyway
149159ABORT_CMD := true
@@ -337,21 +347,42 @@ $(LOG_TESTS_INC) :
337347>> $(LOG_TESTS_INC)
338348 @$(ECHO) "# " >> $(LOG_TESTS_INC)
339349
350+ # hack: use the auto-generated list of tests to create a temporary file
351+ # containing a list of all the .o & .log files. The command line can be
352+ # very long and some shells (like cmd.exe) won't handle it.
353+
354+ @$(PRINTF) "."
355+ @$(GREP) $(LOG_TESTS_INC) -i -e ".*+=.*\.b.*" \
356+ | $(SED) 's/^.* += \(.*\)\(\.b.*\)/\1\.o/g' \
357+ > $(LOG_TESTS_OBJ_LST)
358+
359+ $(LOG_TESTS_LOG_LST ) : $(LOG_TESTS_INC )
360+ @$(PRINTF ) " ."
361+ @$(GREP ) $(LOG_TESTS_INC ) -i -e " ^.*+=.*\.b.*" \
362+ | $(SED) 's/^.* += \(.*\)\(\.b.*\)/\1\.log/g' \
363+ > $(LOG_TESTS_LOG_LST)
364+
340365 @$(ECHO) " Done"
341366
342367# ------------------------------------------------------------------------
343368# results
344369#
370+ # use xargs to manage the number of maximum number of arguments passed to grep and store the
371+ # results in a single file
372+ #
373+ #
374+ $(LOG_TESTS_RESULTS_LOG ) : $(LOG_TESTS_LOG_LST ) $(LOGLIST_ALL )
375+ @$(XARGS ) -a $(LOG_TESTS_LOG_LST ) $(GREP ) -i -E ' ^.*[[:space:]]*:[[:space:]]*RESULT=FAILED' ; true > $@
345376
346- results : $(LOGLIST_ALL )
377+ results : $(LOG_TESTS_RESULTS_LOG )
347378
348379 @$(PRINTF) "\n\nFAILED LOG - for log-tests -lang $(FB_LANG)\n" > $(FAILED_LOG)
349380
350381ifeq ($(LOGLIST_ALL ) ,)
351382 @$(PRINTF) "None Found\n\n" >> $(FAILED_LOG)
352383else
353384 @if \
354- $(GREP ) -i -E '^.*[[ :space:]]* :[[:space:]]* RESULT=FAILED' $(LOGLIST_ALL ) \
385+ $(GREP ) -i -E '^.*[[ :space:]]* :[[:space:]]* RESULT=FAILED' $(LOG_TESTS_RESULTS_LOG ) \
355386 ; then \
356387 $(PRINTF ) " \n" && \
357388 true \
@@ -374,53 +405,29 @@ mostlyclean : clean_tests
374405.PHONY : clean_tests
375406clean_tests :
376407 @$(ECHO ) Cleaning log-tests for -lang $(FB_LANG ) ...
377- ifneq ($(OBJLIST_COMPILE_ONLY_OK ) ,)
378- @$(RM) $(OBJLIST_COMPILE_ONLY_OK)
379- endif
380- ifneq ($(LOGLIST_COMPILE_ONLY_OK ) ,)
381- @$(RM) $(LOGLIST_COMPILE_ONLY_OK)
382- endif
383- ifneq ($(OBJLIST_COMPILE_ONLY_FAIL ) ,)
384- @$(RM) $(OBJLIST_COMPILE_ONLY_FAIL)
385- endif
386- ifneq ($(LOGLIST_COMPILE_ONLY_FAIL ) ,)
387- @$(RM) $(LOGLIST_COMPILE_ONLY_FAIL)
408+ $(RM ) $(LOG_TESTS_RESULTS_LOG )
409+ ifneq ($(LOGLIST_ALL ) ,)
410+ @if [ -f $(LOG_TESTS_LOG_LST) ]; then $(XARGS) -r -a $(LOG_TESTS_LOG_LST) $(RM) ; fi
411+ @if [ -f $(LOG_TESTS_OBJ_LST) ]; then $(XARGS) -r -a $(LOG_TESTS_OBJ_LST) $(RM) ; fi
388412endif
413+
389414ifneq ($(APPLIST_COMPILE_AND_RUN_OK ) ,)
390415 @$(RM) $(APPLIST_COMPILE_AND_RUN_OK)
391416endif
392- ifneq ($(OBJLIST_COMPILE_AND_RUN_OK ) ,)
393- @$(RM) $(OBJLIST_COMPILE_AND_RUN_OK)
394- endif
395- ifneq ($(LOGLIST_COMPILE_AND_RUN_OK ) ,)
396- @$(RM) $(LOGLIST_COMPILE_AND_RUN_OK)
397- endif
398- ifneq ($(OBJLIST_COMPILE_AND_RUN_FAIL ) ,)
399- @$(RM) $(OBJLIST_COMPILE_AND_RUN_FAIL)
400- endif
401417ifneq ($(APPLIST_COMPILE_AND_RUN_FAIL ) ,)
402418 @$(RM) $(APPLIST_COMPILE_AND_RUN_FAIL)
403419endif
404- ifneq ($(LOGLIST_COMPILE_AND_RUN_FAIL ) ,)
405- @$(RM) $(LOGLIST_COMPILE_AND_RUN_FAIL)
406- endif
407420ifneq ($(SRCLIST_MULTI_MODULE_OK ) ,)
408421 @for s in $(SRCLIST_MULTI_MODULE_OK) ; do $(MAKE) -f bmk-make.mk clean BMK=$$s TEST_MODE=MULTI_MODULE_OK ; done
409422endif
410- ifneq ($(LOGLIST_MULTI_MODULE_OK ) ,)
411- @$(RM) $(LOGLIST_MULTI_MODULE_OK)
412- endif
413423ifneq ($(SRCLIST_MULTI_MODULE_FAIL ) ,)
414424 @for s in $(SRCLIST_MULTI_MODULE_FAIL) ; do $(MAKE) -f bmk-make.mk clean BMK=$$s TEST_MODE=MULTI_MODULE_FAIL ; done
415425endif
416- ifneq ($(LOGLIST_MULTI_MODULE_FAIL ) ,)
417- @$(RM) $(LOGLIST_MULTI_MODULE_FAIL)
418- endif
419426
420427.PHONY : clean_include
421428clean_include :
422- $(RM ) $(LOG_TESTS_INC )
423- @$(RM ) $(FAILED_LOG )
429+ $(RM ) $(LOG_TESTS_INC ) $( LOG_TESTS_LOG_LST ) $( LOG_TESTS_OBJ_LST )
430+ @$(RM ) $(FAILED_LOG )
424431
425432.PHONY : clean_failed_include
426433clean_failed_include :
0 commit comments