• Rafael Kitover's avatar
    auto deps for visual studio, take 1 · f1ecd7c3
    Rafael Kitover authored
    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: default avatarRafael Kitover <rkitover@gmail.com>
    f1ecd7c3
strutils.cpp 591 Bytes