Build system: Raise warning level

Default esp-idf builds now show -Wextra warnings (except for a few:
signed/unsigned comparison, unused parameters, old-style C declarations.)

CI building of examples runs with that level raised to -Werror, to catch
those changes going into the main repo.
This commit is contained in:
Angus Gratton 2016-11-16 15:42:38 +11:00
parent 9ae07082ff
commit 60f29236f6
7 changed files with 58 additions and 47 deletions

View File

@ -17,7 +17,7 @@
#include <esp_log.h> #include <esp_log.h>
#include <bootloader_flash.h> #include <bootloader_flash.h>
const static char *TAG = "esp_image"; static const char *TAG = "esp_image";
#define SIXTEEN_MB 0x1000000 #define SIXTEEN_MB 0x1000000
#define ESP_ROM_CHECKSUM_INITIAL 0xEF #define ESP_ROM_CHECKSUM_INITIAL 0xEF

View File

@ -45,10 +45,13 @@ esp_err_t esp_secure_boot_verify_signature(uint32_t src_addr, uint32_t length)
sha_context sha; sha_context sha;
uint8_t digest[32]; uint8_t digest[32];
ptrdiff_t keylen; ptrdiff_t keylen;
const uint8_t *data, *digest_data; const uint8_t *data;
uint32_t digest_len;
const signature_block_t *sigblock; const signature_block_t *sigblock;
bool is_valid; bool is_valid;
#ifdef BOOTLOADER_BUILD
const uint8_t *digest_data;
uint32_t digest_len;
#endif
ESP_LOGD(TAG, "verifying signature src_addr 0x%x length 0x%x", src_addr, length); ESP_LOGD(TAG, "verifying signature src_addr 0x%x length 0x%x", src_addr, length);

View File

@ -108,31 +108,20 @@ add_failure(SRunner *runner, int verbosity)
} }
} }
void static void run_test(SRunner *runner, int verbosity, TCase *tc, int i)
srunner_run_all(SRunner *runner, int verbosity)
{ {
Suite *suite;
TCase *tc;
assert(runner != NULL);
suite = runner->suite;
tc = suite->tests;
while (tc != NULL) {
int i;
for (i = 0; i < tc->ntests; ++i) {
runner->nchecks++;
if (tc->setup != NULL) { if (tc->setup != NULL) {
/* setup */ /* setup */
if (setjmp(env)) { if (setjmp(env)) {
add_failure(runner, verbosity); add_failure(runner, verbosity);
continue; return;
} }
tc->setup(); tc->setup();
} }
/* test */ /* test */
if (setjmp(env)) { if (setjmp(env)) {
add_failure(runner, verbosity); add_failure(runner, verbosity);
continue; return;
} }
(tc->tests[i])(); (tc->tests[i])();
@ -140,13 +129,25 @@ srunner_run_all(SRunner *runner, int verbosity)
if (tc->teardown != NULL) { if (tc->teardown != NULL) {
if (setjmp(env)) { if (setjmp(env)) {
add_failure(runner, verbosity); add_failure(runner, verbosity);
continue; return;
} }
tc->teardown(); tc->teardown();
} }
} }
void
srunner_run_all(SRunner *runner, int verbosity)
{
assert(runner != NULL);
assert(runner->suite != NULL);
TCase *tc = runner->suite->tests;
while (tc != NULL) {
for (int i = 0; i < tc->ntests; ++i) {
runner->nchecks++;
run_test(runner, verbosity, tc, i);
tc = tc->next_tcase; tc = tc->next_tcase;
} }
}
if (verbosity) { if (verbosity) {
int passed = runner->nchecks - runner->nfailures; int passed = runner->nchecks - runner->nfailures;
double percentage = ((double) passed) / runner->nchecks; double percentage = ((double) passed) / runner->nchecks;

View File

@ -495,7 +495,7 @@ BaseType_t xRingbufferSend(RingbufHandle_t ringbuf, void *data, size_t dataSize,
//we will need to wait some more. //we will need to wait some more.
ticks_to_wait = ticks_end - xTaskGetTickCount(); ticks_to_wait = ticks_end - xTaskGetTickCount();
} }
} while (ringbufferFreeMem(rb) < needed_size && ticks_to_wait>=0); } while (ringbufferFreeMem(rb) < needed_size && ticks_end >= xTaskGetTickCount());
//Lock the mux in order to make sure no one else is messing with the ringbuffer and do the copy. //Lock the mux in order to make sure no one else is messing with the ringbuffer and do the copy.
portENTER_CRITICAL(&rb->mux); portENTER_CRITICAL(&rb->mux);

View File

@ -2704,7 +2704,7 @@ void vTaskSwitchContext( void )
taskENTER_CRITICAL_ISR(&xTaskQueueMutex); taskENTER_CRITICAL_ISR(&xTaskQueueMutex);
unsigned portBASE_TYPE foundNonExecutingWaiter = pdFALSE, ableToSchedule = pdFALSE, resetListHead; unsigned portBASE_TYPE foundNonExecutingWaiter = pdFALSE, ableToSchedule = pdFALSE, resetListHead;
unsigned portBASE_TYPE uxDynamicTopReady = uxTopReadyPriority; portBASE_TYPE uxDynamicTopReady = uxTopReadyPriority;
unsigned portBASE_TYPE holdTop=pdFALSE; unsigned portBASE_TYPE holdTop=pdFALSE;
/* /*
@ -2717,8 +2717,6 @@ void vTaskSwitchContext( void )
while ( ableToSchedule == pdFALSE && uxDynamicTopReady >= 0 ) while ( ableToSchedule == pdFALSE && uxDynamicTopReady >= 0 )
{ {
configASSERT( uxTopReadyPriority>=0 );
configASSERT( uxDynamicTopReady>=0 );
resetListHead = pdFALSE; resetListHead = pdFALSE;
// Nothing to do for empty lists // Nothing to do for empty lists
if (!listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxDynamicTopReady ] ) )) { if (!listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxDynamicTopReady ] ) )) {

View File

@ -20,8 +20,13 @@ for example in ${IDF_PATH}/examples/*; do
mkdir ${EXAMPLE_NUM} mkdir ${EXAMPLE_NUM}
cp -r ${example} ${EXAMPLE_NUM} cp -r ${example} ${EXAMPLE_NUM}
pushd ${EXAMPLE_NUM}/`basename ${example}` pushd ${EXAMPLE_NUM}/`basename ${example}`
# be stricter in the CI build than the default IDF settings
export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
# build non-verbose first, only build verbose if there's an error # build non-verbose first, only build verbose if there's an error
make defconfig all || (RESULT=$?; make V=1) (make clean defconfig && make all ) || (RESULT=$?; make V=1)
popd popd
EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 )) EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 ))
done done

View File

@ -158,14 +158,16 @@ LDFLAGS ?= -nostdlib \
# CPPFLAGS used by C preprocessor # CPPFLAGS used by C preprocessor
# If any flags are defined in application Makefile, add them at the end. # If any flags are defined in application Makefile, add them at the end.
CPPFLAGS := -DESP_PLATFORM $(CPPFLAGS) CPPFLAGS := -DESP_PLATFORM $(CPPFLAGS) $(EXTRA_CPPFLAGS)
# Warnings-related flags relevant both for C and C++ # Warnings-related flags relevant both for C and C++
COMMON_WARNING_FLAGS = -Wall -Werror \ COMMON_WARNING_FLAGS = -Wall -Werror=all \
-Wno-error=unused-function \ -Wno-error=unused-function \
-Wno-error=unused-but-set-variable \ -Wno-error=unused-but-set-variable \
-Wno-error=unused-variable \ -Wno-error=unused-variable \
-Wno-error=deprecated-declarations -Wno-error=deprecated-declarations \
-Wextra \
-Wno-unused-parameter -Wno-sign-compare
# Flags which control code generation and dependency generation, both for C and C++ # Flags which control code generation and dependency generation, both for C and C++
COMMON_FLAGS = \ COMMON_FLAGS = \
@ -192,8 +194,9 @@ CFLAGS := $(strip \
-std=gnu99 \ -std=gnu99 \
$(OPTIMIZATION_FLAGS) \ $(OPTIMIZATION_FLAGS) \
$(COMMON_FLAGS) \ $(COMMON_FLAGS) \
$(COMMON_WARNING_FLAGS) \ $(COMMON_WARNING_FLAGS) -Wno-old-style-declaration \
$(CFLAGS)) $(CFLAGS) \
$(EXTRA_CFLAGS))
# List of flags to pass to C++ compiler # List of flags to pass to C++ compiler
# If any flags are defined in application Makefile, add them at the end. # If any flags are defined in application Makefile, add them at the end.
@ -204,7 +207,8 @@ CXXFLAGS := $(strip \
$(OPTIMIZATION_FLAGS) \ $(OPTIMIZATION_FLAGS) \
$(COMMON_FLAGS) \ $(COMMON_FLAGS) \
$(COMMON_WARNING_FLAGS) \ $(COMMON_WARNING_FLAGS) \
$(CXXFLAGS)) $(CXXFLAGS) \
$(EXTRA_CXXFLAGS))
export CFLAGS CPPFLAGS CXXFLAGS export CFLAGS CPPFLAGS CXXFLAGS