auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
if(COMMAND cmake_policy)
|
|
|
|
cmake_policy(SET CMP0003 NEW) # link to full path of libs
|
|
|
|
cmake_policy(SET CMP0005 NEW) # escapes in add_definitions
|
2019-03-26 13:40:35 +00:00
|
|
|
|
cmake: Fix fedora mingw build + misc improvements.
Use the 3.x wxwidgets mingw package in installdeps.
Add the win64 alias to installdeps for 64 bit mingw builds, like the
win32 alias for 32 bit mingw builds.
Check CROSS_ARCH in Architecture.cmake, set by our mingw toolchains.
Disable LTO by default for all mingw builds, not just amd64, because it
is unfortunately broken on i686 as well now.
Search for heuristically the most appropriate wx-config and set
wxWidgets_CONFIG_EXECUTABLE accordingly in the mingw toolchains.
Refactor the mingw toolchains somewhat, put common code into a common
file, add static toolchains.
For static toolchains, also search for a static zlib and set ZLIB_ROOT.
Change installdeps instructions to use ninja instead of make. Add ninja
to all target dependencies where it was missing, this may be incorrect
in a couple of the rarely used targets, if this is the case the affected
users are free to open an issue.
Also start using ninja on travis instead of make, except for libretro
which uses a GNU Makefile.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-02-01 16:43:08 +00:00
|
|
|
if(POLICY CMP0074)
|
|
|
|
cmake_policy(SET CMP0074 NEW) # use Package_ROOT if set
|
|
|
|
endif()
|
|
|
|
|
2019-03-26 13:40:35 +00:00
|
|
|
if(POLICY CMP0077)
|
|
|
|
cmake_policy(SET CMP0077 NEW) # use vars for options
|
|
|
|
endif()
|
2019-03-26 00:35:23 +00:00
|
|
|
|
2019-04-16 13:07:51 +00:00
|
|
|
if(POLICY CMP0043)
|
2019-03-26 00:35:23 +00:00
|
|
|
cmake_policy(SET CMP0043 NEW) # for wxWidgets, use generator expressions
|
|
|
|
endif()
|
2020-07-10 13:40:05 +00:00
|
|
|
|
|
|
|
if(POLICY CMP0048)
|
|
|
|
cmake_policy(SET CMP0048 NEW) # set CMAKE_PROJECT_VERSION*
|
|
|
|
endif()
|
2020-08-26 10:07:04 +00:00
|
|
|
|
|
|
|
if(POLICY CMP0011)
|
|
|
|
cmake_policy(SET CMP0011 NEW) # Policy PUSH/POP for scripts.
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(POLICY CMP0012)
|
|
|
|
cmake_policy(SET CMP0012 NEW) # Saner if() behavior.
|
|
|
|
endif()
|
2022-01-31 03:26:52 +00:00
|
|
|
|
|
|
|
if(POLICY CMP0060)
|
|
|
|
cmake_policy(SET CMP0060 NEW) # Full lib paths.
|
|
|
|
endif()
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
endif()
|
|
|
|
|
2019-07-03 23:28:48 +00:00
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
|
2022-11-28 18:27:06 +00:00
|
|
|
if(WIN32)
|
|
|
|
include(RemoveStrawberryPerlFromPATH)
|
|
|
|
endif()
|
|
|
|
|
2020-02-08 22:53:53 +00:00
|
|
|
if(UPDATE_APPCAST)
|
|
|
|
include(UpdateAppcast)
|
|
|
|
endif()
|
|
|
|
|
2020-02-08 23:22:31 +00:00
|
|
|
if(TAG_RELEASE)
|
|
|
|
include(MakeReleaseCommitAndTag)
|
|
|
|
endif()
|
|
|
|
|
2023-04-11 23:17:06 +00:00
|
|
|
set(VCPKG_DEPS pkgconf zlib sdl2 gettext wxwidgets)
|
2020-08-26 10:07:04 +00:00
|
|
|
|
|
|
|
set(VCPKG_DEPS_OPTIONAL
|
2023-04-11 23:17:06 +00:00
|
|
|
sfml ENABLE_LINK
|
2020-08-26 10:07:04 +00:00
|
|
|
ffmpeg ENABLE_FFMPEG
|
|
|
|
)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
|
2019-07-03 23:28:48 +00:00
|
|
|
include(Set-Toolchain-vcpkg)
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
set(VBAM_STATIC_DEFAULT OFF)
|
|
|
|
|
cmake: Fix fedora mingw build + misc improvements.
Use the 3.x wxwidgets mingw package in installdeps.
Add the win64 alias to installdeps for 64 bit mingw builds, like the
win32 alias for 32 bit mingw builds.
Check CROSS_ARCH in Architecture.cmake, set by our mingw toolchains.
Disable LTO by default for all mingw builds, not just amd64, because it
is unfortunately broken on i686 as well now.
Search for heuristically the most appropriate wx-config and set
wxWidgets_CONFIG_EXECUTABLE accordingly in the mingw toolchains.
Refactor the mingw toolchains somewhat, put common code into a common
file, add static toolchains.
For static toolchains, also search for a static zlib and set ZLIB_ROOT.
Change installdeps instructions to use ninja instead of make. Add ninja
to all target dependencies where it was missing, this may be incorrect
in a couple of the rarely used targets, if this is the case the affected
users are free to open an issue.
Also start using ninja on travis instead of make, except for libretro
which uses a GNU Makefile.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-02-01 16:43:08 +00:00
|
|
|
if(VCPKG_TARGET_TRIPLET MATCHES -static OR CMAKE_TOOLCHAIN_FILE MATCHES "mxe|-static")
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
set(VBAM_STATIC_DEFAULT ON)
|
|
|
|
endif()
|
|
|
|
|
Refactor cmake ccache support and support MSVC.
Don't disable ccache for msys+ninja anymore, since the mingw ccache
works now and there is no reason to use the msys ccache anymore.
Use RULE_LAUNCH_COMPILE only on cmake versions < 3.4.0, because this
currently breaks resource compilation with visual studio and the windows
native ccache from chocolatey, this needs to be fixed in ccache.
On cmake 3.4.0 and greater, set the variables
CMAKE_<LANG>_COMPILER_LAUNCHER instead. This has the effect of using
ccache for C, C++ and nasm, but not for the resource file, avoiding the
problem with visual studio, which has a more recent cmake. This must be
done before the project() call.
TODO: Currently the Visual Studio build with ccache from chocolatey
works correctly, ccache is being invoked from ninja, but no cache files
are being created. This is being followed up with the chocolatey package
maintainer and upstream if necessary. The resource compiler issue also
needs to be fixed upstream.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-07-30 22:27:21 +00:00
|
|
|
# Use ccache if available and not already enabled on the command line.
|
|
|
|
# This has to be done before the project() call.
|
2022-02-02 22:27:39 +00:00
|
|
|
|
2022-06-15 01:00:13 +00:00
|
|
|
if(NOT CMAKE_CXX_COMPILER_LAUNCHER)
|
Refactor cmake ccache support and support MSVC.
Don't disable ccache for msys+ninja anymore, since the mingw ccache
works now and there is no reason to use the msys ccache anymore.
Use RULE_LAUNCH_COMPILE only on cmake versions < 3.4.0, because this
currently breaks resource compilation with visual studio and the windows
native ccache from chocolatey, this needs to be fixed in ccache.
On cmake 3.4.0 and greater, set the variables
CMAKE_<LANG>_COMPILER_LAUNCHER instead. This has the effect of using
ccache for C, C++ and nasm, but not for the resource file, avoiding the
problem with visual studio, which has a more recent cmake. This must be
done before the project() call.
TODO: Currently the Visual Studio build with ccache from chocolatey
works correctly, ccache is being invoked from ninja, but no cache files
are being created. This is being followed up with the chocolatey package
maintainer and upstream if necessary. The resource compiler issue also
needs to be fixed upstream.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-07-30 22:27:21 +00:00
|
|
|
find_program(CCACHE_EXECUTABLE ccache)
|
|
|
|
if(CCACHE_EXECUTABLE)
|
|
|
|
message(STATUS "Enabling ccache")
|
|
|
|
|
2022-02-02 22:27:39 +00:00
|
|
|
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE} CACHE STRING "C compiler launcher" FORCE)
|
|
|
|
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE} CACHE STRING "C++ compiler launcher" FORCE)
|
|
|
|
set(CMAKE_ASM_NASM_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE} CACHE STRING "nasm assembler launcher" FORCE)
|
Refactor cmake ccache support and support MSVC.
Don't disable ccache for msys+ninja anymore, since the mingw ccache
works now and there is no reason to use the msys ccache anymore.
Use RULE_LAUNCH_COMPILE only on cmake versions < 3.4.0, because this
currently breaks resource compilation with visual studio and the windows
native ccache from chocolatey, this needs to be fixed in ccache.
On cmake 3.4.0 and greater, set the variables
CMAKE_<LANG>_COMPILER_LAUNCHER instead. This has the effect of using
ccache for C, C++ and nasm, but not for the resource file, avoiding the
problem with visual studio, which has a more recent cmake. This must be
done before the project() call.
TODO: Currently the Visual Studio build with ccache from chocolatey
works correctly, ccache is being invoked from ninja, but no cache files
are being created. This is being followed up with the chocolatey package
maintainer and upstream if necessary. The resource compiler issue also
needs to be fixed upstream.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-07-30 22:27:21 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2023-08-27 08:04:57 +00:00
|
|
|
cmake_minimum_required(VERSION 3.8.2)
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
2010-03-15 03:36:45 +00:00
|
|
|
|
2023-08-26 02:31:31 +00:00
|
|
|
project(VBA-M C CXX)
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(NOT CMAKE_PREFIX_PATH AND (NOT ("$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")))
|
|
|
|
set(CMAKE_PREFIX_PATH "$ENV{CMAKE_PREFIX_PATH}")
|
|
|
|
endif()
|
|
|
|
|
2023-02-21 20:53:20 +00:00
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build Type" FORCE)
|
2022-02-02 22:27:39 +00:00
|
|
|
elseif(NOT CMAKE_BUILD_TYPE MATCHES "^(Release|Debug|RelWithDebInfo|MinSizeRel)$")
|
|
|
|
message(FATAL_ERROR "Invalid CMAKE_BUILD_TYPE: '${CMAKE_BUILD_TYPE}', must be one of: 'Release', 'Debug', 'RelWithDebInfo' or 'MinSizeRel'")
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2023-04-12 02:43:13 +00:00
|
|
|
# Link debug libs for RelWithDebInfo
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
|
|
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "Debug")
|
|
|
|
endif()
|
|
|
|
|
2020-07-10 13:40:05 +00:00
|
|
|
include(CTest)
|
|
|
|
|
|
|
|
if(BUILD_TESTING)
|
|
|
|
enable_testing()
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(ALL_TARGETS fex visualboyadvance-m vbamcore vbam)
|
2016-11-21 20:37:21 +00:00
|
|
|
|
2019-10-05 02:37:05 +00:00
|
|
|
add_custom_target(generate)
|
|
|
|
|
2015-03-27 17:48:42 +00:00
|
|
|
#Output all binaries at top level
|
2018-02-24 19:39:29 +00:00
|
|
|
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR})
|
|
|
|
|
|
|
|
option(ENABLE_SDL "Build the SDL port" OFF)
|
|
|
|
option(ENABLE_WX "Build the wxWidgets port" ON)
|
|
|
|
option(ENABLE_DEBUGGER "Enable the debugger" ON)
|
2019-01-02 16:23:26 +00:00
|
|
|
option(ENABLE_ASAN "Enable -fsanitize=<option>, address by default, requires debug build" OFF)
|
2018-02-24 19:39:29 +00:00
|
|
|
|
2022-04-19 01:07:30 +00:00
|
|
|
# Default to static builds on MinGW and all MSYS2 envs.
|
|
|
|
if(MINGW OR (NOT "$ENV{MSYSTEM_PREFIX}" STREQUAL ""))
|
|
|
|
set(VBAM_STATIC_DEFAULT ON)
|
|
|
|
endif()
|
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
option(VBAM_STATIC "Try to link all libraries statically" ${VBAM_STATIC_DEFAULT})
|
2018-02-24 19:39:29 +00:00
|
|
|
|
|
|
|
if(VBAM_STATIC)
|
|
|
|
set(SDL2_STATIC ON)
|
|
|
|
set(SFML_STATIC_LIBRARIES ON)
|
|
|
|
set(FFMPEG_STATIC ON)
|
|
|
|
set(SSP_STATIC ON)
|
|
|
|
set(OPENAL_STATIC ON)
|
cmake: Fix fedora mingw build + misc improvements.
Use the 3.x wxwidgets mingw package in installdeps.
Add the win64 alias to installdeps for 64 bit mingw builds, like the
win32 alias for 32 bit mingw builds.
Check CROSS_ARCH in Architecture.cmake, set by our mingw toolchains.
Disable LTO by default for all mingw builds, not just amd64, because it
is unfortunately broken on i686 as well now.
Search for heuristically the most appropriate wx-config and set
wxWidgets_CONFIG_EXECUTABLE accordingly in the mingw toolchains.
Refactor the mingw toolchains somewhat, put common code into a common
file, add static toolchains.
For static toolchains, also search for a static zlib and set ZLIB_ROOT.
Change installdeps instructions to use ninja instead of make. Add ninja
to all target dependencies where it was missing, this may be incorrect
in a couple of the rarely used targets, if this is the case the affected
users are free to open an issue.
Also start using ninja on travis instead of make, except for libretro
which uses a GNU Makefile.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-02-01 16:43:08 +00:00
|
|
|
set_property(GLOBAL PROPERTY LINK_SEARCH_START_STATIC ON)
|
|
|
|
set_property(GLOBAL PROPERTY LINK_SEARCH_END_STATIC ON)
|
2018-02-24 19:39:29 +00:00
|
|
|
|
2022-11-28 18:23:33 +00:00
|
|
|
if(MSVC)
|
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib)
|
|
|
|
else()
|
cmake: Fix fedora mingw build + misc improvements.
Use the 3.x wxwidgets mingw package in installdeps.
Add the win64 alias to installdeps for 64 bit mingw builds, like the
win32 alias for 32 bit mingw builds.
Check CROSS_ARCH in Architecture.cmake, set by our mingw toolchains.
Disable LTO by default for all mingw builds, not just amd64, because it
is unfortunately broken on i686 as well now.
Search for heuristically the most appropriate wx-config and set
wxWidgets_CONFIG_EXECUTABLE accordingly in the mingw toolchains.
Refactor the mingw toolchains somewhat, put common code into a common
file, add static toolchains.
For static toolchains, also search for a static zlib and set ZLIB_ROOT.
Change installdeps instructions to use ninja instead of make. Add ninja
to all target dependencies where it was missing, this may be incorrect
in a couple of the rarely used targets, if this is the case the affected
users are free to open an issue.
Also start using ninja on travis instead of make, except for libretro
which uses a GNU Makefile.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2020-02-01 16:43:08 +00:00
|
|
|
list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .a)
|
|
|
|
endif()
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
endif()
|
2018-06-27 02:15:22 +00:00
|
|
|
|
2018-08-10 23:35:49 +00:00
|
|
|
set(SSP_DEFAULT OFF)
|
|
|
|
|
|
|
|
option(ENABLE_SSP "Enable gcc stack protector support" ${SSP_DEFAULT})
|
|
|
|
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
set(ASM_DEFAULT OFF)
|
|
|
|
|
|
|
|
include(Architecture)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_ASM "Enable x86 ASM related options" ${ASM_DEFAULT})
|
2017-03-06 09:40:55 +00:00
|
|
|
|
2017-03-19 02:04:39 +00:00
|
|
|
# The ARM ASM core seems to be very buggy, see #98 and #54. Default to it being
|
|
|
|
# OFF for the time being, until it is either fixed or replaced.
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_ASM_CORE "Enable x86 ASM CPU cores" OFF)
|
2017-03-19 02:04:39 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_ASM_CORE)
|
|
|
|
message(WARNING "!!!!!! The x86 ASM cores are considered buggy and dangerous, use at your own risk. !!!!!!")
|
|
|
|
endif()
|
2017-03-19 02:04:39 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(ASM_SCALERS_DEFAULT ${ENABLE_ASM})
|
|
|
|
set(MMX_DEFAULT ${ENABLE_ASM})
|
2017-03-06 09:40:55 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_ASM_SCALERS "Enable x86 ASM graphic filters" ${ASM_SCALERS_DEFAULT})
|
2016-11-18 16:59:27 +00:00
|
|
|
|
|
|
|
if(ENABLE_ASM_SCALERS)
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_MMX "Enable MMX" ${MMX_DEFAULT})
|
|
|
|
endif()
|
2016-11-18 16:59:27 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
find_package(PkgConfig)
|
|
|
|
|
2019-08-20 08:21:38 +00:00
|
|
|
set(ENABLE_LINK_DEFAULT OFF)
|
|
|
|
|
|
|
|
# msys2 does not have static sfml libs atm
|
|
|
|
# while on mxe we use static libs
|
|
|
|
if(WIN32 AND ((NOT (MINGW AND MSYS)) OR CMAKE_TOOLCHAIN_FILE MATCHES mxe) AND NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
|
2019-05-30 11:50:45 +00:00
|
|
|
set(SFML_STATIC_LIBRARIES TRUE)
|
2019-08-20 08:21:38 +00:00
|
|
|
endif()
|
|
|
|
|
2020-03-16 16:37:01 +00:00
|
|
|
find_package(SFML 2.4 COMPONENTS network system)
|
2019-08-20 08:21:38 +00:00
|
|
|
|
2023-04-12 02:43:13 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
|
|
|
|
if(SFML_STATIC_LIBRARIES AND SFML_NETWORK_LIBRARY_STATIC_DEBUG AND SFML_SYSTEM_LIBRARY_STATIC_DEBUG)
|
|
|
|
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_STATIC_DEBUG} ${SFML_SYSTEM_LIBRARY_STATIC_DEBUG})
|
|
|
|
elseif(SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG AND SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG)
|
|
|
|
set(SFML_LIBRARIES ${SFML_NETWORK_LIBRARY_DYNAMIC_DEBUG} ${SFML_SYSTEM_LIBRARY_DYNAMIC_DEBUG})
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2019-08-20 08:21:38 +00:00
|
|
|
if(SFML_FOUND)
|
2019-05-30 11:50:45 +00:00
|
|
|
set(ENABLE_LINK_DEFAULT ON)
|
2019-08-20 08:21:38 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
option(ENABLE_LINK "Enable GBA linking functionality" ${ENABLE_LINK_DEFAULT})
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_LIRC "Enable LIRC support" OFF)
|
2016-11-14 18:56:50 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(FFMPEG_DEFAULT OFF)
|
2016-11-14 18:56:50 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
set(FFMPEG_COMPONENTS AVCODEC AVFORMAT SWSCALE AVUTIL SWRESAMPLE)
|
|
|
|
set(FFMPEG_COMPONENT_VERSIONS AVCODEC>=58.18.100 AVFORMAT>=58.12.100 SWSCALE>=5.1.100 AVUTIL>=56.14.100 SWRESAMPLE>=3.1.100)
|
2019-08-20 08:21:38 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
macro(check_ffmpeg_component_versions)
|
|
|
|
# check versions, but only if pkgconfig is available
|
|
|
|
if(FFMPEG_FOUND AND PKG_CONFIG_FOUND AND NOT CMAKE_TOOLCHAIN_FILE MATCHES vcpkg)
|
|
|
|
foreach(component ${FFMPEG_COMPONENT_VERSIONS})
|
|
|
|
string(REPLACE ">=" ";" parts ${component})
|
|
|
|
list(GET parts 0 name)
|
|
|
|
list(GET parts 1 version)
|
2019-09-01 20:37:39 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
if((NOT DEFINED ${name}_VERSION) OR ${name}_VERSION VERSION_LESS ${version})
|
|
|
|
set(FFMPEG_FOUND OFF)
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
endmacro()
|
2019-08-20 08:21:38 +00:00
|
|
|
|
2022-01-31 03:26:52 +00:00
|
|
|
if(NOT DEFINED ENABLE_FFMPEG OR ENABLE_FFMPEG)
|
2019-12-18 14:17:20 +00:00
|
|
|
set(FFMPEG_DEFAULT ON)
|
2019-09-01 20:37:39 +00:00
|
|
|
|
2019-12-18 14:17:20 +00:00
|
|
|
find_package(FFmpeg COMPONENTS ${FFMPEG_COMPONENTS})
|
|
|
|
check_ffmpeg_component_versions()
|
2019-08-20 08:21:38 +00:00
|
|
|
|
2019-12-18 14:17:20 +00:00
|
|
|
if(NOT FFMPEG_FOUND)
|
|
|
|
set(FFMPEG_DEFAULT OFF)
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2016-11-14 18:56:50 +00:00
|
|
|
|
|
|
|
option(ENABLE_FFMPEG "Enable ffmpeg A/V recording" ${FFMPEG_DEFAULT})
|
|
|
|
|
2019-11-09 23:44:23 +00:00
|
|
|
set(ONLINEUPDATES_DEFAULT OFF)
|
|
|
|
|
2020-05-08 02:06:00 +00:00
|
|
|
if((WIN32 AND (X64 OR X86)) OR APPLE) # winsparkle/sparkle
|
|
|
|
set(ONLINEUPDATES_DEFAULT ON)
|
2019-11-09 23:44:23 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
option(ENABLE_ONLINEUPDATES "Enable online update checks" ${ONLINEUPDATES_DEFAULT})
|
2020-05-08 02:06:00 +00:00
|
|
|
option(HTTPS "Use https URL for winsparkle" ON)
|
|
|
|
if(NOT HTTPS)
|
|
|
|
add_definitions(-DNO_HTTPS)
|
|
|
|
endif()
|
2019-07-10 23:47:16 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(LTO_DEFAULT ON)
|
2017-09-17 02:47:39 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
# gcc lto produces buggy binaries for 64 bit mingw
|
2019-03-28 21:45:06 +00:00
|
|
|
# and we generally don't want it when debugging because it makes linking slow
|
2022-02-03 00:18:08 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug OR (WIN32 AND CMAKE_COMPILER_IS_GNUCXX))
|
2018-02-24 19:39:29 +00:00
|
|
|
set(LTO_DEFAULT OFF)
|
|
|
|
endif()
|
2016-11-27 23:37:24 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_LTO "Compile with Link Time Optimization (gcc and clang only)" ${LTO_DEFAULT})
|
2016-11-27 23:37:24 +00:00
|
|
|
|
2019-07-03 23:28:48 +00:00
|
|
|
if(WIN32 OR CMAKE_TOOLCHAIN_FILE MATCHES "[Mm][Ii][Nn][Gg][Ww]")
|
|
|
|
# Win32 deps submodule
|
2020-08-21 07:03:35 +00:00
|
|
|
set(git_checkout FALSE)
|
|
|
|
|
|
|
|
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()
|
2019-07-03 23:28:48 +00:00
|
|
|
|
2020-08-21 07:03:35 +00:00
|
|
|
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
|
2019-07-03 23:28:48 +00:00
|
|
|
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()
|
|
|
|
endif()
|
|
|
|
|
2017-02-11 02:57:35 +00:00
|
|
|
if(MSVC)
|
2019-07-03 23:28:48 +00:00
|
|
|
include_directories("${CMAKE_SOURCE_DIR}/dependencies/msvc")
|
2018-02-24 19:39:29 +00:00
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
endif()
|
2017-02-11 02:57:35 +00:00
|
|
|
|
2022-10-09 06:26:41 +00:00
|
|
|
if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
|
|
# TODO: We should update the XAudio headers to build with clang-cl. See
|
|
|
|
# https://github.com/visualboyadvance-m/visualboyadvance-m/issues/1021
|
|
|
|
add_definitions(-DNO_XAUDIO2)
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
option(ENABLE_GBA_LOGGING "Enable extended GBA logging" ON)
|
|
|
|
if(ENABLE_GBA_LOGGING)
|
2019-03-27 03:25:43 +00:00
|
|
|
add_definitions(-DGBA_LOGGING )
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2011-05-24 07:39:29 +00:00
|
|
|
if(ENABLE_MMX)
|
2019-03-27 03:25:43 +00:00
|
|
|
add_definitions(-DMMX)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2011-02-24 11:14:59 +00:00
|
|
|
|
|
|
|
# The SDL port can't be built without debugging support
|
2018-02-24 19:39:29 +00:00
|
|
|
if(NOT ENABLE_DEBUGGER AND ENABLE_SDL)
|
2019-03-27 03:25:43 +00:00
|
|
|
message(SEND_ERROR "The SDL port can't be built without debugging support")
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2008-06-06 10:17:20 +00:00
|
|
|
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
# this has to run after the toolchain is initialized so it can't be in
|
|
|
|
# Win32deps.cmake
|
|
|
|
if(MINGW)
|
|
|
|
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-include")
|
|
|
|
include_directories("${CMAKE_SOURCE_DIR}/dependencies/mingw-xaudio/include")
|
|
|
|
endif()
|
|
|
|
|
2017-08-27 20:15:29 +00:00
|
|
|
find_package(Git)
|
|
|
|
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
2017-10-07 21:00:47 +00:00
|
|
|
include(GitTagVersion)
|
|
|
|
git_version(VERSION REVISION VERSION_RELEASE)
|
2017-08-27 20:15:29 +00:00
|
|
|
|
|
|
|
# only use the plugin to tie the configure state to the sha to force rebuilds
|
|
|
|
# of files that depend on version.h
|
|
|
|
include(GetGitRevisionDescription)
|
|
|
|
get_git_head_revision(REFSPEC COMMITHASH)
|
2020-03-05 15:04:19 +00:00
|
|
|
|
|
|
|
# Make sure old tags are gone from all clones.
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${GIT_EXECUTABLE} tag -l
|
|
|
|
OUTPUT_VARIABLE git_tags
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
)
|
|
|
|
|
|
|
|
string(REGEX REPLACE ";" "\\\\;" git_tags_lines "${git_tags}")
|
|
|
|
string(REGEX REPLACE "\r?\n" ";" git_tags_lines "${git_tags_lines}")
|
|
|
|
|
|
|
|
set(found_old_tags FALSE)
|
|
|
|
|
|
|
|
foreach(tag ${git_tags_lines})
|
|
|
|
if(NOT tag MATCHES "^v[0-9]")
|
|
|
|
set(found_old_tags TRUE)
|
|
|
|
break()
|
|
|
|
endif()
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
if(found_old_tags)
|
|
|
|
# Delete all tags and fetch them from the origin.
|
|
|
|
|
|
|
|
foreach(tag ${git_tags_lines})
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${GIT_EXECUTABLE} tag -d ${tag}
|
|
|
|
OUTPUT_QUIET
|
|
|
|
ERROR_QUIET
|
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
)
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
execute_process(
|
2020-03-07 11:36:40 +00:00
|
|
|
COMMAND ${GIT_EXECUTABLE} fetch --tags origin
|
2020-03-05 15:04:19 +00:00
|
|
|
OUTPUT_QUIET
|
|
|
|
ERROR_QUIET
|
|
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
|
|
)
|
|
|
|
endif()
|
2017-10-08 01:17:52 +00:00
|
|
|
endif()
|
2017-08-27 20:15:29 +00:00
|
|
|
|
2017-10-12 02:17:25 +00:00
|
|
|
# no git or no tags, use ChangeLog
|
2017-10-08 01:17:52 +00:00
|
|
|
if(NOT VERSION)
|
2017-10-12 02:17:25 +00:00
|
|
|
include(ChangeLogVersion)
|
|
|
|
changelog_version(VERSION REVISION VERSION_RELEASE)
|
2017-08-27 20:15:29 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# generate version.h
|
|
|
|
include_directories(${CMAKE_BINARY_DIR})
|
2019-10-02 23:32:35 +00:00
|
|
|
string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1,\\2,\\3,0" WIN_VERSION "${VERSION}")
|
2017-08-27 20:15:29 +00:00
|
|
|
configure_file("${CMAKE_SOURCE_DIR}/src/version.h.in" "${CMAKE_BINARY_DIR}/version.h" @ONLY)
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2022-02-03 00:18:08 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
2018-02-24 19:39:29 +00:00
|
|
|
add_definitions(-DDEBUG)
|
|
|
|
else()
|
|
|
|
add_definitions(-DNDEBUG)
|
|
|
|
endif()
|
2016-11-20 14:15:27 +00:00
|
|
|
|
2017-02-11 22:18:38 +00:00
|
|
|
# hack for ninja in msys2
|
2019-12-24 06:32:01 +00:00
|
|
|
if(WIN32 AND CMAKE_GENERATOR STREQUAL Ninja AND NOT "$ENV{MSYSTEM_PREFIX}" STREQUAL "")
|
2018-02-24 19:39:29 +00:00
|
|
|
set(MSYS ON)
|
|
|
|
endif()
|
2017-02-11 22:18:38 +00:00
|
|
|
|
2022-01-31 03:26:52 +00:00
|
|
|
include(VbamFunctions)
|
|
|
|
|
|
|
|
if(MSYS AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
|
|
if($ENV{MSYSTEM} STREQUAL CLANG64)
|
|
|
|
cygpath(prefix "$ENV{MSYSTEM_PREFIX}/x86_64-w64-mingw32")
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
|
|
|
elseif($ENV{MSYSTEM} STREQUAL CLANG32)
|
|
|
|
cygpath(prefix "$ENV{MSYSTEM_PREFIX}/i686-w64-mingw32")
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${prefix}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" CACHE INTERNAL "prefix search path for find_XXXX" FORCE)
|
|
|
|
endif()
|
|
|
|
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
# Add support for Homebrew, MacPorts and Fink on macOS
|
|
|
|
option(DISABLE_MACOS_PACKAGE_MANAGERS "Set to TRUE to disable support for macOS Homebrew, MacPorts and Fink." FALSE)
|
|
|
|
|
|
|
|
if(APPLE AND NOT DISABLE_MACOS_PACKAGE_MANAGERS)
|
2018-02-24 19:39:29 +00:00
|
|
|
include(MacPackageManagers)
|
|
|
|
endif()
|
more minor improvements for OS X build
Add Homebrew and MacPorts paths for findings headers and libraries.
Add -x objective-c++ to the C++ compile command so that conditionally
compiled ObjectiveC code for OS X can be supported.
Throw a fatal error if the user tries to enable ENABLE_ASM_CORE,
ENABLE_ASM_SCALERS or ENABLE_MMX on AMD64, as this is not supported yet.
If ENABLE_ASM_SCALERS is enabled, try to find a Homebrew or MacPorts
nasm before using the outdated XCode nasm.
For the future, if the user has only the old XCode nasm which does not
support 64 bit objects and the build is 64 bit, throw a fatal error.
For 32 bit builds with the old XCode nasm, use -f macho instead of -f
macho32, which is used if the version of nasm is > 2.0 .
Pass -DMACHO instead of -DELF and, on AMD64 (for the future) -D__AMD64__
for nasm on OS X.
Pass -D__AMD64__ to C++ compilation as well on AMD64, this will help
when we support AMD64 inline assembly.
Add support for automatically linking Homebrew keg-only gettext from
/usr/local/opt/gettext for ENABLE_NLS.
Fix copying Info.plist and vbam.icns to the .app bundle.
Add a key to the Info.plist to support sharp text on retina displays, as
per:
https://wiki.wxwidgets.org/WxMac-specific_topics#Retina_display_support
Set wxWidgets_USE_DEBUG to ON if CMAKE_BUILD_TYPE is "Debug". I'm not
sure this does anything or if I'm doing this correctly though.
Also set wxWidgets_USE_UNICODE to ON. Again, I'm not sure this does
anything or is in the right place.
Fix a bug in the config dir finding code in
wxvbamApp::GetConfigurationPath() updated in 8b8f2f7 to only use the
more top level dirs if there is a vbam.ini in them, not if they are
writable as well, and use the reverse order (starting with user local
dirs) to check for writable dirs and their writable parents. This fixes
a problem with the vbam.ini being written to the Plugins directory of
the .app bundle if it's writable instead of ~/Library/Application
Support/vbam as was intended.
2015-11-17 02:56:23 +00:00
|
|
|
|
|
|
|
# We do not support amd64 asm yet
|
2021-11-01 01:23:34 +00:00
|
|
|
if(X86_64 AND (ENABLE_ASM_CORE OR ENABLE_ASM_SCALERS OR ENABLE_MMX))
|
|
|
|
message(FATAL_ERROR "The options ASM_CORE, ASM_SCALERS and MMX are not supported on X86_64 yet.")
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
more minor improvements for OS X build
Add Homebrew and MacPorts paths for findings headers and libraries.
Add -x objective-c++ to the C++ compile command so that conditionally
compiled ObjectiveC code for OS X can be supported.
Throw a fatal error if the user tries to enable ENABLE_ASM_CORE,
ENABLE_ASM_SCALERS or ENABLE_MMX on AMD64, as this is not supported yet.
If ENABLE_ASM_SCALERS is enabled, try to find a Homebrew or MacPorts
nasm before using the outdated XCode nasm.
For the future, if the user has only the old XCode nasm which does not
support 64 bit objects and the build is 64 bit, throw a fatal error.
For 32 bit builds with the old XCode nasm, use -f macho instead of -f
macho32, which is used if the version of nasm is > 2.0 .
Pass -DMACHO instead of -DELF and, on AMD64 (for the future) -D__AMD64__
for nasm on OS X.
Pass -D__AMD64__ to C++ compilation as well on AMD64, this will help
when we support AMD64 inline assembly.
Add support for automatically linking Homebrew keg-only gettext from
/usr/local/opt/gettext for ENABLE_NLS.
Fix copying Info.plist and vbam.icns to the .app bundle.
Add a key to the Info.plist to support sharp text on retina displays, as
per:
https://wiki.wxwidgets.org/WxMac-specific_topics#Retina_display_support
Set wxWidgets_USE_DEBUG to ON if CMAKE_BUILD_TYPE is "Debug". I'm not
sure this does anything or if I'm doing this correctly though.
Also set wxWidgets_USE_UNICODE to ON. Again, I'm not sure this does
anything or is in the right place.
Fix a bug in the config dir finding code in
wxvbamApp::GetConfigurationPath() updated in 8b8f2f7 to only use the
more top level dirs if there is a vbam.ini in them, not if they are
writable as well, and use the reverse order (starting with user local
dirs) to check for writable dirs and their writable parents. This fixes
a problem with the vbam.ini being written to the Plugins directory of
the .app bundle if it's writable instead of ~/Library/Application
Support/vbam as was intended.
2015-11-17 02:56:23 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_ASM_CORE OR ENABLE_ASM_SCALERS)
|
2019-12-15 19:34:18 +00:00
|
|
|
if(MSVC)
|
|
|
|
if(NOT EXISTS ${CMAKE_BINARY_DIR}/nuget.exe)
|
|
|
|
file(DOWNLOAD "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" ${CMAKE_BINARY_DIR}/nuget.exe)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
execute_process(
|
|
|
|
COMMAND nuget.exe install nasm2 -OutputDirectory ${CMAKE_BINARY_DIR}/nuget
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
|
|
)
|
|
|
|
|
|
|
|
file(GLOB pkg ${CMAKE_BINARY_DIR}/nuget/nasm2*)
|
|
|
|
|
|
|
|
list(APPEND CMAKE_PROGRAM_PATH ${pkg}/tools)
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
enable_language(ASM_NASM)
|
2019-12-15 19:34:18 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(ASM_ENABLED ON)
|
|
|
|
endif()
|
2011-02-24 11:14:59 +00:00
|
|
|
|
2010-03-15 03:36:45 +00:00
|
|
|
# Look for some dependencies using CMake scripts
|
2018-02-24 19:39:29 +00:00
|
|
|
find_package(ZLIB REQUIRED)
|
2019-03-28 21:45:06 +00:00
|
|
|
|
2019-04-27 22:52:42 +00:00
|
|
|
set(OpenGL_GL_PREFERENCE GLVND)
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
|
|
|
|
set(OpenGL_GL_PREFERENCE LEGACY)
|
|
|
|
endif()
|
2019-03-28 21:45:06 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
find_package(OpenGL REQUIRED)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
find_package(SDL2 REQUIRED)
|
2011-02-24 11:14:59 +00:00
|
|
|
|
2019-04-15 03:28:18 +00:00
|
|
|
if(WIN32)
|
2022-02-04 04:44:14 +00:00
|
|
|
set(SDL2_LIBRARY ${SDL2_LIBRARY} setupapi winmm)
|
2019-04-15 03:28:18 +00:00
|
|
|
endif()
|
|
|
|
|
2011-05-25 11:55:46 +00:00
|
|
|
# set the standard libraries all ports use
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
VBAMCORE_LIBS
|
2011-05-25 11:55:46 +00:00
|
|
|
vbamcore
|
|
|
|
fex
|
2015-11-19 02:34:38 +00:00
|
|
|
${SDL2_LIBRARY}
|
2015-05-06 01:27:09 +00:00
|
|
|
${SFML_LIBRARIES}
|
2011-05-25 11:55:46 +00:00
|
|
|
${OPENGL_LIBRARIES}
|
|
|
|
${ZLIB_LIBRARY}
|
2015-03-27 17:48:42 +00:00
|
|
|
)
|
2011-02-24 11:14:59 +00:00
|
|
|
|
2011-05-24 07:39:29 +00:00
|
|
|
if(ENABLE_FFMPEG)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
if(NOT FFMPEG_LIBRARIES)
|
|
|
|
message(FATAL_ERROR "ENABLE_FFMPEG was specified, but required versions of ffmpeg libraries cannot be found!")
|
|
|
|
endif()
|
2017-10-22 22:35:56 +00:00
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
if(APPLE)
|
|
|
|
set(FFMPEG_LDFLAGS ${FFMPEG_LDFLAGS} -framework CoreText -framework ApplicationServices)
|
2023-05-31 13:36:12 +00:00
|
|
|
|
|
|
|
if(UPSTREAM_RELEASE)
|
2023-10-20 23:25:14 +00:00
|
|
|
set(FFMPEG_LDFLAGS ${FFMPEG_LDFLAGS} -lbz2 -ltiff -framework DiskArbitration -lfreetype -lfontconfig -llzma -lxml2 -lharfbuzz)
|
2023-05-31 13:36:12 +00:00
|
|
|
endif()
|
2022-01-31 03:26:52 +00:00
|
|
|
elseif(WIN32)
|
2022-02-02 00:44:41 +00:00
|
|
|
set(WIN32_MEDIA_FOUNDATION_LIBS dxva2 evr mf mfplat mfplay mfreadwrite mfuuid amstrmid)
|
2022-01-31 03:26:52 +00:00
|
|
|
list(APPEND FFMPEG_LIBRARIES secur32 bcrypt ${WIN32_MEDIA_FOUNDATION_LIBS})
|
|
|
|
|
|
|
|
if(MSYS AND VBAM_STATIC)
|
|
|
|
foreach(lib tiff jbig lzma)
|
|
|
|
cygpath(lib "$ENV{MSYSTEM_PREFIX}/lib/lib${lib}.a")
|
|
|
|
|
|
|
|
list(APPEND FFMPEG_LIBRARIES "${lib}")
|
|
|
|
endforeach()
|
|
|
|
endif()
|
2017-10-22 22:35:56 +00:00
|
|
|
endif()
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
else()
|
|
|
|
add_definitions(-DNO_FFMPEG)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2011-05-24 07:39:29 +00:00
|
|
|
|
2019-07-10 23:47:16 +00:00
|
|
|
if(NOT ENABLE_ONLINEUPDATES)
|
|
|
|
add_definitions(-DNO_ONLINEUPDATES)
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_LIRC)
|
2019-03-27 03:25:43 +00:00
|
|
|
set(WITHLIRC 1)
|
2018-02-24 19:39:29 +00:00
|
|
|
else()
|
2019-03-27 03:25:43 +00:00
|
|
|
set(WITHLIRC 0)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
include(GNUInstallDirs)
|
2008-06-06 10:17:20 +00:00
|
|
|
|
|
|
|
# C defines
|
2018-02-24 19:39:29 +00:00
|
|
|
add_definitions(-DHAVE_NETINET_IN_H -DHAVE_ARPA_INET_H -DHAVE_ZLIB_H -DFINAL_VERSION -DSDL -DUSE_OPENGL -DSYSCONF_INSTALL_DIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}" -DWITH_LIRC=${WITHLIRC})
|
|
|
|
add_definitions(-DPKGDATADIR="${CMAKE_INSTALL_FULL_DATADIR}/vbam" -DPACKAGE=)
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2019-08-31 22:58:59 +00:00
|
|
|
add_definitions(-D__STDC_FORMAT_MACROS)
|
|
|
|
|
2022-09-29 22:24:13 +00:00
|
|
|
# For C++, default to nonstd::optional and nonstd::variant for now due to mac
|
|
|
|
# build issues.
|
2023-10-24 17:22:47 +00:00
|
|
|
if(APPLE)
|
|
|
|
add_definitions(-Doptional_CONFIG_SELECT_OPTIONAL=optional_OPTIONAL_NONSTD)
|
|
|
|
add_definitions(-Dvariant_CONFIG_SELECT_VARIANT=variant_VARIANT_NONSTD)
|
|
|
|
else()
|
|
|
|
add_definitions(-Doptional_CONFIG_SELECT_OPTIONAL=optional_OPTIONAL_STD)
|
|
|
|
add_definitions(-Dvariant_CONFIG_SELECT_VARIANT=variant_VARIANT_STD)
|
|
|
|
endif()
|
2022-08-06 12:59:10 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_LINK)
|
2012-09-07 19:09:16 +00:00
|
|
|
# IPC linking code needs sem_timedwait which can be either in librt or pthreads
|
2018-08-10 23:47:17 +00:00
|
|
|
if(NOT WIN32)
|
|
|
|
find_library(RT_LIB rt)
|
|
|
|
if(RT_LIB)
|
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${RT_LIB})
|
|
|
|
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} ${RT_LIB})
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
|
2018-08-10 23:47:17 +00:00
|
|
|
if(NOT WIN32)
|
|
|
|
find_library(PTHREAD_LIB pthread)
|
|
|
|
if(PTHREAD_LIB)
|
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${PTHREAD_LIB})
|
|
|
|
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} ${PTHREAD_LIB})
|
|
|
|
endif()
|
|
|
|
elseif(MINGW)
|
2022-04-13 21:26:27 +00:00
|
|
|
if(NOT VBAM_STATIC)
|
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} -lpthread)
|
|
|
|
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} -lpthread)
|
|
|
|
else()
|
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} "-Wl,-Bstatic -lwinpthread -Wl,-Bdynamic")
|
|
|
|
set(VBAMCORE_LIBS ${VBAMCORE_LIBS} "-Wl,-Bstatic -lwinpthread -Wl,-Bdynamic")
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
include(CheckFunctionExists)
|
|
|
|
check_function_exists(sem_timedwait SEM_TIMEDWAIT)
|
|
|
|
if(SEM_TIMEDWAIT)
|
|
|
|
add_definitions(-DHAVE_SEM_TIMEDWAIT)
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
add_definitions(-DNO_LINK)
|
|
|
|
endif()
|
2011-02-20 12:22:58 +00:00
|
|
|
|
2008-06-16 20:18:49 +00:00
|
|
|
# The debugger is enabled by default
|
2018-02-24 19:39:29 +00:00
|
|
|
if(NOT ENABLE_DEBUGGER)
|
|
|
|
add_definitions(-DNO_DEBUGGER)
|
|
|
|
else()
|
|
|
|
add_definitions(-DBKPT_SUPPORT)
|
|
|
|
endif()
|
2008-06-16 20:18:49 +00:00
|
|
|
|
2008-06-06 10:17:20 +00:00
|
|
|
# The ASM core is disabled by default because we don't know on which platform we are
|
2018-02-24 19:39:29 +00:00
|
|
|
if(NOT ENABLE_ASM_CORE)
|
|
|
|
add_definitions(-DC_CORE)
|
|
|
|
endif()
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2019-12-12 19:01:58 +00:00
|
|
|
set(NLS_DEFAULT ON)
|
2019-08-19 20:15:01 +00:00
|
|
|
|
auto deps for visual studio, take 1
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>
2019-03-21 23:01:46 +00:00
|
|
|
option(ENABLE_NLS "Enable translations" ${NLS_DEFAULT})
|
|
|
|
|
2011-02-24 13:06:17 +00:00
|
|
|
# Enable internationalization
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_NLS)
|
|
|
|
set(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale)
|
|
|
|
add_definitions(-DENABLE_NLS)
|
|
|
|
add_definitions(-DLOCALEDIR="${LOCALEDIR}")
|
2011-05-25 11:55:46 +00:00
|
|
|
# for now, only GBALink.cpp uses gettext() directly
|
2018-02-24 19:39:29 +00:00
|
|
|
if(APPLE)
|
more minor improvements for OS X build
Add Homebrew and MacPorts paths for findings headers and libraries.
Add -x objective-c++ to the C++ compile command so that conditionally
compiled ObjectiveC code for OS X can be supported.
Throw a fatal error if the user tries to enable ENABLE_ASM_CORE,
ENABLE_ASM_SCALERS or ENABLE_MMX on AMD64, as this is not supported yet.
If ENABLE_ASM_SCALERS is enabled, try to find a Homebrew or MacPorts
nasm before using the outdated XCode nasm.
For the future, if the user has only the old XCode nasm which does not
support 64 bit objects and the build is 64 bit, throw a fatal error.
For 32 bit builds with the old XCode nasm, use -f macho instead of -f
macho32, which is used if the version of nasm is > 2.0 .
Pass -DMACHO instead of -DELF and, on AMD64 (for the future) -D__AMD64__
for nasm on OS X.
Pass -D__AMD64__ to C++ compilation as well on AMD64, this will help
when we support AMD64 inline assembly.
Add support for automatically linking Homebrew keg-only gettext from
/usr/local/opt/gettext for ENABLE_NLS.
Fix copying Info.plist and vbam.icns to the .app bundle.
Add a key to the Info.plist to support sharp text on retina displays, as
per:
https://wiki.wxwidgets.org/WxMac-specific_topics#Retina_display_support
Set wxWidgets_USE_DEBUG to ON if CMAKE_BUILD_TYPE is "Debug". I'm not
sure this does anything or if I'm doing this correctly though.
Also set wxWidgets_USE_UNICODE to ON. Again, I'm not sure this does
anything or is in the right place.
Fix a bug in the config dir finding code in
wxvbamApp::GetConfigurationPath() updated in 8b8f2f7 to only use the
more top level dirs if there is a vbam.ini in them, not if they are
writable as well, and use the reverse order (starting with user local
dirs) to check for writable dirs and their writable parents. This fixes
a problem with the vbam.ini being written to the Plugins directory of
the .app bundle if it's writable instead of ~/Library/Application
Support/vbam as was intended.
2015-11-17 02:56:23 +00:00
|
|
|
# use Homebrew gettext if available
|
2018-02-24 19:39:29 +00:00
|
|
|
if(EXISTS "/usr/local/opt/gettext")
|
|
|
|
set(CMAKE_INCLUDE_PATH "${CMAKE_INCLUDE_PATH};/usr/local/opt/gettext/include")
|
|
|
|
set(CMAKE_LIBRARY_PATH "${CMAKE_LIBRARY_PATH};/usr/local/opt/gettext/lib")
|
|
|
|
set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};/usr/local/opt/gettext/bin")
|
|
|
|
endif()
|
|
|
|
endif()
|
2019-12-12 19:01:58 +00:00
|
|
|
if(ENABLE_LINK OR ENABLE_WX)
|
2018-02-24 19:39:29 +00:00
|
|
|
find_path(LIBINTL_INC libintl.h)
|
2020-02-02 02:14:03 +00:00
|
|
|
find_library(LIBINTL_LIB NAMES libintl intl)
|
|
|
|
find_library(LIBICONV_LIB NAMES libiconv iconv)
|
|
|
|
find_library(LIBCHARSET_LIB NAMES libcharset charset)
|
2018-02-24 19:39:29 +00:00
|
|
|
if(LIBINTL_LIB)
|
2019-12-12 19:01:58 +00:00
|
|
|
list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBINTL_LIB})
|
|
|
|
list(APPEND VBAMCORE_LIBS ${LIBINTL_LIB})
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
if(LIBICONV_LIB)
|
2019-12-12 19:01:58 +00:00
|
|
|
list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBICONV_LIB})
|
|
|
|
list(APPEND VBAMCORE_LIBS ${LIBICONV_LIB})
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2020-01-17 16:03:07 +00:00
|
|
|
if(LIBCHARSET_LIB)
|
|
|
|
list(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBCHARSET_LIB})
|
|
|
|
list(APPEND VBAMCORE_LIBS ${LIBCHARSET_LIB})
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
include(CheckFunctionExists)
|
|
|
|
check_function_exists(gettext GETTEXT_FN)
|
|
|
|
if(NOT (LIBINTL_INC OR GETTEXT_FN))
|
|
|
|
message(FATAL_ERROR "NLS requires libintl/gettext")
|
|
|
|
endif()
|
|
|
|
include_directories(${LIBINTL_INC})
|
|
|
|
endif()
|
|
|
|
endif()
|
2011-02-24 13:06:17 +00:00
|
|
|
|
2017-09-19 13:58:48 +00:00
|
|
|
include(ProcessorCount)
|
|
|
|
ProcessorCount(num_cpus)
|
|
|
|
|
2019-03-20 01:41:25 +00:00
|
|
|
# Compiler stuff
|
|
|
|
|
2021-11-01 01:23:34 +00:00
|
|
|
option(UPSTREAM_RELEASE "do some optimizations and release automation tasks" OFF)
|
|
|
|
|
2022-02-02 22:27:39 +00:00
|
|
|
include(SetCompilerLinkerFlags)
|
|
|
|
|
2022-10-09 06:26:41 +00:00
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL Clang AND CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT MSVC)
|
|
|
|
# TODO: This should also be done for clang-cl.
|
2019-03-20 01:41:25 +00:00
|
|
|
include(LLVMToolchain)
|
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2022-10-09 06:26:41 +00:00
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT MSVC)
|
2019-03-26 14:49:48 +00:00
|
|
|
unset(LTO_FLAGS)
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_LTO)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
2017-09-19 13:58:48 +00:00
|
|
|
if(num_cpus GREATER 1)
|
2018-02-24 19:39:29 +00:00
|
|
|
set(LTO_FLAGS -flto=${num_cpus} -ffat-lto-objects)
|
2017-09-19 13:58:48 +00:00
|
|
|
else()
|
2018-02-24 19:39:29 +00:00
|
|
|
set(LTO_FLAGS -flto -ffat-lto-objects)
|
2017-09-19 13:58:48 +00:00
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
else()
|
|
|
|
set(LTO_FLAGS -flto)
|
|
|
|
endif()
|
2019-03-26 14:49:48 +00:00
|
|
|
|
|
|
|
# check that LTO is not broken before enabling it
|
|
|
|
set(ORIG_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
|
|
|
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${LTO_FLAGS}")
|
|
|
|
|
|
|
|
include(CheckCXXSourceCompiles)
|
|
|
|
check_cxx_source_compiles("int main(int argc, char** argv) { return 0; }" LTO_WORKS)
|
|
|
|
|
|
|
|
set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
|
|
|
|
|
|
|
|
if(NOT LTO_WORKS)
|
|
|
|
message(WARNING "LTO does not seem to be working on your system, if using clang make sure LLVMGold is installed")
|
|
|
|
unset(LTO_FLAGS)
|
|
|
|
set(ENABLE_LTO OFF)
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2016-11-23 11:13:33 +00:00
|
|
|
|
2017-10-17 17:26:37 +00:00
|
|
|
unset(MY_C_OPT_FLAGS)
|
|
|
|
|
2021-11-01 01:23:34 +00:00
|
|
|
if(X86_32 OR X86_64)
|
2017-10-17 17:26:37 +00:00
|
|
|
set(MY_C_OPT_FLAGS -mfpmath=sse -msse2)
|
|
|
|
endif()
|
|
|
|
|
2016-11-21 20:37:21 +00:00
|
|
|
# common optimization flags
|
2018-02-24 19:39:29 +00:00
|
|
|
if(NOT (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL Clang AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3))
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
set(MY_C_OPT_FLAGS ${MY_C_OPT_FLAGS} -Ofast -fomit-frame-pointer ${LTO_FLAGS})
|
2018-02-24 19:39:29 +00:00
|
|
|
else()
|
2017-02-03 20:39:10 +00:00
|
|
|
# LTO and -fomit-frame-pointer generate broken binaries on Lion with XCode 4.2 tools
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
set(MY_C_OPT_FLAGS ${MY_C_OPT_FLAGS} -Ofast)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2017-08-30 21:42:08 +00:00
|
|
|
|
2021-11-01 01:23:34 +00:00
|
|
|
# Common flags.
|
2022-01-31 03:26:52 +00:00
|
|
|
set(MY_C_FLAGS -pipe -Wno-unused-command-line-argument -Wformat -Wformat-security -feliminate-unused-debug-types)
|
|
|
|
|
2022-08-26 17:09:06 +00:00
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
# Require and optimize for Core2 level support, tune for generic.
|
2022-01-31 03:26:52 +00:00
|
|
|
if(X86_64)
|
2022-10-16 18:37:03 +00:00
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -march=core2 -mtune=generic)
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
# Optimize for pentium-mmx and tune for generic for older XP builds.
|
2022-01-31 03:26:52 +00:00
|
|
|
elseif(X86_32)
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -march=pentium-mmx -mtune=generic)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2019-07-10 23:47:16 +00:00
|
|
|
|
builder: update core dists and macOS build
cmake:
Add cmake option `DISABLE_MACOS_PACKAGE_MANAGERS` to disable
automatically using macOS Homebrew, MacPorts or Fink.
Use `-Ofast` instead of `-O2` for default compiler optimization flags,
which enables `-ffast-math` among a few other tweaks. There is a lot of
controversy about this, but in our testing on MSVC with `/fp:fast` the
performance increase for this specific app is dramatic.
Update version regexps on the SFML headers in `FindSFML.cmake` to allow
for a variable number of spaces between the macro and its definition.
Update the version of the Sparkle update checker framework for macOS
from 1.23.0 to 2.3.0-beta.2, and add a command to the cmake commands for
copying the framework to the `.app` to delete it first if already
copied.
Builder dist changes:
Updates:
dist old v new v
==============================================================
xz 5.2.4 5.2.6
openssl 1.1.1f 1.1.1g
curl 7.65.3 7.85.0
ccache 3.4.3 4.6.3
cmake 3.19.4 3.24.1
autoconf 2.69 2.71
autoconf-archive 2017.09.28 2022.09.03
libtool 2.4.6 2.4.7
help2man 1.47.5 1.49.2
libiconv 1.16 1.17
gsed 4.4 4.8
bison 3.0.5 3.8.2
texinfo 6.5 6.8
flex e7d45afc ea6493d9
libicu 65_1 71_1
nasm 2.14.02 2.15.05
pcre 8.41 8.45
libffi 3.2.1 3.4.2
libxml2 2.9.12 2.10.2
libxslt 1.1.33-rc2 1.1.37
XML-SAX 0.99 1.02
expat 2.2.4 2.4.8
libjpeg-turbo 2.0.4 2.1.4
libtiff 4.1.0 4.4.0
freetype 2.10.0 2.12.1
libgd 2.2.5 2.3.3
liberation 2.0.1 2.1.5
urw 91edd6ec 20200910
graphviz 4bf0ec9b 5.0.1
python2 2.7.15 2.7.18
python3 3.9.1 3.10.6
swig 3.0.12 4.0.2
doxygen 1.8.14 1.9.5
bakefile 33c270a5 7a218d89
XML-Parser 2.44 2.46
ninja 1.9.0 1.11.1
meson 0.51.2 0.63.2
glib 2.62.2 51251940
libgpg-error 1.41 1.45
libgcrypt 1.8.5 1.10.1
libsecret 0.19.1 0.20.5
sdl2 2.0.10 2.24.0
flac 1.3.3 1.3.4
libogg 1.3.4 1.3.5
libvorbis 1.3.6 1.3.7
harfbuzz 1.7.5 5.1.0
sfml 03375688 2.5.1
shared-mime-info 1.9 2.2
wxwidgets 9cc0c9a0 31720e1e
graphite2 ce0e793f 425da3d0
xvidcore 1.3.5 1.3.7
fribidi 1.0.1 1.0.12
libgsm 1.0.18 1.0.22
libmodplug 5a39f591 d1b97ed0
libopencore-amrnb 0.1.5 0.1.6
snappy 1.1.7 af720f9a
speex 1.2.0 1.2.1
vidstab 1.1.0 90c76aca
libvo-amrwbenc 0.1.3 3b3fcd0d
libass 0.14.0 0.16.0
libbluray 1.1.2 1.3.2
libvpx 1.8.1 1.12.0
libx264 20190913-2245 f7074e12
libxavs distrotech-xavs-git 8300fbf4
libzmq 4.2.2 4.3.4
ffmpeg 4.3.1 5.1.1
Removed dists:
dist ver
=========================
zlib 1.2.11
pkgconfig 0.29.2
docbook5.0 5.0
libwavpack 5.1.0
Added dists:
dist ver
========================
zlib-ng ce01b1e4
zstd 1.5.2
hiredis 1.0.2
pkgconf 1.9.3
pcre2 10.40
docbook5.0.1 5.0.1
docbook5.1 5.1
Changes:
Update all non-working dist URLs.
Replace zlib 1.2.11 with a recent zlib-ng built with `--zlib-compat`.
Add zstd and hiredis, new deps of ccache.
Replace pkgconfig with pkgconf.
Use both pcre1 and pcre2.
Remove the libxml2-python dist alias and rebuild libxml2 `--with-python`
and `--with-python3` after python 2 and 3 have built.
Remove libwavpack as ffmpeg 5 no longer uses it as a dependency.
Builder core:
Rename some of the directories and files to be a bit nicer.
Add `-Ofast -march=core2 -mtune=generic -pipe` to the global
`{C,CXX,OBJC,LD}FLAGS`. These are the optimization settings used by
default in the project as well, while `-pipe` significantly reduces
build time by making the compiler use pipes internally.
Add `-DFLOAT_APPROX` to the global `{CPP,C,CXX,OBJC}FLAGS` because we
are now using `-Ofast` and consequently, `-ffast-math`.
Set the `LIBRARY_PATH` variable in the global environment.
Make some adjustments for the new dist versions and make some other
improvements.
macOS builder fixes (tested on High Sierra 10.13 and Catalina 10.15):
Add support for predefined BUILD_ROOT and append BUILD_ROOT_SUFFIX.
Allow pre-defined CHECKOUT directory for building the project sources.
Sanitize `PATH` before build to remove `/usr/local` etc., use
/usr/local/bin/brew explicitly for deps instead.
If llvm and clang is installed from nix or brew, prepend the path of the
highest version found to `PATH`.
Remove `-lm` from build environment as macOS has never had an `m` math
library and this causes problems in some config checks.
Add LLVM `libunwind` from the LLVM archive.
Add a patch for `glib`'s `meson.build` to statically link
`gettext`/`libintl`, adds `-liconv -framework CoreFoundation`.
Add an extra location to check for `stdint.h` in XCode.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2022-11-11 14:19:47 +00:00
|
|
|
# Check for -fopenmp=libomp on clang.
|
|
|
|
# if(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
|
|
# check_cxx_compiler_flag("-fopenmp=libomp" FOPENMP_LIBOMP_FLAG)
|
|
|
|
# if(FOPENMP_LIBOMP_FLAG)
|
|
|
|
# set(MY_C_FLAGS ${MY_C_FLAGS} -fopenmp=libomp)
|
|
|
|
# endif()
|
|
|
|
# endif()
|
|
|
|
|
2016-11-21 20:37:21 +00:00
|
|
|
# common debug flags
|
2018-02-24 19:39:29 +00:00
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
2019-01-02 16:23:26 +00:00
|
|
|
set(MY_C_DBG_FLAGS -ggdb3 -Og -fno-omit-frame-pointer)
|
2018-02-24 19:39:29 +00:00
|
|
|
else()
|
2019-01-02 16:23:26 +00:00
|
|
|
set(MY_C_DBG_FLAGS -g -fno-omit-frame-pointer)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(ENABLE_ASAN)
|
2023-04-12 02:43:13 +00:00
|
|
|
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
|
|
message(FATAL_ERROR "asan requires a debug build, set -DCMAKE_BUILD_TYPE=Debug")
|
2019-01-02 16:23:26 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
string(TOLOWER ${ENABLE_ASAN} SANITIZER)
|
|
|
|
if(SANITIZER STREQUAL "on" OR SANITIZER STREQUAL "true")
|
|
|
|
set(SANITIZER address)
|
|
|
|
endif()
|
2019-10-10 00:52:50 +00:00
|
|
|
list(PREPEND CMAKE_REQUIRED_LIBRARIES -fsanitize=${SANITIZER})
|
|
|
|
check_cxx_compiler_flag("-fsanitize=${SANITIZER}" ASAN_SUPPORT_FLAG)
|
2019-09-02 20:17:52 +00:00
|
|
|
if(${ASAN_SUPPORT_FLAG})
|
2019-10-10 00:52:50 +00:00
|
|
|
list(PREPEND MY_C_DBG_FLAGS -fsanitize=${SANITIZER})
|
2019-09-02 20:17:52 +00:00
|
|
|
else()
|
|
|
|
message(FATAL_ERROR "asan not available to compiler.")
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2016-11-21 20:37:21 +00:00
|
|
|
|
2019-10-17 21:53:15 +00:00
|
|
|
if(ENABLE_SSP AND CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
|
|
if(WIN32)
|
|
|
|
set(SSP_STATIC ON)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
find_package(SSP)
|
|
|
|
|
|
|
|
if(SSP_LIBRARY)
|
|
|
|
list(APPEND MY_C_FLAGS -D_FORTIFY_SOURCE=2)
|
|
|
|
list(APPEND MY_C_LINKER_FLAGS ${SSP_LIBRARY})
|
|
|
|
endif()
|
2019-10-08 22:52:06 +00:00
|
|
|
endif()
|
2017-03-08 00:15:02 +00:00
|
|
|
|
2019-02-22 14:53:51 +00:00
|
|
|
if(NOT (WIN32 OR X86_32)) # inline asm is not allowed with -fPIC
|
2018-02-24 19:39:29 +00:00
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -fPIC)
|
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2017-03-12 03:19:47 +00:00
|
|
|
# check if ssp flags are supported for this version of gcc
|
2018-02-24 19:39:29 +00:00
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
2018-08-10 23:35:49 +00:00
|
|
|
if(ENABLE_SSP)
|
|
|
|
check_cxx_compiler_flag(-fstack-protector-strong F_STACK_PROTECTOR_STRONG_FLAG)
|
2017-03-12 03:19:47 +00:00
|
|
|
|
2018-08-10 23:35:49 +00:00
|
|
|
if(F_STACK_PROTECTOR_STRONG_FLAG)
|
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -fstack-protector-strong)
|
2017-01-29 18:14:34 +00:00
|
|
|
|
2018-08-10 23:35:49 +00:00
|
|
|
check_cxx_compiler_flag("--param ssp-buffer-size=4" SSP_BUFFER_SIZE_FLAG)
|
2017-01-29 18:14:34 +00:00
|
|
|
|
2018-08-10 23:35:49 +00:00
|
|
|
if(SSP_BUFFER_SIZE_FLAG)
|
|
|
|
# we do not add it to MY_C_FLAGS because this breaks things like CMAKE_REQUIRED_LIBRARIES
|
|
|
|
# which misinterpret compiler flags without leading dashes
|
|
|
|
add_compile_options(--param ssp-buffer-size=4)
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2017-01-29 18:14:34 +00:00
|
|
|
|
2019-01-30 22:29:06 +00:00
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -fopenmp)
|
|
|
|
endif()
|
|
|
|
|
2019-03-26 00:35:23 +00:00
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
|
|
|
|
unset(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
check_cxx_compiler_flag(-fdiagnostics-color=always COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
if(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
add_compile_options(-fdiagnostics-color=always)
|
|
|
|
else()
|
|
|
|
unset(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
check_cxx_compiler_flag(-fdiagnostics-color COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
if(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
add_compile_options(-fdiagnostics-color)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
|
|
|
unset(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
check_cxx_compiler_flag(-fcolor-diagnostics COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
if(COMPILER_COLOR_DIAGNOSTICS)
|
|
|
|
add_compile_options(-fcolor-diagnostics)
|
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(MINGW)
|
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} -static-libgcc -static-libstdc++)
|
|
|
|
endif()
|
|
|
|
|
2022-02-03 00:18:08 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
2018-02-24 19:39:29 +00:00
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} ${MY_C_DBG_FLAGS} -Wall -Wextra)
|
|
|
|
else()
|
|
|
|
set(MY_C_FLAGS ${MY_C_FLAGS} ${MY_C_OPT_FLAGS} -Wno-error)
|
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2019-04-25 16:22:07 +00:00
|
|
|
# for some reason this is necessary
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
|
|
|
|
set(MY_C_FLAGS -I/usr/local/include ${MY_C_FLAGS})
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
foreach(C_COMPILE_FLAG ${MY_C_FLAGS})
|
|
|
|
add_compile_options(${C_COMPILE_FLAG})
|
|
|
|
endforeach()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2019-08-31 22:58:59 +00:00
|
|
|
include(CheckCXXCompilerFlag)
|
|
|
|
|
2020-09-28 12:09:54 +00:00
|
|
|
check_cxx_compiler_flag(-std=gnu++17 GNUPP17_FLAG)
|
|
|
|
|
|
|
|
if(NOT GNUPP17_FLAG)
|
|
|
|
message(FATAL_ERROR "Your compiler does not support -std=gnu++17.")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(MY_CXX_FLAGS -std=gnu++17 -fexceptions)
|
2017-03-08 00:15:02 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
foreach(ARG ${MY_CXX_FLAGS})
|
|
|
|
set(MY_CXX_FLAGS_STR "${MY_CXX_FLAGS_STR} ${ARG}")
|
|
|
|
endforeach()
|
2017-03-08 00:15:02 +00:00
|
|
|
|
2017-02-12 12:41:57 +00:00
|
|
|
# These must be set for C++ only, and we can't use generator expressions in
|
|
|
|
# ADD_COMPILE_OPTIONS because that's a cmake 3.3 feature and we need 2.8.12
|
|
|
|
# compat for Ubuntu 14.
|
2018-02-24 19:39:29 +00:00
|
|
|
string(REGEX REPLACE "<FLAGS>" "<FLAGS> ${MY_CXX_FLAGS_STR} " CMAKE_CXX_COMPILE_OBJECT ${CMAKE_CXX_COMPILE_OBJECT})
|
2016-11-21 21:53:16 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
foreach(ARG ${MY_C_FLAGS})
|
|
|
|
set(MY_C_FLAGS_STR "${MY_C_FLAGS_STR} ${ARG}")
|
|
|
|
endforeach()
|
2016-11-21 21:53:16 +00:00
|
|
|
|
|
|
|
# need all flags for linking, because of -flto etc.
|
2018-02-24 19:39:29 +00:00
|
|
|
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} ${MY_C_FLAGS_STR}")
|
|
|
|
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${MY_C_FLAGS_STR}")
|
2016-11-21 20:37:21 +00:00
|
|
|
|
2016-11-20 19:11:52 +00:00
|
|
|
# for the gcc -fstack-protector* flags we need libssp
|
2016-11-21 20:37:21 +00:00
|
|
|
# we also have to use the gcc- binutils for LTO to work
|
2018-02-24 19:39:29 +00:00
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX)
|
|
|
|
if(ENABLE_LTO)
|
|
|
|
include(UseGCCBinUtilsWrappers)
|
|
|
|
endif()
|
2016-11-21 20:37:21 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} -Wl,-allow-multiple-definition)
|
|
|
|
|
|
|
|
if(CMAKE_PREFIX_PATH)
|
|
|
|
list(GET CMAKE_PREFIX_PATH 0 prefix_path_first)
|
|
|
|
set(MY_C_LINKER_FLAGS ${MY_C_LINKER_FLAGS} "-Wl,-rpath-link=${prefix_path_first}/lib")
|
|
|
|
endif()
|
|
|
|
endif()
|
2017-03-08 00:15:02 +00:00
|
|
|
|
|
|
|
# set linker flags
|
2018-02-24 19:39:29 +00:00
|
|
|
foreach(ARG ${MY_C_LINKER_FLAGS})
|
|
|
|
set(MY_C_LINKER_FLAGS_STR "${MY_C_LINKER_FLAGS_STR} ${ARG}")
|
|
|
|
endforeach()
|
2017-03-08 00:15:02 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} ${MY_C_LINKER_FLAGS_STR}")
|
|
|
|
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} ${MY_C_LINKER_FLAGS_STR}")
|
2019-08-30 01:57:01 +00:00
|
|
|
elseif(MSVC)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
# first remove all warnings flags, otherwise there is a warning about overriding them
|
|
|
|
string(REGEX REPLACE "/[Ww][^ ]+" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
|
|
|
string(REGEX REPLACE "/[Ww][^ ]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
|
|
|
2022-02-02 22:27:39 +00:00
|
|
|
add_compiler_flags(/std:c++17 -D__STDC_LIMIT_MACROS /fp:fast /Oi)
|
|
|
|
|
|
|
|
if(VBAM_STATIC)
|
|
|
|
set(runtime "/MT")
|
|
|
|
else()
|
|
|
|
set(runtime "/MD")
|
|
|
|
endif()
|
2020-09-28 12:09:54 +00:00
|
|
|
|
2023-04-12 02:43:13 +00:00
|
|
|
if(CMAKE_BUILD_TYPE MATCHES "^(Debug|RelWithDebInfo)$")
|
2022-02-02 22:27:39 +00:00
|
|
|
set(runtime "${runtime}d")
|
2023-04-12 02:43:13 +00:00
|
|
|
endif()
|
2022-02-02 22:27:39 +00:00
|
|
|
|
2023-04-12 02:43:13 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
2022-12-30 02:30:08 +00:00
|
|
|
add_compiler_flags(${runtime} /ZI /W4 /Ob0 /Od /RTC1 /DDEBUG /EHsc)
|
2019-08-30 01:57:01 +00:00
|
|
|
else()
|
2023-01-06 16:58:52 +00:00
|
|
|
# Enable severe warnings for release builds, but suppress macro
|
|
|
|
# redefinition warnings.
|
|
|
|
add_compiler_flags(/W1 /wd4005 /DNDEBUG /EHsc)
|
2022-01-18 03:01:13 +00:00
|
|
|
|
2022-02-02 22:27:39 +00:00
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL Release)
|
2023-04-12 02:43:13 +00:00
|
|
|
add_compiler_flags(${runtime} /O2 /Ob3)
|
2022-02-02 22:27:39 +00:00
|
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo)
|
|
|
|
add_compiler_flags(${runtime} /Zi /Ob1)
|
|
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL MinSizeRel)
|
|
|
|
add_compiler_flags(${runtime} /O1 /Ob1)
|
2022-01-18 03:01:13 +00:00
|
|
|
else()
|
2022-02-02 22:27:39 +00:00
|
|
|
message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE: '${CMAKE_BUILD_TYPE}'")
|
2022-01-18 03:01:13 +00:00
|
|
|
endif()
|
|
|
|
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
if(ENABLE_LTO)
|
2022-02-02 22:27:39 +00:00
|
|
|
add_compiler_flags(/GL)
|
|
|
|
add_linker_flags(/LTCG)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
endif()
|
2019-08-30 01:57:01 +00:00
|
|
|
endif()
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2011-02-26 12:11:06 +00:00
|
|
|
|
2016-11-20 19:11:52 +00:00
|
|
|
# Assembler flags
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ASM_ENABLED)
|
|
|
|
string(REGEX REPLACE "<FLAGS>" "-I${CMAKE_SOURCE_DIR}/src/filters/hq/asm/ -O1 -w-orphan-labels" CMAKE_ASM_NASM_COMPILE_OBJECT ${CMAKE_ASM_NASM_COMPILE_OBJECT})
|
|
|
|
endif()
|
2016-11-20 19:11:52 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(APPLE)
|
|
|
|
add_definitions(-DMACHO)
|
|
|
|
elseif("${CMAKE_SYSTEM}" MATCHES "Linux")
|
|
|
|
add_definitions(-DELF)
|
|
|
|
endif()
|
2015-05-18 03:04:34 +00:00
|
|
|
|
2021-11-01 01:23:34 +00:00
|
|
|
if(X86_64)
|
|
|
|
add_definitions(-D__AMD64__ -D__X86_64__)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2015-05-18 03:04:34 +00:00
|
|
|
|
2021-12-19 13:57:05 +00:00
|
|
|
if(NOT TRANSLATIONS_ONLY)
|
|
|
|
add_subdirectory(fex)
|
|
|
|
endif()
|
2010-03-15 03:36:45 +00:00
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_MAIN
|
2008-06-06 10:17:20 +00:00
|
|
|
src/Util.cpp
|
2015-04-18 06:53:55 +00:00
|
|
|
src/common/dictionary.c
|
|
|
|
src/common/iniparser.c
|
2009-01-01 14:21:18 +00:00
|
|
|
src/common/Patch.cpp
|
|
|
|
src/common/memgzio.c
|
2011-05-24 07:49:00 +00:00
|
|
|
src/common/SoundSDL.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2017-02-11 02:57:35 +00:00
|
|
|
if(MSVC)
|
2019-07-22 18:10:53 +00:00
|
|
|
set(SRC_MAIN ${SRC_MAIN} "dependencies/msvc/getopt.c")
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2017-02-11 02:57:35 +00:00
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_MAIN
|
2016-06-07 20:26:53 +00:00
|
|
|
src/System.h
|
|
|
|
src/Util.h
|
|
|
|
src/common/array.h
|
|
|
|
src/common/dictionary.h
|
|
|
|
src/common/iniparser.h
|
|
|
|
src/common/memgzio.h
|
|
|
|
src/common/Port.h
|
2023-03-27 05:10:28 +00:00
|
|
|
src/common/sizes.h
|
2016-06-07 20:26:53 +00:00
|
|
|
src/common/SoundDriver.h
|
|
|
|
src/common/SoundSDL.h
|
|
|
|
)
|
|
|
|
|
2017-02-11 02:57:35 +00:00
|
|
|
if(MSVC)
|
2019-07-22 18:10:53 +00:00
|
|
|
set(HDR_MAIN ${HDR_MAIN} "dependencies/msvc/getopt.h")
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2017-02-11 02:57:35 +00:00
|
|
|
|
2011-05-24 07:39:29 +00:00
|
|
|
if(ENABLE_FFMPEG)
|
2018-02-24 19:39:29 +00:00
|
|
|
set(SRC_MAIN ${SRC_MAIN} src/common/ffmpeg.cpp)
|
|
|
|
set(HDR_MAIN ${HDR_MAIN} src/common/ffmpeg.h)
|
|
|
|
endif()
|
2011-05-24 07:39:29 +00:00
|
|
|
|
2016-06-07 20:26:53 +00:00
|
|
|
if(ENABLE_NLS)
|
2018-02-24 19:39:29 +00:00
|
|
|
set(HDR_MAIN ${HDR_MAIN} src/NLS.h)
|
|
|
|
endif()
|
2016-06-07 20:26:53 +00:00
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_GBA
|
2009-01-01 15:20:03 +00:00
|
|
|
src/gba/agbprint.cpp
|
2009-01-01 16:11:02 +00:00
|
|
|
src/gba/bios.cpp
|
|
|
|
src/gba/Cheats.cpp
|
2011-05-24 07:49:00 +00:00
|
|
|
src/gba/CheatSearch.cpp
|
2022-09-25 19:46:47 +00:00
|
|
|
# Built with flex -o debugger-expr-lex.cpp -P dexp_ debugger-expr.l
|
2015-04-02 05:53:57 +00:00
|
|
|
src/gba/debugger-expr-lex.cpp
|
2022-09-25 19:46:47 +00:00
|
|
|
# Built with bison -L c -o debugger-expr-yacc.cpp -H -p dexp_ debugger-expr.y
|
|
|
|
# The yyerrorlab label handler was manually commented out to silence a
|
|
|
|
# compiler warning.
|
2015-04-02 05:53:57 +00:00
|
|
|
src/gba/debugger-expr-yacc.cpp
|
2009-01-01 16:11:02 +00:00
|
|
|
src/gba/EEprom.cpp
|
2015-03-27 22:50:11 +00:00
|
|
|
src/gba/ereader.cpp
|
2009-01-01 16:11:02 +00:00
|
|
|
src/gba/Flash.cpp
|
2009-01-01 15:20:03 +00:00
|
|
|
src/gba/GBA.cpp
|
|
|
|
src/gba/GBAGfx.cpp
|
2010-03-15 03:36:45 +00:00
|
|
|
src/gba/GBALink.cpp
|
|
|
|
src/gba/GBASockClient.cpp
|
2009-01-01 15:20:03 +00:00
|
|
|
src/gba/GBA-thumb.cpp
|
|
|
|
src/gba/GBA-arm.cpp
|
2009-10-09 14:47:41 +00:00
|
|
|
src/gba/gbafilter.cpp
|
2009-01-01 16:11:02 +00:00
|
|
|
src/gba/Globals.cpp
|
|
|
|
src/gba/Mode0.cpp
|
|
|
|
src/gba/Mode1.cpp
|
|
|
|
src/gba/Mode2.cpp
|
|
|
|
src/gba/Mode3.cpp
|
|
|
|
src/gba/Mode4.cpp
|
|
|
|
src/gba/Mode5.cpp
|
|
|
|
src/gba/RTC.cpp
|
|
|
|
src/gba/Sound.cpp
|
|
|
|
src/gba/Sram.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2019-05-30 11:50:45 +00:00
|
|
|
if(ENABLE_DEBUGGER)
|
|
|
|
list(APPEND SRC_GBA
|
|
|
|
src/gba/BreakpointStructures.cpp
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_GBA
|
2016-06-07 20:26:53 +00:00
|
|
|
src/gba/agbprint.h
|
|
|
|
src/gba/bios.h
|
|
|
|
src/gba/BreakpointStructures.h
|
|
|
|
src/gba/Cheats.h
|
|
|
|
src/gba/CheatSearch.h
|
|
|
|
src/gba/debugger-expr-yacc.hpp
|
|
|
|
src/gba/EEprom.h
|
|
|
|
src/gba/ereader.h
|
|
|
|
src/gba/Flash.h
|
|
|
|
src/gba/GBA.h
|
|
|
|
src/gba/GBAcpu.h
|
|
|
|
src/gba/gbafilter.h
|
|
|
|
src/gba/GBAGfx.h
|
|
|
|
src/gba/GBAinline.h
|
|
|
|
src/gba/GBALink.h
|
|
|
|
src/gba/GBASockClient.h
|
|
|
|
src/gba/Globals.h
|
|
|
|
src/gba/RTC.h
|
|
|
|
src/gba/Sound.h
|
|
|
|
src/gba/Sram.h
|
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_GB
|
2009-01-01 14:52:03 +00:00
|
|
|
src/gb/GB.cpp
|
2023-03-27 05:10:28 +00:00
|
|
|
src/gb/gbCartData.cpp
|
2009-01-01 14:52:03 +00:00
|
|
|
src/gb/gbCheats.cpp
|
|
|
|
src/gb/gbDis.cpp
|
|
|
|
src/gb/gbGfx.cpp
|
|
|
|
src/gb/gbGlobals.cpp
|
|
|
|
src/gb/gbMemory.cpp
|
|
|
|
src/gb/gbPrinter.cpp
|
|
|
|
src/gb/gbSGB.cpp
|
|
|
|
src/gb/gbSound.cpp
|
2009-01-01 14:43:18 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_GB
|
2016-06-07 20:26:53 +00:00
|
|
|
src/gb/gb.h
|
2023-03-27 05:10:28 +00:00
|
|
|
src/gb/gbCartData.h
|
2016-06-07 20:26:53 +00:00
|
|
|
src/gb/gbCheats.h
|
|
|
|
src/gb/gbCodes.h
|
|
|
|
src/gb/gbCodesCB.h
|
|
|
|
src/gb/gbGlobals.h
|
|
|
|
src/gb/gbMemory.h
|
|
|
|
src/gb/gbPrinter.h
|
|
|
|
src/gb/gbSGB.h
|
|
|
|
src/gb/gbSound.h
|
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_APU
|
2009-01-01 14:43:18 +00:00
|
|
|
src/apu/Blip_Buffer.cpp
|
|
|
|
src/apu/Effects_Buffer.cpp
|
|
|
|
src/apu/Gb_Apu.cpp
|
|
|
|
src/apu/Gb_Apu_State.cpp
|
|
|
|
src/apu/Gb_Oscs.cpp
|
|
|
|
src/apu/Multi_Buffer.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_APU
|
2016-06-07 20:26:53 +00:00
|
|
|
src/apu/blargg_common.h #Unused(?) but in the VS projects
|
|
|
|
src/apu/blargg_config.h #Unused(?) but in the VS projects
|
|
|
|
src/apu/blargg_source.h
|
|
|
|
src/apu/Blip_Buffer.h
|
|
|
|
src/apu/Effects_Buffer.h
|
|
|
|
src/apu/Gb_Apu.h
|
|
|
|
src/apu/Gb_Oscs.h
|
|
|
|
src/apu/Multi_Buffer.h
|
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_SDL
|
2023-02-12 02:55:30 +00:00
|
|
|
src/sdl/ConfigManager.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
src/sdl/SDL.cpp
|
|
|
|
src/sdl/filters.cpp
|
|
|
|
src/sdl/text.cpp
|
2008-08-30 17:50:51 +00:00
|
|
|
src/sdl/inputSDL.cpp
|
2008-08-29 10:23:51 +00:00
|
|
|
src/sdl/expr.cpp
|
|
|
|
src/sdl/exprNode.cpp
|
|
|
|
src/sdl/expr-lex.cpp
|
2019-10-04 13:20:10 +00:00
|
|
|
src/common/version.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_SDL
|
2023-02-12 02:55:30 +00:00
|
|
|
src/sdl/ConfigManager.h
|
2016-06-07 20:26:53 +00:00
|
|
|
src/sdl/filters.h
|
|
|
|
src/sdl/text.h
|
|
|
|
src/sdl/inputSDL.h
|
|
|
|
src/sdl/expr.cpp.h
|
|
|
|
src/sdl/exprNode.h
|
2019-10-04 13:20:10 +00:00
|
|
|
src/common/version_cpp.h
|
2016-06-07 20:26:53 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_FILTERS
|
2009-01-01 13:02:35 +00:00
|
|
|
src/filters/2xSaI.cpp
|
|
|
|
src/filters/admame.cpp
|
|
|
|
src/filters/bilinear.cpp
|
|
|
|
src/filters/hq2x.cpp
|
|
|
|
src/filters/interframe.cpp
|
|
|
|
src/filters/pixel.cpp
|
|
|
|
src/filters/scanline.cpp
|
2011-05-25 11:55:46 +00:00
|
|
|
src/filters/simpleFilter.cpp
|
2015-03-19 01:44:47 +00:00
|
|
|
src/filters/xbrzfilter.cpp
|
|
|
|
src/filters/xBRZ/xbrz.cpp
|
2009-01-01 13:02:35 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_FILTERS
|
2016-06-07 20:26:53 +00:00
|
|
|
src/filters/hq2x.h
|
|
|
|
src/filters/interp.h
|
|
|
|
src/filters/lq2x.h
|
2019-08-22 16:55:06 +00:00
|
|
|
src/filters/xBRZ/xbrz_config.h
|
2016-06-07 20:26:53 +00:00
|
|
|
src/filters/xBRZ/xbrz.h
|
2019-08-22 16:55:06 +00:00
|
|
|
src/filters/xBRZ/xbrz_tools.h
|
2016-06-07 20:26:53 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_HQ_C
|
2009-01-01 13:02:35 +00:00
|
|
|
src/filters/hq/c/hq_implementation.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_HQ_C
|
2016-06-07 20:26:53 +00:00
|
|
|
src/filters/hq/c/hq3x_pattern.h
|
|
|
|
src/filters/hq/c/hq4x_pattern.h
|
|
|
|
src/filters/hq/c/hq_base.h
|
|
|
|
src/filters/hq/c/hq_shared.h
|
|
|
|
)
|
|
|
|
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_HQ_ASM
|
2009-01-01 13:02:35 +00:00
|
|
|
src/filters/hq/asm/hq3x_16.asm
|
|
|
|
src/filters/hq/asm/hq3x_32.asm
|
|
|
|
src/filters/hq/asm/hq4x_16.asm
|
|
|
|
src/filters/hq/asm/hq4x_32.asm
|
|
|
|
src/filters/hq/asm/hq3x32.cpp
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_ASM_SCALERS)
|
|
|
|
set(SRC_FILTERS ${SRC_FILTERS} ${SRC_HQ_ASM})
|
|
|
|
if(ENABLE_MMX)
|
|
|
|
set(SRC_FILTERS ${SRC_FILTERS} src/filters/2xSaImmx.asm)
|
|
|
|
endif()
|
|
|
|
else()
|
|
|
|
set(SRC_FILTERS ${SRC_FILTERS} ${SRC_HQ_C})
|
|
|
|
set(HDR_FILTERS ${HDR_FILTERS} ${HDR_HQ_C})
|
|
|
|
add_definitions(-DNO_ASM)
|
|
|
|
endif()
|
|
|
|
|
2019-05-30 11:50:45 +00:00
|
|
|
|
|
|
|
set(
|
|
|
|
SRC_DEBUGGER
|
|
|
|
src/gba/armdis.cpp
|
|
|
|
src/gba/elf.cpp
|
|
|
|
)
|
|
|
|
|
|
|
|
set(
|
|
|
|
HDR_DEBUGGER
|
|
|
|
src/gba/armdis.h
|
|
|
|
src/gba/elf.h
|
|
|
|
)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_DEBUGGER)
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
SRC_DEBUGGER
|
2019-05-30 11:50:45 +00:00
|
|
|
${SRC_DEBUGGER}
|
2009-01-01 16:11:02 +00:00
|
|
|
src/gba/remote.cpp
|
2008-06-16 20:18:49 +00:00
|
|
|
)
|
2019-03-27 03:25:43 +00:00
|
|
|
set(
|
|
|
|
HDR_DEBUGGER
|
2019-05-30 11:50:45 +00:00
|
|
|
${HDR_DEBUGGER}
|
2016-06-07 20:26:53 +00:00
|
|
|
src/gba/remote.h
|
|
|
|
)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2008-06-16 20:18:49 +00:00
|
|
|
|
2020-02-29 23:42:08 +00:00
|
|
|
set(
|
|
|
|
HDR_STB_IMAGE
|
2020-07-10 13:40:05 +00:00
|
|
|
third_party/include/stb/stb_image.h
|
|
|
|
third_party/include/stb/stb_image_write.h
|
2020-02-29 23:42:08 +00:00
|
|
|
)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
include_directories(
|
2008-06-06 16:42:31 +00:00
|
|
|
${ZLIB_INCLUDE_DIR}
|
2010-03-15 03:36:45 +00:00
|
|
|
fex
|
2015-11-19 02:34:38 +00:00
|
|
|
${SDL2_INCLUDE_DIR}
|
2022-08-06 12:59:10 +00:00
|
|
|
third_party/include
|
2020-07-10 13:40:05 +00:00
|
|
|
third_party/include/stb
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_FFMPEG)
|
|
|
|
include_directories(
|
2012-05-23 06:19:44 +00:00
|
|
|
${FFMPEG_INCLUDE_DIRS}
|
|
|
|
)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2012-05-23 06:19:44 +00:00
|
|
|
|
2021-12-19 13:57:05 +00:00
|
|
|
if(NOT TRANSLATIONS_ONLY)
|
|
|
|
add_library(
|
|
|
|
vbamcore
|
|
|
|
STATIC
|
|
|
|
${PROJECT_SRCS}
|
|
|
|
${SRC_MAIN}
|
|
|
|
${HDR_MAIN}
|
|
|
|
${SRC_GBA}
|
|
|
|
${HDR_GBA}
|
|
|
|
${SRC_GB}
|
|
|
|
${HDR_GB}
|
|
|
|
${SRC_APU}
|
|
|
|
${HDR_APU}
|
|
|
|
${SRC_FILTERS}
|
|
|
|
${HDR_FILTERS}
|
|
|
|
${SRC_DEBUGGER}
|
|
|
|
${HDR_DEBUGGER}
|
|
|
|
${HDR_STB_IMAGE}
|
|
|
|
)
|
|
|
|
add_dependencies(vbamcore generate)
|
|
|
|
endif()
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2021-12-19 13:57:05 +00:00
|
|
|
if((NOT TRANSLATIONS_ONLY) AND ENABLE_SDL)
|
2018-02-24 19:39:29 +00:00
|
|
|
add_executable(
|
2008-06-06 10:17:20 +00:00
|
|
|
vbam
|
|
|
|
WIN32
|
|
|
|
${SRC_SDL}
|
2016-06-07 20:26:53 +00:00
|
|
|
${HDR_SDL}
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(WIN32)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
set(WIN32_LIBRARIES wsock32 ws2_32 winmm version imm32)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2008-06-06 16:42:31 +00:00
|
|
|
|
2019-12-22 17:46:21 +00:00
|
|
|
if(MSVC)
|
|
|
|
# the debug lib libcmtd is linked in debug mode, so don't link the normal version
|
|
|
|
set_target_properties(vbam PROPERTIES LINK_FLAGS_DEBUG "/nodefaultlib:libcmt")
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_LIRC)
|
|
|
|
set(LIRC_CLIENT_LIBRARY lirc_client)
|
|
|
|
endif()
|
2008-08-03 21:02:37 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
target_link_libraries(
|
2008-06-06 10:17:20 +00:00
|
|
|
vbam
|
2011-05-25 11:55:46 +00:00
|
|
|
${VBAMCORE_LIBS}
|
2008-06-06 16:42:31 +00:00
|
|
|
${WIN32_LIBRARIES}
|
2008-08-03 21:02:37 +00:00
|
|
|
${LIRC_CLIENT_LIBRARY}
|
2008-06-06 10:17:20 +00:00
|
|
|
)
|
cmake: Visual Studio support improvements.
Add support for vcpkg ffmpeg, this requires using someone's
FindFFmpeg.cmake instead of relying on pkg-config, since vcpkg does not
have pkg-config.
Do not use the ffmpeg from vcpkg on appveyor however, because that
pushes the build cache generation over the time limit for jobs.
Add secur32 and bcrypt to the list of ffmpeg libs on windows, these are
standard windows libraries.
Change some code in ffmpeg.cpp to remove C-style casts of struct
initializers, which are illegal in MSVC.
Add the INT64_C and UINT64_C macros missing in MSVC's stdint.h (if not
defined) to ffmpeg.h before the ffmpeg headers are included, because
they rely on them.
Rewrite the wxWidgets finding code for the vcpkg wxWidgets to be nicer
and work correctly for debug and static builds.
Remove all /W* and /w* warnings options from cmake compiler flags, and
replace them with /W4 for debug builds, and /w (no warnings) for release
modes.
When building a static binary, remove all /MD* flags from cmake compiler
flags, and use /MT for static release builds and /MTd for static debug
builds.
Improve the vcpkg toolchain wrapper to only rebuild the vcpkg binary if
there were git updates.
Redo the handling of SDL2 and SDL_main. Only link SDL2Main to the SDL
binary and don't use the definitions.
Update CMakeSettings.json to use Ninja and include static
configurations.
Use CMAKE_PROJECT_DIR instead of CMAKE_SOURCE_DIR to determine the vcpkg
root, as CMAKE_SOURCE_DIR is sometimes set incorrectly in the 2017 GUI.
Add /nodefaultlib:libcmt to the debug build link flags, as in debug
builds libcmtd is used and libcmt should not be.
Add /subsystem:console to debug build link flags to produce a windows
console app for debug builds, like we do for mingw builds. To do this,
define a WIN32_CONSOLE_APP macro and if set, define a main() that calls
WinMain().
Call wxMesdsageOutput::Set() in OnInit with an instance of
wxMessageOutputStderr for windows debug builds to make sure the --help
text etc. goes to the console instead of a popup box.
Update the Visual Studio related text in README.md.
Fix dynamic debug builds by linking to the debug version of SDL2 and
copying the debug version of the dll to the build dir.
Fix issue in MainFrame::BindAppIcon with the function we are using not
being found in a Windows DLL in debug builds by using
wxDynamicLibrary::GetSymboolAorW() instead of GetSymbol().
Enable LTO for MSVC in Release modes, if the option is set.
Change appveyor config to use an 8 item build matrix of
x64/x86 / Release/Debug / Static/Dynamic. And test the binary in debug
modes by running --help.
When copying the wxrc.exe out of the build tree, copy both the release
and debug versions, this is so that appveyor caching of vcpkg works,
since the build trees are not cached.
Add some necessary win32 libraries to the SDL binary. And enable
building it on appveyor.
Fix #465.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
2019-12-10 11:13:58 +00:00
|
|
|
|
|
|
|
if(WIN32)
|
|
|
|
target_link_libraries(vbam ${SDL2MAIN_LIBRARY})
|
|
|
|
endif()
|
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/vbam${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})
|
2016-12-10 23:27:18 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(WIN32)
|
2019-03-27 03:25:43 +00:00
|
|
|
install(
|
|
|
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/sdl/vbam.cfg-example
|
|
|
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}
|
|
|
|
RENAME vbam.cfg
|
|
|
|
)
|
2018-02-24 19:39:29 +00:00
|
|
|
else()
|
2019-03-27 03:25:43 +00:00
|
|
|
install(
|
|
|
|
FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/sdl/vbam.cfg-example
|
|
|
|
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}
|
|
|
|
RENAME vbam.cfg
|
|
|
|
)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2008-06-06 10:17:20 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_WX)
|
2011-05-25 11:55:46 +00:00
|
|
|
add_subdirectory(src/wx)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
2011-05-25 11:55:46 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_WX)
|
2011-02-24 17:46:59 +00:00
|
|
|
# Native Language Support
|
2018-02-24 19:39:29 +00:00
|
|
|
if(ENABLE_NLS)
|
2011-02-24 17:46:59 +00:00
|
|
|
add_subdirectory(po)
|
2018-02-24 19:39:29 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/vba-over.ini DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/vbam)
|
2015-05-18 00:28:34 +00:00
|
|
|
|
|
|
|
# manual pages
|
2018-02-24 19:39:29 +00:00
|
|
|
if(UNIX)
|
|
|
|
if(ENABLE_SDL)
|
|
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/debian/vbam.6 DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man6)
|
|
|
|
endif()
|
|
|
|
if(ENABLE_WX)
|
|
|
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/debian/visualboyadvance-m.6 DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man6)
|
|
|
|
endif()
|
|
|
|
endif()
|
2015-05-18 00:28:34 +00:00
|
|
|
|
2018-02-24 19:39:29 +00:00
|
|
|
set(CPACK_GENERATOR "ZIP")
|
2015-06-15 13:00:47 +00:00
|
|
|
set(CPACK_SOURCE_GENERATOR "TGZ")
|
2018-02-24 19:39:29 +00:00
|
|
|
set(CPACK_PACKAGE_VERSION_MAJOR "2")
|
|
|
|
set(CPACK_PACKAGE_VERSION_MINOR "0")
|
2020-12-11 14:09:03 +00:00
|
|
|
set(CPACK_PACKAGE_VERSION_PATCH "0-Git-${COMMITHASH}")
|
2015-06-15 13:20:20 +00:00
|
|
|
list(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/dependencies")
|
2018-02-24 19:39:29 +00:00
|
|
|
include(CPack)
|
2020-07-10 13:40:05 +00:00
|
|
|
|
|
|
|
# vim:sw=4 et tw=0:
|