Fix Windows build errors

This commit is contained in:
Struma 2020-12-31 19:59:53 -05:00 committed by Roza
parent 961a8fb63b
commit 8f78a4cf17
7 changed files with 28 additions and 35 deletions

View file

@ -81,8 +81,6 @@ RB_METHOD(httpPost) {
req.headers().insert(headers.begin(), headers.end());
}
VALUE keys = NUM2INT(rb_funcall(postDataHash, rb_intern("keys"), 0));
auto postData = hash2StringMap(postDataHash);
auto res = req.post(postData);
ret = rb_hash_new();

View file

@ -3,7 +3,7 @@ if get_option('mri_includes') == ''
ver = get_option('mri_version')
if ver.version_compare('<=1.8')
global_args += '-DMKXPZ_LEGACY_RUBY'
elif ver.version_compare('>=3.0')
elif ver.version_compare('>=3.0') and compilers['cpp'].get_id() == 'clang'
global_args += '-fdeclspec'
endif
global_dependencies += dependency('ruby-' + ver)
@ -46,6 +46,7 @@ endif
if miniffi == true
binding_source += files('miniffi-binding.cpp')
binding_source += files('miniffi.cpp')
endif
global_sources += binding_source

View file

@ -12,7 +12,7 @@
#define MVAL2RB(v) ULONG2NUM(v)
#define RB2MVAL(v) (mffi_value)NUM2ULONG(v)
#else
#ifdef _WIN64
#ifdef __MINGW64__
#define MVAL2RB(v) ULL2NUM(v)
#define RB2MVAL(v) (mffi_value)NUM2ULL(v)
#else
@ -214,7 +214,7 @@ RB_METHOD(MiniFFI_call) {
VALUE func = rb_iv_get(self, "_func");
VALUE own_imports = rb_iv_get(self, "_imports");
VALUE own_exports = rb_iv_get(self, "_exports");
MINIFFI_FUNC ApiFunction = (MINIFFI_FUNC)NUM2ULONG(func);
MINIFFI_FUNC ApiFunction = (MINIFFI_FUNC)RB2MVAL(func);
VALUE args;
int items = rb_scan_args(argc, argv, "0*", &args);
int nimport = RARRAY_LEN(own_imports);
@ -234,7 +234,7 @@ RB_METHOD(MiniFFI_call) {
} else {
StringValue(str);
rb_str_modify(str);
lParam = (unsigned long)RSTRING_PTR(str);
lParam = (mffi_value)RSTRING_PTR(str);
}
break;

View file

@ -8,13 +8,10 @@ mffi_value miniffi_call_intern(MINIFFI_FUNC target, MiniFFIFuncArgs *p, int npar
p->params[4], p->params[5], p->params[6], p->params[7]);
}
#else
mffi_value miniffi_call_intern(MINIFFI_FUNC target, MiniFFIFuncArgs *p, size_t nparams) {
return call_asm(target, p, nparams);
}
#define INTEL_ASM ".intel_syntax noprefix\n"
__attribute__((noinline))
#ifndef __MINGW64__
mffi_value call_asm(MINIFFI_FUNC target, MINIFFIFuncArgs *p, size_t nparams) {
mffi_value miniffi_call_intern(MINIFFI_FUNC target, MiniFFIFuncArgs *p, int nparams) {
mffi_value ret;
void *old_esp = 0;
@ -39,7 +36,7 @@ mffi_value call_asm(MINIFFI_FUNC target, MINIFFIFuncArgs *p, size_t nparams) {
"call edx\n"
: "=a"(ret)
: "b"(nparams), "S"(params), "d"(target), "D"(&old_esp)
: "b"(nparams), "S"(p), "d"(target), "D"(&old_esp)
: "ecx"
);
@ -57,7 +54,7 @@ mffi_value call_asm(MINIFFI_FUNC target, MINIFFIFuncArgs *p, size_t nparams) {
return ret;
}
#else
mffi_value call_asm(MINIFFI_FUNC target, MINIFFIFuncArgs *p, size_t nparams) {
mffi_value miniffi_call_intern(MINIFFI_FUNC target, MiniFFIFuncArgs *p, int nparams) {
mffi_value ret;
void *old_rsp = 0;
asm volatile(INTEL_ASM
@ -81,7 +78,7 @@ mffi_value call_asm(MINIFFI_FUNC target, MINIFFIFuncArgs *p, size_t nparams) {
"call rdx\n"
: "=a"(ret)
: "b"(nparams), "S"(params), "d"(target), "D"(&old_rsp)
: "b"(nparams), "S"(p), "d"(target), "D"(&old_rsp)
: "rcx"
);
asm volatile(INTEL_ASM

View file

@ -1,8 +1,6 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <cstdint>
#if defined(__linux__) || defined(__APPLE__)
#define MINIFFI_MAX_ARGS 8l
@ -26,7 +24,3 @@ typedef struct {
} MiniFFIFuncArgs;
mffi_value miniffi_call_intern(MINIFFI_FUNC target, MiniFFIFuncArgs *p, int nparams);
#ifdef __cplusplus
}
#endif

View file

@ -117,12 +117,12 @@
3B10EE092568E96A00372D13 /* binding-mri.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B10EDF02568E96A00372D13 /* binding-mri.cpp */; };
3B10EE0B2568E96A00372D13 /* module_rpg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B10EDF32568E96A00372D13 /* module_rpg.cpp */; };
3B10EE0C2568E96A00372D13 /* viewport-binding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B10EDF42568E96A00372D13 /* viewport-binding.cpp */; };
3B312843259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312844259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312845259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312846259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312847259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312848259E7DC1002EAB43 /* miniffi.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.c */; };
3B312843259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B312844259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B312845259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B312846259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B312847259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B312848259E7DC1002EAB43 /* miniffi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B312842259E7DC1002EAB43 /* miniffi.cpp */; };
3B426F77256BA847009EA00F /* libsigc-2.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B426F76256BA847009EA00F /* libsigc-2.0.a */; };
3B522DA9259BAA42003301C4 /* libfluidsynth.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B522DA1259BAA13003301C4 /* libfluidsynth.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
3B522DAA259BAA4A003301C4 /* libfluidsynth.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B522DA1259BAA13003301C4 /* libfluidsynth.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@ -1166,7 +1166,7 @@
3B10EDF42568E96A00372D13 /* viewport-binding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "viewport-binding.cpp"; sourceTree = "<group>"; };
3B10EE1F2569348E00372D13 /* json5pp.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = json5pp.hpp; sourceTree = "<group>"; };
3B312841259E7DC1002EAB43 /* miniffi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = miniffi.h; sourceTree = "<group>"; };
3B312842259E7DC1002EAB43 /* miniffi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = miniffi.c; sourceTree = "<group>"; };
3B312842259E7DC1002EAB43 /* miniffi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = miniffi.cpp; sourceTree = "<group>"; };
3B426F6B256B8AC0009EA00F /* fs_std_impl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fs_std_impl.hpp; sourceTree = "<group>"; };
3B426F6C256B8AC0009EA00F /* fs_fwd.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fs_fwd.hpp; sourceTree = "<group>"; };
3B426F6D256B8AC0009EA00F /* fs_std.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fs_std.hpp; sourceTree = "<group>"; };
@ -1822,7 +1822,7 @@
3B10EDE62568E96A00372D13 /* etc-binding.cpp */,
3B10EDE72568E96A00372D13 /* tilemap-binding.cpp */,
3B10EDE82568E96A00372D13 /* miniffi-binding.cpp */,
3B312842259E7DC1002EAB43 /* miniffi.c */,
3B312842259E7DC1002EAB43 /* miniffi.cpp */,
3B312841259E7DC1002EAB43 /* miniffi.h */,
3B10EDE92568E96A00372D13 /* graphics-binding.cpp */,
3B10EDEA2568E96A00372D13 /* plane-binding.cpp */,
@ -2345,7 +2345,7 @@
3B8E43752587B200008218FC /* windowvx.cpp in Sources */,
3B522DEA259C2039003301C4 /* LUrlParser.cpp in Sources */,
3B8E43762587B200008218FC /* module_rpg.cpp in Sources */,
3B312848259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312848259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3B8E43772587B200008218FC /* autotiles.cpp in Sources */,
3B8E43782587B200008218FC /* audiostream.cpp in Sources */,
3B8E43792587B200008218FC /* binding-util.cpp in Sources */,
@ -2440,7 +2440,7 @@
3BC65CE52584EDC60063AFF1 /* windowvx.cpp in Sources */,
3B522DE7259C2039003301C4 /* LUrlParser.cpp in Sources */,
3BC65CE62584EDC60063AFF1 /* module_rpg.cpp in Sources */,
3B312845259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312845259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3BC65CE72584EDC60063AFF1 /* autotiles.cpp in Sources */,
3BC65CE82584EDC60063AFF1 /* audiostream.cpp in Sources */,
3BC65CE92584EDC60063AFF1 /* binding-util.cpp in Sources */,
@ -2528,7 +2528,7 @@
3BC65DA62584F3AD0063AFF1 /* windowvx.cpp in Sources */,
3B522DE5259C2039003301C4 /* LUrlParser.cpp in Sources */,
3BC65DA72584F3AD0063AFF1 /* module_rpg.cpp in Sources */,
3B312843259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312843259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3BC65DA82584F3AD0063AFF1 /* autotiles.cpp in Sources */,
3BC65DA92584F3AD0063AFF1 /* audiostream.cpp in Sources */,
3BC65DAA2584F3AD0063AFF1 /* binding-util.cpp in Sources */,
@ -2616,7 +2616,7 @@
3B10EDBC2568E95E00372D13 /* windowvx.cpp in Sources */,
3B522DE6259C2039003301C4 /* LUrlParser.cpp in Sources */,
3B10EE0B2568E96A00372D13 /* module_rpg.cpp in Sources */,
3B312844259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312844259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3B10EDD22568E95E00372D13 /* autotiles.cpp in Sources */,
3B10EDB92568E95E00372D13 /* audiostream.cpp in Sources */,
3B10EE082568E96A00372D13 /* binding-util.cpp in Sources */,
@ -2704,7 +2704,7 @@
3BF694F02595FE5F0016920C /* windowvx.cpp in Sources */,
3B522DE9259C2039003301C4 /* LUrlParser.cpp in Sources */,
3BF694F12595FE5F0016920C /* module_rpg.cpp in Sources */,
3B312847259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312847259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3BF694F22595FE5F0016920C /* autotiles.cpp in Sources */,
3BF694F32595FE5F0016920C /* audiostream.cpp in Sources */,
3BF694F42595FE5F0016920C /* binding-util.cpp in Sources */,
@ -2792,7 +2792,7 @@
3BF6958E259608050016920C /* windowvx.cpp in Sources */,
3B522DE8259C2039003301C4 /* LUrlParser.cpp in Sources */,
3BF6958F259608050016920C /* module_rpg.cpp in Sources */,
3B312846259E7DC1002EAB43 /* miniffi.c in Sources */,
3B312846259E7DC1002EAB43 /* miniffi.cpp in Sources */,
3BF69590259608050016920C /* autotiles.cpp in Sources */,
3BF69591259608050016920C /* audiostream.cpp in Sources */,
3BF69592259608050016920C /* binding-util.cpp in Sources */,

View file

@ -33,6 +33,9 @@ if get_option('enable-https') == true
if openssl.found() == true
global_dependencies += openssl
global_args += '-DMKXPZ_SSL'
if host_system == 'windows'
global_link_args += '-lcrypt32'
endif
else
warning('Could not locate OpenSSL. HTTPS will be disabled.')
endif