Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross compiler toolchain for linux, mac and windows #1

Open
motters opened this issue Feb 18, 2018 · 6 comments
Open

Cross compiler toolchain for linux, mac and windows #1

motters opened this issue Feb 18, 2018 · 6 comments

Comments

@motters
Copy link
Contributor

motters commented Feb 18, 2018

Create linux, mac and windows cross compilers

See below for example:
https://link.springer.com/content/pdf/10.1007%2F978-1-4302-6838-3.pdf
https://www.intel.com/content/dam/www/public/us/en/documents/guides/galileo-quark-x1000-bsp-guide.pdf

@motters motters changed the title Cross compilers, linux, mac, windows Cross compiler toolchain for linux, mac and windows Feb 19, 2018
@motters
Copy link
Contributor Author

motters commented Apr 5, 2018

Linux and mac toolchains can now be exported.

Modified version of meta-mingw has created, where mingw binaries where update from v3 to v5 to ensure Qt could compile correctly.

However after looking at meta-darwin the following errors occur

ERROR: No recipes available for:
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-core/zlib/zlib_1.2.8.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/binutils/binutils-cross-canadian_2.24.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/gcc/gcc-cross-canadian_4.9.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/gcc/gcc-crosssdk-initial_4.9.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/gcc/gcc-crosssdk_4.9.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/gcc/gcc-runtime_4.9.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/gcc/libgcc_4.9.bbappend
  /home/electronics/Documents/meta-qutipi/vendor/meta-darwin/recipes-devtools/qemu/qemu_2.1.0.bbappend

After renaming the recipes to ensure they extend the correct meta layers the following errors occur

ERROR: ExpansionError during parsing /home/electronics/Documents/meta-qutipi/vendor/poky-rocko/meta/recipes-devtools/gcc/gcc-crosssdk_7.3.bb                                | ETA:  0:00:03
Traceback (most recent call last):
bb.data_smart.ExpansionError: Failure expanding variable EXTRA_OECONF_darwin[:=], expression was ${@oe_filter_out('--with-gnu-ld', '${@oe_filter_out('--with-linker-hash-style=sysv', '    --enable-clocale=generic     --with-gnu-ld     --enable-shared     --enable-languages=c,c++,objc     --enable-threads=posix     --disable-multilib          --enable-c99     --enable-long-long     --enable-symvers=gnu     --enable-libstdcxx-pch     --program-prefix=i386-pokysdk-darwin-     --without-local-prefix         --disable-lto     --enable-libssp     --enable-libitm     --disable-bootstrap     --disable-libmudflap     --with-system-zlib     --with-linker-hash-style=sysv     --enable-linker-build-id     --with-ppl=no     --with-cloog=no     --enable-checking=release     --enable-cheaders=c_global     --without-isl               --with-gxx-include-dir=/not/exist/opt/qutipi/2.4.2/sysroots/i386-pokysdk-darwin/usr/include/c++/7.3.0     --with-sysroot=/not/exist     --with-build-sysroot=/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot                --without-long-double-128       --enable-poison-system-directories     --with-mpfr=/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr     --with-system-zlib  --disable-static ${PACKAGECONFIG_CONFARGS} --disable-nls --enable-initfini-array', d)} --disable-static ${PACKAGECONFIG_CONFARGS} ${@gettext_oeconf(d)} --enable-initfini-array', d)} which triggered exception SyntaxError: invalid syntax (EXTRA_OECONF_darwin[:=], line 1)

@motters
Copy link
Contributor Author

motters commented Apr 5, 2018

The above issue with meta-darwin was fixed by changing

EXTRA_OECONF_darwin = "${@oe_filter_out('--with-gnu-ld', '${EXTRA_OECONF}', d)}"
EXTRA_OECONF_darwin := "${@oe_filter_out('--enable-libssp', '${EXTRA_OECONF}', d)}"
EXTRA_OECONF_darwin := "${@oe_filter_out('--with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c\+\+', '${EXTRA_OECONF}', d)}"

to

EXTRA_OECONF_remove_darwin = "--with-gnu-ld"
EXTRA_OECONF_remove_darwin = "--enable-libssp"
EXTRA_OECONF_remove_darwin = '--with-gxx-include-dir=${STAGING_DIR_TARGET}${target_includedir}/c\+\+'

However this moves us onto the next error

ERROR: Nothing PROVIDES 'virtual/nativesdk-libc' (but /home/electronics/Documents/meta-qutipi/vendor/poky-rocko/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb DEPENDS on or otherwise requires it)
nativesdk-glibc PROVIDES virtual/nativesdk-libc but was skipped: PREFERRED_PROVIDER_virtual/nativesdk-libc set to nativesdk-osx-runtime, not nativesdk-glibc
nativesdk-osx-runtime PROVIDES virtual/nativesdk-libc but was skipped: PREFERRED_PROVIDER_virtual/nativesdk-i386-pokysdk-darwin-libc-initial set to nativesdk-glibc-initial, not nativesdk-osx-runtime
NOTE: Runtime target 'nativesdk-packagegroup-sdk-host' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['nativesdk-packagegroup-sdk-host', 'virtual/nativesdk-libc']
ERROR: Required build target 'meta-toolchain' has no buildable providers.
Missing or unbuildable dependency chain was: ['meta-toolchain', 'nativesdk-packagegroup-sdk-host', 'virtual/nativesdk-libc']

@motters
Copy link
Contributor Author

motters commented Apr 6, 2018

Above error fixed, moving onto the next issue.

make[1]: Leaving directory '/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/libcpp'
make[1]: Entering directory '/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/fixincludes'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/fixincludes'
make[1]: Entering directory '/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/gcc'
/home/electronics/Documents/meta-qutipi/build/tmp/work-shared/gcc-7.3.0-r0/gcc-7.3.0/missing flex  -ogengtype-lex.c ../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/gengtype-lex.l && { \
  echo '#include "bconfig.h"' > gengtype-lex.c.tmp; \
  cat gengtype-lex.c >> gengtype-lex.c.tmp; \
  mv gengtype-lex.c.tmp gengtype-lex.c; \
}
/home/electronics/Documents/meta-qutipi/build/tmp/work-shared/gcc-7.3.0-r0/gcc-7.3.0/missing: line 81: flex: command not found
WARNING: 'flex' is missing on your system.
         You should only need it if you modified a '.l' file.
         You may want to install the Fast Lexical Analyzer package:
         <http://flex.sourceforge.net/>
Makefile:2799: recipe for target 'gengtype-lex.c' failed
make[1]: [gengtype-lex.c] Error 127 (ignored)
echo timestamp > gcc.pod
perl ../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/../contrib/texi2pod.pl ../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/doc/invoke.texi > gcc.pod
g++  -c   -isystem/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/include -O2 -pipe -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings  -Wno-error -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -I. -Ibuild -I../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc -I../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/build -I../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/../include  -I../../../../../../../work-shared/gcc-7.3.0-r0/gcc-7.3.0/gcc/../libcpp/include -isystem/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/include \
	-o build/gengtype-lex.o gengtype-lex.c
g++: error: gengtype-lex.c: No such file or directory
g++: fatal error: no input files
compilation terminated.
Makefile:2596: recipe for target 'build/gengtype-lex.o' failed
make[1]: *** [build/gengtype-lex.o] Error 1
make[1]: *** Waiting for unfinished jobs....
rm gcc.pod
make[1]: Leaving directory '/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/gcc'
Makefile:4211: recipe for target 'all-gcc' failed
make: *** [all-gcc] Error 2
ERROR: oe_runmake failed
WARNING: /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/temp/run.do_compile.1307:1 exit 1 from 'exit 1'
ERROR: Function failed: do_compile (log file is located at /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/temp/log.do_compile.1307)

@motters
Copy link
Contributor Author

motters commented Apr 6, 2018

Above issue fixed, moving onto the next issue

checking whether ln -s works... yes
| checking for i386-pokysdk-darwin-gcc...  /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/./gcc/xgcc -B/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/./gcc/ -B/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/i386-pokysdk-darwin/bin/ -B/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/i386-pokysdk-darwin/lib/ -isystem /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/i386-pokysdk-darwin/include -isystem /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot-native/usr/i386-pokysdk-darwin/sys-include --sysroot=/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/recipe-sysroot
| checking for suffix of object files... configure: error: in `/home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/gcc-7.3.0/build.x86_64-linux.i386-pokysdk-darwin/i386-pokysdk-darwin/libgcc':
| configure: error: cannot compute suffix of object files: cannot compile
| See `config.log' for more details.
| Makefile:11174: recipe for target 'configure-target-libgcc' failed
| make: *** [configure-target-libgcc] Error 1
| ERROR: oe_runmake failed
| WARNING: /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/temp/run.do_compile.11905:1 exit 1 from 'exit 1'
| ERROR: Function failed: do_compile (log file is located at /home/electronics/Documents/meta-qutipi/build/tmp/work/x86_64-linux/gcc-crosssdk-initial-i386-pokysdk-darwin/7.3.0-r0/temp/log.do_compile.11905)

@motters
Copy link
Contributor Author

motters commented Apr 7, 2018

Mac compiler wont be exported any time soon.

From what i can gather, generating the init cross compiler Linux -> Darwin is the main problem. odcctools which is no longer maintained only supports gcc 4 and poky supports 6 & 7.

Possible way around is to use clang but is too much work for now.

@motters
Copy link
Contributor Author

motters commented Apr 9, 2018

Over the past few days multiple issues have been fixed for the linux and windows sdk. Mainly to do with missing libraries and binaries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant