Buildsystem: Add support for compiling with MinGW on Windows

Tested with:
- Windows 8 x64
- MySQL 5.5.30 win32
- OpenSSL 1.0.1c (32 bits)
- No PCH
- MinGW with GCC 4.7.0

TODO:
- Fix compile/link with PCH enabled
- Fix compile with WheatyExceptonionReport enabled (ignored for now)
- Fix compile of .rc files (ignored for now)
- Test with more platforms
This commit is contained in:
Nay
2013-03-09 00:12:50 +00:00
parent 2dbe3d6cfe
commit c7463c5f6c
19 changed files with 274 additions and 34 deletions

View File

@@ -12,7 +12,7 @@
# This to stop a few silly crashes that could have been avoided IF people
# weren't doing some -O3 psychooptimizations etc.
if(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
add_definitions(-fno-delete-null-pointer-checks)
endif()

View File

@@ -29,11 +29,18 @@ set(authserver_SRCS
)
if( WIN32 )
set(authserver_SRCS
${authserver_SRCS}
${sources_Debugging}
if ( MSVC )
set(authserver_SRCS
${authserver_SRCS}
${sources_Debugging}
authserver.rc
)
)
else ( )
set(authserver_SRCS
${authserver_SRCS}
${sources_Debugging}
)
endif ()
endif()
include_directories(
@@ -76,10 +83,17 @@ target_link_libraries(authserver
)
if( WIN32 )
add_custom_command(TARGET authserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/authserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/
)
if ( MSVC )
add_custom_command(TARGET authserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/authserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/
)
elseif ( MINGW )
add_custom_command(TARGET authserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/authserver.conf.dist ${CMAKE_BINARY_DIR}/bin/
)
endif()
endif()
if( UNIX )

View File

@@ -18,12 +18,10 @@
#include "BoundingIntervalHierarchy.h"
#if defined __APPLE__
#define isnan std::isnan
#elif defined __CYGWIN__
#define isnan std::isnan
#elif defined _MSC_VER
#ifdef _MSC_VER
#define isnan _isnan
#else
#define isnan std::isnan
#endif
void BIH::buildHierarchy(std::vector<uint32> &tempTree, buildData &dat, BuildStats &stats)

View File

@@ -3,7 +3,7 @@
// MSDN Magazine, 2002
// FILE: WheatyExceptionReport.CPP
//==========================================
#if PLATFORM == PLATFORM_WINDOWS
#if PLATFORM == PLATFORM_WINDOWS && not defined(__MINGW32__)
#define WIN32_LEAN_AND_MEAN
#pragma warning(disable:4996)
#pragma warning(disable:4312)

View File

@@ -1,7 +1,7 @@
#ifndef _WHEATYEXCEPTIONREPORT_
#define _WHEATYEXCEPTIONREPORT_
#if PLATFORM == PLATFORM_WINDOWS
#if PLATFORM == PLATFORM_WINDOWS && not defined(__MINGW32__)
#include <dbghelp.h>

View File

@@ -29,11 +29,18 @@ set(worldserver_SRCS
)
if( WIN32 )
set(worldserver_SRCS
${worldserver_SRCS}
${sources_Debugging}
worldserver.rc
)
if ( MSVC )
set(worldserver_SRCS
${worldserver_SRCS}
${sources_Debugging}
worldserver.rc
)
else ( )
set(worldserver_SRCS
${worldserver_SRCS}
${sources_Debugging}
)
endif ()
endif()
include_directories(
@@ -175,10 +182,17 @@ target_link_libraries(worldserver
)
if( WIN32 )
add_custom_command(TARGET worldserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/
)
if ( MSVC )
add_custom_command(TARGET worldserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/
)
elseif ( MINGW )
add_custom_command(TARGET worldserver
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_BINARY_DIR}/bin/
)
endif()
endif()
if( UNIX )