Commit graph

57 commits

Author SHA1 Message Date
MerryMage
2d348d2d68 backend/x64: Add macOS exception handler with fastmem support 2020-04-22 21:06:18 +01:00
MerryMage
6edc95e9eb CMakeLists: Put -Wfatal-errors behind a CMake flag 2020-04-22 21:04:23 +01:00
Lioncash
9d33ea3136 CMakeLists: Specify the /volatile flag with standard-conforming semantics
Makes Windows builds more standard-compliant. Given we currently make no
use of volatile, and the libraries we currently use don't use it any
meaningful way, this is safe to specify without worrying.
2020-04-22 21:02:47 +01:00
Lioncash
0d3375fc22 CMakeLists: Add /Zc:externConstexpr compilation flag
Improves standard conformance on Windows builds.
2020-04-22 21:02:47 +01:00
Lioncash
3b2b47b522 CMakeLists: Remove setting of CMAKE_WARN_DEPRECATED
CMake documentation states:
    "If this variable is not set, CMake behaves as if it were set to TRUE."

So this isn't needed, as it's the default behavior.
2020-04-22 21:02:47 +01:00
Lioncash
df996a8375 CMakeLists: Turn generic target path into an error
There's currently no way this path can occur and result in any
functioning executable. The recompiler backends are platform-specific.
If those platforms aren't available, then it's quite literally
impossible to use this library for anything meaningful. Instead of
defining a generic architecture and continuing on, notify the developer
that their platform is not currently supported.
2020-04-22 21:02:47 +01:00
Lioncash
750ceb9701 CMakeLists: Remove detection of 32-bit platforms
We currently have no plans to add 32-bit host architecture support, so
we don't even need to check for these platforms.
2020-04-22 21:02:47 +01:00
MerryMage
d5b9c4a4bb block_of_code: Hide NX support behind compiler flag
Systems that require W^X can use the DYNARMIC_ENABLE_NO_EXECUTE_SUPPORT cmake option.
2020-04-22 20:53:46 +01:00
Lioncash
ed11c7d904 CMakeLists: Add detection for Aarch64 compiler environments
Just closes a small hole in architecture detection for the ARM family.
2020-04-22 20:46:17 +01:00
Lioncash
cd0b71159a CMake: Make FindUnicorn introduce a unicorn target
Makes the find module do all the work of properly setting up the target instead of needing to do it in the main CMakeLists file.
2020-04-22 20:46:16 +01:00
MerryMage
e97581d063 fuzz_with_unicorn: Print AArch64 disassembly 2020-04-22 20:46:14 +01:00
MerryMage
a90e4955ab CMakeLists: Ignore warnings within xbyak 2020-04-22 20:46:14 +01:00
MerryMage
30936f5e94 travis: Test with disabled CPU feature detection
Ensure that fallbacks are working correctly.
2020-04-22 20:44:37 +01:00
MerryMage
a59e9ad9c6 travis: Run A64 tests 2020-04-22 20:42:45 +01:00
MerryMage
d5725de26a tests/A64: Fuzz against unicorn 2020-04-22 20:42:45 +01:00
MerryMage
cde2d48eb9 CMakeLists: CMAKE_CXX_STANDARD as no effect on MSVC until CMake 3.10
We add the /std:c++latest flag to DYNARMIC_CXX_FLAGS to fix this.
2020-04-22 20:39:27 +01:00
MerryMage
89e9ce8aff Bump requirements to C++17 2020-04-22 20:27:15 +01:00
MerryMage
0af1e7723d CMakeLists: Fixup boost
* boost is part of the public interface.
* Consider boost a system library so warnings from boost do not cause a build failure.
* If the parent project defines boost, use that.
2020-04-22 20:26:40 +01:00
MerryMage
d00ce34432 CMakeLists: Default to a Release build 2020-04-22 20:26:12 +01:00
MerryMage
5beb61913b CMakeLists: Remove unnecessary -msse3 option 2017-07-08 16:33:20 +01:00
Yuri Kunde Schlesner
8f15e3f70c CMakeLists: Enable stricter C++ conformance mode in MSVC 2017-06-12 07:57:46 +01:00
Yuri Kunde Schlesner
38eb7e0314 emit_x64: Use alternative Xbyak names for and, or, xor
Also enabled XBYAK_NO_OP_NAMES, allowing us to stop using
-fno-operator-names.
2017-06-12 07:57:46 +01:00
Lioncash
9906be746f CMakeLists: Make boost an interface library target
Gets rid of the use of a non-target include and makes libraries
explicitly link against the identifier name in order to get includes.
2017-03-04 11:52:32 +00:00
Lioncash
f9e7e85308 externals: Make catch an interface target
Eliminates top-level inclusion of the headers with include_directories()
and instead utilizes it on a by-target basis using target_include_directories().
2017-02-26 13:43:47 +00:00
Lioncash
c92a6a5eb7 CMakeLists: Change set into a list append
Same thing, less repetition.

Also puts quotes around the added path to correctly handle any spaces in paths.
2017-02-23 15:13:19 +00:00
MerryMage
e8b6e76fbf CMakeLists: Drop -Wno-unused-parameter 2017-02-22 23:52:18 +00:00
Lioncash
a2d4db575f CMakeLists: Drop FATAL_ERROR from cmake_minimum_required
This is ignored by CMake 2.6 and higher.
2017-02-22 20:24:03 +00:00
MerryMage
a77710e5cf CMake: Add option DYNARMIC_WARNINGS_AS_ERRORS 2017-02-04 20:31:10 +00:00
MerryMage
cc58666c06 CMakeLists: Use target_compile_options intead of add_compile_options 2016-12-19 00:48:25 +00:00
MerryMage
0e8b626d87 CMakeLists: Globally disable MSVC warning C4592
C4592: Symbol will be dynamically initialized (implementation limitation)
2016-12-15 21:09:55 +00:00
MerryMage
91e851a991 CMakeLists: Enable /W4 on MSVC 2016-12-15 20:52:23 +00:00
Yuri Kunde Schlesner
34e19f135c CMake: Re-use external xbyak target if present (#62) 2016-12-12 14:23:42 +00:00
Mat M
1dc1eaa452 CMakeLists: Enable more warnings for MSVC (#58) 2016-12-05 12:45:35 +00:00
MerryMage
52fdec5892 CMakeLists: Add support for LLVM on Windows
The LLVM project provides a clang-based MSVC compatible toolset for
Microsoft Visual Studio. This suite is sometimes refered to as "clang-cl".

This patch adds a few compiler flags to support this toolset.
2016-12-03 16:12:51 +00:00
MerryMage
2c1818ece9 CMakeLists: Downgrade -msse4.1 to -msse3.
Virtually everyone supports SSE3 except for first-generation devices.
2016-09-11 16:21:35 +01:00
Mat M
858796a029 Eliminate variable shadowing warnings with MSVC (#17) 2016-09-04 11:30:57 +01:00
MerryMage
320db36219 CMakeLists: Add DYNARMIC_TESTS option so one can turn off testing 2016-09-02 12:29:19 +01:00
MerryMage
f1c988aa8d CMakeLists: Lower cmake version requirement from 3.4.1 to 3.2 2016-09-02 12:26:47 +01:00
Lioncash
ee4b30eee4 externals: Add fmt as a submodule 2016-08-26 13:13:19 +01:00
MerryMage
ed3a686d1d Implement public header files 2016-08-26 00:44:50 +01:00
MerryMage
1f329b2fbf CMakeLists: /DNOMINMAX for MSVC 2016-08-25 17:37:35 +01:00
MerryMage
e32812cd00 Port x64 backend to xbyak 2016-08-25 16:18:17 +01:00
Lioncash
0ebad78432 CMakeLists: Warn when casting away cv-qualifiers from pointers
Warns whenever this type of casting isn't done via const_cast.
2016-08-22 23:24:02 +01:00
Lioncash
fd5362e968 CMakeLists: Invert if statement
Same thing, less wordy.
2016-08-22 15:55:39 +01:00
Lioncash
723ce801c6 CMakeLists: Warn on deprecated API usages 2016-08-22 15:55:39 +01:00
Lioncash
1bedd3bd7f CMakeLists: Clean up
Moves functions out of the main CMakeLists file into module files that
can just be included whenever necessary. This also uses the CMake
provided variables for enforcing compiler requirements.
2016-08-22 15:55:39 +01:00
MerryMage
4d127c19dd Common: Add a memory pool implementation, remove use of boost::pool 2016-08-06 20:41:00 +01:00
Tillmann Karras
af27ef8d6c Optionally disassemble x86_64 code using LLVM 2016-08-05 02:08:41 +01:00
MerryMage
e60cea3a54 Add -pedantic-errors compilation flag 2016-08-01 19:54:31 +01:00
MerryMage
cd86ef4236 Add -DBOOST_POOL_NO_MT as a compiler flag 2016-07-23 05:37:07 +01:00