From f65500ec7b02d8f2979c28fe8500ea2bb0fb5a48 Mon Sep 17 00:00:00 2001 From: Lukasz Kozakiewicz Date: Mon, 4 Sep 2017 17:36:36 +0200 Subject: [PATCH] InAppPurchases: fix linker error on iOS when product unlocking module is included by IAP capability is turned off. --- .../Source/Project Saving/jucer_ProjectExport_Android.h | 3 +++ .../Source/Project Saving/jucer_ProjectExport_XCode.h | 3 +++ modules/juce_gui_basics/native/juce_android_Windowing.cpp | 4 ++-- modules/juce_product_unlocking/juce_product_unlocking.cpp | 3 +++ modules/juce_product_unlocking/juce_product_unlocking.h | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_Android.h index 81f6d1b069..ba8c6e7513 100644 --- a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_Android.h @@ -1236,6 +1236,9 @@ private: defines.set ("JUCE_ANDROID_ACTIVITY_CLASSNAME", getJNIActivityClassName().replaceCharacter ('/', '_')); defines.set ("JUCE_ANDROID_ACTIVITY_CLASSPATH", "\"" + getJNIActivityClassName() + "\""); + if (androidInAppBillingPermission.get()) + defines.set ("JUCE_IN_APP_PURCHASES", "1"); + if (supportsGLv3()) defines.set ("JUCE_ANDROID_GL_ES_VERSION_3_0", "1"); diff --git a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h index f376e70eb6..3d18e12c8f 100644 --- a/extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h +++ b/extras/Projucer/Source/Project Saving/jucer_ProjectExport_XCode.h @@ -1040,6 +1040,9 @@ public: s.add ("SEPARATE_STRIP = YES"); } + if (owner.iOS && owner.isInAppPurchasesEnabled()) + defines.set ("JUCE_IN_APP_PURCHASES", "1"); + defines = mergePreprocessorDefs (defines, owner.getAllPreprocessorDefs (config, type)); StringArray defsList; diff --git a/modules/juce_gui_basics/native/juce_android_Windowing.cpp b/modules/juce_gui_basics/native/juce_android_Windowing.cpp index f15090bf8f..ba5ac8a7f4 100644 --- a/modules/juce_gui_basics/native/juce_android_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_android_Windowing.cpp @@ -32,7 +32,7 @@ namespace juce { //============================================================================== -#if JUCE_MODULE_AVAILABLE_juce_product_unlocking +#if JUCE_IN_APP_PURCHASES && JUCE_MODULE_AVAILABLE_juce_product_unlocking extern void juce_inAppPurchaseCompleted (void*); #endif @@ -92,7 +92,7 @@ JUCE_JNI_CALLBACK (JUCE_ANDROID_ACTIVITY_CLASSNAME, appActivityResult, void, (JN { setEnv (env); - #if JUCE_MODULE_AVAILABLE_juce_product_unlocking + #if JUCE_IN_APP_PURCHASES && JUCE_MODULE_AVAILABLE_juce_product_unlocking if (requestCode == 1001) juce_inAppPurchaseCompleted (intentData); #else diff --git a/modules/juce_product_unlocking/juce_product_unlocking.cpp b/modules/juce_product_unlocking/juce_product_unlocking.cpp index aa15069954..4e78809c61 100644 --- a/modules/juce_product_unlocking/juce_product_unlocking.cpp +++ b/modules/juce_product_unlocking/juce_product_unlocking.cpp @@ -50,6 +50,7 @@ namespace juce { + #if JUCE_IN_APP_PURCHASES #if JUCE_ANDROID #include "native/juce_android_InAppPurchases.cpp" #elif JUCE_IOS @@ -57,6 +58,8 @@ namespace juce #endif #include "in_app_purchases/juce_InAppPurchases.cpp" + #endif + #include "marketplace/juce_OnlineUnlockStatus.cpp" #if JUCE_MODULE_AVAILABLE_juce_data_structures diff --git a/modules/juce_product_unlocking/juce_product_unlocking.h b/modules/juce_product_unlocking/juce_product_unlocking.h index e715afbf16..85884e2df0 100644 --- a/modules/juce_product_unlocking/juce_product_unlocking.h +++ b/modules/juce_product_unlocking/juce_product_unlocking.h @@ -79,7 +79,9 @@ namespace juce { + #if JUCE_IN_APP_PURCHASES #include "in_app_purchases/juce_InAppPurchases.h" + #endif #if JUCE_MODULE_AVAILABLE_juce_data_structures #include "marketplace/juce_OnlineUnlockStatus.h"