Hi, GCC folks,
I am having difficulty compiling GCC for a different generation of x86
CPU. I would like to produce a portable/redistributable build of GCC to
be distributed along with a packaging of GNU Octave. So I would like to
build it for the Core2 architecture, even though my build box has a
Skylake CPU.
This is for GCC 8.1.0 on macOS.
It seems like setting "-march=core2" in CFLAGS, BOOT_CFLAGS, and
CFLAGS_FOR_TARGET is the way to do this, but it doesn't seem to be
working. When I do the build, and then copy the built GCC to an older
Ivy Bridge Mac, and attempt to use gfortran to compile a program, it
errors out with an "internal compiler error: Illegal instruction: 4"
error message.
Doing the build on the Ivy Bridge Mac and using the locally-built GCC's
gfortran there works, so I think this is in fact an
architecture-mismatch issue.
Passing a variety of CFLAGS/CXXFLAGS isn't working. And even adding
--disable-bootstrap to the "configure" step results in the same issue.
Here's my "configure" call:
../configure \
--build=x86_64-apple-darwin17.6.0 \
--prefix=/Applications/Octave-4.4.0.app/Contents/Resources/usr/Cellar/gcc_8.1.0/8.1.0
\
--libdir=/Applications/Octave-4.4.0.app/Contents/Resources/usr/Cellar/gcc_8.1.0/8.1.0
/lib/gcc/8 \
--enable-languages=c,c++,objc,obj-c++,fortran \
--program-suffix=-8 \
--with-gmp=/Applications/Octave-4.4.0.app/Contents/Resources/usr/opt/gmp_6.1.2
\
--with-mpfr=/Applications/Octave-4.4.0.app/Contents/Resources/usr/opt/mpfr_4.0.1
\
--with-mpc=/Applications/Octave-4.4.0.app/Contents/Resources/usr/opt/libmpc_1.1.0
\
--with-isl=/Applications/Octave-4.4.0.app/Contents/Resources/usr/opt/isl_0.19
\
--with-system-zlib \
--enable-checking=release \
--with-pkgversion="Homebrew GCC 8.1.0" \
--disable-nls
And my "make" invocation:
make CFLAGS=-march=core2 CXXFLAGS=-march=core2
CFLAGS_FOR_TARGET=-march=core2 CXXFLAGS_FOR_TARGET=-march=core2
BOOT_CFLAGS=-march=core2 BOOT_CXXFLAGS=-march=core2
Can anyone tell me if I'm doing this the right way, and what I could do
to fix it?
Original bug report from my project if you're interested in seeing the
history:
https://github.com/octave-app/octave-app-bundler/issues/42
Cheers,
Andrew Janke