From 72217fbefd03881048287da8345925e1b89b5b9b Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Verschelde?= Date: Sat, 28 Jan 2017 17:20:52 +0100 Subject: [PATCH] Unify platform-specific definitions and clean .rc file --- CMakeLists.txt | 29 ++----- {Source/win-res => Dist}/lugaru.ico | Bin Source/Audio/openal_wrapper.hpp | 2 +- Source/Graphic/gamegl.hpp | 2 +- Source/{win-res/resource.hpp => Lugaru.rc} | 17 +--- .../Platform.hpp} | 70 +++++++-------- .../PlatformUnix.cpp} | 15 ++-- .../PlatformWindows.cpp} | 6 +- Source/User/Account.cpp | 2 +- Source/WinDefs.hpp | 81 ------------------ Source/main.cpp | 3 +- Source/win-res/Lugaru.rc | 72 ---------------- 12 files changed, 55 insertions(+), 244 deletions(-) rename {Source/win-res => Dist}/lugaru.ico (100%) rename Source/{win-res/resource.hpp => Lugaru.rc} (62%) rename Source/{MacCompatibility.hpp => Platform/Platform.hpp} (54%) rename Source/{MacCompatibility.cpp => Platform/PlatformUnix.cpp} (96%) rename Source/{WinDefs.cpp => Platform/PlatformWindows.cpp} (96%) delete mode 100644 Source/WinDefs.hpp delete mode 100644 Source/win-res/Lugaru.rc diff --git a/CMakeLists.txt b/CMakeLists.txt index ac908f0..0965b30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -119,6 +119,8 @@ set(LUGARU_SRCS ${SRCDIR}/Objects/Object.cpp ${SRCDIR}/Objects/Person.cpp ${SRCDIR}/Objects/Weapons.cpp + ${SRCDIR}/Platform/PlatformUnix.cpp + ${SRCDIR}/Platform/PlatformWindows.cpp ${SRCDIR}/User/Account.cpp ${SRCDIR}/User/Settings.cpp ${SRCDIR}/Utils/Folders.cpp @@ -164,6 +166,7 @@ set(LUGARU_H ${SRCDIR}/Objects/Object.hpp ${SRCDIR}/Objects/Person.hpp ${SRCDIR}/Objects/Weapons.hpp + ${SRCDIR}/Platform/Platform.hpp ${SRCDIR}/Thirdparty/optionparser.h ${SRCDIR}/User/Account.hpp ${SRCDIR}/User/Settings.hpp @@ -177,35 +180,13 @@ set(LUGARU_H ) -if(UNIX) - set(LUGARU_SRCS - ${LUGARU_SRCS} - ${SRCDIR}/MacCompatibility.cpp - ) - set(LUGARU_H - ${LUGARU_H} - ${SRCDIR}/MacCompatibility.hpp - ) -endif(UNIX) - if(WIN32) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj COMMAND ${CMAKE_RC_COMPILER} - -I${SRCDIR}/win-res -o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj - -i${SRCDIR}/win-res/Lugaru.rc - DEPENDS ${SRCDIR}/win-res/Lugaru.rc + -i${SRCDIR}/Lugaru.rc + DEPENDS ${SRCDIR}/Lugaru.rc ) - - # FIXME: get rid of this. - set(LUGARU_SRCS - ${LUGARU_SRCS} - ${SRCDIR}/WinDefs.cpp) - - set(LUGARU_H - ${LUGARU_H} - ${SRCDIR}/WinDefs.hpp - ${SRCDIR}/win-res/resource.hpp) endif(WIN32) if(APPLE) diff --git a/Source/win-res/lugaru.ico b/Dist/lugaru.ico similarity index 100% rename from Source/win-res/lugaru.ico rename to Dist/lugaru.ico diff --git a/Source/Audio/openal_wrapper.hpp b/Source/Audio/openal_wrapper.hpp index d122030..2e7b7af 100644 --- a/Source/Audio/openal_wrapper.hpp +++ b/Source/Audio/openal_wrapper.hpp @@ -21,8 +21,8 @@ along with Lugaru. If not, see . #ifndef _OPENAL_WRAPPER_HPP_ #define _OPENAL_WRAPPER_HPP_ -#include "MacCompatibility.hpp" #include "Math/XYZ.hpp" +#include "Platform/Platform.hpp" #ifdef __APPLE__ #include diff --git a/Source/Graphic/gamegl.hpp b/Source/Graphic/gamegl.hpp index f9c6d2b..bf95b07 100644 --- a/Source/Graphic/gamegl.hpp +++ b/Source/Graphic/gamegl.hpp @@ -21,7 +21,7 @@ along with Lugaru. If not, see . #ifndef _GAMEGL_HPP_ #define _GAMEGL_HPP_ -#include "MacCompatibility.hpp" +#include "Platform/Platform.hpp" #include #include diff --git a/Source/win-res/resource.hpp b/Source/Lugaru.rc similarity index 62% rename from Source/win-res/resource.hpp rename to Source/Lugaru.rc index 4a3e253..f0f8807 100644 --- a/Source/win-res/resource.hpp +++ b/Source/Lugaru.rc @@ -18,19 +18,6 @@ You should have received a copy of the GNU General Public License along with Lugaru. If not, see . */ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Lugaru.rc -// -#define IDI_LUGARU 104 +LUGARU_ICON ICON "../Dist/lugaru.ico" -// Next default values for new Object::objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 105 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif +// TODO: Add version info diff --git a/Source/MacCompatibility.hpp b/Source/Platform/Platform.hpp similarity index 54% rename from Source/MacCompatibility.hpp rename to Source/Platform/Platform.hpp index 57cdc41..1610744 100644 --- a/Source/MacCompatibility.hpp +++ b/Source/Platform/Platform.hpp @@ -18,8 +18,8 @@ You should have received a copy of the GNU General Public License along with Lugaru. If not, see . */ -#ifndef _MACCOMPATIBLITY_HPP_ -#define _MACCOMPATIBLITY_HPP_ +#ifndef _PLATFORM_HPP_ +#define _PLATFORM_HPP_ #include "Math/Random.hpp" @@ -27,29 +27,10 @@ along with Lugaru. If not, see . #include #include -// stuff to make Mac code compatable with Windows/Linux/etc - #if defined(WIN32) && !defined(strcasecmp) #define strcasecmp(a,b) stricmp(a,b) #endif -#ifdef _MSC_VER -// disable warnings about double to float conversions -#pragma warning(disable:4305) -#pragma warning(disable:4244) - -// disable warnings about boolean to int conversions -#pragma warning(disable:4800) - -// disable warning about unreferenced local variables -#pragma warning(disable:4101) -#endif - -#ifndef __forceinline -# ifdef __GNUC__ -# define __forceinline inline __attribute__((always_inline)) -# endif -#endif struct Point { short v; @@ -59,40 +40,55 @@ struct Point { typedef signed char SInt8; typedef unsigned int UInt32; - - typedef struct AbsoluteTime { unsigned long hi; unsigned long lo; } AbsoluteTime; -AbsoluteTime UpTime(); // NOTE: returns time since app started, not system start +/* Returns time since the app started, not system start. */ +AbsoluteTime UpTime(); typedef long Duration; enum { - durationMicrosecond = -1, - durationMillisecond = 1, - durationSecond = 1000, - durationMinute = 1000 * 60, - durationHour = 1000 * 60 * 60, - durationDay = 1000 * 60 * 60 * 24, - durationForever = 0x7FFFFFFF, - durationImmediate = 0, + durationMicrosecond = -1, + durationMillisecond = 1, + durationSecond = 1000, + durationMinute = 1000 * 60, + durationHour = 1000 * 60 * 60, + durationDay = 1000 * 60 * 60 * 24, + durationForever = 0x7FFFFFFF, + durationImmediate = 0, }; -Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b); +Duration AbsoluteDeltaToDuration(AbsoluteTime& a, AbsoluteTime& b); + +/* Workaround missing math stuff on MSVC + * FIXME: Check that it is still necessary nowadays. + */ #ifdef _MSC_VER inline bool isnormal( double x) { int ret = _fpclass( x); return (ret == _FPCLASS_NN || ret == _FPCLASS_PN); } -#else -#include -#endif -#endif +inline float abs(float f) +{ + if (f < 0) + return -f; + return f; +} +inline double abs(double d) +{ + if (d < 0) + return -d; + return d; +} +#else +#include +#endif // _MSC_VER +#endif // _PLATFORM_HPP_ diff --git a/Source/MacCompatibility.cpp b/Source/Platform/PlatformUnix.cpp similarity index 96% rename from Source/MacCompatibility.cpp rename to Source/Platform/PlatformUnix.cpp index 4ed3033..6ed11bf 100644 --- a/Source/MacCompatibility.cpp +++ b/Source/Platform/PlatformUnix.cpp @@ -18,20 +18,16 @@ You should have received a copy of the GNU General Public License along with Lugaru. If not, see . */ -#include "MacCompatibility.hpp" +#ifdef PLATFORM_UNIX +#include "Platform/Platform.hpp" + +#include #include #include #include #include #include - -#ifdef WIN32 -#include -#endif - -#if PLATFORM_UNIX -#include #include #include #include @@ -54,7 +50,6 @@ static int QueryPerformanceCounter(LARGE_INTEGER* liptr) (((LARGE_INTEGER)tv.tv_usec) / 1000)); return (1); } -#endif class AppTime { @@ -117,3 +112,5 @@ Duration AbsoluteDeltaToDuration(AbsoluteTime& a, AbsoluteTime& b) return time; } + +#endif // PLATFORM_UNIX diff --git a/Source/WinDefs.cpp b/Source/Platform/PlatformWindows.cpp similarity index 96% rename from Source/WinDefs.cpp rename to Source/Platform/PlatformWindows.cpp index f30e129..e106bf5 100644 --- a/Source/WinDefs.cpp +++ b/Source/Platform/PlatformWindows.cpp @@ -18,7 +18,9 @@ You should have received a copy of the GNU General Public License along with Lugaru. If not, see . */ -#include "WinDefs.hpp" +#ifdef _WIN32 + +#include "Platform/Platform.hpp" #include #include @@ -85,3 +87,5 @@ Duration AbsoluteDeltaToDuration(AbsoluteTime& a, AbsoluteTime& b) return time; } + +#endif // _WIN32 diff --git a/Source/User/Account.cpp b/Source/User/Account.cpp index 50195f0..f4ba1ea 100644 --- a/Source/User/Account.cpp +++ b/Source/User/Account.cpp @@ -20,7 +20,7 @@ along with Lugaru. If not, see . #include "User/Account.hpp" -#include "MacCompatibility.hpp" +#include "Platform/Platform.hpp" #include "Utils/binio.h" #include diff --git a/Source/WinDefs.hpp b/Source/WinDefs.hpp deleted file mode 100644 index 4f29262..0000000 --- a/Source/WinDefs.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright (C) 2003, 2010 - Wolfire Games -Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file) - -This file is part of Lugaru. - -Lugaru is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -Lugaru is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Lugaru. If not, see . -*/ - -#ifndef _WINDEFS_HPP_ -#define _WINDEFS_HPP_ -#ifdef WIN32 - -#include -#include - -#include "Math/Random.hpp" - -// stuff to make Mac code compatable with Windows - -struct Point { - short v; - short h; -}; - -typedef signed char SInt8; -typedef unsigned int UInt32; - - -typedef struct AbsoluteTime { - unsigned long hi; - unsigned long lo; -} AbsoluteTime; - -AbsoluteTime UpTime(); // NOTE: returns time since app started, not system start - -typedef long Duration; - -enum { - durationMicrosecond = -1, - durationMillisecond = 1, - durationSecond = 1000, - durationMinute = 1000 * 60, - durationHour = 1000 * 60 * 60, - durationDay = 1000 * 60 * 60 * 24, - durationForever = 0x7FFFFFFF, - durationImmediate = 0, -}; - -Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b); - -#ifndef __MINGW32__ -inline float abs(float f) -{ - if (f < 0) - return -f; - return f; -} - -inline double abs(double f) -{ - if (f < 0) - return -f; - return f; -} -#endif // __MINGW32__ - - -#endif -#endif diff --git a/Source/main.cpp b/Source/main.cpp index 19bfa6e..99d5465 100644 --- a/Source/main.cpp +++ b/Source/main.cpp @@ -22,7 +22,7 @@ along with Lugaru. If not, see . #include "Audio/openal_wrapper.hpp" #include "Graphic/gamegl.hpp" -#include "MacCompatibility.hpp" +#include "Platform/Platform.hpp" #include "User/Settings.hpp" #include "Version.hpp" @@ -37,7 +37,6 @@ along with Lugaru. If not, see . using namespace Game; #ifdef WIN32 -#include "win-res/resource.hpp" #include #include #endif diff --git a/Source/win-res/Lugaru.rc b/Source/win-res/Lugaru.rc deleted file mode 100644 index 6e7c3dd..0000000 --- a/Source/win-res/Lugaru.rc +++ /dev/null @@ -1,72 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.hpp" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_LUGARU ICON "lugaru.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - -- 2.39.5