Browse Source

Fix macOS compilation errors (#28)

* Fix macOS compilation errors
pull/34/head
Max Desiatov 7 years ago committed by Anders Jenbo
parent
commit
e748b7754f
  1. 7
      .vscode/settings.json
  2. 2
      3rdParty/Storm/Source/storm.cpp
  3. 2
      3rdParty/Storm/Source/storm.h
  4. 3
      CMakeLists.txt
  5. 2
      Source/engine.cpp
  6. 27
      SourceS/macos_stdarg.h
  7. 7
      SourceS/miniwin.h
  8. 4
      SourceS/miniwin_ui.h
  9. 30
      SourceX/DiabloUI/diabloui.cpp
  10. 4
      SourceX/storm.cpp

7
.vscode/settings.json vendored

@ -37,6 +37,11 @@
"cinttypes": "cpp",
"type_traits": "cpp",
"tuple": "cpp",
"algorithm": "cpp"
"algorithm": "cpp",
"cassert": "cpp",
"map": "cpp",
"set": "cpp",
"locale": "cpp",
"*.ipp": "cpp"
}
}

2
3rdParty/Storm/Source/storm.cpp vendored

@ -73,7 +73,7 @@ BOOL STORMAPI SFileDdaInitialize(HANDLE directsound) rBool;
BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume) rBool;
BOOL STORMAPI SFileDestroy() rBool;
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE archive) rBool;
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE *archive) rBool;
LONG STORMAPI SFileGetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh) rInt;
BOOL STORMAPI SFileOpenArchive(const char *szMpqName, DWORD dwPriority, DWORD dwFlags, HANDLE *phMpq) rBool;
BOOL STORMAPI SFileOpenFile(const char *filename, HANDLE *phFile) rBool;

2
3rdParty/Storm/Source/storm.h vendored

@ -488,7 +488,7 @@ BOOL STORMAPI SFileDdaInitialize(HANDLE directsound);
BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume);
BOOL STORMAPI SFileDestroy();
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE archive);
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE *archive);
LONG STORMAPI SFileGetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);
BOOL STORMAPI SFileOpenArchive(const char *szMpqName, DWORD dwPriority, DWORD dwFlags, HANDLE *phMpq);

3
CMakeLists.txt

@ -236,7 +236,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Silence warnings about __int64 alignment hack not always being applicable
target_compile_options(devilutionx PRIVATE -Wno-ignored-attributes)
# Fix: error: cast from pointer to smaller type 'unsigned char' loses information
target_compile_options(devilutionx PRIVATE -fms-extensions)
target_compile_options(devilution PRIVATE -fms-extensions -fms-compatibility -fms-compatibility-version=19.00)
target_link_options(devilutionx PRIVATE -liconv)
endif()
if(COTIRE)

2
Source/engine.cpp

@ -1683,7 +1683,7 @@ void __fastcall Cl2DecodeFrm1(int x, int y, char *pCelBuff, int nCel, int width,
if (pCelBuff) {
if (nCel > 0) {
v9 = *(LONG*)&pCelBuff[4 * nCel];
pCelBuffa = v9;
pCelBuffa = (char *)v9;
v10 = (INT_PTR)&v8[v9];
if (*(_WORD *)(v10 + dir1)) {
if (dir2 == 8 || (v11 = *(unsigned short *)(v10 + dir2), !*(_WORD *)(v10 + dir2)))

27
SourceS/macos_stdarg.h

@ -0,0 +1,27 @@
#if defined(__MACH__)
#ifndef __STDARG_H
#define __STDARG_H
#ifndef _VA_LIST_T
typedef __builtin_va_list va_list;
#define _VA_LIST_T
#endif
#define va_start(ap, param) __builtin_va_start(ap, param)
#define va_end(ap) __builtin_va_end(ap)
#define va_arg(ap, type) __builtin_va_arg(ap, type)
/* GCC always defines __va_copy, but does not define va_copy unless in c99 mode
* or -ansi is not specified, since it was not part of C90.
*/
#define __va_copy(d,s) __builtin_va_copy(d,s)
#if __STDC_VERSION__ >= 199900L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__)
#define va_copy(dest, src) __builtin_va_copy(dest, src)
#endif
/* Hack required to make standard headers work, at least on Ubuntu */
#define __GNUC_VA_LIST 1
typedef __builtin_va_list __gnuc_va_list;
#endif /* __STDARG_H */
#endif

7
SourceS/miniwin.h

@ -3,7 +3,12 @@
#include <ctype.h>
#include <fcntl.h>
#include <math.h>
// work around https://reviews.llvm.org/D51265
#ifdef __MACH__
#include "macos_stdarg.h"
#else
#include <stdarg.h>
#endif
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
@ -277,7 +282,7 @@ typedef WORD ATOM;
#define CS_HREDRAW 0x0001
#define CS_VREDRAW 0x0002
#define IDC_ARROW 0x1 // Dummy value
#define IDC_ARROW (LPCSTR)0x1 // Dummy value
#define CSIDL_STARTMENU 0x000b

4
SourceS/miniwin_ui.h

@ -4,5 +4,5 @@ BOOL EndDialog(HWND hDlg, INT_PTR nResult);
BOOL SetDlgItemText(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);
DWORD FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, char *lpBuffer, DWORD nSize, va_list *Arguments);
int DialogBoxParam(HINSTANCE hInstance, int msgId, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);
int MAKEINTRESOURCE(int i);
int DialogBoxParam(HINSTANCE hInstance, LPCSTR msgId, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);
LPCSTR MAKEINTRESOURCE(int i);

30
SourceX/DiabloUI/diabloui.cpp

@ -66,40 +66,40 @@ DWORD FormatMessage(
return 0;
}
int MAKEINTRESOURCE(int i)
LPCSTR MAKEINTRESOURCE(int i)
{
switch (i) {
case IDD_DIALOG1:
return 0;
return (LPCSTR)0;
case IDD_DIALOG2:
return 1;
return (LPCSTR)1;
case IDD_DIALOG3:
return 2;
return (LPCSTR)2;
case IDD_DIALOG4:
return 3;
return (LPCSTR)3;
case IDD_DIALOG5:
return 4;
return (LPCSTR)4;
case IDD_DIALOG7:
return 5;
return (LPCSTR)5;
case IDD_DIALOG8:
return 6;
return (LPCSTR)6;
case IDD_DIALOG9:
return 7;
return (LPCSTR)7;
case IDD_DIALOG10:
return 8;
return (LPCSTR)8;
case IDD_DIALOG11:
return 9;
return (LPCSTR)9;
}
return -1;
return (LPCSTR)-1;
}
int DialogBoxParam(HINSTANCE hInstance, int msgId, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
int DialogBoxParam(HINSTANCE hInstance, LPCSTR msgId, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
char text[1024];
snprintf(text, 1024, errorMessages[msgId], dwInitParam);
snprintf(text, 1024, errorMessages[(intptr_t)msgId], dwInitParam);
return SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, errorTitle[msgId], text, window) < 0 ? -1 : 0;
return SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, errorTitle[(intptr_t)msgId], text, window) < 0 ? -1 : 0;
}
BOOL SetDlgItemText(HWND hDlg, int nIDDlgItem, LPCSTR lpString)

4
SourceX/storm.cpp

@ -77,7 +77,7 @@ BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed
return TRUE;
}
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE archive)
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE *archive)
{
UNIMPLEMENTED();
}
@ -434,7 +434,7 @@ BOOL STORMAPI SVidPlayBegin(char *filename, int a2, int a3, int a4, int a5, int
// Copy frame to buffer
SVidSurface = SDL_CreateRGBSurfaceWithFormatFrom(
smk_get_video(SVidSMK),
(unsigned char *)smk_get_video(SVidSMK),
width,
height,
8,

Loading…
Cancel
Save