1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

lib: replace SDL usage to Boost one

It is safer and header-only, and can be removed after C++23 is accepted.
There is no need for SDL in non-GUI.
This commit is contained in:
Konstantin
2023-02-02 23:40:00 +03:00
parent 70786f4963
commit cffdabf48e
4 changed files with 18 additions and 10 deletions

View File

@@ -173,6 +173,18 @@ set(CMAKE_XCODE_ATTRIBUTE_MARKETING_VERSION ${APP_SHORT_VERSION})
set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH NO)
set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES)
#Check for endian
if(${CMAKE_VERSION} VERSION_LESS "3.20.0")
include(TestBigEndian)
test_big_endian(VCMI_ENDIAN_BIG)
if(VCMI_ENDIAN_BIG)
add_definitions(-DVCMI_ENDIAN_BIG)
endif()
elseif(${CMAKE_CXX_BYTE_ORDER} EQUAL "BIG_ENDIAN")
add_definitions(-DVCMI_ENDIAN_BIG)
endif()
if(ENABLE_LAUNCHER)
add_definitions(-DENABLE_LAUNCHER)
endif()

View File

@@ -475,7 +475,6 @@ macro(add_main_lib TARGET_NAME LIBRARY_TYPE)
PUBLIC ${MAIN_LIB_DIR}/..
PUBLIC ${MAIN_LIB_DIR}/../include
PUBLIC ${MAIN_LIB_DIR}
PRIVATE ${SDL2_INCLUDE_DIR}
)
if(WIN32)

View File

@@ -10,14 +10,12 @@
#include "StdInc.h"
#include "CBinaryReader.h"
//FIXME:library file depends on SDL - make cause troubles
#include <SDL_endian.h>
#include "CInputStream.h"
#include "../CGeneralTextHandler.h"
VCMI_LIB_NAMESPACE_BEGIN
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
#ifdef VCMI_ENDIAN_BIG
template <typename CData>
CData readLE(CData data)
{

View File

@@ -9,8 +9,7 @@
*/
#pragma once
//FIXME:library file depends on SDL - may cause troubles
#include <SDL_endian.h>
#include <boost/endian/conversion.hpp> //FIXME: use std::byteswap in C++23
VCMI_LIB_NAMESPACE_BEGIN
@@ -45,15 +44,15 @@ static inline ui32 read_unaligned_u32(const void *p)
return v->val;
}
#define read_le_u16(p) (SDL_SwapLE16(read_unaligned_u16(p)))
#define read_le_u32(p) (SDL_SwapLE32(read_unaligned_u32(p)))
#define read_le_u16(p) (boost::endian::native_to_little(read_unaligned_u16(p)))
#define read_le_u32(p) (boost::endian::native_to_little(read_unaligned_u32(p)))
#else
#warning UB: unaligned memory access
#define read_le_u16(p) (SDL_SwapLE16(* reinterpret_cast<const ui16 *>(p)))
#define read_le_u32(p) (SDL_SwapLE32(* reinterpret_cast<const ui32 *>(p)))
#define read_le_u16(p) (boost::endian::native_to_little(* reinterpret_cast<const ui16 *>(p)))
#define read_le_u32(p) (boost::endian::native_to_little(* reinterpret_cast<const ui32 *>(p)))
#define PACKED_STRUCT_BEGIN
#define PACKED_STRUCT_END