[cmake] enable clang-cl and WoA builds (#348)

Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64.

Compiling on clang is *dramatically* faster so this should be useful for CI.

Co-authored-by: crueter <crueter@eden-emu.dev>
Co-authored-by: crueter <crueter@crueter.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie 2025-09-09 20:47:49 +02:00 committed by crueter
parent 428f136a75
commit 9d2681ecc9
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
276 changed files with 973 additions and 1010 deletions

View file

@ -1308,9 +1308,9 @@ bool EmulatedController::SetVibration(DeviceIndex device_index, const VibrationV
: Common::Input::VibrationAmplificationType::Linear;
const Common::Input::VibrationStatus status = {
.low_amplitude = std::min(vibration.low_amplitude * strength, 1.0f),
.low_amplitude = (std::min)(vibration.low_amplitude * strength, 1.0f),
.low_frequency = vibration.low_frequency,
.high_amplitude = std::min(vibration.high_amplitude * strength, 1.0f),
.high_amplitude = (std::min)(vibration.high_amplitude * strength, 1.0f),
.high_frequency = vibration.high_frequency,
.type = type,
};

View file

@ -283,7 +283,7 @@ u8 RingController::GetCrcValue(const std::vector<u8>& data) const {
template <typename T>
u64 RingController::GetData(const T& reply, std::span<u8> out_data) const {
static_assert(std::is_trivially_copyable_v<T>);
const auto data_size = static_cast<u64>(std::min(sizeof(reply), out_data.size()));
const auto data_size = static_cast<u64>((std::min)(sizeof(reply), out_data.size()));
std::memcpy(out_data.data(), &reply, data_size);
return data_size;
}

View file

@ -146,7 +146,7 @@ void ImageTransferProcessor::SetTransferMemoryAddress(Common::ProcessAddress t_m
Core::IrSensor::ImageTransferProcessorState ImageTransferProcessor::GetState(
std::span<u8> data) const {
const auto size = std::min(GetDataSize(current_config.trimming_format), data.size());
const auto size = (std::min)(GetDataSize(current_config.trimming_format), data.size());
system.ApplicationMemory().ReadBlock(transfer_memory, data.data(), size);
return processor_state;
}

View file

@ -30,7 +30,7 @@ void NpadAbstractBatteryHandler::SetPropertiesHandler(NpadAbstractPropertiesHand
}
Result NpadAbstractBatteryHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -30,7 +30,7 @@ void NpadAbstractButtonHandler::SetPropertiesHandler(NpadAbstractPropertiesHandl
}
Result NpadAbstractButtonHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -24,7 +24,7 @@ void NpadAbstractIrSensorHandler::SetPropertiesHandler(NpadAbstractPropertiesHan
}
Result NpadAbstractIrSensorHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -29,7 +29,7 @@ void NpadAbstractLedHandler::SetPropertiesHandler(NpadAbstractPropertiesHandler*
}
Result NpadAbstractLedHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -22,7 +22,7 @@ void NpadAbstractMcuHandler::SetPropertiesHandler(NpadAbstractPropertiesHandler*
}
Result NpadAbstractMcuHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -24,7 +24,7 @@ void NpadAbstractNfcHandler::SetPropertiesHandler(NpadAbstractPropertiesHandler*
}
Result NpadAbstractNfcHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -68,7 +68,7 @@ void AbstractPad::SetNpadId(Core::HID::NpadIdType npad_id) {
}
Result AbstractPad::Activate() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}

View file

@ -73,7 +73,7 @@ u64 NpadAbstractedPadHolder::RemoveAbstractPadByAssignmentStyle(
}
u32 NpadAbstractedPadHolder::GetAbstractedPads(std::span<IAbstractedPad*> list) const {
u32 num_elements = std::min(static_cast<u32>(list.size()), list_size);
u32 num_elements = (std::min)(static_cast<u32>(list.size()), list_size);
for (std::size_t i = 0; i < num_elements; i++) {
list[i] = assignment_list[i].abstracted_pad;
}

View file

@ -25,7 +25,7 @@ void NpadAbstractPalmaHandler::SetPalmaResource(PalmaResource* resource) {
}
Result NpadAbstractPalmaHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -38,7 +38,7 @@ Core::HID::NpadIdType NpadAbstractPropertiesHandler::GetNpadId() const {
}
Result NpadAbstractPropertiesHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}

View file

@ -33,7 +33,7 @@ void NpadAbstractSixAxisHandler::SetSixaxisResource(SixAxisResource* resource) {
}
Result NpadAbstractSixAxisHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -55,7 +55,7 @@ void NpadAbstractVibrationHandler::SetGcVibration(NpadGcVibrationDevice* gc_devi
}
Result NpadAbstractVibrationHandler::IncrementRefCounter() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadHandlerOverflow;
}
ref_counter++;

View file

@ -271,7 +271,7 @@ void AppletResource::EnablePalmaBoostMode(u64 aruid, bool is_enabled) {
}
Result AppletResource::RegisterCoreAppletResource() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultAppletResourceOverflow;
}
if (ref_counter == 0) {

View file

@ -55,7 +55,7 @@ NPad::~NPad() {
}
Result NPad::Activate() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultNpadResourceOverflow;
}

View file

@ -46,7 +46,7 @@ Result NPadData::SetSupportedNpadIdType(std::span<const Core::HID::NpadIdType> l
}
std::size_t NPadData::GetSupportedNpadIdType(std::span<Core::HID::NpadIdType> out_list) const {
std::size_t out_size = std::min(supported_npad_id_types_count, out_list.size());
std::size_t out_size = (std::min)(supported_npad_id_types_count, out_list.size());
memcpy(out_list.data(), supported_npad_id_types.data(),
out_size * sizeof(Core::HID::NpadIdType));

View file

@ -126,7 +126,7 @@ Result NPadResource::Activate(u64 aruid) {
}
Result NPadResource::Activate() {
if (ref_counter == std::numeric_limits<s32>::max() - 1) {
if (ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultAppletResourceOverflow;
}
if (ref_counter == 0) {

View file

@ -62,7 +62,7 @@ Result Palma::GetPalmaOperationInfo(const PalmaConnectionHandle& handle,
}
operation_type = static_cast<PalmaOperationType>(operation.operation);
std::memcpy(out_data.data(), operation.data.data(),
std::min(out_data.size(), operation.data.size()));
(std::min)(out_data.size(), operation.data.size()));
return ResultSuccess;
}

View file

@ -16,7 +16,7 @@ GestureHandler::~GestureHandler() {}
void GestureHandler::SetTouchState(std::span<TouchState> touch_state, u32 count, s64 timestamp) {
gesture = {};
gesture.active_points = std::min(MaxPoints, static_cast<std::size_t>(count));
gesture.active_points = (std::min)(MaxPoints, static_cast<std::size_t>(count));
for (size_t id = 0; id < gesture.active_points; ++id) {
const auto& [active_x, active_y] = touch_state[id].position;

View file

@ -25,8 +25,8 @@ TouchResource::~TouchResource() {
};
Result TouchResource::ActivateTouch() {
if (global_ref_counter == std::numeric_limits<s32>::max() - 1 ||
touch_ref_counter == std::numeric_limits<s32>::max() - 1) {
if (global_ref_counter == (std::numeric_limits<s32>::max)() - 1 ||
touch_ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultTouchOverflow;
}
@ -91,8 +91,8 @@ Result TouchResource::ActivateTouch(u64 aruid) {
}
Result TouchResource::ActivateGesture() {
if (global_ref_counter == std::numeric_limits<s32>::max() - 1 ||
gesture_ref_counter == std::numeric_limits<s32>::max() - 1) {
if (global_ref_counter == (std::numeric_limits<s32>::max)() - 1 ||
gesture_ref_counter == (std::numeric_limits<s32>::max)() - 1) {
return ResultGestureOverflow;
}