FreeCalypso > hg > fc-tourmaline
view src/gpf/ccd/ccddata.mk @ 275:79cfefc1e2b4
audio mode load: gracefully handle mode files of wrong AEC version
Unfortunately our change of enabling L1_NEW_AEC (which is necessary
in order to bring our Calypso ARM fw into match with the underlying
DSP reality) brings along a change in the audio mode file binary
format and file size - all those new tunable AEC parameters do need
to be stored somewhere, after all. But we already have existing
mode files in the old format, and setting AEC config to garbage when
loading old audio modes (which is what would happen without the
present change) is not an appealing proposition.
The solution implemented in the present change is as follows: the
audio mode loading code checks the file size, and if it differs
from the active version of T_AUDIO_MODE, the T_AUDIO_AEC_CFG structure
is cleared - set to the default (disabled AEC) for the compiled type
of AEC. We got lucky in that this varying T_AUDIO_AEC_CFG structure
sits at the end of T_AUDIO_MODE!
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 30 Jul 2021 02:55:48 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
#----------------------------------------------------------------------------- # Project : # Modul : ccddata.mk #----------------------------------------------------------------------------- # Copyright 2002 Texas Instruments Berlin, AG # All rights reserved. # # This file is confidential and a trade secret of Texas # Instruments Berlin, AG # The receipt of or possession of this file does not convey # any rights to reproduce or disclose its contents or to # manufacture, use, or sell anything it may describe, in # whole, or in part, without the specific written consent of # Texas Instruments Berlin, AG. #----------------------------------------------------------------------------- # Purpose : Building Ccddata Dll/Lib. #----------------------------------------------------------------------------- ifndef TARGET TARGET=win32 endif ifeq ($(TARGET), nuc) override TARGET=arm7 endif PLATFORM=$(TARGET) COFILES= include ccd_base.mk ifeq ($(PROST), g23net) CDGINCDIR=$(TESTROOT)/Cdginc PROSTCFLAGS= #??? -DOPTION_MULTITHREADED -DSHARED_CCD endif ifeq ($(PROST), g23m) CDGINCDIR=$(TESTROOT)/ms/CDGINC endif ifeq ($(PROST), gsm) CDGINCDIR=$(TESTROOT)/ms/CDGINC endif ifeq ($(PROST), gprs) ifeq ($(TARGET), arm7) CDGINCDIR=$(TESTROOT)/cdginc/cdginc_vo else CDGINCDIR=$(TESTROOT)/ms/CDGINC endif endif ifeq ($(PROST), generic) ifndef CDGINCDIR CDGINCDIR=$(GPF)/util/teststack/inc/cdginc/ endif endif ifndef CCDDATADIR CCDDATADIR=$(GPFPRJDIR) endif override CCDDATADIR:=$(subst \,/,$(CCDDATADIR)) CCDDATA_OBJECTS=ccddata_ccd.obj ccddata_mconst.obj ccddata_ccdmtab.obj\ ccddata_cdemval.obj ccddata_ccdent.obj CCDDATA_OBJFILES=$(patsubst %.obj,$(OBJDIR)/%.obj,$(CCDDATA_OBJECTS)) CCDDATA_EXE_OBJECTS=cdt.obj CCDDATA_EXE_OBJFILES=$(patsubst %.obj,$(OBJDIR)/%.obj,$(CCDDATA_EXE_OBJECTS)) LNTFILES=$(patsubst %.obj,%.lto,$(CCDDATA_OBJECTS)) # win32 ifeq ($(TARGET),win32) include ccddata_version.h ifeq ($(LOAD),1) PART=load DLL_PREFIX= CCDDATA_OBJECTS = ccddata_load.obj COFILES+=$(CCDDATA_LIB) LDFLAGS_DLL+=/IMPLIB:$(CCDDATA_IMPLIB) DEFINES+=-DCCDDATA_LOAD else PART=dll DLL_PREFIX=cddl_ LDFLAGS_DLL+=/COMMENT:CCDDATA_$(CCDDATA_VERSION) CCDDATA_OBJECTS += ccddata_pconst.obj ccddata_ccdptab.obj \ ccddata_cdemstr.obj ccddata_cdepval.obj \ ccddata_tap_priv.obj ccddata_alias.obj \ ccddata_version.obj ccddata_eg.obj ccddata_pdi.obj endif include ccddata_exp.mk CCDDATA_LIB=$(GPFBINDIR)/ccddata_$(PART).dll CCDDATA_IMPLIB=$(subst win32,WIN32,$(GPFLIBDIR)/ccddata_$(PART).lib) CCDDATA_IMPLIB_LOCAL=$(OBJDIR)/ccddata_$(PART).lib COFILES+=$(CCDDATA_IMPLIB) CCDEDIT_LIB=$(GPFLIBDIR)/ccdedit.lib CCD_LIB=$(GPFLIBDIR)/ccd.lib PCON_LIB=$(GPFLIBDIR)/pcon.lib FRAME_LIB=$(GPFLIBDIR)/frame.lib CCDDATA_EXE=$(GPFBINDIR)/cdt.exe INCLUDES+=-I"$(CDGINCDIR)" DEFINES+=-DCCDDATA_DABSTR LDFLAGS_DLL+=/nologo /dll $(PROSTLDFLAGS) $(CCDEDIT_LIB) ifneq ($(LOAD),1) LDFLAGS_DLL+=/IMPLIB:$(CCDDATA_IMPLIB_LOCAL) else LINK_EXPORTS+=/EXPORT:ccddata_init /EXPORT:ccddata_exit\ /EXPORT:ccddata_dllname /SECTION:.shared,RWS endif LDFLAGS_DLL+=/OUT:"$@" $(LINK_EXPORTS) LDFLAGS_DLL+= $(PCON_LIB) $(CCD_LIB) $(FRAME_LIB) LDFLAGS_EXE=/nologo /OUT:"$@" $(PROSTLDFLAGS) ifeq ($(DEBUG), 1) LDFLAGS_EXE += /DEBUG /incremental:no /pdb:none endif ccddata: all $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(LINK) $(LDFLAGS_DLL) $(CCDDATA_OBJFILES) cdt: $(CCDDATA_EXE) $(CCDDATA_EXE): $(CCDDATA_EXE_OBJECTS) -cleartool co -nda -nc $@ $(LINK) $(LDFLAGS_EXE) $(CCDDATA_EXE_OBJFILES) $(CCDDATA_IMPLIB) else CCDDATA_OBJECTS += ccd_config.obj endif # target == win32 # nucwin ifeq ($(TARGET),nucwin) CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=/OUT:"$(CCDDATA_LIB)" # currently for all nucwin: put the p* info for PCON in the lib CCDDATA_OBJECTS += ccddata_pconst.obj ccddata_ccdptab.obj # and for the concept of synchronous frame with the tap inside # of the protocol stack include also most of the rest of ccddata; it # should not matter even without the tap CCDDATA_OBJECTS += ccddata_cdemstr.obj ccddata_cdepval.obj \ ccddata_tap_priv.obj ccddata_alias.obj $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) endif # target == nucwin # nuc ifeq ($(TARGET),arm7) CCDDATA_OBJECTS += ccddata_pconst.obj ccddata_ccdptab.obj ifeq ($(CCD_SYMBOLS), 1) CCDDATA_OBJECTS += ccddata_alias.obj endif CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib override CCDDATA_LIB:=$(subst \,/,$(CCDDATA_LIB)) INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=-rq $@ $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) endif # target == arm7 # arm9 ifeq ($(TARGET),arm9) CCDDATA_OBJECTS += ccddata_pconst.obj ccddata_ccdptab.obj ifeq ($(CCD_SYMBOLS), 1) CCDDATA_OBJECTS += ccddata_alias.obj endif CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=-rq $@ $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) endif # target = arm9 # arm_b16 ifeq ($(TARGET),arm_b16) CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=-rv $@ $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) endif # target == arm_b16 # arm_b32 ifeq ($(TARGET),arm_b32) CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=-rv $@ $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) endif # target == arm_b32 # psos ifeq ($(TARGET),psos) CCDDATA_LIB=$(CCDDATADIR)/ccddata.lib INCLUDES+=-I"$(CDGINCDIR)" LDFLAGS+=$@ $(CCDDATA_LIB): $(COPTS_FILE) $(CCDDATA_OBJECTS) $(MKLIB) $(LDFLAGS) $(CCDDATA_OBJFILES) $(RM) $(COPTS_FILE) $(COPTS_FILE): @echo $(_CFLAGS) > c.opt @echo $(INCLUDES) >> c.opt @echo $(DEFINES) >> c.opt endif # target == psos # sus environments ifeq ($(OSENV), sus) CCDDATA_LIB=$(CCDDATADIR)/libccddata.a INCLUDES+=-I$(CDGINCDIR) # currently for all emulations: put the p* info for PCON in the lib CCDDATA_OBJECTS += ccddata_pconst.obj ccddata_ccdptab.obj # and for the concept of synchronous frame with the tap inside # of the protocol stack include also most of the rest of ccddata; it # should not matter even without the tap CCDDATA_OBJECTS += ccddata_cdemstr.obj ccddata_cdepval.obj \ ccddata_tap_priv.obj ccddata_alias.obj $(CCDDATA_LIB): $(CCDDATA_OBJECTS) $(MKLIB) $(CCDDATA_LIB) $(CCDDATA_OBJFILES) $(RANLIB) $(CCDDATA_LIB) endif # sus all: $(CCDDATA_LIB) exe: $(CCDDATA_EXE) $(CCDDATA_OBJECTS) $(CCDDATA_EXE_OBJECTS):\ %.obj: %.c $(OBJDIR) $(CC) $(CFLAGS) "$<" CCDDATA_LIBDIR=$(subst \,/,$(dir $(CCDDATA_LIB))). $(CCDDATA_LIB): $(CCDDATA_LIBDIR) $(CCDEDIT_LIB) $(OBJDIR) $(CCDDATA_LIBDIR): @$(MKDIR) -p $@ clean: $(RM) $(OBJDIR)/ccddata* $(OBJDIR)/ccd_config* $(OBJDIR)/cdt.obj \ $(CCDDATA_LIB) help: @echo Usage: gnumake -f ccddata.mk [ DEBUG=1 ] TARGET=target @echo with target: arm7, arm9, arm_b16, arm_b32, nucwin, win32, or psos @echo further options: @echo CCDENT=0 when the file ccdent.cdg does not exist in the\ cdginc directory @echo CCDALIAS=0 when the files malias.cdg and palias.cdg do not exist\ in the cdginc directory @echo CDEMSTR=0 when the file cdemstr.cdg.cdg does not exist\ in the cdginc directory @echo CDGINCDIR=path with the path to the cdginc directory @echo CCDDATA_LIB=path with the path to the ccddata lib to be built ci: -cleartool ci -nc $(COFILES) co: -cleartool co -nda -nc $(COFILES) -include ccd_lnt.mk include ccddata_dep.mk