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 NO)
set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] YES) 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) if(ENABLE_LAUNCHER)
add_definitions(-DENABLE_LAUNCHER) add_definitions(-DENABLE_LAUNCHER)
endif() endif()

View File

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

View File

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

View File

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