From 21e0d284f6412ddc92f58883a1105b687d4f181c Mon Sep 17 00:00:00 2001 From: David Oliver Date: Fri, 17 May 2019 15:10:47 -0400 Subject: [PATCH] Build CalcManager on iOS - Add iOS build script (needs to run on MacOS with XCode) - fixes to build --- src/CalcManager/CCalcManager.h | 2 +- src/CalcManager/CalculatorManager.cpp | 2 +- src/CalcManager/CalculatorVector.h | 2 +- src/CalcManager/Ratpack/conv.cpp | 2 +- src/CalcManager/build_ios.sh | 35 +++++++++++++++++++++++++++ src/CalcManager/compat.h | 2 +- src/CalcManager/pch.h | 2 +- 7 files changed, 41 insertions(+), 6 deletions(-) create mode 100755 src/CalcManager/build_ios.sh diff --git a/src/CalcManager/CCalcManager.h b/src/CalcManager/CCalcManager.h index ab35e888..c5b7468a 100644 --- a/src/CalcManager/CCalcManager.h +++ b/src/CalcManager/CCalcManager.h @@ -40,7 +40,7 @@ struct CalculatorManager_CreateParams { GetCEngineStringFunc GetCEngineString; }; -#if defined(__EMSCRIPTEN__) +#if defined(__EMSCRIPTEN__) || defined(__APPLE__) #define DLL_EXPORT #else #define DLL_EXPORT __declspec(dllexport) diff --git a/src/CalcManager/CalculatorManager.cpp b/src/CalcManager/CalculatorManager.cpp index b60e5ecf..c30cad2a 100644 --- a/src/CalcManager/CalculatorManager.cpp +++ b/src/CalcManager/CalculatorManager.cpp @@ -14,7 +14,7 @@ static constexpr size_t SERIALIZED_NUMBER_MINSIZE = 3; // Converts Memory Command enum value to unsigned char, // while ignoring Warning C4309: 'conversion' : truncation of constant value -#if defined(__EMSCRIPTEN__) +#if defined(__EMSCRIPTEN__) || defined(__APPLE__) #define MEMORY_COMMAND_TO_UNSIGNED_CHAR(c) static_cast(c) #else #define MEMORY_COMMAND_TO_UNSIGNED_CHAR(c) __pragma(warning(push)) __pragma(warning(disable : 4309)) static_cast(c) __pragma(warning(pop)) diff --git a/src/CalcManager/CalculatorVector.h b/src/CalcManager/CalculatorVector.h index 8595b0b5..ed9f213c 100644 --- a/src/CalcManager/CalculatorVector.h +++ b/src/CalcManager/CalculatorVector.h @@ -10,7 +10,7 @@ #include "Ratpack/CalcErr.h" #include // for std::out_of_range -#if !defined(__EMSCRIPTEN__) +#if !defined(__EMSCRIPTEN__) && !defined(__APPLE__) #include #include // for SAL #endif diff --git a/src/CalcManager/Ratpack/conv.cpp b/src/CalcManager/Ratpack/conv.cpp index cd7af0e2..c7f474cf 100644 --- a/src/CalcManager/Ratpack/conv.cpp +++ b/src/CalcManager/Ratpack/conv.cpp @@ -49,7 +49,7 @@ wchar_t g_decimalSeparator = L'.'; #define Calc_UInt32x32To64(a, b) ((uint64_t)((uint32_t)(a)) * (uint64_t)((uint32_t)(b))) #endif -#elif defined(_M_IX86) || defined(__i386__) || defined(_M_ARM) || defined(__EMSCRIPTEN__) +#elif defined(_M_IX86) || defined(__i386__) || defined(_M_ARM) || defined(__EMSCRIPTEN__) || defined(__APPLE__) #ifndef Calc_UInt32x32To64 #define Calc_UInt32x32To64(a, b) (uint64_t)((uint64_t)(uint32_t)(a) * (uint32_t)(b)) diff --git a/src/CalcManager/build_ios.sh b/src/CalcManager/build_ios.sh new file mode 100755 index 00000000..6dc4cf04 --- /dev/null +++ b/src/CalcManager/build_ios.sh @@ -0,0 +1,35 @@ +xcrun -sdk iphoneos clang \ + -x c++ \ + -arch arm64 \ + -std=c++1z \ + -stdlib=libc++ \ + -c \ + CEngine/*.cpp RatPack/*.cpp *.cpp -I. + +mkdir bin +mkdir bin/arm64 + +libtool \ + -static \ + *.o \ + -o bin/arm64/libCalcManager.a + +rm *.o + +clang \ + -x c++ \ + -arch x86_64 \ + -std=c++1z \ + -stdlib=libc++ \ + -c \ + CEngine/*.cpp RatPack/*.cpp *.cpp -I. + +mkdir bin/x86_64 + +libtool \ + -static \ + *.o \ + -o bin/x86_64/libCalcManager.a + +rm *.o + diff --git a/src/CalcManager/compat.h b/src/CalcManager/compat.h index becc507c..7ffeec1a 100644 --- a/src/CalcManager/compat.h +++ b/src/CalcManager/compat.h @@ -1,6 +1,6 @@ #pragma once -#if defined(__EMSCRIPTEN__) +#if defined(__EMSCRIPTEN__) || defined(__APPLE__) #define HRESULT long #define _In_opt_ diff --git a/src/CalcManager/pch.h b/src/CalcManager/pch.h index f255b1f1..cab9e5f7 100644 --- a/src/CalcManager/pch.h +++ b/src/CalcManager/pch.h @@ -18,7 +18,7 @@ #include #include -#if !defined(__EMSCRIPTEN__) +#if !defined(__EMSCRIPTEN__) && !defined(__APPLE__) #include #include #include