Support for MinGW compiler. Need to instal MinGW compiler and runtime.

fix-linux
nomennescio 2019-11-05 13:57:09 +01:00 committed by John Benediktsson
parent 3db9870669
commit c33a406066
5 changed files with 30 additions and 8 deletions

View File

@ -92,7 +92,7 @@ check_ret() {
set_downloader() { set_downloader() {
test_program_installed wget test_program_installed wget
if [[ $? -ne 0 ]] ; then if [[ $? -ne 0 ]] ; then
DOWNLOADER=wget DOWNLOADER="wget -nd"
DOWNLOADER_NAME=wget DOWNLOADER_NAME=wget
return return
fi fi
@ -154,6 +154,23 @@ clang_version_ok() {
} }
set_cc() { set_cc() {
# on Cygwin we MUST use the MinGW "cross-compiler", therefore check these first
# furthermore, we prefer 64 bit over 32 bit versions if both are available
test_programs_installed x86_64-w64-mingw32-gcc x86_64-w64-mingw32-g++
if [[ $? -ne 0 ]] ; then
[ -z "$CC" ] && CC=x86_64-w64-mingw32-gcc
[ -z "$CXX" ] && CXX=x86_64-w64-mingw32-g++
return
fi
test_programs_installed i686-w64-mingw32-gcc i686-w64-mingw32-g++
if [[ $? -ne 0 ]] ; then
[ -z "$CC" ] && CC=i686-w64-mingw32-gcc
[ -z "$CXX" ] && CXX=i686-w64-mingw32-g++
return
fi
test_programs_installed clang clang++ test_programs_installed clang clang++
if [[ $? -ne 0 ]] && clang_version_ok ; then if [[ $? -ne 0 ]] && clang_version_ok ; then
[ -z "$CC" ] && CC=clang [ -z "$CC" ] && CC=clang
@ -161,6 +178,7 @@ set_cc() {
return return
fi fi
# gcc and g++ will fail to correctly build Factor on Cygwin
test_programs_installed gcc g++ test_programs_installed gcc g++
if [[ $? -ne 0 ]] ; then if [[ $? -ne 0 ]] ; then
[ -z "$CC" ] && CC=gcc [ -z "$CC" ] && CC=gcc
@ -187,8 +205,8 @@ check_installed_programs() {
ensure_program_installed uname ensure_program_installed uname
ensure_program_installed git ensure_program_installed git
ensure_program_installed wget curl ensure_program_installed wget curl
ensure_program_installed clang gcc ensure_program_installed clang x86_64-w64-mingw32-gcc i686-w64-mingw32-gcc gcc
ensure_program_installed clang++ g++ cl ensure_program_installed clang++ x86_64-w64-mingw32-g++ i686-w64-mingw32-g++ g++ cl
ensure_program_installed make gmake ensure_program_installed make gmake
ensure_program_installed md5sum md5 ensure_program_installed md5sum md5
ensure_program_installed cut ensure_program_installed cut

View File

@ -1,4 +1,4 @@
SITE_CFLAGS += -mno-cygwin -mwindows SITE_CFLAGS += -mwindows
CFLAGS_CONSOLE += -mconsole CFLAGS_CONSOLE += -mconsole
SHARED_FLAG = -shared SHARED_FLAG = -shared
SHARED_DLL_EXTENSION=.dll SHARED_DLL_EXTENSION=.dll
@ -7,7 +7,7 @@ LIBS = -lm
PLAF_DLL_OBJS += vm/os-windows.o vm/mvm-windows.o PLAF_DLL_OBJS += vm/os-windows.o vm/mvm-windows.o
PLAF_EXE_OBJS += vm/resources.o vm/main-windows.o PLAF_EXE_OBJS += vm/resources.o vm/main-windows.o
PLAF_MASTER_HEADERS += vm/os-windows.hpp vm/mvm-windows.hpp PLAF_MASTER_HEADERS += vm/os-windows.hpp
EXE_SUFFIX= EXE_SUFFIX=
EXE_EXTENSION=.exe EXE_EXTENSION=.exe
@ -15,5 +15,5 @@ DLL_SUFFIX=
DLL_EXTENSION=.dll DLL_EXTENSION=.dll
CONSOLE_EXTENSION=.com CONSOLE_EXTENSION=.com
LINKER = $(CPP) -shared -mno-cygwin -o LINKER = $(CPP) -shared -o
LINK_WITH_ENGINE = -l$(DLL_PREFIX)factor$(DLL_SUFFIX) LINK_WITH_ENGINE = -l$(DLL_PREFIX)factor$(DLL_SUFFIX)

View File

@ -1,6 +1,6 @@
PLAF_DLL_OBJS += vm/os-windows-x86.32.o PLAF_DLL_OBJS += vm/os-windows-x86.32.o
PLAF_MASTER_HEADERS += vm/os-windows.32.hpp PLAF_MASTER_HEADERS += vm/os-windows.32.hpp
DLL_PATH=http://factorcode.org/dlls DLL_PATH=http://factorcode.org/dlls
WINDRES=windres WINDRES=windres -F pe-i386
include vm/Config.windows include vm/Config.windows
include vm/Config.x86.32 include vm/Config.x86.32

View File

@ -43,6 +43,8 @@
#elif defined(__INTEL_COMPILER) #elif defined(__INTEL_COMPILER)
#define FACTOR_COMPILER_VERSION \ #define FACTOR_COMPILER_VERSION \
"Intel C Compiler " FACTOR_STRINGIZE(__INTEL_COMPILER) "Intel C Compiler " FACTOR_STRINGIZE(__INTEL_COMPILER)
#elif defined(__MINGW32__)
#define FACTOR_COMPILER_VERSION "MinGW (GCC " __VERSION__ ")"
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define FACTOR_COMPILER_VERSION "GCC " __VERSION__ #define FACTOR_COMPILER_VERSION "GCC " __VERSION__
#elif defined(_MSC_FULL_VER) #elif defined(_MSC_FULL_VER)
@ -79,7 +81,7 @@
#error "Unsupported architecture" #error "Unsupported architecture"
#endif #endif
#if defined(_MSC_VER) #if defined(_MSC_VER) || defined (__MINGW32__)
#define WINDOWS #define WINDOWS
#define WINNT #define WINNT
#elif defined(WIN32) #elif defined(WIN32)

View File

@ -185,12 +185,14 @@ uint64_t nano_count() {
void sleep_nanos(uint64_t nsec) { Sleep((DWORD)(nsec / 1000000)); } void sleep_nanos(uint64_t nsec) { Sleep((DWORD)(nsec / 1000000)); }
#ifndef EXCEPTION_DISPOSITION
typedef enum _EXCEPTION_DISPOSITION { typedef enum _EXCEPTION_DISPOSITION {
ExceptionContinueExecution = 0, ExceptionContinueExecution = 0,
ExceptionContinueSearch = 1, ExceptionContinueSearch = 1,
ExceptionNestedException = 2, ExceptionNestedException = 2,
ExceptionCollidedUnwind = 3 ExceptionCollidedUnwind = 3
} EXCEPTION_DISPOSITION; } EXCEPTION_DISPOSITION;
#endif
LONG factor_vm::exception_handler(PEXCEPTION_RECORD e, void* frame, PCONTEXT c, LONG factor_vm::exception_handler(PEXCEPTION_RECORD e, void* frame, PCONTEXT c,
void* dispatch) { void* dispatch) {