Merge branch 'build/windows_cmake_msbuild' into play

This commit is contained in:
pavanvo 2022-09-06 20:53:08 +04:00
commit 8f0abb60b3
No known key found for this signature in database
GPG Key ID: 34C1C36681B4AD84
20 changed files with 538 additions and 369 deletions

View File

@ -107,7 +107,6 @@ jobs:
vcpkg install sdl2:x64-windows-static
vcpkg install sqlite3:x64-windows-static
vcpkg install tiff:x64-windows-static
vcpkg install tool-meson:x64-windows-static
vcpkg install wxwidgets:x64-windows-static
vcpkg install xerces-c:x64-windows-static
vcpkg install zlib:x64-windows-static

View File

@ -1,11 +1,21 @@
CMAKE_MINIMUM_REQUIRED( VERSION 2.8.2 )
IF(WIN32)
# Windows cmake version needs to be higher - for CMAKE_MSVC_RUNTIME_LIBRARY.
CMAKE_MINIMUM_REQUIRED( VERSION 3.15 )
# This must be Set before "PROJECT()" is called.
SET(VCPKG_TARGET_TRIPLET "x64-windows-static")
ELSE()
CMAKE_MINIMUM_REQUIRED( VERSION 3.5 )
ENDIF()
PROJECT( MegaGlest )
#SET(CMAKE_VERBOSE_MAKEFILE ON)
#
# *NOTE: For now we assume some variation of GCC Compiler (or MingW for Windows binaries)
# VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze
# *NOTE: This script has been tested and works with with GCC, Clang and MSbuild (VS).
# MSBuild requires using vcpkg and installing required libs.
# Script works with Windows, Linux and Mac.
#
# build type
@ -18,13 +28,38 @@ IF(NOT CMAKE_VERSION VERSION_LESS "3.1")
cmake_policy(SET CMP0054 NEW)
ENDIF()
IF(MSVC)
# Sets the flags MT/ MTd correctly.
SET(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
INCLUDE(ProcessorCount)
ProcessorCount(N)
IF(N GREATER 0)
MESSAGE(STATUS "Will build on ${N} cores.")
ELSE()
SET(N 1)
MESSAGE(STATUS "Could not find number of cores. Will attempt to build on ${N} cores.")
ENDIF()
# "MP" is build with all cores.
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP${N}")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP${N}")
SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_$} /MP${N}" )
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_$} /MP${N}" )
SET(MEGAGLEST_DATA_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/" CACHE STRING "The installation path for data files ${COMMON_INFO_ABOUT_PATH}")
SET(MEGAGLEST_INI_INSTALL_PATH "${MEGAGLEST_DATA_INSTALL_PATH}" CACHE STRING "Install path for ini files")
INCLUDE(FindPkgConfig)
ENDIF()
# add additional CMake modules
MESSAGE(STATUS "CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/mk/cmake/Modules)
IF(CMAKE_BUILD_TYPE)
MESSAGE(STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}")
ENDIF()
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
SET(CMAKE_COMPILER_IS_GNUCXX "YES")
# ADD_DEFINITIONS("-Qunused-arguments -Wno-switch")
ADD_DEFINITIONS("-Wno-switch")
@ -90,10 +125,12 @@ FOREACH(ver_var VER_MAJOR;VER_MINOR;VER_PATCH;MEGAGLEST_VERSION)
ENDFOREACH()
MESSAGE(STATUS "Detected MegaGlest Version is [v${MEGAGLEST_VERSION}] ")
SET(PIC_FLAG "${PIC_FLAG} -fPIC")
IF(WANT_STATIC_LIBS AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
# CMAKE_SIZEOF_VOID_P=8 => 64bit
ADD_DEFINITIONS("${PIC_FLAG}")
IF(NOT MSVC)
SET(PIC_FLAG "${PIC_FLAG} -fPIC")
IF(WANT_STATIC_LIBS AND "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
# CMAKE_SIZEOF_VOID_P=8 => 64bit
ADD_DEFINITIONS("${PIC_FLAG}")
ENDIF()
ENDIF()
## Compiler flags, CPACK configuration and other Apple specific code.
@ -101,20 +138,24 @@ IF(APPLE)
include(${PROJECT_SOURCE_DIR}/mk/macos/CMakeLists.txt)
ENDIF(APPLE)
IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR MSVC)
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
MESSAGE(STATUS "Detected CLANG Compiler...")
ELSEIF(CMAKE_COMPILER_IS_GNUCXX)
MESSAGE(STATUS "Detected GNUC Compiler...")
ELSEIF(MINGW)
MESSAGE(STATUS "Detected MINGW Compiler...")
ELSEIF(MSVC)
MESSAGE(STATUS "Detected VS target for building with msbuild...")
ENDIF()
# Common generic GNU type compiler options that work with all generic GCC compatible compilers
ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing")
IF(NOT MSVC)
ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing")
ENDIF()
# For gcc warning options see: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
IF(NOT MINGW)
IF(NOT WIN32)
# For tons of verbose warnings add: -Wall
# ADD_DEFINITIONS("-Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -rdynamic")
# ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing -frounding-math -fsignaling-nans -rdynamic")
@ -125,7 +166,9 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
ENDIF()
# CLang specific Compiler Options
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
ELSEIF(MSVC)
# GCC specific Compiler Options
ELSE()
@ -173,41 +216,43 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
MESSAGE(STATUS "*WARNING: Disabled use of STREFLOP! Out of synchs may occur")
ENDIF()
include(CheckCXXSourceRuns)
include(CheckCXXSourceRuns)
check_cxx_source_runs("
#include <execinfo.h>
#include <stdio.h>
int main()
{
const size_t max_depth = 6;
void *stack_addrs[max_depth];
size_t stack_depth = backtrace(stack_addrs, max_depth);
}"
HAS_GCC_BACKTRACE)
check_cxx_source_runs("
#include <execinfo.h>
#include <stdio.h>
int main()
{
const size_t max_depth = 6;
void *stack_addrs[max_depth];
size_t stack_depth = backtrace(stack_addrs, max_depth);
}"
HAS_GCC_BACKTRACE)
IF(HAS_GCC_BACKTRACE)
message(STATUS "Found GCC backtrace lib, will support backtraces")
ADD_DEFINITIONS(-DHAS_GCC_BACKTRACE)
ELSE()
message(STATUS "**WARNING DID NOT Find GCC backtrace lib")
ENDIF()
# Debug compiler flags
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
# Release compiler flags
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE} -O3 ")
IF(NOT CMAKE_GENERATOR STREQUAL Xcode)
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary
IF(HAS_GCC_BACKTRACE)
message(STATUS "Found GCC backtrace lib, will support backtraces")
ADD_DEFINITIONS(-DHAS_GCC_BACKTRACE)
ELSE()
message(STATUS "**WARNING DID NOT Find GCC backtrace lib")
ENDIF()
IF(NOT MSVC)
# Debug compiler flags
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3")
# Release with debug info compiler flags
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ")
# Release compiler flags
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 ${CMAKE_CXX_FLAGS_RELEASE} -O3 ")
IF(NOT CMAKE_GENERATOR STREQUAL Xcode)
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary
ENDIF()
# Release minimum size compiler flags
IF(NOT CMAKE_GENERATOR STREQUAL Xcode)
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary
# Release with debug info compiler flags
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ")
# Release minimum size compiler flags
IF(NOT CMAKE_GENERATOR STREQUAL Xcode)
SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary
ENDIF()
ENDIF()
# see if this fixes compile issue for tomreyn: libpthread.so.0: error adding symbols: DSO missing from command line
@ -327,7 +372,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW)
message(STATUS "CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}}")
# Win32 specific Compiler Flags
IF(WIN32)
IF(WIN32 AND NOT MSVC)
ADD_DEFINITIONS("-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DCURL_STATICLIB")
ENDIF()
ENDIF()
@ -364,35 +409,18 @@ ELSEIF(UNIX AND APPLE)
SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/macos/")
ELSEIF(UNIX AND NOT APPLE)
SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/other_unix/")
ELSEIF(WIN32)
SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mk/windoze/")
ELSE()
SET(MEGAGLEST_FRIENDLY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/data/glest_game/")
ENDIF()
IF(WIN32)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/include
${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include
${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include
${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include
${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src
${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b
${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141
${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5
${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include
${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include
${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
include_directories("${PROJECT_SOURCE_DIR}/source/win32_deps/Microsoft\ DirectX\ SDK \(November 2007\)/Include")
include_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
# Set VS project exe outputs.
IF(MSVC)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${MEGAGLEST_FRIENDLY_OUTPUT_PATH})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${MEGAGLEST_FRIENDLY_OUTPUT_PATH})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${MEGAGLEST_FRIENDLY_OUTPUT_PATH})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${MEGAGLEST_FRIENDLY_OUTPUT_PATH})
ENDIF()
# Check if sources exist
@ -422,7 +450,7 @@ ENDIF()
#get_directory_property( DirDefs COMPILE_DEFINITIONS )
#MESSAGE(STATUS ">>>> NOTICE Compiler definitions used: ${DirDefs}")
#MESSAGE(STATUS "END of compile defs...")
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
MESSAGE(WARNING ">> CLANG is NOT currently compatible as it does not support the following essential GCC compiler settings: -frounding-math -fsignaling-nans")
ENDIF()

View File

@ -72,6 +72,8 @@ if (MINIUPNP_FOUND)
set(CMAKE_REQUIRED_INCLUDES ${MINIUPNP_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${MINIUPNP_LIBRARY})
INCLUDE(CheckCXXSourceRuns)
check_cxx_source_runs("
#include <miniwget.h>
#include <miniupnpc.h>
@ -201,4 +203,3 @@ else ()
endif ()
MARK_AS_ADVANCED(MINIUPNP_INCLUDE_DIR MINIUPNP_LIBRARY)

View File

@ -20,89 +20,27 @@ macro(special_check_for_sse _max_sse_level_desired)
include(CheckCXXSourceRuns)
include(CheckCSourceRuns)
# Add MSVC to stop flags being added to msbuild.
IF(NOT MINGW)
if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
set(SSE_FLAGS)
set(CMAKE_REQUIRED_FLAGS "-msse3")
check_cxx_source_runs("
#include <pmmintrin.h>
int main()
{
__m128d a, b;
double vals[2] = {0};
a = _mm_loadu_pd(vals);
b = _mm_hadd_pd(a,a);
_mm_storeu_pd(vals, b);
return 0;
}"
HAS_SSE3_EXTENSIONS)
set(CMAKE_REQUIRED_FLAGS "-msse2")
check_cxx_source_runs("
#include <emmintrin.h>
int main()
{
__m128d a, b;
double vals[2] = {0};
a = _mm_loadu_pd(vals);
b = _mm_add_pd(a,a);
_mm_storeu_pd(vals,b);
return 0;
}"
HAS_SSE2_EXTENSIONS)
set(CMAKE_REQUIRED_FLAGS "-msse")
check_cxx_source_runs("
#include <xmmintrin.h>
int main()
{
__m128 a, b;
float vals[4] = {0};
a = _mm_loadu_ps(vals);
b = a;
b = _mm_add_ps(a,b);
_mm_storeu_ps(vals,b);
return 0;
}"
HAS_SSE_EXTENSIONS)
ELSE()
set(HAS_SSE_EXTENSIONS ON)
ENDIF()
set(SSE_FLAGS)
set(CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_FLAGS "-msse3")
check_cxx_source_runs("
#include <pmmintrin.h>
if(HAS_SSE3_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse3")
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
message(STATUS "Found SSE3 extensions, using flags: ${SSE_FLAGS}")
elseif(HAS_SSE2_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "2" OR ${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse2")
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
message(STATUS "Found SSE2 extensions, using flags: ${SSE_FLAGS}")
elseif(HAS_SSE_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "1" OR ${_max_sse_level_desired} MATCHES "2" OR ${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse")
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
message(STATUS "Found SSE extensions, using flags: ${SSE_FLAGS}")
endif()
add_definitions(${SSE_FLAGS})
elseif(MSVC)
check_cxx_source_runs("
int main()
{
__m128d a, b;
double vals[2] = {0};
a = _mm_loadu_pd(vals);
b = _mm_hadd_pd(a,a);
_mm_storeu_pd(vals, b);
return 0;
}"
HAS_SSE3_EXTENSIONS)
set(CMAKE_REQUIRED_FLAGS "-msse2")
check_cxx_source_runs("
#include <emmintrin.h>
int main()
@ -113,14 +51,86 @@ macro(special_check_for_sse _max_sse_level_desired)
b = _mm_add_pd(a,a);
_mm_storeu_pd(vals,b);
return 0;
}"
HAS_SSE2_EXTENSIONS)
if( HAS_SSE2_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "2"))
message(STATUS "Found SSE2 extensions")
set(SSE_FLAGS "/arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__" )
endif()
add_definitions(${SSE_FLAGS})
}"
HAS_SSE2_EXTENSIONS)
set(CMAKE_REQUIRED_FLAGS "-msse")
check_cxx_source_runs("
#include <xmmintrin.h>
int main()
{
__m128 a, b;
float vals[4] = {0};
a = _mm_loadu_ps(vals);
b = a;
b = _mm_add_ps(a,b);
_mm_storeu_ps(vals,b);
return 0;
}"
HAS_SSE_EXTENSIONS)
set(CMAKE_REQUIRED_FLAGS)
if(HAS_SSE3_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse3")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
IF(NOT MSVC)
message(STATUS "Found SSE3 extensions, using flags: ${SSE_FLAGS}")
ELSE()
message(STATUS "Found SSE3 extensions.")
ENDIF()
elseif(HAS_SSE2_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "2" OR ${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse2")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
IF(NOT MSVC)
message(STATUS "Found SSE2 extensions, using flags: ${SSE_FLAGS}")
ELSE()
message(STATUS "Found SSE2 extensions.")
ENDIF()
elseif(HAS_SSE_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "1" OR ${_max_sse_level_desired} MATCHES "2" OR ${_max_sse_level_desired} MATCHES "3"))
set(SSE_FLAGS "-msse")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
ELSE()
set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse")
ENDIF()
IF(NOT MSVC)
message(STATUS "Found SSE extensions, using flags: ${SSE_FLAGS}")
ELSE()
message(STATUS "Found SSE extensions.")
ENDIF()
endif()
IF(NOT MSVC)
add_definitions(${SSE_FLAGS})
ENDIF()
elseif(MSVC) #todo: remove this unused check for SSE.
check_cxx_source_runs("
#include <emmintrin.h>
int main()
{
__m128d a, b;
double vals[2] = {0};
a = _mm_loadu_pd(vals);
b = _mm_add_pd(a,a);
_mm_storeu_pd(vals,b);
return 0;
}"
HAS_SSE2_EXTENSIONS)
if( HAS_SSE2_EXTENSIONS AND (NOT ${_max_sse_level_desired} OR ${_max_sse_level_desired} MATCHES "2"))
message(STATUS "Found SSE2 extensions")
set(SSE_FLAGS "/arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__" )
endif()
add_definitions(${SSE_FLAGS})
endif()
endmacro(special_check_for_sse)
@ -201,4 +211,3 @@ macro(_special_list_to_string _string _list)
endif(${_len} GREATER 0)
endforeach(_item)
endmacro(_special_list_to_string)

View File

@ -8,7 +8,7 @@
# Seems like a good place to add version specific compiler flags too.
IF(NOT CONFIG_HAS_BEEN_RUN_BEFORE)
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden")
ENDIF()

View File

@ -2,6 +2,8 @@
/*/Release/
/x64/
/*/x64/
/vcpkg/
/build/
# Windows_build
*.dll

View File

@ -0,0 +1,132 @@
# Build MegaGlest on Windows.
# Author: James Sherratt.
param(${vcpkg-location})
$sword = [char]::ConvertFromUtf32(0x2694)
Write-Output "=====$sword MegaGlest $sword====="
""
<#
.SYNOPSIS
#
.DESCRIPTION
Test if a command exists.
.PARAMETER cmdName
Comamnd to test
.PARAMETER errorAdvice
Error advice to give user if command fails
.PARAMETER errorAction
(optional) Etion after error
.EXAMPLE
Test-Command "7z" "7z not found. Please install from 7zip.org" 'Write-Warning "7zip will not be used."'
.NOTES
General notes
#>
function Test-Command {
param(
$cmdName,
$errorAdvice,
$errorAction
)
if (Get-Command $cmdName -errorAction SilentlyContinue) {
"Found $cmdName."
""
}
else {
"The command '$cmdName' does not exist."
"$errorAdvice"
""
if ( !$errorAction ) {
Exit
}
else {
Invoke-Expression $errorAction
}
}
}
function Write-Title {
param (
$titleText
)
$titleText
"-" * $titleText.Length
}
Write-Title "Updating git source"
Test-Command "git" "Please download and install git-scm https://git-scm.com/"
git pull
""
Write-Title "Setup vcpkg"
Test-Command "cmake" "Please download and install CMake: https://cmake.org/download/. (For 64 bit windows, select 'cmake-x.y.z-windows-x86_64.msi'.)"
if ( !${vcpkg-location} ) {
${vcpkg-location} = Join-Path $PSScriptRoot \vcpkg
"Vcpkg location not set. Setting it to ${vcpkg-location}."
}
else {
${vcpkg-location} = $(Resolve-Path ${vcpkg-location}).ToString()
}
if ( Test-Path ${vcpkg-location} ) {
"Found vcpkg."
}
else {
"Vcpkg not found. Cloning. https://github.com/microsoft/vcpkg.git."
git clone "https://github.com/microsoft/vcpkg.git" ${vcpkg-location}
"Installing vcpkg."
& "$(Join-Path ${vcpkg-location} bootstrap-vcpkg.bat)"
}
"Installing vcpkg and MegaGlest dependencies."
Set-Location ${vcpkg-location}
& "$(Join-Path $PSScriptRoot install-deps-vcpkg.ps1)"
if (!$?) {
"Installing deps with vcpkg failed. Please check your vcpkg git repo is configured correctly."
Set-Location $PSScriptRoot
Exit
}
Set-Location $PSScriptRoot
""
Write-Title "Build MegaGlest"
$toolchainPath = $(Join-Path ${vcpkg-location} \scripts\buildsystems\vcpkg.cmake)
$buildFolder = $(Join-Path $PSScriptRoot build)
$topLevelTargetDir = $(Resolve-Path $(Join-Path $PSScriptRoot ../../)).ToString()
$vsVersion=(msbuild --version | select -Last 1).Split(".")[0] -as [int]
if ($vsVersion -eq 17) {
$vsProjType = "Visual Studio 17 2022"
}
elseif ($vsVersion -eq 16) {
$vsProjType = "Visual Studio 16 2019"
}
else {
$vsProjType = "Visual Studio 17 2022"
}
cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE:STRING=$toolchainPath -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE "-H$topLevelTargetDir" "-B$buildFolder" -G $vsProjType -T host=x64 -A x64
cmake --build $buildFolder --config Release --target ALL_BUILD
if ($?) {
"Build succeeded. megaglest.exe, megaglest_editor.exe and megaglest_g3dviewer.exe can be found in mk/windoze/."
}
else {
"Build failed. Please make sure you have installed VS C++ tools (2019 or 2022): https://visualstudio.microsoft.com/downloads ."
"If you have installed all the relevant tools and you still can't build MegaGlest, try running '.\clean-build.ps1'. Then run this script again."
"Make sure this script is running in developer powershell: https://docs.microsoft.com/en-us/visualstudio/ide/reference/command-prompt-powershell ."
"If the language of your version of windows is not english, you may need to install the english language pack in the visual studio installer (because microsoft is racist): https://docs.microsoft.com/en-us/visualstudio/install/modify-visual-studio?view=vs-2022#modify-language-packs ."
"If MegaGlest still fails to build, please help us by submitting a bug report at https://github.com/MegaGlest/megaglest-source/issues."
}

4
mk/windoze/clean-all.ps1 Normal file
View File

@ -0,0 +1,4 @@
"Cleaning build files."
Remove-Item $(Join-Path $PSScriptRoot *.exe)
Remove-Item -Recurse $(Join-Path $PSScriptRoot build\)
"Cleaning build files completed."

View File

@ -0,0 +1,2 @@
"Installing MegaGlest deps."
.\vcpkg.exe install --disable-metrics brotli:x64-windows-static bzip2:x64-windows-static curl:x64-windows-static expat:x64-windows-static freetype:x64-windows-static fribidi:x64-windows-static ftgl:x64-windows-static glew:x64-windows-static libiconv:x64-windows-static libjpeg-turbo:x64-windows-static liblzma:x64-windows-static libogg:x64-windows-static libpng:x64-windows-static libvorbis:x64-windows-static libxml2:x64-windows-static lua:x64-windows-static openal-soft:x64-windows-static opengl:x64-windows-static miniupnpc:x64-windows-static sdl2:x64-windows-static sqlite3:x64-windows-static tiff:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static

View File

@ -46,7 +46,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER)
# It was noticed that when using MinGW gcc it is essential that 'core' is mentioned before 'base'.
# Optimal order most likely is gl > core > base, in some cases it may do difference.
FIND_PACKAGE(wxWidgets REQUIRED COMPONENTS gl core base)
IF(UNIX)
IF(UNIX OR WIN32)
# wxWidgets include (this will do all the magic to configure everything)
INCLUDE( ${wxWidgets_USE_FILE} )
@ -62,7 +62,9 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER)
MESSAGE(STATUS " wxWidgets: ${wxWidgets_INCLUDE_DIRS} ;/; ${wxWidgets_LIBRARIES}")
ENDIF()
find_package(PkgConfig REQUIRED)
IF(NOT MSVC)
find_package(PkgConfig REQUIRED)
ENDIF()
IF(FORCE_STREFLOP_SOFTWRAPPER)
pkg_search_module(STREFLOP streflop-soft)
ELSE()
@ -96,34 +98,36 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER)
ENDIF()
IF(WIN32)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu_gl-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxpng-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxjpeg-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxtiff-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxzlib-2.8-i586-mingw32msvc.a)
IF(NOT MSVC)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu_gl-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxpng-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxjpeg-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxtiff-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxzlib-2.8-i586-mingw32msvc.a)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include/)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/wx/include/i586-mingw32msvc-msw-unicode-release-static-2.8)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include/)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/wx/include/i586-mingw32msvc-msw-unicode-release-static-2.8)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
ENDIF()
ENDIF()
#########################################################################################
@ -203,6 +207,11 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER)
ADD_EXECUTABLE(${TARGET_NAME} ${MG_SOURCE_FILES} ${MG_INCLUDE_FILES})
IF(WIN32)
# Must come after ADD_EXECUTABLE.
TARGET_SOURCES(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/mk/windoze/g3d_viewer.rc)
ENDIF()
IF(WANT_USE_STREFLOP AND NOT STREFLOP_FOUND)
TARGET_LINK_LIBRARIES(${TARGET_NAME} streflop)
ENDIF()

View File

@ -867,15 +867,7 @@ void MainWindow::onMenuFileLoad(wxCommandEvent &event){
if(fileDialog->ShowModal()==wxID_OK){
modelPathList.clear();
string file;
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
file = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(file.c_str()));
file = utf8_encode(wstr.get());
#else
file = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
#endif
//loadModel((const char*)wxFNCONV(fileDialog->GetPath().c_str()));
loadModel(file);
@ -903,14 +895,7 @@ void MainWindow::onMenuFileLoadParticleXML(wxCommandEvent &event){
if(fileDialog->ShowModal()==wxID_OK){
//string path = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
string file;
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
file = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(file.c_str()));
file = utf8_encode(wstr.get());
#else
file = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
#endif
loadParticle(file);
}
@ -937,14 +922,7 @@ void MainWindow::onMenuFileLoadProjectileParticleXML(wxCommandEvent &event){
if(fileDialog->ShowModal()==wxID_OK){
//string path = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
string file;
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
file = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(file.c_str()));
file = utf8_encode(wstr.get());
#else
file = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
#endif
loadProjectileParticle(file);
}
@ -971,15 +949,7 @@ void MainWindow::onMenuFileLoadSplashParticleXML(wxCommandEvent &event){
if(fileDialog->ShowModal()==wxID_OK){
//string path = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
string file;
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
file = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(file.c_str()));
file = utf8_encode(wstr.get());
#else
file = (const char*)wxFNCONV(fileDialog->GetPath().c_str());
#endif
loadSplashParticle(file);
}
@ -2523,21 +2493,7 @@ if( hasCommandArgument(knownArgCount, (wxChar**)&GAME_ARGS[0], (const char *)tmp
}
if(argc == 2 && argv[1][0] != '-') {
//#if defined(__MINGW32__)
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(argv[1]));
modelPath = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(modelPath.c_str()));
modelPath = utf8_encode(wstr.get());
#else
modelPath = static_cast<const char*>(WX2CHR(argv[1]));
#endif
//#else
// modelPath = wxFNCONV(argv[1]);
//#endif
}
//#if defined(__MINGW32__)
@ -2552,17 +2508,7 @@ if( hasCommandArgument(knownArgCount, (wxChar**)&GAME_ARGS[0], (const char *)tmp
//wxString path_separator = wxFileName::GetPathSeparator();
//exe_path = exe_path.BeforeLast(path_separator[0]);
//exe_path += path_separator;
//#if defined(__MINGW32__)
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(exe_path));
string appPath = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(appPath.c_str()));
appPath = utf8_encode(wstr.get());
#else
string appPath(static_cast<const char*>(WX2CHR(exe_path)));
#endif
//#else
// appPath = wxFNCONV(exe_path);

View File

@ -139,7 +139,10 @@ IF(BUILD_MEGAGLEST)
ENDIF()
ENDIF()
find_package(PkgConfig REQUIRED)
IF(NOT MSVC)
find_package(PkgConfig REQUIRED)
ENDIF()
IF(FORCE_STREFLOP_SOFTWRAPPER)
pkg_search_module(STREFLOP streflop-soft)
ELSE()
@ -261,7 +264,7 @@ IF(BUILD_MEGAGLEST)
add_custom_target(run ALL DEPENDS mg.tmp)
ENDIF()
IF(WIN32)
IF(WIN32 AND NOT MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole")
ENDIF()
@ -294,7 +297,26 @@ IF(BUILD_MEGAGLEST)
endif()
IF(WIN32)
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32)
TARGET_SOURCES(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/mk/windoze/glest.rc)
IF(VCPKG_TARGET_TRIPLET)
TARGET_LINK_LIBRARIES(${TARGET_NAME} odbc32 wsock32 winspool winmm shell32 comctl32 advapi32 opengl32 glu32 ole32 oleaut32 uuid ddraw dsound dxguid ws2_32 iphlpapi gdi32 user32 kernel32 dbghelp shlwapi)
find_package(Ogg CONFIG REQUIRED)
find_package(Vorbis CONFIG REQUIRED)
# find_package(ZLIB REQUIRED)
# find_package(JPEG REQUIRED)
find_package(libpng CONFIG REQUIRED)
find_package(XercesC CONFIG REQUIRED)
find_package(OpenAL CONFIG REQUIRED)
# find_package(CURL CONFIG REQUIRED)
find_package(SDL2 CONFIG REQUIRED)
# include(FindLua)
# find_package(Lua REQUIRED)
# find_package(GLEW REQUIRED)
find_package(FTGL CONFIG REQUIRED)
TARGET_LINK_LIBRARIES(${TARGET_NAME} Ogg::ogg Vorbis::vorbis Vorbis::vorbisenc Vorbis::vorbisfile ZLIB::ZLIB ${JPEG_LIBRARIES} png_static xerces_xerces-c XercesC::XercesC OpenAL::OpenAL CURL::libcurl SDL2::SDL2main SDL2::SDL2-static ${LUA_LIBRARIES} ${MG_STREFLOP} libmegaglest GLEW::GLEW ftgl)
ELSE()
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32)
ENDIF()
ENDIF()
IF(NOT WIN32)

View File

@ -290,7 +290,7 @@ static void cleanupProcessObjects() {
CacheManager::cleanupMutexes();
}
#if defined(WIN32) && !defined(_DEBUG) && !defined(__GNUC__)
#if defined(WIN32) && !defined(__GNUC__)
void fatal(const char *s, ...) // failure exit
{
static int errors = 0;

View File

@ -32,7 +32,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR)
# It was noticed that when using MinGW gcc it is essential that 'core' is mentioned before 'base'.
# Optimal order most likely is gl > core > base, in some cases it may do difference.
FIND_PACKAGE(wxWidgets REQUIRED COMPONENTS gl core base)
IF(UNIX)
IF(UNIX OR WIN32)
# wxWidgets include (this will do all the magic to configure everything)
INCLUDE( ${wxWidgets_USE_FILE} )
@ -49,37 +49,42 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR)
ENDIF()
IF(WIN32)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu_gl-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxpng-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxjpeg-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxtiff-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxzlib-2.8-i586-mingw32msvc.a)
IF(NOT MSVC)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwx_mswu_gl-2.8-i586-mingw32msvc.dll.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxpng-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxjpeg-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxtiff-2.8-i586-mingw32msvc.a)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/libwxzlib-2.8-i586-mingw32msvc.a)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include/)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/wx/include/i586-mingw32msvc-msw-unicode-release-static-2.8)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include/)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib/wx/include/i586-mingw32msvc-msw-unicode-release-static-2.8)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
ENDIF()
ENDIF()
find_package(PkgConfig REQUIRED)
IF(NOT MSVC)
find_package(PkgConfig REQUIRED)
ENDIF()
IF(FORCE_STREFLOP_SOFTWRAPPER)
pkg_search_module(STREFLOP streflop-soft)
ELSE()
@ -182,15 +187,25 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR)
SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1)
ADD_EXECUTABLE(${TARGET_NAME} ${MG_SOURCE_FILES} ${MG_INCLUDE_FILES})
IF(MSVC)
# Needed to build a window app and not just a upnp console app. Not really sure why.
ADD_EXECUTABLE(${TARGET_NAME} WIN32 ${MG_SOURCE_FILES} ${MG_INCLUDE_FILES})
ELSE()
ADD_EXECUTABLE(${TARGET_NAME} ${MG_SOURCE_FILES} ${MG_INCLUDE_FILES})
ENDIF()
IF(WIN32)
# Must come after ADD_EXECUTABLE.
TARGET_SOURCES(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/mk/windoze/glest_editor.rc)
ENDIF()
SET(MG_STREFLOP "")
IF(WANT_USE_STREFLOP)
SET(MG_STREFLOP "streflop")
ENDIF()
IF(WIN32)
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32)
# TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 ${MG_STREFLOP} libmegaglest stdc++ moldname mingwex msvcrt user32 kernel32)
ENDIF()
IF(WANT_USE_STREFLOP AND NOT STREFLOP_FOUND)

View File

@ -706,13 +706,7 @@ void MainWindow::onMenuFileLoad(wxCommandEvent &event) {
fileDialog->SetMessage(wxT("Select Glestmap to load"));
fileDialog->SetWildcard(wxT("Glest&Mega Map (*.gbm *.mgm)|*.gbm;*.mgm|Glest Map (*.gbm)|*.gbm|Mega Map (*.mgm)|*.mgm"));
if (fileDialog->ShowModal() == wxID_OK) {
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(fileDialog->GetPath()));
currentFile = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(currentFile.c_str()));
currentFile = utf8_encode(wstr.get());
#elif wxCHECK_VERSION(2, 9, 1)
#ifdef wxCHECK_VERSION(2, 9, 1)
currentFile = fileDialog->GetPath().ToStdString();
#else
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
@ -782,13 +776,8 @@ void MainWindow::onMenuFileSaveAs(wxCommandEvent &event) {
fd.SetWildcard(wxT("MegaGlest Map (*.mgm)|*.mgm|Glest Map (*.gbm)|*.gbm"));
if (fd.ShowModal() == wxID_OK) {
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(fd.GetPath()));
currentFile = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(currentFile.c_str()));
currentFile = utf8_encode(wstr.get());
#elif wxCHECK_VERSION(2, 9, 1)
#ifdef wxCHECK_VERSION(2, 9, 1)
currentFile = fd.GetPath().ToStdString();
#else
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fd.GetPath());
@ -1062,13 +1051,7 @@ void MainWindow::onMenuEditImportHeights(wxCommandEvent &event) {
wxString savedDir=fileDialog->GetDirectory();
fileDialog->SetDirectory(heightMapDirectory);
if (fileDialog->ShowModal() == wxID_OK) {
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(fileDialog->GetPath()));
currentFile = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(currentFile.c_str()));
currentFile = utf8_encode(wstr.get());
#elif wxCHECK_VERSION(2, 9, 1)
#ifdef wxCHECK_VERSION(2, 9, 1)
currentFile = fileDialog->GetPath().ToStdString();
#else
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fileDialog->GetPath());
@ -1114,13 +1097,7 @@ void MainWindow::onMenuEditExportHeights(wxCommandEvent &event) {
#endif
fd.SetDirectory(heightMapDirectory);
if (fd.ShowModal() == wxID_OK) {
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(fd.GetPath()));
currentFile = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(currentFile.c_str()));
currentFile = utf8_encode(wstr.get());
#elif wxCHECK_VERSION(2, 9, 1)
#if wxCHECK_VERSION(2, 9, 1)
currentFile = fd.GetPath().ToStdString();
#else
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(fd.GetPath());
@ -1721,12 +1698,7 @@ bool SimpleDialog::show(const string &title, bool wide) {
if(m_returnCode==wxID_CANCEL) return false; // don't change values if canceled
for (unsigned int i = 0; i < texts.size(); ++i) {
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(texts[i]->GetValue()));
values[i].second = tmp_buf;
#else
values[i].second = texts[i]->GetValue().ToAscii();
#endif
}
return true;
}
@ -1782,15 +1754,7 @@ bool App::OnInit() {
//exe_path += path_separator;
string appPath;
//#if defined(__MINGW32__)
#ifdef WIN32
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(wxFNCONV(exe_path));
appPath = tmp_buf;
auto_ptr<wchar_t> wstr(Ansi2WideString(appPath.c_str()));
appPath = utf8_encode(wstr.get());
#elif wxCHECK_VERSION(2, 9, 1)
#ifdef wxCHECK_VERSION(2, 9, 1)
appPath = exe_path.ToStdString();
#else
appPath = wxFNCONV(exe_path);

View File

@ -4,7 +4,10 @@
OPTION(FORCE_EMBEDDED_LIBS "Force use of embedded libraries' code." OFF)
# IMPORTANT: should come BEFORE finding packages
find_package(PkgConfig REQUIRED)
IF(NOT MSVC)
find_package(PkgConfig REQUIRED)
ENDIF()
IF(FORCE_STREFLOP_SOFTWRAPPER)
pkg_search_module(STREFLOP streflop-soft)
ELSE()
@ -51,29 +54,31 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
INCLUDE (CheckIncludeFiles)
IF(WIN32)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
IF(NOT VCPKG_TARGET_TRIPLET)
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
${PROJECT_SOURCE_DIR}/source/win32_deps/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib
${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/openal-soft-1.12.854)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/libogg-1.2.1/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lua-5.1/src)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/jpeg-8b)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/lpng141)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/zlib-1.2.5)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/curl-7.21.3/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/${SDL_WINDOWS_DIR_DINC}/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/include)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib)
link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/wxWidgets-2.8.10/lib)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/win32_deps/include)
ENDIF()
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/shared_lib/include/platform/posix)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/source/shared_lib/include/platform/win32)
ENDIF()
@ -118,13 +123,13 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${X11_LIBRARIES})
ENDIF()
IF(WANT_USE_XercesC)
FIND_PACKAGE(XercesC REQUIRED)
INCLUDE_DIRECTORIES(${XERCESC_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${XERCESC_LIBRARY})
ENDIF()
ENDIF()
IF(WANT_USE_XercesC)
FIND_PACKAGE(XercesC REQUIRED)
INCLUDE_DIRECTORIES(${XERCESC_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${XERCESC_LIBRARY})
ENDIF()
ENDIF()
FIND_PACKAGE(OpenAL REQUIRED)
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
@ -132,11 +137,11 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${OPENAL_LIBRARY})
ENDIF()
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS})
ENDIF()
FIND_PACKAGE(LUA REQUIRED)
INCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})
IF(UNIX)
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LUA_LIBRARIES} ${CMAKE_DL_LIBS})
ENDIF()
FIND_PACKAGE(JPEG REQUIRED)
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
@ -150,7 +155,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${PNG_LIBRARY})
ENDIF()
OPTION(WANT_USE_FontConfig "use the library fontconfig" ON)
OPTION(WANT_USE_FontConfig "use the library fontconfig" ON)
IF(WANT_USE_FontConfig)
FIND_PACKAGE(FontConfig)
IF(FONTCONFIG_FOUND)
@ -291,23 +296,25 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
FIND_PACKAGE(Miniupnpc)
ENDIF()
if(NOT MINIUPNP_FOUND)
if(NOT MINIUPNP_FOUND OR MSVC)
if(NOT FORCE_USE_EMBEDDED_Miniupnpc)
MESSAGE(STATUS "*** Using EMBEDDED miniupnpc since dev system does not have it... MINIUPNP_FOUND [${MINIUPNP_FOUND}]")
else()
MESSAGE(STATUS "*** Using EMBEDDED miniupnpc because it was forced by option")
endif()
if (NOT WIN32)
add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
add_definitions (-D_BSD_SOURCE)
if (NOT WIN32)
add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
add_definitions (-D_BSD_SOURCE)
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_definitions (-DMACOSX -D_DARWIN_C_SOURCE)
else()
add_definitions (-D_POSIX_C_SOURCE=200809L)
endif ()
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_definitions (-DMACOSX -D_DARWIN_C_SOURCE)
else()
add_definitions (-D_POSIX_C_SOURCE=200809L)
endif ()
ELSEIF(MSVC)
ADD_COMPILE_DEFINITIONS(MINIUPNP_STATICLIB)
endif()
SET(DIRS_WITH_SRC ${DIRS_WITH_SRC} platform/miniupnpc)
else()
@ -425,7 +432,6 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${PROJECT_SOURCE_DIR}/source/shared_lib/sources/platform/${SDL_VERSION_SNAME}/thread.cpp)
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${PROJECT_SOURCE_DIR}/source/shared_lib/sources/platform/${SDL_VERSION_SNAME}/window.cpp)
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${PROJECT_SOURCE_DIR}/source/shared_lib/sources/platform/${SDL_VERSION_SNAME}/window_gl.cpp)
SET(MG_SOURCE_FILES ${MG_SOURCE_FILES} ${PROJECT_SOURCE_DIR}/source/win32_deps/src/glprocs.c)
ENDIF()
FOREACH(DIR IN LISTS DIRS_WITH_SRC)
@ -496,7 +502,25 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
ENDIF()
IF(WIN32)
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 stdc++ moldname mingwex msvcrt user32 kernel32)
IF(VCPKG_TARGET_TRIPLET)
TARGET_LINK_LIBRARIES(${TARGET_NAME} odbc32 wsock32 winspool winmm shell32 comctl32 advapi32 opengl32 glu32 ole32 oleaut32 uuid ddraw dsound dxguid ws2_32 iphlpapi user32 kernel32 dbghelp shlwapi)
find_package(Ogg CONFIG REQUIRED)
find_package(Vorbis CONFIG REQUIRED)
# find_package(ZLIB REQUIRED)
# find_package(JPEG REQUIRED)
find_package(libpng CONFIG REQUIRED)
find_package(XercesC CONFIG REQUIRED)
find_package(OpenAL CONFIG REQUIRED)
# find_package(CURL CONFIG REQUIRED)
find_package(SDL2 CONFIG REQUIRED)
# include(FindLua)
# find_package(Lua REQUIRED)
# find_package(GLEW REQUIRED)
find_package(FTGL CONFIG REQUIRED)
TARGET_LINK_LIBRARIES(${TARGET_NAME} Ogg::ogg Vorbis::vorbis Vorbis::vorbisenc Vorbis::vorbisfile ZLIB::ZLIB ${JPEG_LIBRARIES} png_static xerces_xerces-c XercesC::XercesC OpenAL::OpenAL CURL::libcurl gdi32 SDL2::SDL2main SDL2::SDL2-static ${LUA_LIBRARIES} ${MG_STREFLOP} GLEW::GLEW ftgl)
ELSE()
TARGET_LINK_LIBRARIES(${TARGET_NAME} stdc++ gcc odbc32 wsock32 winspool winmm shell32 comctl32 ctl3d32 advapi32 wsock32 opengl32 glu32 ole32 oleaut32 uuid mingw32 ddraw dsound dxguid ws2_32 iphlpapi wsock32 libogg libvorbis libvorbisfile zlib jpeg libpng xerces-c2_8_0 OpenAL32 libcurl winmm gdi32 opengl32 glu32 ${SDL_VERSION_NAME} ${SDL_VERSION_NAME}main lua5.1 stdc++ moldname mingwex msvcrt user32 kernel32)
ENDIF()
ENDIF()
IF(WANT_USE_STREFLOP AND NOT STREFLOP_FOUND)

View File

@ -112,7 +112,7 @@ void ontop_win32(int width, int height);
void CheckPacketThrottling();
// The following is used for stacking tracing for windows based exceptions
#if !defined(_DEBUG) && !defined(__GNUC__)
#if !defined(__GNUC__)
// easy safe strings
#define MAXSTRLEN 260

View File

@ -16,9 +16,6 @@
#include "conversion.h"
#include <algorithm>
#include "util.h"
#ifdef WIN32
#include "glext.h"
#endif
#include "leak_dumper.h"

View File

@ -13,7 +13,15 @@ INCLUDE_DIRECTORIES(
SET(STREFLOP_SRC ${STREFLOP_GLOBBED_CPP})
IF(MSVC)
ENABLE_LANGUAGE(ASM_MASM)
SET(STREFLOP_SRC ${STREFLOP_SRC} FPUSettings.asm)
ENDIF()
ADD_LIBRARY(streflop STATIC EXCLUDE_FROM_ALL
${STREFLOP_SRC}
)
set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}")
IF(NOT MSVC)
set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}")
ENDIF()

View File

@ -15,6 +15,13 @@ IF(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
find_package(LibXml2)
IF(WIN32)
# Need to explicitly find iconv with vcpkg.
find_package(Iconv)
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} Iconv::Iconv)
ENDIF()
IF(LIBXML2_FOUND)
include_directories(${CMAKE_INCLUDE_PATH} ${LIBXML2_INCLUDE_DIR})
add_executable(xml2g xml2g.c g3dv4.h)