Make project buildable by MSVC

This commit is contained in:
Tau 2018-11-23 18:24:41 -05:00
parent 359561d762
commit 6adb4e7b8b
6 changed files with 63 additions and 10 deletions

View File

@ -1,8 +1,15 @@
project('segatools', 'c', version: '0.1.0')
add_project_arguments(
'-Wall',
'-DCOBJMACROS',
'-DWIN32_LEAN_AND_MEAN',
language: 'c',
)
# Use get_argument_syntax() instead once Meson 0.49.0 releases
if meson.get_compiler('c').get_id() != 'msvc'
add_project_arguments(
'-Wall',
'-ffunction-sections',
'-fdata-sections',
language: 'c',
@ -14,6 +21,7 @@ add_project_link_arguments(
'-static-libgcc',
language: 'c',
)
endif
inc = include_directories('.')
capnhook = subproject('capnhook')

11
nu/ds.c
View File

@ -1,4 +1,15 @@
#define WIN32_NO_STATUS
#include <windows.h>
#undef WIN32_NO_STATUS
#include <winternl.h>
#ifdef __GNUC__
#include <ntdef.h>
#else
#include <winnt.h>
#endif
#include <devioctl.h>
#include <ntdddisk.h>
#include <ntstatus.h>
#include <assert.h>

View File

@ -1,5 +1,13 @@
#include <windows.h>
#ifdef __GNUC__
#include <ntdef.h>
#else
#include <winnt.h>
#endif
#include <devioctl.h>
#include <ntdddisk.h>
#include <assert.h>
#include "hook/iohook.h"

View File

@ -1,4 +1,8 @@
#define WIN32_NO_STATUS
#include <windows.h>
#undef WIN32_NO_STATUS
#include <winternl.h>
#include <ntstatus.h>
#include <assert.h>

View File

@ -1,5 +1,13 @@
#include <windows.h>
#ifdef __GNUC__
#include <ntdef.h>
#else
#include <winnt.h>
#endif
#include <devioctl.h>
#include <ntdddisk.h>
#include <assert.h>
#include "hook/iohook.h"

View File

@ -1,15 +1,29 @@
/*
Making NTSTATUS available is slightly awkward. See:
https://kirkshoop.github.io/2011/09/20/ntstatus.html
*/
/* Win32 user-mode API */
#define WIN32_NO_STATUS
#include <windows.h>
#undef WIN32_NO_STATUS
#include <winternl.h>
#include <setupapi.h>
#include <unknwn.h>
#include <d3d9.h>
/* Win32 kernel-mode definitions */
#ifdef __GNUC__
/* MinGW needs to include this for PHYSICAL_ADDRESS to be defined.
The MS SDK throws a bunch of duplicate symbol errors instead. */
#include <ntdef.h>
#include <ntstatus.h>
#else
#include <winnt.h>
#endif
#include <devioctl.h>
#include <ntdddisk.h>
#include <ntddser.h>
#include <ntstatus.h>
#include <assert.h>
#include <stdbool.h>