Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use vcpkg to build deps when Visual Studio on Windows is detected, this only happens on first build, but does take a while because things like wxWidgets need to be built. Building from the developer command line is also supported. I considered making a pre-built tarball available, but the resulting files are just too big for this to be practical. Make the necessary cmake code changes for this to work and to use the vcpkg packages, which work just like on linux or have other cmake glue code available. To do this, we make vcpkg a submodule, use git to checkout all submodules, then just build and use the `vcpkg.exe`. Then we set the CMAKE_TOOLCHAIN_FILE to the vcpkg toolchain and also include it directly, why this is necessary I don't know, without it it doesn't work in the IDE but does on the command line. All of this requires no vcpkg integration with either the user or the project. A user-wide `ENV{VCPKG_ROOT}` is also supported. Fix the dynamic arrays in the GBA core, MSVC follows the C++ standard on this and gcc does not. TODO: add the necessary gcc flags to make this an error in cmake. Use `wxArrayString` instead of `std::vector<wxString>` in `src/wx/strutils.cpp` which is used in options parsing. This was necessary because of a bizarre linker error with wxWidgets when using Visual Studio: https://trac.wxwidgets.org/ticket/10884#comment:46 In `src/wx/panel.cpp` make sure the unimplemented D3D renderer code does not get compiled if it's actually `OFF`. Also fix the new spacer code for the drawing panel to not combine `wxEXPAND` with `wxALIGN_CENTER`, which is an error on wxWidgets 3.1.2, which is what vcpkg uses. The drawing panel seems to be automatically stretched to the max size automatically anyway. TODO: if all of this works, we'll need an Appveyor set up for visual studio. Signed-off-by: Rafael Kitover <rkitover@gmail.com>
- Loading branch information
Showing
13 changed files
with
501 additions
and
296 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,3 +1,6 @@ | |||
[submodule "dependencies"] | [submodule "dependencies"] | ||
path = dependencies | path = dependencies | ||
url = https://github.com/visualboyadvance-m/dependencies.git | url = https://github.com/visualboyadvance-m/dependencies.git | ||
[submodule "vcpkg"] | |||
path = vcpkg | |||
url = https://github.com/Microsoft/vcpkg.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,53 @@ | |||
{ | |||
"configurations": [ | |||
{ | |||
"name": "x64-Debug", | |||
"generator": "Ninja", | |||
"configurationType": "Debug", | |||
"inheritEnvironments": [ | |||
"msvc_x64" | |||
], | |||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", | |||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", | |||
"cmakeCommandArgs": "", | |||
"buildCommandArgs": "-v", | |||
"ctestCommandArgs": "" | |||
}, { | |||
"name": "x64-Release", | |||
"generator": "Ninja", | |||
"configurationType": "Release", | |||
"inheritEnvironments": [ | |||
"msvc_x64" | |||
], | |||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", | |||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", | |||
"cmakeCommandArgs": "", | |||
"buildCommandArgs": "-v", | |||
"ctestCommandArgs": "" | |||
}, { | |||
"name": "x86-Debug", | |||
"generator": "Ninja", | |||
"configurationType": "Debug", | |||
"inheritEnvironments": [ | |||
"msvc_x86" | |||
], | |||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", | |||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", | |||
"cmakeCommandArgs": "", | |||
"buildCommandArgs": "-v", | |||
"ctestCommandArgs": "" | |||
}, { | |||
"name": "x86-Release", | |||
"generator": "Ninja", | |||
"configurationType": "Release", | |||
"inheritEnvironments": [ | |||
"msvc_x86" | |||
], | |||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", | |||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", | |||
"cmakeCommandArgs": "", | |||
"buildCommandArgs": "-v", | |||
"ctestCommandArgs": "" | |||
} | |||
] | |||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,24 @@ | |||
if(NOT CMAKE_SYSTEM_PROCESSOR) | |||
if(NOT CMAKE_TOOLCHAIN_FILE AND CMAKE_HOST_SYSTEM_PROCESSOR) | |||
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_HOST_SYSTEM_PROCESSOR}) | |||
elseif(CMAKE_TOOLCHAIN_FILE MATCHES mxe) | |||
if(CMAKE_TOOLCHAIN_FILE MATCHES "i[3-9]86") | |||
set(CMAKE_SYSTEM_PROCESSOR i686) | |||
else() | |||
set(CMAKE_SYSTEM_PROCESSOR x86_64) | |||
endif() | |||
endif() | |||
endif() | |||
|
|||
# turn asm on by default on 32bit x86 | |||
# and set WINARCH for windows stuff | |||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "[xX]86|i[3-9]86|[aA][mM][dD]64") | |||
if(CMAKE_C_SIZEOF_DATA_PTR EQUAL 4) # 32 bit | |||
if(NOT (MSVC AND CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)) | |||
set(ASM_DEFAULT ON) | |||
endif() | |||
set(X86_32 ON) | |||
else() | |||
set(AMD64 ON) | |||
endif() | |||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,62 @@ | |||
if(WIN32) | |||
# compiler has not been detected yet maybe | |||
if(CMAKE_C_COMPILER MATCHES "cl\\.exe" OR CMAKE_CXX_COMPILER MATCHES "cl\\.exe" OR MSVC OR DEFINED ENV{VisualStudioVersion}) | |||
set(VS TRUE) | |||
endif() | |||
|
|||
set(WINARCH x86) | |||
if(CMAKE_C_COMPILER MATCHES x64 OR CMAKE_CXX_COMPILER MATCHES x64 OR $ENV{VSCMD_ARG_TGT_ARCH} MATCHES x64) | |||
set(WINARCH x64) | |||
endif() | |||
|
|||
# Win32 deps submodules (dependencies and vcpkg) | |||
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include" OR NOT EXISTS "${CMAKE_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake") | |||
set(git_checkout FALSE) | |||
# find_package(Git) | |||
#if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git") | |||
if(EXISTS "${CMAKE_SOURCE_DIR}/.git") | |||
set(git_checkout TRUE) | |||
execute_process(COMMAND git submodule update --init --remote --recursive RESULT_VARIABLE git_status WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}") | |||
endif() | |||
|
|||
if(NOT (git_checkout AND git_status EQUAL 0)) | |||
message(FATAL_ERROR "Please pull in git submodules, e.g.\nrun: git submodule update --init --remote --recursive") | |||
endif() | |||
endif() | |||
|
|||
if(VS) | |||
set(DEPS_MSVC "${CMAKE_SOURCE_DIR}/dependencies/msvc") | |||
include_directories("${DEPS_MSVC}") # for GL/glext.h and getopt.h | |||
endif() | |||
|
|||
if(VS AND ENABLE_VCPKG) | |||
if(NOT DEFINED ENV{VCPKG_ROOT}) | |||
set(ENV{VCPKG_ROOT} "${CMAKE_SOURCE_DIR}/vcpkg") | |||
endif() | |||
|
|||
# build vcpkg if not built | |||
if(NOT EXISTS $ENV{VCPKG_ROOT}/vcpkg.exe) | |||
execute_process( | |||
COMMAND bootstrap-vcpkg.bat | |||
WORKING_DIRECTORY $ENV{VCPKG_ROOT} | |||
) | |||
endif() | |||
|
|||
foreach(pkg ${VCPKG_DEPS}) | |||
#list(APPEND VCPKG_DEPS_QUALIFIED ${pkg}:${WINARCH}-windows-static) | |||
list(APPEND VCPKG_DEPS_QUALIFIED ${pkg}:${WINARCH}-windows) | |||
endforeach() | |||
|
|||
# build our deps | |||
execute_process( | |||
COMMAND vcpkg install ${VCPKG_DEPS_QUALIFIED} | |||
WORKING_DIRECTORY $ENV{VCPKG_ROOT} | |||
) | |||
|
|||
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE FILEPATH '' FORCE) | |||
include("$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") | |||
|
|||
set(NLS_DEFAULT OFF) | |||
set(ENABLE_NLS OFF) # not sure why this is necessary | |||
endif() | |||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.