ref: daa6a1c1cc2ecdcc5f3341e78285a0ae6a90792d
parent: 12331447f69135e90ad98f7ece1ac64cb1e8f232
author: Siarhei Volkau <lis8215@gmail.com>
date: Sun Aug 17 13:28:44 EDT 2025
MIPS: generalize build options Current MIPS port supports special implementation for CPUs with DSP extension support. It is enabled by setting MIPSr1_ASM flag for compiler. The name MIPSr1_ASM is very confusing, r1 might mean: - MIPS I - MIPS32/MIPS64 release 1 - MIPS DSP ASE revision 1 (the correct one) Let's remove it and check GCC's builtin define __mips_dsp instead. This allows use default autotools build system instead of hand-crafted makefile. Signed-off-by: Siarhei Volkau <lis8215@gmail.com> Signed-off-by: Jean-Marc Valin <jeanmarcv@google.com>
--- a/Makefile.mips
+++ /dev/null
@@ -1,169 +1,0 @@
-#################### COMPILE OPTIONS #######################
-
-# Uncomment this for fixed-point build
-FIXED_POINT=1
-
-# It is strongly recommended to uncomment one of these
-# VAR_ARRAYS: Use C99 variable-length arrays for stack allocation
-# USE_ALLOCA: Use alloca() for stack allocation
-# If none is defined, then the fallback is a non-threadsafe global array
-CFLAGS := -DUSE_ALLOCA $(CFLAGS)
-#CFLAGS := -DVAR_ARRAYS $(CFLAGS)
-
-# These options affect performance
-# HAVE_LRINTF: Use C99 intrinsics to speed up float-to-int conversion
-CFLAGS := -DHAVE_LRINTF $(CFLAGS)
-
-###################### END OF OPTIONS ######################
-
--include package_version
-
-include silk_sources.mk
-include celt_sources.mk
-include opus_sources.mk
-
-ifdef FIXED_POINT
-SILK_SOURCES += $(SILK_SOURCES_FIXED)
-else
-SILK_SOURCES += $(SILK_SOURCES_FLOAT)
-OPUS_SOURCES += $(OPUS_SOURCES_FLOAT)
-endif
-
-EXESUFFIX =
-LIBPREFIX = lib
-LIBSUFFIX = .a
-OBJSUFFIX = .o
-
-CC = $(TOOLCHAIN_PREFIX)cc$(TOOLCHAIN_SUFFIX)
-AR = $(TOOLCHAIN_PREFIX)ar
-RANLIB = $(TOOLCHAIN_PREFIX)ranlib
-CP = $(TOOLCHAIN_PREFIX)cp
-
-cppflags-from-defines = $(addprefix -D,$(1))
-cppflags-from-includes = $(addprefix -I,$(1))
-ldflags-from-ldlibdirs = $(addprefix -L,$(1))
-ldlibs-from-libs = $(addprefix -l,$(1))
-
-WARNINGS = -Wall -W -Wstrict-prototypes -Wextra -Wcast-align -Wnested-externs -Wshadow
-
-CFLAGS += -mips32r2 -mno-mips16 -std=gnu99 -O2 -g $(WARNINGS) -DENABLE_ASSERTIONS -DMIPSr1_ASM -DOPUS_BUILD -mdspr2 -march=74kc -mtune=74kc -mmt -mgp32
-
-CINCLUDES = include silk celt
-
-ifdef FIXED_POINT
-CFLAGS += -DFIXED_POINT=1 -DDISABLE_FLOAT_API
-CINCLUDES += silk/fixed
-else
-CINCLUDES += silk/float
-endif
-
-
-LIBS = m
-
-LDLIBDIRS = ./
-
-CFLAGS += $(call cppflags-from-defines,$(CDEFINES))
-CFLAGS += $(call cppflags-from-includes,$(CINCLUDES))
-LDFLAGS += $(call ldflags-from-ldlibdirs,$(LDLIBDIRS))
-LDLIBS += $(call ldlibs-from-libs,$(LIBS))
-
-COMPILE.c.cmdline = $(CC) -c $(CFLAGS) -o $@ $<
-LINK.o = $(CC) $(LDPREFLAGS) $(LDFLAGS)
-LINK.o.cmdline = $(LINK.o) $^ $(LDLIBS) -o $@$(EXESUFFIX)
-
-ARCHIVE.cmdline = $(AR) $(ARFLAGS) $@ $^ && $(RANLIB) $@
-
-%$(OBJSUFFIX):%.c
- $(COMPILE.c.cmdline)
-
-%$(OBJSUFFIX):%.cpp
- $(COMPILE.cpp.cmdline)
-
-# Directives
-
-
-# Variable definitions
-LIB_NAME = opus
-TARGET = $(LIBPREFIX)$(LIB_NAME)$(LIBSUFFIX)
-
-SRCS_C = $(SILK_SOURCES) $(CELT_SOURCES) $(OPUS_SOURCES)
-
-OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(SRCS_C))
-
-OPUSDEMO_SRCS_C = src/opus_demo.c
-OPUSDEMO_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSDEMO_SRCS_C))
-
-TESTOPUSAPI_SRCS_C = tests/test_opus_api.c
-TESTOPUSAPI_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUSAPI_SRCS_C))
-
-TESTOPUSDECODE_SRCS_C = tests/test_opus_decode.c
-TESTOPUSDECODE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUSDECODE_SRCS_C))
-
-TESTOPUSENCODE_SRCS_C = tests/test_opus_encode.c tests/opus_encode_regressions.c
-TESTOPUSENCODE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUSENCODE_SRCS_C))
-
-TESTOPUSEXTENSIONS_SRCS_C = tests/test_opus_extensions.c
-TESTOPUSEXTENSIONS_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUSEXTENSIONS_SRCS_C))
-
-TESTOPUSPADDING_SRCS_C = tests/test_opus_padding.c
-TESTOPUSPADDING_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUSPADDING_SRCS_C))
-
-OPUSCOMPARE_SRCS_C = src/opus_compare.c
-OPUSCOMPARE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSCOMPARE_SRCS_C))
-
-TESTS := test_opus_api test_opus_decode test_opus_encode test_opus_extensions test_opus_padding
-
-# Rules
-all: lib opus_demo opus_compare $(TESTS)
-
-lib: $(TARGET)
-
-check: all
- for test in $(TESTS); do ./$$test; done
-
-$(TARGET): $(OBJS)
- $(ARCHIVE.cmdline)
-
-opus_demo$(EXESUFFIX): $(OPUSDEMO_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-test_opus_api$(EXESUFFIX): $(TESTOPUSAPI_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-test_opus_decode$(EXESUFFIX): $(TESTOPUSDECODE_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-test_opus_encode$(EXESUFFIX): $(TESTOPUSENCODE_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-test_opus_extensions$(EXESUFFIX): $(TESTOPUSEXTENSIONS_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-test_opus_padding$(EXESUFFIX): $(TESTOPUSPADDING_OBJS) $(TARGET)
- $(LINK.o.cmdline)
-
-opus_compare$(EXESUFFIX): $(OPUSCOMPARE_OBJS)
- $(LINK.o.cmdline)
-
-celt/celt.o: CFLAGS += -DPACKAGE_VERSION='$(PACKAGE_VERSION)'
-celt/celt.o: package_version
-
-package_version: force
- @if [ -x ./update_version ]; then \
- ./update_version || true; \
- elif [ ! -e ./package_version ]; then \
- echo 'PACKAGE_VERSION="unknown"' > ./package_version; \
- fi
-
-force:
-
-clean:
- rm -f opus_demo$(EXESUFFIX) opus_compare$(EXESUFFIX) $(TARGET) \
- test_opus_api$(EXESUFFIX) test_opus_decode$(EXESUFFIX) \
- test_opus_encode$(EXESUFFIX) test_opus_extensions$(EXESUFFIX) \
- test_opus_padding$(EXESUFFIX) \
- $(OBJS) $(OPUSDEMO_OBJS) $(OPUSCOMPARE_OBJS) $(TESTOPUSAPI_OBJS) \
- $(TESTOPUSDECODE_OBJS) $(TESTOPUSENCODE_OBJS) \
- $(TESTOPUSEXTENSIONS_OBJS) $(TESTOPUSPADDING_OBJS)
-
-.PHONY: all lib clean force check
--- a/celt/_kiss_fft_guts.h
+++ b/celt/_kiss_fft_guts.h
@@ -102,7 +102,7 @@
#if defined(OPUS_ARM_INLINE_EDSP)
#include "arm/kiss_fft_armv5e.h"
#endif
-#if defined(MIPSr1_ASM)
+#if defined(__mips_dsp)
#include "mips/kiss_fft_mipsr1.h"
#endif
--- a/celt/celt.c
+++ b/celt/celt.c
@@ -54,7 +54,7 @@
#define PACKAGE_VERSION "unknown"
#endif
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/celt_mipsr1.h"
#endif
--- a/celt/fixed_generic.h
+++ b/celt/fixed_generic.h
@@ -200,7 +200,7 @@
/** Divide a 32-bit value by a 32-bit value. Result fits in 32 bits */
#define DIV32(a,b) (((opus_val32)(a))/((opus_val32)(b)))
-#if defined(MIPSr1_ASM)
+#if defined(__mips_dsp)
#include "mips/fixed_generic_mipsr1.h"
#endif
--- a/celt/mdct.c
+++ b/celt/mdct.c
@@ -53,7 +53,7 @@
#include "mathops.h"
#include "stack_alloc.h"
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/mdct_mipsr1.h"
#endif
--- a/celt/pitch.h
+++ b/celt/pitch.h
@@ -42,7 +42,7 @@
#include "x86/pitch_sse.h"
#endif
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/pitch_mipsr1.h"
#endif
--- a/celt/vq.c
+++ b/celt/vq.c
@@ -39,7 +39,7 @@
#include "rate.h"
#include "pitch.h"
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/vq_mipsr1.h"
#endif
--- a/silk/NSQ_del_dec.c
+++ b/silk/NSQ_del_dec.c
@@ -61,7 +61,7 @@
typedef NSQ_sample_struct NSQ_sample_pair[ 2 ];
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/NSQ_del_dec_mipsr1.h"
#endif
static OPUS_INLINE void silk_nsq_del_dec_scale_states(
--- a/silk/SigProc_FIX.h
+++ b/silk/SigProc_FIX.h
@@ -631,7 +631,7 @@
#include "arm/SigProc_FIX_armv5e.h"
#endif
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/sigproc_fix_mipsr1.h"
#endif
--- a/silk/fixed/noise_shape_analysis_FIX.c
+++ b/silk/fixed/noise_shape_analysis_FIX.c
@@ -128,8 +128,8 @@
silk_assert( 0 );
}
-/* Disable MIPS version until it's updated. */
-#if 0 && defined(MIPSr1_ASM)
+/* Disable MIPS DSP version until it's updated. */
+#if 0 && defined(__mips_dsp)
#include "mips/noise_shape_analysis_FIX_mipsr1.h"
#endif
--- a/silk/fixed/warped_autocorrelation_FIX.c
+++ b/silk/fixed/warped_autocorrelation_FIX.c
@@ -31,7 +31,7 @@
#include "main_FIX.h"
-#if defined(MIPSr1_ASM)
+#if defined(__mips_dsp)
#include "mips/warped_autocorrelation_FIX_mipsr1.h"
#endif
--- a/silk/macros.h
+++ b/silk/macros.h
@@ -104,7 +104,7 @@
(( (a) & ((b)^0x80000000) & 0x80000000) ? silk_int32_MIN : (a)-(b)) : \
((((a)^0x80000000) & (b) & 0x80000000) ? silk_int32_MAX : (a)-(b)) )
-#if defined(MIPSr1_ASM)
+#if defined(FIXED_POINT) && defined(__mips_dsp)
#include "mips/macros_mipsr1.h"
#endif
--
⑨