Commit ab25d2bc authored by multrus's avatar multrus
Browse files

Merge branch 'dev_prepare_delivery_script__20230811' into 'main'

Dev prepare delivery script  20230811

See merge request !949
parents 5890fad8 ad3e797d
Loading
Loading
Loading
Loading
Loading
+85 −0
Original line number Diff line number Diff line
--- Makefile	2023-08-11 21:40:55.974878000 +0200
+++ Makefile_patched	2023-08-11 21:43:18.230151000 +0200
@@ -6,13 +6,12 @@
 SRC_LIBDEC   = lib_dec
 SRC_LIBENC   = lib_enc
 SRC_LIBREND  = lib_rend
-SRC_LC3PLUS  = lc3plus lc3plus/fft
 SRC_LIBUTIL  = lib_util
 SRC_APP      = apps
 BUILD        = build
 OBJDIR       = obj
 
-SRC_DIRS  = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LC3PLUS) $(SRC_LIBUTIL) $(SRC_APP)) 
+SRC_DIRS  = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBUTIL) $(SRC_APP)) 
 
 # Name of CLI binaries
 CLI_APIDEC   ?= IVAS_dec
@@ -23,7 +22,6 @@
 LIB_LIBDEC   ?= libivasdec.a
 LIB_LIBENC   ?= libivasenc.a
 LIB_LIBREND  ?= libivasrend.a
-LIB_LC3PLUS  ?= liblc3plus.a
 LIB_LIBUTIL  ?= libivasutil.a
 
 # Default tool settings
@@ -124,7 +122,6 @@
 SRCS_LIBDEC   = $(foreach DIR,$(SRC_LIBDEC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
 SRCS_LIBENC   = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
 SRCS_LIBREND  = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
-SRCS_LC3PLUS  = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
 SRCS_LIBUTIL  = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))
 
 OBJS_LIBCOM      = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o))
@@ -132,14 +129,13 @@
 OBJS_LIBDEC      = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEC:.c=.o))
 OBJS_LIBENC      = $(addprefix $(OBJDIR)/,$(SRCS_LIBENC:.c=.o))
 OBJS_LIBREND     = $(addprefix $(OBJDIR)/,$(SRCS_LIBREND:.c=.o))
-OBJS_LC3PLUS     = $(addprefix $(OBJDIR)/,$(SRCS_LC3PLUS:.c=.o))
 OBJS_LIBUTIL     = $(addprefix $(OBJDIR)/,$(SRCS_LIBUTIL:.c=.o))
 OBJS_CLI_APIDEC  = $(OBJDIR)/decoder.o
 OBJS_CLI_APIENC  = $(OBJDIR)/encoder.o
 OBJS_CLI_APPREND = $(OBJDIR)/renderer.o
 
 DEPS = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.P) $(SRCS_LIBDEBUG:.c=.P) $(SRCS_LIBDEC:.c=.P) \
-  $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P) $(SRCS_LC3PLUS:.c=.P))
+  $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P))
 
 ###############################################################################
 
@@ -165,28 +161,25 @@
 $(LIB_LIBREND): $(OBJS_LIBREND)
 	$(QUIET_AR)$(AR) rcs $@ $^
 
-$(LIB_LC3PLUS): $(OBJS_LC3PLUS)
-	$(QUIET_AR)$(AR) rcs $@ $^
-
 $(LIB_LIBUTIL): $(OBJS_LIBUTIL)
 	$(QUIET_AR)$(AR) rcs $@ $^
 
-$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS)
+$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG)
 	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIENC) -L. -livasenc -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIENC)
 
-$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS)
-	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug -llc3plus $(LDLIBS) -o $(CLI_APIDEC)
+$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG)
+	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIDEC)
 
-$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) $(LIB_LC3PLUS)
-	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIREND)
+$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC)
+	$(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom $(LDLIBS) -o $(CLI_APIREND)
 
-libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LC3PLUS) $(LIB_LIBUTIL)
+libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBUTIL)
 
 clean: 
 	$(QUIET)$(RM) $(OBJS_LIBENC) $(OBJS_LIBDEC) $(DEPS)
 	$(QUIET)$(RM) $(DEPS:.P=.d)
 	$(QUIET)test ! -d $(OBJDIR) || rm -rf $(OBJDIR)
-	$(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) $(LIB_LC3PLUS)
+	$(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND)
 
 $(OBJDIR)/%.o : %.c | $(OBJDIR)
 	$(QUIET_CC)$(CC) $(CFLAGS) -c -MD -o $@ $<
+201 −2
Original line number Diff line number Diff line
@@ -35,14 +35,48 @@ DATE=`eval date +%Y_%m_%d`
OUTDIR=c-code
TMPCLEANDIR=clean-c-code
ROOT=$(dirname $0)/..
STRIP_SPLITREND=0


# check, whether coan exists
coan_exists () {
  type coan &> /dev/null ;
#  return false
}


##########################
#                        #
# Start, Commandline     #
#                        #
##########################

ALL_OPTS=":h-:"
while getopts "$ALL_OPTS" OPTION; do
    case "${OPTION}" in
        -)
            case "${OPTARG}" in
                strip_sr)
                    STRIP_SPLITREND=1
                    ;;
               *)
                    if [ "$OPTERR" = 1 ] && [ "${ALL_OPTS:0:1}" != ":" ]; then
                        echo "Unknown option --${OPTARG}" >&2
                    fi
                    ;;
            esac;;
        h)
            echo "usage: $0 [--strip_sr]" >&2
            exit -1
            ;;
        *)
            if [ "$OPTERR" != 1 ] || [ "${ALLOPTS:0:1}" = ":" ]; then
                echo "Unknown argument: '-${OPTARG}'" >&2
            fi
            ;;
    esac
done


##########################
#                        #
# Prepare dirs and copy  #
@@ -79,6 +113,124 @@ rm -f ${OUTDIR}/Workspace_msvc/lib_debug.vcxproj.bak
cp ${ROOT}/readme.txt ${OUTDIR}
recode lat1..ibmpc ${OUTDIR}/readme.txt # unix2dos ...

# LICENSE.md
cp ${ROOT}/LICENSE.md ${OUTDIR}
recode lat1..ibmpc ${OUTDIR}/LICENSE.md # unix2dos ...

# include .clang_format, since this is a VS dependency
cp ${ROOT}/.clang-format ${OUTDIR}

##########################
#                        #
# Strip Split Rendering  #
#                        #
##########################

if [ $STRIP_SPLITREND -ne 0 ]; then

  echo "Stripping Split Rendering"

  # remove complete lc3plus folder
  rm -R $OUTDIR/lc3plus
  
  # remove other split rendering files
  declare -a sr_files_rend=(
      "lib_rend/ivas_CQMFDecoder.c"
      "lib_rend/ivas_CQMFDecoder.h"
      "lib_rend/ivas_CQMFEncoder.c"
      "lib_rend/ivas_CQMFEncoder.h"
      "lib_rend/ivas_MSPred.c"
      "lib_rend/ivas_MSPred.h"
      "lib_rend/ivas_NoiseGen.c"
      "lib_rend/ivas_NoiseGen.h"
      "lib_rend/ivas_PerceptualModel.c"
      "lib_rend/ivas_PerceptualModel.h"
      "lib_rend/ivas_PredDecoder.c"
      "lib_rend/ivas_PredDecoder.h"
      "lib_rend/ivas_PredEncoder.c"
      "lib_rend/ivas_PredEncoder.h"
      "lib_rend/ivas_PredTables.h"
      "lib_rend/ivas_RMSEnvGrouping.c"
      "lib_rend/ivas_RMSEnvGrouping.h"
      "lib_rend/ivas_cldfb_codec_bitstream.c"
      "lib_rend/ivas_cldfb_codec_bitstream.h"
      "lib_rend/ivas_lc3plus_common.c"
      "lib_rend/ivas_lc3plus_common.h"
      "lib_rend/ivas_lc3plus_dec.c"
      "lib_rend/ivas_lc3plus_dec.h"
      "lib_rend/ivas_lc3plus_enc.c"
      "lib_rend/ivas_lc3plus_enc.h"
      "lib_rend/ivas_lcld_tables.c"
      "lib_rend/ivas_lcld_tables.h"
      "lib_rend/ivas_splitRend_lcld_dec.c"
      "lib_rend/ivas_splitRend_lcld_enc.c"
      "lib_rend/ivas_splitRendererPLC.c"
      "lib_rend/ivas_splitRendererPost.c"
      "lib_rend/ivas_splitRendererPre.c"
      "lib_rend/ivas_splitRenderer_utils.c"
  )

  for file in ${sr_files_rend[@]}; do
    rm $OUTDIR/$file
    file_windows=${file//\//'\\'}
    sed -i.bak -e "/${file_windows}/d" ${OUTDIR}/Workspace_msvc/lib_rend.vcxproj
  done

  declare -a sr_files_util=(
      "lib_util/split_rend_bfi_file_reader.c"
      "lib_util/split_rend_bfi_file_reader.h"
      "lib_util/split_render_file_read_write.c"
      "lib_util/split_render_file_read_write.h"
  )

  for file in ${sr_files_util[@]}; do
    rm $OUTDIR/$file
    file_windows=${file//\//'\\'}
    sed -i.bak -e "/${file_windows}/d" ${OUTDIR}/Workspace_msvc/lib_util.vcxproj
  done


  # strip macros
  declare -a sr_macros=(
      "SPLIT_REND_WITH_HEAD_ROT"
      "SPLIT_REND_PRED_QUANT_63_PNTS"
      "SPLIT_REND_WITH_HEAD_ROT_PARAMBIN"
      "FIX_658_SPLIT_REND_MASA"
      "FIX_658_SPLIT_REND_MASA"
      "OSBA_SPLIT_RENDERING"
  )

  if coan_exists; then

    for macro in ${sr_macros[@]}; do
      coan source --replace --no-transients -K -U${macro} $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc]
      coan source --replace --no-transients -K -U${macro} $OUTDIR/apps/*.[hc]
      sed -i.bak "/#define\ *$macro/d" $OUTDIR/lib_com/options.h
    done

  else

    echo "Coan required in path; Aborting. Available at https://coan2.sourceforge.net/"
    exit -1

  fi

  # patch Makefile
  patch ${OUTDIR}/Makefile < ${ROOT}/scripts/makefile_noSR.patch

  # delete project file
  rm ${OUTDIR}/Workspace_msvc/LC3plus.vcxproj 

  # patch project/solution files
  sed -i.bak "/LC3plus.vcxproj/,+1d" ${OUTDIR}/Workspace_msvc/Workspace_msvc.sln
  find ${OUTDIR}/Workspace_msvc -name "*.vcxproj" -exec sed -i.bak -e "s/..\\lc3plus\;//g" \{\} \;
  sed -i.bak "/LC3plus.vcxproj/,+3d" ${OUTDIR}/Workspace_msvc/lib_rend.vcxproj # patch dependency

  # clean-up *.bak-files
  find $OUTDIR -name "*.bak" -exec rm \{\} \;

fi


##########################
#                        #
@@ -189,9 +341,15 @@ if coan_exists; then
  echo "-UDEBUG_SPAR_DIRAC_WRITE_OUT_PRED_PAR" >> $COAN_LIST
  echo "-UDEBUG_AGC"                           >> $COAN_LIST
  echo "-USPAR_HOA_DBG"                        >> $COAN_LIST
  echo "-UDEBUG_OSBA"                          >> $COAN_LIST
  echo "-UDEBUG_BINAURAL_FILTER_DESIGN"        >> $COAN_LIST
  echo "-UDEBUG_AGC_ENCODER_CMD_OPTION"        >> $COAN_LIST

  echo "-UDEBUG_JBM_CMD_OPTION"                >> $COAN_LIST
  echo "-UVARIABLE_SPEED_DECODING"             >> $COAN_LIST
  echo "-UDBG_WAV_WRITER"                      >> $COAN_LIST
  echo "-USPLIT_REND_WITH_HEAD_ROT_DEBUG"      >> $COAN_LIST
  echo "-USPLIT_POSE_CORRECTION_DEBUG"         >> $COAN_LIST
  echo "-USPLIT_MD_CODING_DEBUG"               >> $COAN_LIST

  # apply coan
  coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc]
@@ -217,6 +375,47 @@ else
fi



##########################
#                        #
# CR Switches for 1st    #
# delivery               #
#                        #
##########################

# rename switches from CR_ to NONBE_
tmpfile=`mktemp`
rm -f $tmpfile
touch $tmpfile

cat $OUTDIR/lib_com/options.h  | sed -n '/Start NON-BE CR switches/,/End NON-BE CR switches/p' >> $tmpfile
sed -i.bak "s/^-D//g" $tmpfile

nonbe_list=nonbe_list_delivery.txt
rm -f $nonbe_list
touch $nonbe_list

${ROOT}/scripts/parse_options_h.sh -c $tmpfile >> $nonbe_list

# rename switches
while read line
do
  macro=`echo $line | grep '\-D' | sed -e "s/\-D//g"`
  if [[ ! $macro =~ [^[:space:]] ]] ; then
    continue
  fi
  macro_new=${macro/CR_/NONBE_}
  find $OUTDIR -name "*.[ch]" -exec sed -i.bak -e "s/${macro}/${macro_new}/g" \{\} \;
done < $nonbe_list

rm -f $nonbe_list
rm -f $tmpfile

sed -i.bak -e "s/NON-BE CR switches/NON-BE switches/g" $OUTDIR/lib_com/options.h
sed -i.bak -e "/all switches in this category should start with \"CR_\"/d" $OUTDIR/lib_com/options.h



##########################
#                        #
# Patch code             #