From dd7139ee10ac80cd09b9c05e9dbd1b92f2dfc036 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Sat, 5 Jun 2021 22:01:51 +0100 Subject: [PATCH 01/19] Add script to install build deps using vcpkg. --- mk/windoze/vcpkg_deps.ps1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 mk/windoze/vcpkg_deps.ps1 diff --git a/mk/windoze/vcpkg_deps.ps1 b/mk/windoze/vcpkg_deps.ps1 new file mode 100644 index 00000000..85214569 --- /dev/null +++ b/mk/windoze/vcpkg_deps.ps1 @@ -0,0 +1 @@ +.\vcpkg.exe install 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 pkgconf:x64-windows-static sdl2:x64-windows-static sqlite3:x64-windows-static tiff:x64-windows-static tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static From 1e8ff3642c9c8231408181f67c4d9a131d8c9501 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Mon, 7 Jun 2021 22:51:44 +0100 Subject: [PATCH 02/19] Cmake: Add build configuration for VS builds * Build vs 2019 project using cmake. * Cmake configured to work in windows. Hopefully still works in linux too! * Update vcpkg install script. * Configures build for MG game release or debug mode. * Still need to fix building mapeditor and g3d viewer. * Remove CurlGetConfig.cmake (not needed!) --- CMakeLists.txt | 54 ++++---- mk/cmake/Modules/CurlGetConfig.cmake | 63 --------- mk/cmake/Modules/FindMiniupnpc.cmake | 3 +- mk/windoze/glest-dev.ini | 2 +- mk/windoze/vcpkg_deps.ps1 | 2 +- source/g3d_viewer/CMakeLists.txt | 4 +- source/glest_game/CMakeLists.txt | 28 +++- source/glest_game/main/main.cpp | 2 +- source/glest_map_editor/CMakeLists.txt | 4 +- source/shared_lib/CMakeLists.txt | 122 +++++++++++------- .../include/platform/sdl/platform_util.h | 2 +- .../sources/graphics/gl/texture_gl.cpp | 3 - 12 files changed, 134 insertions(+), 155 deletions(-) delete mode 100644 mk/cmake/Modules/CurlGetConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 57045047..a798d33a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,25 @@ -CMAKE_MINIMUM_REQUIRED( VERSION 2.8.2 ) +CMAKE_MINIMUM_REQUIRED( VERSION 3.20 ) + +IF(WIN32) + STRING(SUBSTRING ${CMAKE_GENERATOR} 0 13 GENERATOR_TYPE) + IF(GENERATOR_TYPE STREQUAL "Visual Studio") + # This must be Set before "PROJECT()" is called. + set(VCPKG_TARGET_TRIPLET "x64-windows-static") + + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") + ADD_COMPILE_DEFINITIONS(UNICODE _UNICODE) + + + 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() +ENDIF() + PROJECT( MegaGlest ) #SET(CMAKE_VERBOSE_MAKEFILE ON) @@ -31,8 +52,8 @@ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") ENDIF() OPTION(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS "Build model import/export tools" ON) -OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" ON) -OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" ON) +OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" OFF) +OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" OFF) OPTION(BUILD_MEGAGLEST "Build MegaGlest" ON) OPTION(BUILD_MEGAGLEST_TESTS "Build MegaGlest Unit Tests" OFF) OPTION(WANT_SINGLE_INSTALL_DIRECTORY "Use single install directory for everything. It is useful for example for MacOS cpack bundles." OFF) @@ -368,33 +389,6 @@ 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) -ENDIF() - # Check if sources exist IF(EXISTS "${PROJECT_SOURCE_DIR}/source/") MESSAGE(STATUS "**Found game source code.") diff --git a/mk/cmake/Modules/CurlGetConfig.cmake b/mk/cmake/Modules/CurlGetConfig.cmake deleted file mode 100644 index a583889f..00000000 --- a/mk/cmake/Modules/CurlGetConfig.cmake +++ /dev/null @@ -1,63 +0,0 @@ -# -# Curl Get Config -# -# IF we are using a system that supports curl-config use it. -# - -IF(CURL_FOUND) - IF(UNIX) - IF(UNIX AND APPLE AND NOT CMAKE_CURL_CONFIG) - FIND_PROGRAM(CMAKE_CURL_CONFIG curl-config - PATHS /opt/local - PATH_SUFFIXES bin NO_DEFAULT_PATH) - ENDIF() - IF(NOT CMAKE_CURL_CONFIG) - FIND_PROGRAM(CMAKE_CURL_CONFIG curl-config - PATHS - ~/Library/Frameworks - /Library/Frameworks - /sw # Fink - /opt/local # DarwinPorts - /opt/csw # Blastwave - /opt - PATH_SUFFIXES bin) - ENDIF() - MARK_AS_ADVANCED(CMAKE_CURL_CONFIG) - - IF(CMAKE_CURL_CONFIG) - IF(STATIC_CURL) - # run the curl-config program to get --static-libs - execute_process(COMMAND ${CMAKE_CURL_CONFIG} --static-libs - OUTPUT_VARIABLE CURL_STATIC_LIBS - RESULT_VARIABLE RET - OUTPUT_STRIP_TRAILING_WHITESPACE) - ELSE() - SET(RET 1) - ENDIF() - - IF(RET EQUAL 0 AND CURL_STATIC_LIBS) - MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #1 , using CURL static libs: [${CURL_STATIC_LIBS}]") - SET(CURL_LIBRARIES "-Bstatic ${CURL_STATIC_LIBS}") - ELSE() - execute_process(COMMAND ${CMAKE_CURL_CONFIG} --libs - OUTPUT_VARIABLE CURL_DYNAMIC_LIBS - RESULT_VARIABLE RET2 - OUTPUT_STRIP_TRAILING_WHITESPACE) - - IF(RET2 EQUAL 0 AND CURL_DYNAMIC_LIBS) - MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #2 RET = ${RET}, using CURL dynamic libs: ${CURL_DYNAMIC_LIBS}") - SET(CURL_LIBRARIES "${CURL_DYNAMIC_LIBS}") - ELSE() - MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #3 RET = ${RET}/${RET2}, using CURL libs found by cmake: ${CURL_LIBRARIES}") - ENDIF() - ENDIF() - ENDIF() - ENDIF() - IF(CURL_VERSION_STRING AND "${CURL_VERSION_STRING}" VERSION_LESS "${CURL_MIN_VERSION_MG}") - MESSAGE(STATUS "(please visit http://curl.haxx.se/libcurl/ to find a newer version)") - MESSAGE(FATAL_ERROR " CURL version = [${CURL_VERSION_STRING}] we require AT LEAST [7.16.4]") - ENDIF() -ELSE() - SET(CURL_LIBRARIES) - SET(CURL_INCLUDE_DIRS) -ENDIF() diff --git a/mk/cmake/Modules/FindMiniupnpc.cmake b/mk/cmake/Modules/FindMiniupnpc.cmake index 5fedfbf0..b504be34 100644 --- a/mk/cmake/Modules/FindMiniupnpc.cmake +++ b/mk/cmake/Modules/FindMiniupnpc.cmake @@ -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 #include @@ -201,4 +203,3 @@ else () endif () MARK_AS_ADVANCED(MINIUPNP_INCLUDE_DIR MINIUPNP_LIBRARY) - diff --git a/mk/windoze/glest-dev.ini b/mk/windoze/glest-dev.ini index ee4695bd..d00ab33e 100644 --- a/mk/windoze/glest-dev.ini +++ b/mk/windoze/glest-dev.ini @@ -1,3 +1,3 @@ -DataPath=$APPLICATIONPATH\..\..\data\glest_game\ +DataPath=$APPLICATIONPATH\..\..\..\megaglest-data\ ServerListPath=$APPLICATIONPATH\..\shared\ GlestKeysIniPath=$APPLICATIONPATH\..\shared\ diff --git a/mk/windoze/vcpkg_deps.ps1 b/mk/windoze/vcpkg_deps.ps1 index 85214569..874a9e77 100644 --- a/mk/windoze/vcpkg_deps.ps1 +++ b/mk/windoze/vcpkg_deps.ps1 @@ -1 +1 @@ -.\vcpkg.exe install 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 pkgconf:x64-windows-static sdl2:x64-windows-static sqlite3:x64-windows-static tiff:x64-windows-static tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static +.\vcpkg.exe install 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 tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index cfed04c8..e0910bf9 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -62,7 +62,9 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) MESSAGE(STATUS " wxWidgets: ${wxWidgets_INCLUDE_DIRS} ;/; ${wxWidgets_LIBRARIES}") ENDIF() - find_package(PkgConfig REQUIRED) + IF(PKG_CONFIG_FOUND) + find_package(PkgConfig REQUIRED) + ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) pkg_search_module(STREFLOP streflop-soft) ELSE() diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 76b5de40..3bee6169 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -92,7 +92,6 @@ IF(BUILD_MEGAGLEST) ENDIF() FIND_PACKAGE(CURL REQUIRED) - INCLUDE(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/CurlGetConfig.cmake) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) IF(UNIX) IF(NOT OPENSSL_FOUND) @@ -139,7 +138,10 @@ IF(BUILD_MEGAGLEST) ENDIF() ENDIF() - find_package(PkgConfig REQUIRED) + + IF(PKG_CONFIG_FOUND) + find_package(PkgConfig REQUIRED) + ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) pkg_search_module(STREFLOP streflop-soft) ELSE() @@ -261,7 +263,7 @@ IF(BUILD_MEGAGLEST) add_custom_target(run ALL DEPENDS mg.tmp) ENDIF() - IF(WIN32) + IF(WIN32 AND NOT GENERATOR_TYPE STREQUAL "Visual Studio") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole") ENDIF() @@ -294,7 +296,25 @@ 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) + 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) diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index 2b2cf46b..fdadcb40 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -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; diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index 2e73c0d1..2b8f5eec 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -79,7 +79,9 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) link_directories(${PROJECT_SOURCE_DIR}/source/win32_deps/xerces-c-src_2_8_0/lib) ENDIF() - find_package(PkgConfig REQUIRED) + IF(PKG_CONFIG_FOUND) + find_package(PkgConfig REQUIRED) + ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) pkg_search_module(STREFLOP streflop-soft) ELSE() diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index 493cf95e..e8af6ed7 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -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(PKG_CONFIG_FOUND) + find_package(PkgConfig REQUIRED) +ENDIF() + IF(FORCE_STREFLOP_SOFTWRAPPER) pkg_search_module(STREFLOP streflop-soft) ELSE() @@ -30,6 +33,9 @@ ENDIF() IF(WANT_USE_STREFLOP) IF(NOT STREFLOP_FOUND) + IF(WIN32 AND GENERATOR_TYPE STREQUAL "Visual Studio") + ADD_COMPILE_DEFINITIONS(STREFLOP_SSE LIBM_COMPILING_FLT32) + ENDIF() ADD_SUBDIRECTORY(sources/streflop) ELSE() INCLUDE_DIRECTORIES(${STREFLOP_INCLUDE_DIRS} ${STREFLOP_INCLUDE_DIRS}/streflop) @@ -51,29 +57,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() @@ -88,7 +96,6 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST ENDIF() FIND_PACKAGE(CURL REQUIRED) - INCLUDE(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/CurlGetConfig.cmake) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) IF(UNIX) IF(NOT OPENSSL_FOUND) @@ -118,13 +125,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 +139,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 +157,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 +298,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 GENERATOR_TYPE STREQUAL "Visual Studio") 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(GENERATOR_TYPE STREQUAL "Visual Studio") + ADD_COMPILE_DEFINITIONS(MINIUPNP_STATICLIB) + endif() SET(DIRS_WITH_SRC ${DIRS_WITH_SRC} platform/miniupnpc) else() @@ -425,7 +434,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 +504,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) diff --git a/source/shared_lib/include/platform/sdl/platform_util.h b/source/shared_lib/include/platform/sdl/platform_util.h index 653e3e52..559e88ad 100644 --- a/source/shared_lib/include/platform/sdl/platform_util.h +++ b/source/shared_lib/include/platform/sdl/platform_util.h @@ -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 diff --git a/source/shared_lib/sources/graphics/gl/texture_gl.cpp b/source/shared_lib/sources/graphics/gl/texture_gl.cpp index dac42ec7..a255b725 100644 --- a/source/shared_lib/sources/graphics/gl/texture_gl.cpp +++ b/source/shared_lib/sources/graphics/gl/texture_gl.cpp @@ -16,9 +16,6 @@ #include "conversion.h" #include #include "util.h" -#ifdef WIN32 -#include "glext.h" -#endif #include "leak_dumper.h" From c6a632c33c972072cfedbf89e569993c68662b81 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Tue, 8 Jun 2021 19:13:10 +0100 Subject: [PATCH 03/19] Fix for linux and mac --- source/glest_game/CMakeLists.txt | 2 +- source/shared_lib/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 3bee6169..9da31bd0 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -139,7 +139,7 @@ IF(BUILD_MEGAGLEST) ENDIF() - IF(PKG_CONFIG_FOUND) + IF(NOT GENERATOR_TYPE STREQUAL "Visual Studio") find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index e8af6ed7..d1d4f0d8 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -4,7 +4,7 @@ OPTION(FORCE_EMBEDDED_LIBS "Force use of embedded libraries' code." OFF) # IMPORTANT: should come BEFORE finding packages -IF(PKG_CONFIG_FOUND) +IF(NOT GENERATOR_TYPE STREQUAL "Visual Studio") find_package(PkgConfig REQUIRED) ENDIF() From 523229ab5556a7a6e3e5d2b84f693b4d45ca300f Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Sun, 13 Jun 2021 01:23:10 +0100 Subject: [PATCH 04/19] More progress with cmake for Visual Studio projects * Change conditon so that L137 onwards of main CMakelists.txt is executed fro VS project target. Main reason to do this was to make sure project actually built with streflop. * Change conditions after L137 so unwanted compile flags aren't added. * Project now builds multi threaded for VS project. Tries to use max number of cores. * Simplify cxx flags. Remove unneeded MT and MTd flags. * Set VS build output to mk/windoze. * Add FPUSettings.asm to streflop in cmake, if VS project specified. * Remove STREFLOP compile definitions. Not needed now streflop is configured properly. * Simplify cmake by adding "VS_BUILD" variable, instead of doing string comparisons all the time to check if is "Visual Studio" target. --- CMakeLists.txt | 78 +++++++++++++------ source/glest_game/CMakeLists.txt | 4 +- source/shared_lib/CMakeLists.txt | 9 +-- .../sources/streflop/CMakeLists.txt | 5 ++ 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a798d33a..08ef1143 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,16 +2,28 @@ CMAKE_MINIMUM_REQUIRED( VERSION 3.20 ) IF(WIN32) STRING(SUBSTRING ${CMAKE_GENERATOR} 0 13 GENERATOR_TYPE) - IF(GENERATOR_TYPE STREQUAL "Visual Studio") + SET(VS_BUILD GENERATOR_TYPE STREQUAL "Visual Studio" CACHE STRING "Target visual studio.") + IF(VS_BUILD) # This must be Set before "PROJECT()" is called. set(VCPKG_TARGET_TRIPLET "x64-windows-static") + # Sets the flags MT/ MTd correctly. set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") - ADD_COMPILE_DEFINITIONS(UNICODE _UNICODE) + 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") @@ -122,20 +134,24 @@ IF(APPLE) include(${PROJECT_SOURCE_DIR}/mk/macos/CMakeLists.txt) ENDIF(APPLE) -IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) +IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR VS_BUILD) IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") MESSAGE(STATUS "Detected CLANG Compiler...") ELSEIF(CMAKE_COMPILER_IS_GNUCXX) MESSAGE(STATUS "Detected GNUC Compiler...") ELSEIF(MINGW) MESSAGE(STATUS "Detected MINGW Compiler...") + ELSEIF(VS_BUILD) + 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 VS_BUILD) + 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") @@ -148,6 +164,8 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) # CLang specific Compiler Options IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + ELSEIF(VS_BUILD) + # GCC specific Compiler Options ELSE() ADD_DEFINITIONS("-frounding-math -fsignaling-nans") @@ -194,25 +212,25 @@ 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 - #include - 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 + #include + 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() + 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") @@ -348,7 +366,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 VS_BUILD) ADD_DEFINITIONS("-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DCURL_STATICLIB") ENDIF() ENDIF() @@ -385,10 +403,20 @@ 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() +# Set VS project exe outputs. +IF(VS_BUILD) + 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 IF(EXISTS "${PROJECT_SOURCE_DIR}/source/") MESSAGE(STATUS "**Found game source code.") diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 9da31bd0..e329f71d 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -139,7 +139,7 @@ IF(BUILD_MEGAGLEST) ENDIF() - IF(NOT GENERATOR_TYPE STREQUAL "Visual Studio") + IF(NOT VS_BUILD) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) @@ -263,7 +263,7 @@ IF(BUILD_MEGAGLEST) add_custom_target(run ALL DEPENDS mg.tmp) ENDIF() - IF(WIN32 AND NOT GENERATOR_TYPE STREQUAL "Visual Studio") + IF(WIN32 AND NOT VS_BUILD) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole") ENDIF() diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index d1d4f0d8..fc57d5a6 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -4,7 +4,7 @@ OPTION(FORCE_EMBEDDED_LIBS "Force use of embedded libraries' code." OFF) # IMPORTANT: should come BEFORE finding packages -IF(NOT GENERATOR_TYPE STREQUAL "Visual Studio") +IF(NOT VS_BUILD) find_package(PkgConfig REQUIRED) ENDIF() @@ -33,9 +33,6 @@ ENDIF() IF(WANT_USE_STREFLOP) IF(NOT STREFLOP_FOUND) - IF(WIN32 AND GENERATOR_TYPE STREQUAL "Visual Studio") - ADD_COMPILE_DEFINITIONS(STREFLOP_SSE LIBM_COMPILING_FLT32) - ENDIF() ADD_SUBDIRECTORY(sources/streflop) ELSE() INCLUDE_DIRECTORIES(${STREFLOP_INCLUDE_DIRS} ${STREFLOP_INCLUDE_DIRS}/streflop) @@ -298,7 +295,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST FIND_PACKAGE(Miniupnpc) ENDIF() - if(NOT MINIUPNP_FOUND OR GENERATOR_TYPE STREQUAL "Visual Studio") + if(NOT MINIUPNP_FOUND OR VS_BUILD) if(NOT FORCE_USE_EMBEDDED_Miniupnpc) MESSAGE(STATUS "*** Using EMBEDDED miniupnpc since dev system does not have it... MINIUPNP_FOUND [${MINIUPNP_FOUND}]") else() @@ -314,7 +311,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST else() add_definitions (-D_POSIX_C_SOURCE=200809L) endif () - ELSEIF(GENERATOR_TYPE STREQUAL "Visual Studio") + ELSEIF(VS_BUILD) ADD_COMPILE_DEFINITIONS(MINIUPNP_STATICLIB) endif() diff --git a/source/shared_lib/sources/streflop/CMakeLists.txt b/source/shared_lib/sources/streflop/CMakeLists.txt index 6a5a30c8..e805feb8 100644 --- a/source/shared_lib/sources/streflop/CMakeLists.txt +++ b/source/shared_lib/sources/streflop/CMakeLists.txt @@ -13,6 +13,11 @@ INCLUDE_DIRECTORIES( SET(STREFLOP_SRC ${STREFLOP_GLOBBED_CPP}) +IF(VS_BUILD) + ENABLE_LANGUAGE(ASM_MASM) + SET(STREFLOP_SRC ${STREFLOP_SRC} FPUSettings.asm) +ENDIF() + ADD_LIBRARY(streflop STATIC EXCLUDE_FROM_ALL ${STREFLOP_SRC} ) From b405ce86ca63c4bb7b16e03cdfb7ab9543c425f8 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Sun, 13 Jun 2021 19:04:29 +0100 Subject: [PATCH 05/19] Get map editor and model viewer building with VS cmake builds * Map editor and model viewer build, but only as "Release" build. * Unwanted flags not set for msbuild, such as FPIC, -g3, -O3, -sse... * Wanted flags set for msbuild e.g. /arch:SSE2 /fp:fast -D__SSE__ -D__SSE2__ * Allow including wx, used for vcpkg wx. * Mapeditor is WIN32 exe for VS_BUILD. (Not sure why this is needed...) * g3d viewer and map editor mains edited to remove unnecessary windows- only code(, for strings). --- CMakeLists.txt | 47 ++++++++------ mk/cmake/Modules/SpecialMacros.cmake | 4 +- source/g3d_viewer/CMakeLists.txt | 54 ++++++++-------- source/g3d_viewer/main.cpp | 54 ---------------- source/glest_map_editor/CMakeLists.txt | 64 +++++++++++-------- source/glest_map_editor/main.cpp | 46 ++----------- .../sources/streflop/CMakeLists.txt | 5 +- 7 files changed, 101 insertions(+), 173 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08ef1143..adc56b8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,8 +37,9 @@ 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 @@ -64,8 +65,8 @@ IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") ENDIF() OPTION(BUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS "Build model import/export tools" ON) -OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" OFF) -OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" OFF) +OPTION(BUILD_MEGAGLEST_MODEL_VIEWER "Build model viewer" ON) +OPTION(BUILD_MEGAGLEST_MAP_EDITOR "Build map editor" ON) OPTION(BUILD_MEGAGLEST "Build MegaGlest" ON) OPTION(BUILD_MEGAGLEST_TESTS "Build MegaGlest Unit Tests" OFF) OPTION(WANT_SINGLE_INSTALL_DIRECTORY "Use single install directory for everything. It is useful for example for MacOS cpack bundles." OFF) @@ -123,10 +124,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 VS_BUILD) + 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. @@ -231,22 +234,24 @@ size_t stack_depth = backtrace(stack_addrs, max_depth); ELSE() message(STATUS "**WARNING DID NOT Find GCC backtrace lib") ENDIF() + + IF(NOT VS_BUILD) + # Debug compiler flags + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3") - # 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 + ENDIF() - # 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 with debug info compiler flags + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 ") - # 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 + # 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 diff --git a/mk/cmake/Modules/SpecialMacros.cmake b/mk/cmake/Modules/SpecialMacros.cmake index 61b3eacb..983f27ab 100644 --- a/mk/cmake/Modules/SpecialMacros.cmake +++ b/mk/cmake/Modules/SpecialMacros.cmake @@ -20,7 +20,8 @@ macro(special_check_for_sse _max_sse_level_desired) include(CheckCXXSourceRuns) include(CheckCSourceRuns) - IF(NOT MINGW) + # Add vs_build to stop flags added to msbuild. + IF(NOT MINGW AND NOT VS_BUILD) if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) set(SSE_FLAGS) @@ -201,4 +202,3 @@ macro(_special_list_to_string _string _list) endif(${_len} GREATER 0) endforeach(_item) endmacro(_special_list_to_string) - diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index e0910bf9..46ef636a 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -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} ) @@ -98,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 VS_BUILD) + 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() ######################################################################################### diff --git a/source/g3d_viewer/main.cpp b/source/g3d_viewer/main.cpp index 2a9ec0c2..92ebe314 100644 --- a/source/g3d_viewer/main.cpp +++ b/source/g3d_viewer/main.cpp @@ -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 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 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 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 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 wstr(Ansi2WideString(modelPath.c_str())); - modelPath = utf8_encode(wstr.get()); -#else modelPath = static_cast(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 wstr(Ansi2WideString(appPath.c_str())); - appPath = utf8_encode(wstr.get()); -#else string appPath(static_cast(WX2CHR(exe_path))); -#endif //#else // appPath = wxFNCONV(exe_path); diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index 2b8f5eec..f1f0b3b1 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -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,34 +49,37 @@ 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 VS_BUILD) + 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() IF(PKG_CONFIG_FOUND) @@ -184,7 +187,12 @@ 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(VS_BUILD) + # 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() SET(MG_STREFLOP "") IF(WANT_USE_STREFLOP) @@ -192,7 +200,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) 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) diff --git a/source/glest_map_editor/main.cpp b/source/glest_map_editor/main.cpp index d1606df2..50676528 100644 --- a/source/glest_map_editor/main.cpp +++ b/source/glest_map_editor/main.cpp @@ -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 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 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 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 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 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); diff --git a/source/shared_lib/sources/streflop/CMakeLists.txt b/source/shared_lib/sources/streflop/CMakeLists.txt index e805feb8..3bc4338d 100644 --- a/source/shared_lib/sources/streflop/CMakeLists.txt +++ b/source/shared_lib/sources/streflop/CMakeLists.txt @@ -21,4 +21,7 @@ ENDIF() ADD_LIBRARY(streflop STATIC EXCLUDE_FROM_ALL ${STREFLOP_SRC} ) -set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}") + +IF(NOT VS_BUILD) + set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}") +ENDIF() From ce0345854c5f2751b72c8e51153b41f3954f2ce7 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Mon, 14 Jun 2021 01:39:03 +0100 Subject: [PATCH 06/19] New windows build helper scripts * build-mg-vs-cmake.ps1 to build mg. * clean-all.ps1 to clean mg. * install-deps-vcpkg.ps1 * .gitignore ignores build and vcpkg folders. --- mk/windoze/.gitignore | 2 + mk/windoze/build-mg-vs-cmake.ps1 | 118 ++++++++++++++++++++++++++++++ mk/windoze/clean-all.ps1 | 4 + mk/windoze/install-deps-vcpkg.ps1 | 2 + mk/windoze/vcpkg_deps.ps1 | 1 - 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 mk/windoze/build-mg-vs-cmake.ps1 create mode 100644 mk/windoze/clean-all.ps1 create mode 100644 mk/windoze/install-deps-vcpkg.ps1 delete mode 100644 mk/windoze/vcpkg_deps.ps1 diff --git a/mk/windoze/.gitignore b/mk/windoze/.gitignore index 53bf9b3c..59f846ba 100644 --- a/mk/windoze/.gitignore +++ b/mk/windoze/.gitignore @@ -2,6 +2,8 @@ /*/Release/ /x64/ /*/x64/ +/vcpkg/ +/build/ # Windows_build *.dll diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 new file mode 100644 index 00000000..aff20146 --- /dev/null +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -0,0 +1,118 @@ +# Build MegaGlest on Windows. +# Author: James Sherratt. +param(${vcpkg-location}) + +$sword = [char]::ConvertFromUtf32(0x2694) +Write-Output "=====$sword Mega Glest $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'.)" + +${vcpkg-location} = $(Resolve-Path ${vcpkg-location}).ToString() +"path is ${vcpkg-location}" + +if ( !${vcpkg-location} ) { + ${vcpkg-location} = Join-Path $PSScriptRoot \vcpkg + "Vcpkg location not set. Setting it to ${vcpkg-location}." +} + +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 Mega Glest 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 Mega Glest" + +$toolchainPath = $(Join-Path ${vcpkg-location} \scripts\buildsystems\vcpkg.cmake) +$buildFolder = $(Join-Path $PSScriptRoot build) +$topLevelTargetDir = $(Resolve-Path $(Join-Path $PSScriptRoot ../../)).ToString() + +cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE:STRING=$toolchainPath -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE "-H$topLevelTargetDir" "-B$buildFolder" -G "Visual Studio 16 2019" -T host=x64 -A x64 +cmake --build $buildFolder --config Release --target ALL_BUILD -j 18 +"" + +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: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019" + "If you have installed all the relevant tools and you still can't build Mega Glest, try running '.\clean-build.ps1'. Then run this script again." + "If Mega Glest still fails to build, please consider submitting a bug report at https://github.com/MegaGlest/megaglest-source/issues." +} diff --git a/mk/windoze/clean-all.ps1 b/mk/windoze/clean-all.ps1 new file mode 100644 index 00000000..597ed15a --- /dev/null +++ b/mk/windoze/clean-all.ps1 @@ -0,0 +1,4 @@ +"Cleaning build files." +Remove-Item $(Join-Path $PSScriptRoot *.exe) +Remove-Item -Recurse $(Join-Path $PSScriptRoot build\) +"Cleaning build files completed." diff --git a/mk/windoze/install-deps-vcpkg.ps1 b/mk/windoze/install-deps-vcpkg.ps1 new file mode 100644 index 00000000..36fee871 --- /dev/null +++ b/mk/windoze/install-deps-vcpkg.ps1 @@ -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 tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static diff --git a/mk/windoze/vcpkg_deps.ps1 b/mk/windoze/vcpkg_deps.ps1 deleted file mode 100644 index 874a9e77..00000000 --- a/mk/windoze/vcpkg_deps.ps1 +++ /dev/null @@ -1 +0,0 @@ -.\vcpkg.exe install 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 tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static From a3a3afc0f0f328ea756d6ca937b7a2c24ae3cb72 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Mon, 14 Jun 2021 02:13:49 +0100 Subject: [PATCH 07/19] Fix build script errors No longer errors when vcpkg path not specified. --- mk/windoze/build-mg-vs-cmake.ps1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index aff20146..0e7af6e1 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -69,13 +69,13 @@ 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'.)" -${vcpkg-location} = $(Resolve-Path ${vcpkg-location}).ToString() -"path is ${vcpkg-location}" - 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." From 6723924b5b6cf383f6063c877d8e8f71019af784 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Mon, 14 Jun 2021 21:15:34 +0100 Subject: [PATCH 08/19] Fix map editor and g3d viewer build for linux and macos --- source/g3d_viewer/CMakeLists.txt | 2 +- source/glest_map_editor/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index 46ef636a..4699a36b 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -62,7 +62,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) MESSAGE(STATUS " wxWidgets: ${wxWidgets_INCLUDE_DIRS} ;/; ${wxWidgets_LIBRARIES}") ENDIF() - IF(PKG_CONFIG_FOUND) + IF(NOT VS_BUILD) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index f1f0b3b1..bf8aaed5 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -82,7 +82,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) ENDIF() ENDIF() - IF(PKG_CONFIG_FOUND) + IF(NOT VS_BUILD) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) From e9b554c2b4e3cb1b59d09fc140fbbc9b30264530 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Thu, 17 Jun 2021 19:19:33 +0100 Subject: [PATCH 09/19] Windows build script: Remove unnecessary multithread build flag. --- mk/windoze/build-mg-vs-cmake.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index 0e7af6e1..92042a59 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -105,7 +105,7 @@ $buildFolder = $(Join-Path $PSScriptRoot build) $topLevelTargetDir = $(Resolve-Path $(Join-Path $PSScriptRoot ../../)).ToString() cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE:STRING=$toolchainPath -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE "-H$topLevelTargetDir" "-B$buildFolder" -G "Visual Studio 16 2019" -T host=x64 -A x64 -cmake --build $buildFolder --config Release --target ALL_BUILD -j 18 +cmake --build $buildFolder --config Release --target ALL_BUILD "" if ($?) { From c5245a9e7353d3ee9701d1475f6c2f2b3e4f265f Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Sun, 20 Jun 2021 16:04:19 +0100 Subject: [PATCH 10/19] More fixes to cmake builds - Add icons to windows exes. - Revert removal of CurlGetConfig.cmake. This is still required in ubuntu. (Perhaps only for static builds.) --- mk/cmake/Modules/CurlGetConfig.cmake | 63 ++++++++++++++++++++++++++ source/g3d_viewer/CMakeLists.txt | 5 ++ source/glest_game/CMakeLists.txt | 2 + source/glest_map_editor/CMakeLists.txt | 5 ++ source/shared_lib/CMakeLists.txt | 1 + 5 files changed, 76 insertions(+) create mode 100644 mk/cmake/Modules/CurlGetConfig.cmake diff --git a/mk/cmake/Modules/CurlGetConfig.cmake b/mk/cmake/Modules/CurlGetConfig.cmake new file mode 100644 index 00000000..a583889f --- /dev/null +++ b/mk/cmake/Modules/CurlGetConfig.cmake @@ -0,0 +1,63 @@ +# +# Curl Get Config +# +# IF we are using a system that supports curl-config use it. +# + +IF(CURL_FOUND) + IF(UNIX) + IF(UNIX AND APPLE AND NOT CMAKE_CURL_CONFIG) + FIND_PROGRAM(CMAKE_CURL_CONFIG curl-config + PATHS /opt/local + PATH_SUFFIXES bin NO_DEFAULT_PATH) + ENDIF() + IF(NOT CMAKE_CURL_CONFIG) + FIND_PROGRAM(CMAKE_CURL_CONFIG curl-config + PATHS + ~/Library/Frameworks + /Library/Frameworks + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt + PATH_SUFFIXES bin) + ENDIF() + MARK_AS_ADVANCED(CMAKE_CURL_CONFIG) + + IF(CMAKE_CURL_CONFIG) + IF(STATIC_CURL) + # run the curl-config program to get --static-libs + execute_process(COMMAND ${CMAKE_CURL_CONFIG} --static-libs + OUTPUT_VARIABLE CURL_STATIC_LIBS + RESULT_VARIABLE RET + OUTPUT_STRIP_TRAILING_WHITESPACE) + ELSE() + SET(RET 1) + ENDIF() + + IF(RET EQUAL 0 AND CURL_STATIC_LIBS) + MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #1 , using CURL static libs: [${CURL_STATIC_LIBS}]") + SET(CURL_LIBRARIES "-Bstatic ${CURL_STATIC_LIBS}") + ELSE() + execute_process(COMMAND ${CMAKE_CURL_CONFIG} --libs + OUTPUT_VARIABLE CURL_DYNAMIC_LIBS + RESULT_VARIABLE RET2 + OUTPUT_STRIP_TRAILING_WHITESPACE) + + IF(RET2 EQUAL 0 AND CURL_DYNAMIC_LIBS) + MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #2 RET = ${RET}, using CURL dynamic libs: ${CURL_DYNAMIC_LIBS}") + SET(CURL_LIBRARIES "${CURL_DYNAMIC_LIBS}") + ELSE() + MESSAGE(STATUS "curl-config: ${CMAKE_CURL_CONFIG}, #3 RET = ${RET}/${RET2}, using CURL libs found by cmake: ${CURL_LIBRARIES}") + ENDIF() + ENDIF() + ENDIF() + ENDIF() + IF(CURL_VERSION_STRING AND "${CURL_VERSION_STRING}" VERSION_LESS "${CURL_MIN_VERSION_MG}") + MESSAGE(STATUS "(please visit http://curl.haxx.se/libcurl/ to find a newer version)") + MESSAGE(FATAL_ERROR " CURL version = [${CURL_VERSION_STRING}] we require AT LEAST [7.16.4]") + ENDIF() +ELSE() + SET(CURL_LIBRARIES) + SET(CURL_INCLUDE_DIRS) +ENDIF() diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index 4699a36b..01ca2b87 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -207,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() diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index e329f71d..f1cc3db8 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -92,6 +92,7 @@ IF(BUILD_MEGAGLEST) ENDIF() FIND_PACKAGE(CURL REQUIRED) + INCLUDE(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/CurlGetConfig.cmake) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) IF(UNIX) IF(NOT OPENSSL_FOUND) @@ -296,6 +297,7 @@ IF(BUILD_MEGAGLEST) endif() IF(WIN32) + 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) diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index bf8aaed5..3f6b3dd2 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -194,6 +194,11 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) 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") diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index fc57d5a6..b4b796b6 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -93,6 +93,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST ENDIF() FIND_PACKAGE(CURL REQUIRED) + INCLUDE(${CMAKE_SOURCE_DIR}/mk/cmake/Modules/CurlGetConfig.cmake) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS}) IF(UNIX) IF(NOT OPENSSL_FOUND) From db8d2dd35564e7ae392637eb36213e00ba2be9d5 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Fri, 2 Jul 2021 19:47:35 +0100 Subject: [PATCH 11/19] Fix cmake-clang for macos * Also fix for ubuntu 18, by decreasing required cmake version. --- CMakeLists.txt | 10 +++++----- mk/cmake/Modules/SpecialMacros.cmake | 6 +++--- mk/macos/CMakeLists.txt | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index adc56b8e..946fcbd2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -CMAKE_MINIMUM_REQUIRED( VERSION 3.20 ) +CMAKE_MINIMUM_REQUIRED( VERSION 3.10 ) IF(WIN32) STRING(SUBSTRING ${CMAKE_GENERATOR} 0 13 GENERATOR_TYPE) @@ -58,7 +58,7 @@ 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") @@ -138,7 +138,7 @@ IF(APPLE) ENDIF(APPLE) IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR VS_BUILD) - IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") MESSAGE(STATUS "Detected CLANG Compiler...") ELSEIF(CMAKE_COMPILER_IS_GNUCXX) MESSAGE(STATUS "Detected GNUC Compiler...") @@ -165,7 +165,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR VS_BUILD) ENDIF() # CLang specific Compiler Options - IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") ELSEIF(VS_BUILD) @@ -449,7 +449,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() diff --git a/mk/cmake/Modules/SpecialMacros.cmake b/mk/cmake/Modules/SpecialMacros.cmake index 983f27ab..c8c86794 100644 --- a/mk/cmake/Modules/SpecialMacros.cmake +++ b/mk/cmake/Modules/SpecialMacros.cmake @@ -77,14 +77,14 @@ macro(special_check_for_sse _max_sse_level_desired) if(HAS_SSE3_EXTENSIONS AND (${_max_sse_level_desired} MATCHES "3")) set(SSE_FLAGS "-msse3") - IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?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") + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") ELSE() set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse") ENDIF() @@ -92,7 +92,7 @@ macro(special_check_for_sse _max_sse_level_desired) 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") + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") ELSE() set(SSE_FLAGS "${SSE_FLAGS} -mfpmath=sse") ENDIF() diff --git a/mk/macos/CMakeLists.txt b/mk/macos/CMakeLists.txt index a587c35c..747f0c2b 100644 --- a/mk/macos/CMakeLists.txt +++ b/mk/macos/CMakeLists.txt @@ -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() From cbb4b261a849220c716a6833287ca9bbd769bade Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Sat, 3 Jul 2021 13:44:21 +0100 Subject: [PATCH 12/19] Fix for windows + older linux distros --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 946fcbd2..ce5400c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ -CMAKE_MINIMUM_REQUIRED( VERSION 3.10 ) - IF(WIN32) + # Windows cmake version needs to be higher - for CMAKE_MSVC_RUNTIME_LIBRARY. + CMAKE_MINIMUM_REQUIRED( VERSION 3.15 ) + STRING(SUBSTRING ${CMAKE_GENERATOR} 0 13 GENERATOR_TYPE) SET(VS_BUILD GENERATOR_TYPE STREQUAL "Visual Studio" CACHE STRING "Target visual studio.") IF(VS_BUILD) @@ -30,6 +31,8 @@ IF(WIN32) INCLUDE(FindPkgConfig) ENDIF() +ELSE() + CMAKE_MINIMUM_REQUIRED( VERSION 3.5 ) ENDIF() PROJECT( MegaGlest ) From 1514f5f19c80b3944272a03e4ca0644b5b662e56 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Tue, 23 Aug 2022 22:01:16 +0100 Subject: [PATCH 13/19] Improve build script --- mk/windoze/build-mg-vs-cmake.ps1 | 28 ++++++++++++++++++++-------- mk/windoze/glest-dev.ini | 2 +- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index 92042a59..bc3c7c02 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -3,7 +3,7 @@ param(${vcpkg-location}) $sword = [char]::ConvertFromUtf32(0x2694) -Write-Output "=====$sword Mega Glest $sword=====" +Write-Output "=====$sword MegaGlest $sword=====" "" <# .SYNOPSIS @@ -87,7 +87,7 @@ else { & "$(Join-Path ${vcpkg-location} bootstrap-vcpkg.bat)" } -"Installing vcpkg and Mega Glest dependencies." +"Installing vcpkg and MegaGlest dependencies." Set-Location ${vcpkg-location} & "$(Join-Path $PSScriptRoot install-deps-vcpkg.ps1)" if (!$?) { @@ -98,21 +98,33 @@ if (!$?) { Set-Location $PSScriptRoot "" -Write-Title "Build Mega Glest" +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() -cmake --no-warn-unused-cli -DCMAKE_TOOLCHAIN_FILE:STRING=$toolchainPath -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE "-H$topLevelTargetDir" "-B$buildFolder" -G "Visual Studio 16 2019" -T host=x64 -A x64 +$vsVersion=(msbuild --version | select -Last 1).Split(".")[0] -as [int] + +echo "version is " $vsVersion + +if ($vsVersion -eq 17) { + $vsProjType = "Visual Studio 17 2022" +} +else { + $vsProjType = "Visual Studio 16 2019" +} + +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: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019" - "If you have installed all the relevant tools and you still can't build Mega Glest, try running '.\clean-build.ps1'. Then run this script again." - "If Mega Glest still fails to build, please consider submitting a bug report at https://github.com/MegaGlest/megaglest-source/issues." + "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 MegaGlest still fails to build, please help us by submitting a bug report at https://github.com/MegaGlest/megaglest-source/issues." } diff --git a/mk/windoze/glest-dev.ini b/mk/windoze/glest-dev.ini index d00ab33e..ee4695bd 100644 --- a/mk/windoze/glest-dev.ini +++ b/mk/windoze/glest-dev.ini @@ -1,3 +1,3 @@ -DataPath=$APPLICATIONPATH\..\..\..\megaglest-data\ +DataPath=$APPLICATIONPATH\..\..\data\glest_game\ ServerListPath=$APPLICATIONPATH\..\shared\ GlestKeysIniPath=$APPLICATIONPATH\..\shared\ From 35ca64f26d81281fa685c74b2748dda082d92d48 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Wed, 24 Aug 2022 02:48:07 +0100 Subject: [PATCH 14/19] some more improvements --- mk/windoze/build-mg-vs-cmake.ps1 | 9 +++++---- mk/windoze/install-deps-vcpkg.ps1 | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index bc3c7c02..945fdc1e 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -106,16 +106,17 @@ $topLevelTargetDir = $(Resolve-Path $(Join-Path $PSScriptRoot ../../)).ToString( $vsVersion=(msbuild --version | select -Last 1).Split(".")[0] -as [int] -echo "version is " $vsVersion - if ($vsVersion -eq 17) { $vsProjType = "Visual Studio 17 2022" } -else { +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 --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 -DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=OFF cmake --build $buildFolder --config Release --target ALL_BUILD diff --git a/mk/windoze/install-deps-vcpkg.ps1 b/mk/windoze/install-deps-vcpkg.ps1 index 36fee871..bfdec521 100644 --- a/mk/windoze/install-deps-vcpkg.ps1 +++ b/mk/windoze/install-deps-vcpkg.ps1 @@ -1,2 +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 tool-meson:x64-windows-static wxwidgets:x64-windows-static xerces-c:x64-windows-static zlib:x64-windows-static +.\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 From 2a81312f0de84aec0ee7ffd15985aa8c00dd6e86 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Wed, 24 Aug 2022 02:53:20 +0100 Subject: [PATCH 15/19] fix workflow --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index d616f2d5..2c1e045b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -116,7 +116,7 @@ jobs: # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type # Kinda guessing this using supertux + my own build scripts as guides. - run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE + run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=OFF - name: Build Mega Glest # Build your program with the given configuration From 0a0ca7507dec6c584b55cad95533d792430cb714 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Wed, 24 Aug 2022 18:05:18 +0100 Subject: [PATCH 16/19] Fix windows g3d xml tools build --- .github/workflows/cmake.yml | 3 +-- mk/windoze/build-mg-vs-cmake.ps1 | 2 +- source/tools/glexemel/CMakeLists.txt | 7 +++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2c1e045b..423a07ae 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -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 @@ -116,7 +115,7 @@ jobs: # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type # Kinda guessing this using supertux + my own build scripts as guides. - run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=OFF + run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE - name: Build Mega Glest # Build your program with the given configuration diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index 945fdc1e..81617c06 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -116,7 +116,7 @@ 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 -DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=OFF +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 diff --git a/source/tools/glexemel/CMakeLists.txt b/source/tools/glexemel/CMakeLists.txt index 9caa9408..a40af6ff 100644 --- a/source/tools/glexemel/CMakeLists.txt +++ b/source/tools/glexemel/CMakeLists.txt @@ -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) From 1c8a6f3d8b20ae2d5f1b6e0da922f1d4070d66b8 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Wed, 24 Aug 2022 18:16:01 +0100 Subject: [PATCH 17/19] Fix SSE check and cleanup --- mk/cmake/Modules/SpecialMacros.cmake | 187 ++++++++++++++------------- 1 file changed, 98 insertions(+), 89 deletions(-) diff --git a/mk/cmake/Modules/SpecialMacros.cmake b/mk/cmake/Modules/SpecialMacros.cmake index c8c86794..e96dbd3b 100644 --- a/mk/cmake/Modules/SpecialMacros.cmake +++ b/mk/cmake/Modules/SpecialMacros.cmake @@ -21,89 +21,26 @@ macro(special_check_for_sse _max_sse_level_desired) include(CheckCSourceRuns) # Add vs_build to stop flags added to msbuild. - IF(NOT MINGW AND NOT VS_BUILD) - if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) - set(SSE_FLAGS) - - set(CMAKE_REQUIRED_FLAGS "-msse3") - check_cxx_source_runs(" - #include - - 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 - - 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 - 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() + IF(NOT MINGW) + set(SSE_FLAGS) - set(CMAKE_REQUIRED_FLAGS) + set(CMAKE_REQUIRED_FLAGS "-msse3") + check_cxx_source_runs(" + #include - 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() - 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}" MATCHES "(Apple)?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}" MATCHES "(Apple)?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 int main() @@ -114,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 + 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 + + 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) From c46d1260f526a2ce2212a70f02c0bdf0ce660b67 Mon Sep 17 00:00:00 2001 From: James Sherratt Date: Wed, 24 Aug 2022 20:03:40 +0100 Subject: [PATCH 18/19] Tidy up --- CMakeLists.txt | 72 +++++++++---------- mk/cmake/Modules/SpecialMacros.cmake | 2 +- source/g3d_viewer/CMakeLists.txt | 4 +- source/glest_game/CMakeLists.txt | 4 +- source/glest_map_editor/CMakeLists.txt | 6 +- source/shared_lib/CMakeLists.txt | 6 +- .../sources/streflop/CMakeLists.txt | 4 +- 7 files changed, 48 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ce5400c2..0d301921 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,35 +2,8 @@ IF(WIN32) # Windows cmake version needs to be higher - for CMAKE_MSVC_RUNTIME_LIBRARY. CMAKE_MINIMUM_REQUIRED( VERSION 3.15 ) - STRING(SUBSTRING ${CMAKE_GENERATOR} 0 13 GENERATOR_TYPE) - SET(VS_BUILD GENERATOR_TYPE STREQUAL "Visual Studio" CACHE STRING "Target visual studio.") - IF(VS_BUILD) - # This must be Set before "PROJECT()" is called. - set(VCPKG_TARGET_TRIPLET "x64-windows-static") - - # Sets the flags MT/ MTd correctly. - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$: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() + # This must be Set before "PROJECT()" is called. + SET(VCPKG_TARGET_TRIPLET "x64-windows-static") ELSE() CMAKE_MINIMUM_REQUIRED( VERSION 3.5 ) ENDIF() @@ -55,6 +28,31 @@ 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$<$: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) @@ -127,7 +125,7 @@ FOREACH(ver_var VER_MAJOR;VER_MINOR;VER_PATCH;MEGAGLEST_VERSION) ENDFOREACH() MESSAGE(STATUS "Detected MegaGlest Version is [v${MEGAGLEST_VERSION}] ") -IF(NOT VS_BUILD) +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 @@ -140,19 +138,19 @@ IF(APPLE) include(${PROJECT_SOURCE_DIR}/mk/macos/CMakeLists.txt) ENDIF(APPLE) -IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR VS_BUILD) +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(VS_BUILD) + 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 - IF(NOT VS_BUILD) + IF(NOT MSVC) ADD_DEFINITIONS("-Wuninitialized -Wsign-compare -Wunused-function -Wunused-variable -Wreturn-type -fno-strict-aliasing") ENDIF() @@ -170,7 +168,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW OR VS_BUILD) # CLang specific Compiler Options IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") - ELSEIF(VS_BUILD) + ELSEIF(MSVC) # GCC specific Compiler Options ELSE() @@ -238,7 +236,7 @@ size_t stack_depth = backtrace(stack_addrs, max_depth); message(STATUS "**WARNING DID NOT Find GCC backtrace lib") ENDIF() - IF(NOT VS_BUILD) + IF(NOT MSVC) # Debug compiler flags SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3") @@ -374,7 +372,7 @@ size_t stack_depth = backtrace(stack_addrs, max_depth); message(STATUS "CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${MG_BUILD_TYPE}}") # Win32 specific Compiler Flags - IF(WIN32 AND NOT VS_BUILD) + 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() @@ -418,7 +416,7 @@ ELSE() ENDIF() # Set VS project exe outputs. -IF(VS_BUILD) +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}) diff --git a/mk/cmake/Modules/SpecialMacros.cmake b/mk/cmake/Modules/SpecialMacros.cmake index e96dbd3b..77d2e0c7 100644 --- a/mk/cmake/Modules/SpecialMacros.cmake +++ b/mk/cmake/Modules/SpecialMacros.cmake @@ -20,7 +20,7 @@ macro(special_check_for_sse _max_sse_level_desired) include(CheckCXXSourceRuns) include(CheckCSourceRuns) - # Add vs_build to stop flags added to msbuild. + # Add MSVC to stop flags being added to msbuild. IF(NOT MINGW) set(SSE_FLAGS) diff --git a/source/g3d_viewer/CMakeLists.txt b/source/g3d_viewer/CMakeLists.txt index 01ca2b87..660e82bb 100644 --- a/source/g3d_viewer/CMakeLists.txt +++ b/source/g3d_viewer/CMakeLists.txt @@ -62,7 +62,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) MESSAGE(STATUS " wxWidgets: ${wxWidgets_INCLUDE_DIRS} ;/; ${wxWidgets_LIBRARIES}") ENDIF() - IF(NOT VS_BUILD) + IF(NOT MSVC) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) @@ -98,7 +98,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER) ENDIF() IF(WIN32) - IF(NOT VS_BUILD) + 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) diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index f1cc3db8..6902e8ac 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -140,7 +140,7 @@ IF(BUILD_MEGAGLEST) ENDIF() - IF(NOT VS_BUILD) + IF(NOT MSVC) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) @@ -264,7 +264,7 @@ IF(BUILD_MEGAGLEST) add_custom_target(run ALL DEPENDS mg.tmp) ENDIF() - IF(WIN32 AND NOT VS_BUILD) + IF(WIN32 AND NOT MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole") ENDIF() diff --git a/source/glest_map_editor/CMakeLists.txt b/source/glest_map_editor/CMakeLists.txt index 3f6b3dd2..3cf0ce2b 100644 --- a/source/glest_map_editor/CMakeLists.txt +++ b/source/glest_map_editor/CMakeLists.txt @@ -49,7 +49,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) ENDIF() IF(WIN32) - IF(NOT VS_BUILD) + 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) @@ -82,7 +82,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) ENDIF() ENDIF() - IF(NOT VS_BUILD) + IF(NOT MSVC) find_package(PkgConfig REQUIRED) ENDIF() IF(FORCE_STREFLOP_SOFTWRAPPER) @@ -187,7 +187,7 @@ IF(BUILD_MEGAGLEST_MAP_EDITOR) SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1) - IF(VS_BUILD) + 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() diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index b4b796b6..fedac7e4 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -4,7 +4,7 @@ OPTION(FORCE_EMBEDDED_LIBS "Force use of embedded libraries' code." OFF) # IMPORTANT: should come BEFORE finding packages -IF(NOT VS_BUILD) +IF(NOT MSVC) find_package(PkgConfig REQUIRED) ENDIF() @@ -296,7 +296,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST FIND_PACKAGE(Miniupnpc) ENDIF() - if(NOT MINIUPNP_FOUND OR VS_BUILD) + 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() @@ -312,7 +312,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST else() add_definitions (-D_POSIX_C_SOURCE=200809L) endif () - ELSEIF(VS_BUILD) + ELSEIF(MSVC) ADD_COMPILE_DEFINITIONS(MINIUPNP_STATICLIB) endif() diff --git a/source/shared_lib/sources/streflop/CMakeLists.txt b/source/shared_lib/sources/streflop/CMakeLists.txt index 3bc4338d..d3e8d9a4 100644 --- a/source/shared_lib/sources/streflop/CMakeLists.txt +++ b/source/shared_lib/sources/streflop/CMakeLists.txt @@ -13,7 +13,7 @@ INCLUDE_DIRECTORIES( SET(STREFLOP_SRC ${STREFLOP_GLOBBED_CPP}) -IF(VS_BUILD) +IF(MSVC) ENABLE_LANGUAGE(ASM_MASM) SET(STREFLOP_SRC ${STREFLOP_SRC} FPUSettings.asm) ENDIF() @@ -22,6 +22,6 @@ ADD_LIBRARY(streflop STATIC EXCLUDE_FROM_ALL ${STREFLOP_SRC} ) -IF(NOT VS_BUILD) +IF(NOT MSVC) set_target_properties(streflop PROPERTIES COMPILE_FLAGS "${PIC_FLAG}") ENDIF() From 3fd6ccd247f275e7c9eb274d5c721863be7640a7 Mon Sep 17 00:00:00 2001 From: Jammyjamjamman Date: Wed, 31 Aug 2022 00:44:19 +0100 Subject: [PATCH 19/19] More instructions --- mk/windoze/build-mg-vs-cmake.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/mk/windoze/build-mg-vs-cmake.ps1 b/mk/windoze/build-mg-vs-cmake.ps1 index 81617c06..7db27105 100644 --- a/mk/windoze/build-mg-vs-cmake.ps1 +++ b/mk/windoze/build-mg-vs-cmake.ps1 @@ -127,5 +127,6 @@ 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." }