From 34e4fd2ca1804ae3a045c3736430792a4683d1ae Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 3 Jul 2019 21:31:25 +0000 Subject: [PATCH] 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 | | ^~~~~~~~ | 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 --- recipes-extended/festival/festival_2.4.bb | 2 ++ recipes-extended/speech-tools/speech-tools_2.4.bb | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes-extended/festival/festival_2.4.bb b/recipes-extended/festival/festival_2.4.bb index 28623aa..c180855 100644 --- a/recipes-extended/festival/festival_2.4.bb +++ b/recipes-extended/festival/festival_2.4.bb @@ -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 diff --git a/recipes-extended/speech-tools/speech-tools_2.4.bb b/recipes-extended/speech-tools/speech-tools_2.4.bb index 47e0d9b..cf9802f 100644 --- a/recipes-extended/speech-tools/speech-tools_2.4.bb +++ b/recipes-extended/speech-tools/speech-tools_2.4.bb @@ -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 +do_configure_prepend() { + # respect CC and CXX from EXTRA_OEMAKE + sed -i '/^CC=gcc/d; /^CXX=gcc$/d' ${S}/config/compilers/gcc_defaults.mak } do_install() {