Skip to content

Commit de15916

Browse files
authored
Merge pull request #11330 from 4RH1T3CT0R7/fix/unix-port-arm64-build
unix: fix the coverage build on arm64
2 parents 56e13d3 + ae50cb8 commit de15916

4 files changed

Lines changed: 14 additions & 8 deletions

File tree

ports/unix/Makefile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ INC += -I$(BUILD)
4949

5050
# compiler settings
5151
CWARN = -Wall -Werror
52-
// CIRCUITPY-CHANGE: add -Wno-missing-field-initializers
52+
# CIRCUITPY-CHANGE: add -Wno-missing-field-initializers
5353
CWARN += -Wextra -Wno-unused-parameter -Wpointer-arith -Wdouble-promotion -Wfloat-conversion -Wno-missing-field-initializers
54-
CFLAGS += $(INC) $(CWARN) -std=gnu99 -DUNIX $(COPT) -I$(VARIANT_DIR) $(CFLAGS_EXTRA)
54+
# CIRCUITPY-CHANGE: use gnu11 instead of gnu99
55+
CFLAGS += $(INC) $(CWARN) -std=gnu11 -DUNIX $(COPT) -I$(VARIANT_DIR) $(CFLAGS_EXTRA)
5556

5657
# Force the use of 64-bits for file sizes in C library functions on 32-bit platforms.
5758
# This option has no effect on 64-bit builds.
@@ -262,7 +263,8 @@ CFLAGS += -DMPZ_DIG_SIZE=16 # force 16 bits to work on both 32 and 64 bit archs
262263
CFLAGS += -DMICROPY_MODULE_FROZEN_STR
263264
endif
264265

265-
CXXFLAGS += $(filter-out -Wmissing-prototypes -Wold-style-definition -std=gnu99,$(CFLAGS) $(CXXFLAGS_MOD))
266+
# CIRCUITPY-CHANGE: use gnu11 instead of gnu99
267+
CXXFLAGS += $(filter-out -Wmissing-prototypes -Wold-style-definition -std=gnu11,$(CFLAGS) $(CXXFLAGS_MOD))
266268

267269
ifeq ($(MICROPY_FORCE_32BIT),1)
268270
RUN_TESTS_MPY_CROSS_FLAGS = --mpy-cross-flags='-march=x86'

ports/unix/variants/coverage/mpconfigvariant.mk

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ SRC_C += $(addprefix lib/mp3/src/, \
150150

151151
$(BUILD)/lib/mp3/src/buffers.o: CFLAGS += -include "shared-module/audiomp3/__init__.h" -D'MPDEC_ALLOCATOR(x)=malloc(x)' -D'MPDEC_FREE(x)=free(x)' -fwrapv
152152

153+
# mp3dec.h only recognizes a fixed list of platforms and errors out on anything
154+
# else, including aarch64. Ask for the portable C code path, like espressif does.
155+
CFLAGS += -DMP3DEC_GENERIC
156+
153157
CFLAGS += \
154158
-DCIRCUITPY_AESIO=1 \
155159
-DCIRCUITPY_AUDIOCORE=1 \

shared-bindings/audiomp3/MP3Decoder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ void common_hal_audiomp3_mp3file_construct(audiomp3_mp3file_obj_t *self,
1919

2020
void common_hal_audiomp3_mp3file_set_file(audiomp3_mp3file_obj_t *self, mp_obj_t stream);
2121
void common_hal_audiomp3_mp3file_deinit(audiomp3_mp3file_obj_t *self);
22-
float common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self);
22+
mp_float_t common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self);
2323
uint32_t common_hal_audiomp3_mp3file_get_samples_decoded(audiomp3_mp3file_obj_t *self);

shared-module/audiomp3/MP3Decoder.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -517,14 +517,14 @@ audioio_get_buffer_result_t audiomp3_mp3file_get_buffer(audiomp3_mp3file_obj_t *
517517
return result;
518518
}
519519

520-
float common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self) {
521-
float sumsq = 0.f;
520+
mp_float_t common_hal_audiomp3_mp3file_get_rms_level(audiomp3_mp3file_obj_t *self) {
521+
mp_float_t sumsq = MICROPY_FLOAT_CONST(0.0);
522522
// Assumes no DC component to the audio. Is that a safe assumption?
523523
int16_t *buffer = (int16_t *)(void *)self->pcm_buffer[self->buffer_index];
524524
for (size_t i = 0; i < self->base.max_buffer_length / sizeof(int16_t); i++) {
525-
sumsq += (float)buffer[i] * buffer[i];
525+
sumsq += (mp_float_t)buffer[i] * buffer[i];
526526
}
527-
return sqrtf(sumsq) / (self->base.max_buffer_length / sizeof(int16_t));
527+
return MICROPY_FLOAT_C_FUN(sqrt)(sumsq) / (self->base.max_buffer_length / sizeof(int16_t));
528528
}
529529

530530
uint32_t common_hal_audiomp3_mp3file_get_samples_decoded(audiomp3_mp3file_obj_t *self) {

0 commit comments

Comments
 (0)