Support for MinGW compiler. Need to instal MinGW compiler and runtime.
parent
3db9870669
commit
c33a406066
24
build.sh
24
build.sh
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue