Blacklist GCC 5 on Linux again

GCC 5 mangles some symbols, such as "plugin_globals" ->
"plugin_globals[abi:c++11]" (or "_Z14plugin_globalsB5cxx11"), even
when declared with 'extern "C"'. This breaks plugins, in particular.
develop
lethosor 2015-11-10 18:43:34 -05:00
parent 583ee40cba
commit 9c62ff1d7f
2 changed files with 10 additions and 11 deletions

@ -25,12 +25,8 @@ macro(CHECK_GCC COMPILER_PATH)
execute_process(COMMAND ${COMPILER_PATH} -dumpversion OUTPUT_VARIABLE GCC_VERSION_OUT) execute_process(COMMAND ${COMPILER_PATH} -dumpversion OUTPUT_VARIABLE GCC_VERSION_OUT)
string(STRIP "${GCC_VERSION_OUT}" GCC_VERSION_OUT) string(STRIP "${GCC_VERSION_OUT}" GCC_VERSION_OUT)
if (${GCC_VERSION_OUT} VERSION_LESS "4.5" OR ${GCC_VERSION_OUT} VERSION_GREATER "4.9.9") if (${GCC_VERSION_OUT} VERSION_LESS "4.5" OR ${GCC_VERSION_OUT} VERSION_GREATER "4.9.9")
if ((LINUX) AND (${GCC_VERSION_OUT} VERSION_GREATER "5.0"))
message(WARNING "You are using GCC ${GCC_VERSION_OUT}, which is not recommended - see Compile.rst for more information.")
else()
message(SEND_ERROR "${COMPILER_PATH} version ${GCC_VERSION_OUT} cannot be used - use GCC 4.5 through 4.9") message(SEND_ERROR "${COMPILER_PATH} version ${GCC_VERSION_OUT} cannot be used - use GCC 4.5 through 4.9")
endif() endif()
endif()
endmacro() endmacro()
if(UNIX) if(UNIX)

@ -53,12 +53,15 @@ DFHack is meant to be installed into an existing DF folder, so get one ready.
We assume that any Linux platform will have ``git`` available. We assume that any Linux platform will have ``git`` available.
To build DFHack you need a 32-bit version of GCC. GCC 4.5 is easiest to work To build DFHack you need a version of GCC 4.x capable of compiling for 32-bit
with due to avoiding libstdc++ issues (see below), but any later 4.x version (i386) targets. GCC 4.5 is easiest to work with due to avoiding libstdc++ issues
should work as well. GCC 5.x may work but is discouraged for releases because it (see below), but any later 4.x version should work as well. GCC 5.x will not
won't work on systems without GCC 5.x installed. On 64-bit distributions, you'll work due to ABI changes (the entire plugin loading system won't work, for
need the multilib development tools and libraries (``gcc-multilib`` or example). On 64-bit distributions, you'll need the multilib development tools
``gcc-4.x-multilib`` on Debian). Alternatively, you might be able to use ``lxc`` and libraries (``gcc-multilib`` or ``gcc-4.x-multilib`` on Debian). Note that
installing a 32-bit GCC on 64-bit systems (e.g. ``gcc:i386`` on Debian) will
typically *not* work, as it depends on several other 32-bit libraries that
conflict with system libraries. Alternatively, you might be able to use ``lxc``
to to
:forums:`create a virtual 32-bit environment <139553.msg5435310#msg5435310>`. :forums:`create a virtual 32-bit environment <139553.msg5435310#msg5435310>`.