festival, speech-tools: fix festival reusing CC value from staged speech-tools est_program_makefile, gcc_defaults.mak

* fixes:
  https://github.com/ros/meta-ros/issues/553

* the files est_program_makefile, gcc_defaults.mak staged by speech-tools contain
  CC/CXX variables which include --sysroot parameter, poiting to speech-tools RSS:
  grep -R sysroot= work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/
  work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/lib/est_program_makefile: i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/speech-tools
/2.4-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed     -o $* $($*_OBJ) $($*_LIBS)   -L$(EST_HOME)/lib -lestools -L$(EST_HOME)/lib -lestbase -L$(EST_HOME)/lib -leststring   -lncurses   -ldl -lncurses -lm  -lstdc++
  work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/lib/est_program_makefile: i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/speech-tools
/2.4-r0/recipe-sysroot -c  -fno-implicit-templates  -O3 -Wall           -I$(EST_HOME)/include      $($*_INCLUDES) $($*_DEFINES) $*.cc
  work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/lib/est_program_makefile: i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/speech-tools
/2.4-r0/recipe-sysroot -c  -fno-implicit-templates  -O3 -Wall           -I$(EST_HOME)/include      $($*_INCLUDES) $($*_DEFINES) $*.c
  work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/config/compilers/gcc_defaults.mak:CC=i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/s
peech-tools/2.4-r0/recipe-sysroot
  work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/config/compilers/gcc_defaults.mak:CXX=i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/
speech-tools/2.4-r0/recipe-sysroot

* the issue is that when festival is being configured, the speech-tools
  RSS might already be removed by rm_work (nor not created in this build
  at all when speech-tools were reused from sstate), causing:
  | making dependencies -- festival.cc Phone.cc utterance.cc features.cc wave.cc wagon_interp.cc linreg.cc audspio.cc server.cc client.cc web.cc tcl.cc wfst.cc ngram.cc viterbi.cc ModuleDescription.cc
  | i686-oe-linux-gcc  -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/jenkins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/speech-tools/2.4-r0/recipe-sysroot -c  -fno-implicit-templates  -O3 -Wall           -I../../../src/include -I/jen
kins/mjansa/build-nodistro-master/BUILD/work/core2-32-oe-linux/festival/2.4-r0/recipe-sysroot/usr/share/speech-tools/include      -DINSTANTIATE_TEMPLATES -DFTNAME='Festival Speech Synthesis System' -DFTLIBDIRC='/usr/share/festival ' -DFTVERSION='2.4' -DFTSTATE='re
lease'  -DFTDATE='December 2014' -DFTOSTYPE=\"unknown_DebianGNULinux\" festival.cc
  | festival.cc:40:10: fatal error: cstdio: No such file or directory
  |    40 | #include <cstdio>
  |       |          ^~~~~~~~
  | compilation terminated.
  | Makefile:65: recipe for target 'festival.o' failed

* this is cleary wrong, change both speech-tools and festival
  to just respect CC/CXX variables passed by EXTRA_OEMAKE

* pass LDFLAGS through CXX as well instead of LINKFLAGS, CXX is used
  in default LINK_COMMAND anyway, so we don't need to mess with default
  LINKFLAGS added by the .mak files
  config/rules/defaults.mak:    LINK_COMMAND = $(CXX) $(LINKFLAGS) $(TEMPLATES)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Martin Jansa 2019-07-03 21:31:25 +00:00
parent 7364c87d80
commit 34e4fd2ca1
2 changed files with 6 additions and 5 deletions

View File

@ -34,6 +34,8 @@ inherit autotools-brokensep
#disable parallel make (make -j), as festival cannot handle that
PARALLEL_MAKE = ""
EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${LDFLAGS}'"
do_configure_prepend() {
#point to speech-tools in sysroots
sed -i 's:EST=$(TOP)/../speech_tools:EST=${STAGING_DIR_TARGET}${datadir}/speech-tools:g' ${S}/config/config.in

View File

@ -14,12 +14,11 @@ inherit autotools-brokensep
PARALLEL_MAKE = ""
EXTRA_OEMAKE = "LINKFLAGS='${LDFLAGS}'"
EXTRA_OEMAKE = "CC='${CC}' CXX='${CXX} ${LDFLAGS}'"
do_configure_prepend() {
#force crosscompilation compiler
sed -i 's:CC=gcc:CC=${CC}:g' ${S}/config/compilers/gcc_defaults.mak
sed -i 's:CXX=gcc:CXX=${CC}:g' ${S}/config/compilers/gcc_defaults.mak
# respect CC and CXX from EXTRA_OEMAKE
sed -i '/^CC=gcc/d; /^CXX=gcc$/d' ${S}/config/compilers/gcc_defaults.mak
}
do_install() {