Compare commits

...

9 Commits

Author SHA1 Message Date
elasota
b9b7d91989 Reject zip archives with non-zero file count but empty central directory 2022-03-17 13:14:17 -04:00
Eric Lasota
3e13877788 Merge pull request #11 from ryandesign/stdlib
Include stdlib.h where its functions are used
2022-03-17 13:10:33 -04:00
Ryan Schmidt
53ff18d337 Include stdlib.h where its functions are used
Fixes build failure on OS X 10.10 and 10.11:

error: use of undeclared identifier 'free'
error: use of undeclared identifier 'malloc'
error: use of undeclared identifier 'qsort'
2022-03-17 02:54:37 -05:00
elasota
e33c01cc40 Change line endings to UNIX 2022-03-17 02:00:06 -04:00
Eric Lasota
0c891d3117 Merge pull request #10 from ryandesign/mac
Improve CMake macOS build
2022-03-17 01:58:13 -04:00
elasota
e4d2d9f9a4 Fix bad null compares 2022-03-17 01:50:19 -04:00
elasota
41c0312921 Add more nullptr_t operators 2022-03-17 01:48:16 -04:00
Ryan Schmidt
e78b01a5f3 Improve CMake macOS build
Now actually builds on macOS.

Closes #9
2022-03-17 00:39:55 -05:00
elasota
d470bb5eeb Add nullptr_t constructor to THandle 2022-03-16 21:24:47 -04:00
7 changed files with 341 additions and 278 deletions

View File

@@ -1,5 +1,7 @@
#include "GpThreadEvent_Cpp11.h" #include "GpThreadEvent_Cpp11.h"
#include <stdlib.h>
GpThreadEvent_Cpp11::GpThreadEvent_Cpp11(bool autoReset, bool startSignaled) GpThreadEvent_Cpp11::GpThreadEvent_Cpp11(bool autoReset, bool startSignaled)
: m_flag(startSignaled) : m_flag(startSignaled)
, m_autoReset(autoReset) , m_autoReset(autoReset)

View File

@@ -4,6 +4,7 @@
#include "GpApplicationName.h" #include "GpApplicationName.h"
#include "GpIOStream.h" #include "GpIOStream.h"
#include <stdlib.h>
#include <time.h> #include <time.h>
#include <cstring> #include <cstring>

View File

@@ -20,7 +20,9 @@
#include "IGpVOSEventQueue.h" #include "IGpVOSEventQueue.h"
#include <string> #include <string>
#ifdef __MACOS__
#include "MacInit.h" #include "MacInit.h"
#endif
GpXGlobals g_gpXGlobals; GpXGlobals g_gpXGlobals;

View File

@@ -1,275 +1,299 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project (Aerofoil) project (Aerofoil)
SET(PLATFORM "X" CACHE STRING "Defines the target platform") SET(PLATFORM "X" CACHE STRING "Defines the target platform")
SET(EXECNAME "AerofoilX" CACHE STRING "Defines the exec name") SET(EXECNAME "AerofoilX" CACHE STRING "Defines the exec name")
message(${CMAKE_BINARY_DIR}) message(${CMAKE_BINARY_DIR})
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
if(PLATFORM STREQUAL "MAC") if(PLATFORM STREQUAL "MAC")
SET(EXECNAME "AerofoilMac" CACHE STRING "Defines the exec name" FORCE) SET(EXECNAME "AerofoilMac" CACHE STRING "Defines the exec name" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-D__MACOS__) add_definitions(-D__MACOS__)
endif() endif()
message("Building ${EXECNAME} for: ${PLATFORM}") message("Building ${EXECNAME} for: ${PLATFORM}")
add_definitions(-DGP_DEBUG_CONFIG=0) add_definitions(-DGP_DEBUG_CONFIG=0)
add_definitions(-DNDEBUG=1) add_definitions(-DNDEBUG=1)
add_library(stb STATIC add_library(stb STATIC
stb/stb_image_write.c stb/stb_image_write.c
) )
add_library(zlib STATIC add_library(zlib STATIC
zlib/adler32.c zlib/adler32.c
zlib/crc32.c zlib/crc32.c
zlib/deflate.c zlib/deflate.c
zlib/inffast.c zlib/inffast.c
zlib/inflate.c zlib/inflate.c
zlib/inftrees.c zlib/inftrees.c
zlib/trees.c zlib/trees.c
zlib/zutil.c zlib/zutil.c
) )
add_library(MacRomanConversion STATIC add_library(MacRomanConversion STATIC
MacRomanConversion/MacRomanConversion.cpp MacRomanConversion/MacRomanConversion.cpp
) )
add_library(PortabilityLayer STATIC add_library(PortabilityLayer STATIC
PortabilityLayer/AntiAliasTable.cpp PortabilityLayer/AntiAliasTable.cpp
PortabilityLayer/AppEventHandler.cpp PortabilityLayer/AppEventHandler.cpp
PortabilityLayer/BinHex4.cpp PortabilityLayer/BinHex4.cpp
PortabilityLayer/BitmapImage.cpp PortabilityLayer/BitmapImage.cpp
PortabilityLayer/ByteSwap.cpp PortabilityLayer/ByteSwap.cpp
PortabilityLayer/CFileStream.cpp PortabilityLayer/CFileStream.cpp
PortabilityLayer/DeflateCodec.cpp PortabilityLayer/CompositeRenderedFont.cpp
PortabilityLayer/DialogManager.cpp PortabilityLayer/DeflateCodec.cpp
PortabilityLayer/DisplayDeviceManager.cpp PortabilityLayer/DialogManager.cpp
PortabilityLayer/EllipsePlotter.cpp PortabilityLayer/DisplayDeviceManager.cpp
PortabilityLayer/FileBrowserUI.cpp PortabilityLayer/EllipsePlotter.cpp
PortabilityLayer/FileManager.cpp PortabilityLayer/FileBrowserUI.cpp
PortabilityLayer/FileSectionStream.cpp PortabilityLayer/FileManager.cpp
PortabilityLayer/FontFamily.cpp PortabilityLayer/FileSectionStream.cpp
PortabilityLayer/FontManager.cpp PortabilityLayer/FontFamily.cpp
PortabilityLayer/FontRenderer.cpp PortabilityLayer/FontManager.cpp
PortabilityLayer/GPArchive.cpp PortabilityLayer/FontRenderer.cpp
PortabilityLayer/HostSuspendHook.cpp PortabilityLayer/GPArchive.cpp
PortabilityLayer/IconLoader.cpp PortabilityLayer/HostSuspendHook.cpp
PortabilityLayer/InflateStream.cpp PortabilityLayer/IconLoader.cpp
PortabilityLayer/InputManager.cpp PortabilityLayer/InflateStream.cpp
PortabilityLayer/LinePlotter.cpp PortabilityLayer/InputManager.cpp
PortabilityLayer/MacBinary2.cpp PortabilityLayer/LinePlotter.cpp
PortabilityLayer/MacFileInfo.cpp PortabilityLayer/MacBinary2.cpp
PortabilityLayer/MacFileMem.cpp PortabilityLayer/MacFileInfo.cpp
PortabilityLayer/MemoryManager.cpp PortabilityLayer/MacFileMem.cpp
PortabilityLayer/MemReaderStream.cpp PortabilityLayer/MemoryManager.cpp
PortabilityLayer/MenuManager.cpp PortabilityLayer/MemReaderStream.cpp
PortabilityLayer/MMHandleBlock.cpp PortabilityLayer/MenuManager.cpp
PortabilityLayer/PLApplication.cpp PortabilityLayer/MMHandleBlock.cpp
PortabilityLayer/PLButtonWidget.cpp PortabilityLayer/PLApplication.cpp
PortabilityLayer/PLControlDefinitions.cpp PortabilityLayer/PLButtonWidget.cpp
PortabilityLayer/PLCore.cpp PortabilityLayer/PLControlDefinitions.cpp
PortabilityLayer/PLCTabReducer.cpp PortabilityLayer/PLCore.cpp
PortabilityLayer/PLDialogs.cpp PortabilityLayer/PLCTabReducer.cpp
PortabilityLayer/PLDrivers.cpp PortabilityLayer/PLDialogs.cpp
PortabilityLayer/PLEditboxWidget.cpp PortabilityLayer/PLDrivers.cpp
PortabilityLayer/PLEventQueue.cpp PortabilityLayer/PLEditboxWidget.cpp
PortabilityLayer/PLHacks.cpp PortabilityLayer/PLEventQueue.cpp
PortabilityLayer/PLHandle.cpp PortabilityLayer/PLHacks.cpp
PortabilityLayer/PLIconWidget.cpp PortabilityLayer/PLHandle.cpp
PortabilityLayer/PLImageWidget.cpp PortabilityLayer/PLIconWidget.cpp
PortabilityLayer/PLInvisibleWidget.cpp PortabilityLayer/PLImageWidget.cpp
PortabilityLayer/PLKeyEncoding.cpp PortabilityLayer/PLInvisibleWidget.cpp
PortabilityLayer/PLLabelWidget.cpp PortabilityLayer/PLKeyEncoding.cpp
PortabilityLayer/PLMenus.cpp PortabilityLayer/PLLabelWidget.cpp
PortabilityLayer/PLMovies.cpp PortabilityLayer/PLMenus.cpp
PortabilityLayer/PLNumberFormatting.cpp PortabilityLayer/PLMovies.cpp
PortabilityLayer/PLPopupMenuWidget.cpp PortabilityLayer/PLNumberFormatting.cpp
PortabilityLayer/PLQDOffscreen.cpp PortabilityLayer/PLPopupMenuWidget.cpp
PortabilityLayer/PLQDraw.cpp PortabilityLayer/PLQDOffscreen.cpp
PortabilityLayer/PLResourceManager.cpp PortabilityLayer/PLQDraw.cpp
PortabilityLayer/PLResources.cpp PortabilityLayer/PLResourceManager.cpp
PortabilityLayer/PLScrollBarWidget.cpp PortabilityLayer/PLResources.cpp
PortabilityLayer/PLSound.cpp PortabilityLayer/PLScrollBarWidget.cpp
PortabilityLayer/PLStandardColors.cpp PortabilityLayer/PLSound.cpp
PortabilityLayer/PLStringCompare.cpp PortabilityLayer/PLStandardColors.cpp
PortabilityLayer/PLSysCalls.cpp PortabilityLayer/PLStringCompare.cpp
PortabilityLayer/PLTimeTaggedVOSEvent.cpp PortabilityLayer/PLSysCalls.cpp
PortabilityLayer/PLWidgets.cpp PortabilityLayer/PLTimeTaggedVOSEvent.cpp
PortabilityLayer/QDGraf.cpp PortabilityLayer/PLWidgets.cpp
PortabilityLayer/QDManager.cpp PortabilityLayer/QDGraf.cpp
PortabilityLayer/QDPictDecoder.cpp PortabilityLayer/QDManager.cpp
PortabilityLayer/QDPictEmitContext.cpp PortabilityLayer/QDPictDecoder.cpp
PortabilityLayer/QDPictHeader.cpp PortabilityLayer/QDPictEmitContext.cpp
PortabilityLayer/QDPixMap.cpp PortabilityLayer/QDPictHeader.cpp
PortabilityLayer/QDPort.cpp PortabilityLayer/QDPixMap.cpp
PortabilityLayer/QDStandardPalette.cpp PortabilityLayer/QDPort.cpp
PortabilityLayer/RandomNumberGenerator.cpp PortabilityLayer/QDStandardPalette.cpp
PortabilityLayer/ResolveCachingColor.cpp PortabilityLayer/RandomNumberGenerator.cpp
PortabilityLayer/ResourceCompiledRef.cpp PortabilityLayer/ResolveCachingColor.cpp
PortabilityLayer/ResourceFile.cpp PortabilityLayer/ResourceCompiledRef.cpp
PortabilityLayer/ScanlineMask.cpp PortabilityLayer/ResourceFile.cpp
PortabilityLayer/ScanlineMaskBuilder.cpp PortabilityLayer/ScanlineMask.cpp
PortabilityLayer/ScanlineMaskConverter.cpp PortabilityLayer/ScanlineMaskBuilder.cpp
PortabilityLayer/ScanlineMaskIterator.cpp PortabilityLayer/ScanlineMaskConverter.cpp
PortabilityLayer/SimpleGraphic.cpp PortabilityLayer/ScanlineMaskIterator.cpp
PortabilityLayer/TextPlacer.cpp PortabilityLayer/SimpleGraphic.cpp
PortabilityLayer/UTF8.cpp PortabilityLayer/TextPlacer.cpp
PortabilityLayer/WindowDef.cpp PortabilityLayer/UTF8.cpp
PortabilityLayer/WindowManager.cpp PortabilityLayer/WindowDef.cpp
PortabilityLayer/WorkerThread.cpp PortabilityLayer/WindowManager.cpp
PortabilityLayer/XModemCRC.cpp PortabilityLayer/WorkerThread.cpp
PortabilityLayer/ZipFileProxy.cpp PortabilityLayer/XModemCRC.cpp
) PortabilityLayer/ZipFileProxy.cpp
)
target_include_directories(PortabilityLayer PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(PortabilityLayer PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/zlib> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/zlib>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MacRomanConversion> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/rapidjson/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/stb> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MacRomanConversion>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/stb>
)
target_compile_options(PortabilityLayer PRIVATE -Wno-multichar)
target_compile_options(PortabilityLayer PRIVATE -Wno-multichar)
target_link_libraries(PortabilityLayer zlib MacRomanConversion stb)
target_link_libraries(PortabilityLayer zlib MacRomanConversion stb)
add_library(GpShell STATIC
GpShell/GpAppEnvironment.cpp add_library(GpShell STATIC
GpShell/GpAudioDriverFactory.cpp GpShell/GpAppEnvironment.cpp
GpShell/GpDisplayDriverFactory.cpp GpShell/GpAudioDriverFactory.cpp
GpShell/GpFontHandlerFactory.cpp GpShell/GpDisplayDriverFactory.cpp
GpShell/GpGlobalConfig.cpp GpShell/GpFontHandlerFactory.cpp
GpShell/GpInputDriverFactory.cpp GpShell/GpGlobalConfig.cpp
GpShell/GpMain.cpp GpShell/GpInputDriverFactory.cpp
GpShell/GpVOSEventQueue.cpp GpShell/GpMain.cpp
) GpShell/GpVOSEventQueue.cpp
)
target_include_directories(GpShell PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(GpShell PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
)
add_library(GpApp STATIC
GpApp/About.cpp add_library(GpApp STATIC
GpApp/AnimCursor.cpp GpApp/About.cpp
GpApp/AppleEvents.cpp GpApp/AnimCursor.cpp
GpApp/Banner.cpp GpApp/AppleEvents.cpp
GpApp/ColorUtils.cpp GpApp/Banner.cpp
GpApp/Coordinates.cpp GpApp/ColorUtils.cpp
GpApp/DialogUtils.cpp GpApp/Coordinates.cpp
GpApp/DynamicMaps.cpp GpApp/DialogUtils.cpp
GpApp/Dynamics.cpp GpApp/DynamicMaps.cpp
GpApp/Dynamics2.cpp GpApp/Dynamics.cpp
GpApp/Dynamics3.cpp GpApp/Dynamics2.cpp
GpApp/Environ.cpp GpApp/Dynamics3.cpp
GpApp/Events.cpp GpApp/Environ.cpp
GpApp/FileError.cpp GpApp/Events.cpp
GpApp/GameOver.cpp GpApp/FileError.cpp
GpApp/GpAppInterface.cpp GpApp/GameOver.cpp
GpApp/Grease.cpp GpApp/GpAppInterface.cpp
GpApp/HighScores.cpp GpApp/Grease.cpp
GpApp/House.cpp GpApp/HighScores.cpp
GpApp/HouseInfo.cpp GpApp/House.cpp
GpApp/HouseIO.cpp GpApp/HouseInfo.cpp
GpApp/HouseLegal.cpp GpApp/HouseIO.cpp
GpApp/Input.cpp GpApp/HouseLegal.cpp
GpApp/Interactions.cpp GpApp/Input.cpp
GpApp/InterfaceInit.cpp GpApp/Interactions.cpp
GpApp/Link.cpp GpApp/InterfaceInit.cpp
GpApp/Main.cpp GpApp/Link.cpp
GpApp/MainMenuUI.cpp GpApp/Main.cpp
GpApp/MainWindow.cpp GpApp/MainMenuUI.cpp
GpApp/Map.cpp GpApp/MainWindow.cpp
GpApp/Marquee.cpp GpApp/Map.cpp
GpApp/Menu.cpp GpApp/Marquee.cpp
GpApp/Modes.cpp GpApp/Menu.cpp
GpApp/Music.cpp GpApp/Modes.cpp
GpApp/ObjectAdd.cpp GpApp/Music.cpp
GpApp/ObjectDraw.cpp GpApp/ObjectAdd.cpp
GpApp/ObjectDraw2.cpp GpApp/ObjectDraw.cpp
GpApp/ObjectDrawAll.cpp GpApp/ObjectDraw2.cpp
GpApp/ObjectEdit.cpp GpApp/ObjectDrawAll.cpp
GpApp/ObjectInfo.cpp GpApp/ObjectEdit.cpp
GpApp/ObjectRects.cpp GpApp/ObjectInfo.cpp
GpApp/Objects.cpp GpApp/ObjectRects.cpp
GpApp/Play.cpp GpApp/Objects.cpp
GpApp/Player.cpp GpApp/Play.cpp
GpApp/Prefs.cpp GpApp/Player.cpp
GpApp/RectUtils.cpp GpApp/Prefs.cpp
GpApp/Render.cpp GpApp/RectUtils.cpp
GpApp/Room.cpp GpApp/Render.cpp
GpApp/RoomGraphics.cpp GpApp/Room.cpp
GpApp/RoomInfo.cpp GpApp/RoomGraphics.cpp
GpApp/RubberBands.cpp GpApp/RoomInfo.cpp
GpApp/SavedGames.cpp GpApp/RubberBands.cpp
GpApp/Scoreboard.cpp GpApp/SavedGames.cpp
GpApp/Scrap.cpp GpApp/Scoreboard.cpp
GpApp/SelectHouse.cpp GpApp/Scrap.cpp
GpApp/Settings.cpp GpApp/SelectHouse.cpp
GpApp/Sound.cpp GpApp/Settings.cpp
GpApp/SoundSync_Cpp11.cpp GpApp/Sound.cpp
GpApp/SourceExport.cpp GpApp/SoundSync_Cpp11.cpp
GpApp/StringUtils.cpp GpApp/SourceExport.cpp
GpApp/StructuresInit.cpp GpApp/StringUtils.cpp
GpApp/StructuresInit2.cpp GpApp/StructuresInit.cpp
GpApp/Tools.cpp GpApp/StructuresInit2.cpp
GpApp/Transit.cpp GpApp/Tools.cpp
GpApp/Transitions.cpp GpApp/Transit.cpp
GpApp/Triggers.cpp GpApp/Transitions.cpp
GpApp/Trip.cpp GpApp/Triggers.cpp
GpApp/Utilities.cpp GpApp/Trip.cpp
GpApp/WindowUtils.cpp GpApp/Utilities.cpp
) GpApp/WindowUtils.cpp
)
target_compile_options(GpApp PRIVATE -Wno-multichar)
target_compile_options(GpApp PRIVATE -Wno-multichar)
target_include_directories(GpApp PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common> target_include_directories(GpApp PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
)
target_link_libraries(GpApp PortabilityLayer)
target_link_libraries(GpApp PortabilityLayer)
if(CMAKE_HOST_UNIX)
add_executable(${EXECNAME} if(CMAKE_HOST_UNIX)
AerofoilPortable/GpSystemServices_POSIX.cpp set(EXEC_SOURCES )
AerofoilPortable/GpThreadEvent_Cpp11.cpp list(APPEND EXEC_SOURCES
AerofoilPortable/GpAllocator_C.cpp AerofoilPortable/GpSystemServices_POSIX.cpp
AerofoilSDL/GpAudioDriver_SDL2.cpp AerofoilPortable/GpThreadEvent_Cpp11.cpp
AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp AerofoilPortable/GpAllocator_C.cpp
AerofoilSDL/GpInputDriver_SDL_Gamepad.cpp AerofoilSDL/GpAudioDriver_SDL2.cpp
AerofoilSDL/ShaderCode/CopyQuadP.cpp AerofoilSDL/GpDisplayDriver_SDL_GL2.cpp
AerofoilSDL/ShaderCode/DrawQuad32P.cpp AerofoilSDL/GpInputDriver_SDL_Gamepad.cpp
AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp AerofoilSDL/ShaderCode/CopyQuadP.cpp
AerofoilSDL/ShaderCode/DrawQuadV.cpp AerofoilSDL/ShaderCode/DrawQuad32P.cpp
AerofoilSDL/ShaderCode/ScaleQuadP.cpp AerofoilSDL/ShaderCode/DrawQuadPaletteP.cpp
AerofoilX/GpMain_SDL_X.cpp AerofoilSDL/ShaderCode/DrawQuadV.cpp
AerofoilX/GpLogDriver_X.cpp AerofoilSDL/ShaderCode/ScaleQuadP.cpp
AerofoilX/GpSystemServices_X.cpp AerofoilX/GpMain_SDL_X.cpp
AerofoilX/GpFileSystem_X.cpp AerofoilX/GpLogDriver_X.cpp
) AerofoilX/GpSystemServices_X.cpp
AerofoilX/GpFileSystem_X.cpp
target_include_directories(${EXECNAME} PRIVATE )
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon> set(EXEC_LIBS )
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpShell> list(APPEND EXEC_LIBS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilSDL> ${SDL2_LIBRARIES}
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilPortable> GpApp
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer> GpShell
${SDL2_INCLUDE_DIRS} )
)
set(EXEC_INC_DIRS )
target_link_libraries(${EXECNAME} ${SDL2_LIBRARIES} GpApp GpShell) list(APPEND EXEC_INC_DIRS
endif() $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpCommon>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/GpShell>
install (TARGETS ${EXECNAME}) $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilSDL>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilPortable>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/PortabilityLayer>
${SDL2_INCLUDE_DIRS}
)
if(PLATFORM STREQUAL "MAC")
list(APPEND EXEC_SOURCES
AerofoilMac/AerofoilMac/AerofoilApplication.mm
AerofoilMac/AerofoilMac/MacInit.mm
)
list(APPEND EXEC_INC_DIRS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/AerofoilMac/AerofoilMac>
)
list(APPEND EXEC_LIBS
"-framework Cocoa"
)
endif(PLATFORM STREQUAL "MAC")
add_executable(${EXECNAME} ${EXEC_SOURCES})
target_include_directories(${EXECNAME} PRIVATE ${EXEC_INC_DIRS})
target_link_libraries(${EXECNAME} ${EXEC_LIBS})
endif()
install (TARGETS ${EXECNAME})

View File

@@ -336,7 +336,7 @@ void DisposCursors (void)
void IncrementCursor (void) void IncrementCursor (void)
{ {
if (animCursorH == 0) if (animCursorH == nullptr)
InitAnimatedCursor(nil); InitAnimatedCursor(nil);
if (animCursorH) if (animCursorH)
{ {
@@ -356,7 +356,7 @@ void IncrementCursor (void)
void DecrementCursor (void) void DecrementCursor (void)
{ {
if (animCursorH == 0) if (animCursorH == nullptr)
InitAnimatedCursor(nil); InitAnimatedCursor(nil);
if (animCursorH) if (animCursorH)
{ {

View File

@@ -1,5 +1,7 @@
#pragma once #pragma once
#include <cstddef>
namespace PortabilityLayer namespace PortabilityLayer
{ {
struct MMHandleBlock; struct MMHandleBlock;
@@ -24,6 +26,7 @@ class THandle final : public THandleBase
{ {
public: public:
THandle(); THandle();
THandle(std::nullptr_t);
THandle(T **hdl); THandle(T **hdl);
explicit THandle(PortabilityLayer::MMHandleBlock *hdl); explicit THandle(PortabilityLayer::MMHandleBlock *hdl);
THandle(const THandle<T> &other); THandle(const THandle<T> &other);
@@ -46,6 +49,9 @@ public:
bool operator==(T** other) const; bool operator==(T** other) const;
bool operator!=(T** other) const; bool operator!=(T** other) const;
bool operator==(std::nullptr_t) const;
bool operator!=(std::nullptr_t) const;
static THandle<T> NullPtr(); static THandle<T> NullPtr();
}; };
@@ -74,6 +80,12 @@ inline THandle<T>::THandle()
{ {
} }
template<class T>
inline THandle<T>::THandle(std::nullptr_t)
: THandleBase(nullptr)
{
}
template<class T> template<class T>
inline THandle<T>::THandle(T **hdl) inline THandle<T>::THandle(T **hdl)
: THandleBase(reinterpret_cast<PortabilityLayer::MMHandleBlock*>(hdl)) : THandleBase(reinterpret_cast<PortabilityLayer::MMHandleBlock*>(hdl))
@@ -107,17 +119,33 @@ inline bool THandle<T>::operator!=(const THandle<T> &other) const
template<class T> template<class T>
inline bool THandle<T>::operator==(T** other) const inline bool THandle<T>::operator==(T** other) const
{ {
if (other == nullptr)
return m_hdl == nullptr;
return static_cast<void*>(&m_hdl->m_contents) == static_cast<void*>(other); return static_cast<void*>(&m_hdl->m_contents) == static_cast<void*>(other);
} }
template<class T> template<class T>
inline bool THandle<T>::operator!=(T** other) const inline bool THandle<T>::operator!=(T** other) const
{ {
if (other == nullptr)
return m_hdl != nullptr;
return static_cast<void*>(&m_hdl->m_contents) != static_cast<void*>(other); return static_cast<void*>(&m_hdl->m_contents) != static_cast<void*>(other);
} }
template<class T> template<class T>
THandle<T> THandle<T>::NullPtr() inline bool THandle<T>::operator==(std::nullptr_t) const
{
return m_hdl == nullptr;
}
template<class T>
inline bool THandle<T>::operator!=(std::nullptr_t) const
{
return m_hdl != nullptr;
}
template<class T>
inline THandle<T> THandle<T>::NullPtr()
{ {
return THandle<T>(static_cast<PortabilityLayer::MMHandleBlock *>(nullptr)); return THandle<T>(static_cast<PortabilityLayer::MMHandleBlock *>(nullptr));
} }

View File

@@ -10,6 +10,7 @@
#include "DeflateCodec.h" #include "DeflateCodec.h"
#include <algorithm> #include <algorithm>
#include <stdlib.h>
namespace namespace
{ {
@@ -323,6 +324,11 @@ namespace PortabilityLayer
return nullptr; return nullptr;
} }
} }
else
{
if (numFiles == 0)
return nullptr;
}
bool failed = false; bool failed = false;