瀏覽代碼

Update AWSNativeSDK for Android to use O3DE OpenSSL package (#111)

* Update AWSNativeSDK for Android to use O3DE OpenSSL package

Signed-off-by: Junbo Liang <[email protected]>
Junbo Liang 3 年之前
父節點
當前提交
6ce88325d9

+ 24 - 0
package-system/AWSNativeSDK/AWSNativeSDK-1.9.50-android.patch

@@ -0,0 +1,24 @@
+diff --git a/android-build/CMakeLists.txt b/android-build/CMakeLists.txt
+index d88f235750..b9c6ad0041 100644
+--- a/android-build/CMakeLists.txt
++++ b/android-build/CMakeLists.txt
+@@ -86,5 +86,6 @@ if(BUILD_CURL)
+         -DBUILD_CURL_EXE=ON
+         -DBUILD_CURL_TESTS=OFF
+         -DCURL_ZLIB=${CURL_USE_ZLIB}
++        -DCMAKE_MODULE_PATH="D:/3p-package-source/package-system/OpenSSL-1.1.1m-rev1-android"
+         )
+ endif()
+diff --git a/cmake/build_external.cmake b/cmake/build_external.cmake
+index f8cfb63232..f8087965e1 100644
+--- a/cmake/build_external.cmake
++++ b/cmake/build_external.cmake
+@@ -65,6 +65,8 @@ if(BUILD_CURL OR BUILD_OPENSSL OR BUILD_ZLIB)
+ 
+         set(LibCrypto_INCLUDE_DIR "${OPENSSL_INCLUDE_DIR}" CACHE INTERNAL "crypto include dir")
+         set(LibCrypto_STATIC_LIBRARY "${OPENSSL_LIBRARY_DIR}/libcrypto.a" CACHE INTERNAL "crypto static library")
++    else()
++        set(OPENSSL_LINKER_FLAGS "-L${OPENSSL_LIBS_DIR}" CACHE INTERNAL "linker flags to find openssl")
+     endif()
+ 
+     # curl

+ 31 - 24
package-system/AWSNativeSDK/FindAWSNativeSDK.cmake.Android

@@ -16,14 +16,18 @@ set(AWSNATIVESDK_INCLUDE_PATH ${AWS_BASE_PATH}/include)
 
 # Determine the lib path and any extra build dependencies
 if(LY_MONOLITHIC_GAME)
+    set(AWSNATIVE_SDK_DEBUG_LIB_PATH ${AWS_BASE_PATH}/lib/Debug)
+    set(AWSNATIVE_SDK_RELEASE_LIB_PATH ${AWS_BASE_PATH}/lib/Release)
     set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/lib/$<IF:$<CONFIG:Debug>,Debug,Release>)
+
     set(AWSNATIVESDK_BUILD_DEPENDENCIES
         ${AWSNATIVE_SDK_LIB_PATH}/dependencies/${CMAKE_STATIC_LIBRARY_PREFIX}curl${CMAKE_STATIC_LIBRARY_SUFFIX}
-        ${AWSNATIVE_SDK_LIB_PATH}/dependencies/${CMAKE_STATIC_LIBRARY_PREFIX}ssl${CMAKE_STATIC_LIBRARY_SUFFIX}
-        ${AWSNATIVE_SDK_LIB_PATH}/dependencies/${CMAKE_STATIC_LIBRARY_PREFIX}crypto${CMAKE_STATIC_LIBRARY_SUFFIX}
-        ${AWSNATIVE_SDK_LIB_PATH}/dependencies/${CMAKE_STATIC_LIBRARY_PREFIX}z${CMAKE_STATIC_LIBRARY_SUFFIX}
+        3rdParty::OpenSSL
+        3rdParty::ZLIB
     )
 else()
+    set(AWSNATIVE_SDK_DEBUG_LIB_PATH ${AWS_BASE_PATH}/bin/Debug)
+    set(AWSNATIVE_SDK_RELEASE_LIB_PATH ${AWS_BASE_PATH}/bin/Release)
     set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/bin/$<IF:$<CONFIG:Debug>,Debug,Release>)
 endif()
 
@@ -41,44 +45,47 @@ function(ly_declare_aws_library)
 
     set(TARGET_WITH_NAMESPACE "3rdParty::${AWSNATIVESDK_PACKAGE_NAME}::${ly_declare_aws_library_NAME}")
     if (NOT TARGET ${TARGET_WITH_NAMESPACE})
-
-        add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
-
-        ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_INCLUDE_PATH})
-
         if (ly_declare_aws_library_LIB_FILE)
-
             if (LY_MONOLITHIC_GAME)
-                target_link_libraries(${TARGET_WITH_NAMESPACE} 
-                    INTERFACE
-                        ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
-                        ${AWSNATIVESDK_BUILD_DEPENDENCIES}
-                        ${ly_declare_aws_library_BUILD_DEPENDENCIES}
+                add_library(${TARGET_WITH_NAMESPACE} STATIC IMPORTED GLOBAL)
+
+                set_target_properties(${TARGET_WITH_NAMESPACE}
+                    PROPERTIES
+                        IMPORTED_LOCATION_DEBUG ${AWSNATIVE_SDK_DEBUG_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
+                        IMPORTED_LOCATION ${AWSNATIVE_SDK_RELEASE_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
                 )
             else()
-                set(LIB_FILE_PATH ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX})
-                target_link_libraries(${TARGET_WITH_NAMESPACE} 
-                    INTERFACE
-                        ${LIB_FILE_PATH}
-                        ${AWSNATIVESDK_BUILD_DEPENDENCIES}
-                        ${ly_declare_aws_library_BUILD_DEPENDENCIES}
+                add_library(${TARGET_WITH_NAMESPACE} SHARED IMPORTED GLOBAL)
+
+                set_target_properties(${TARGET_WITH_NAMESPACE}
+                    PROPERTIES
+                        IMPORTED_LOCATION_DEBUG ${AWSNATIVE_SDK_DEBUG_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX}
+                        IMPORTED_LOCATION ${AWSNATIVE_SDK_RELEASE_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX}
                 )
+            endif()
 
-                ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${LIB_FILE_PATH})
+            target_link_libraries(${TARGET_WITH_NAMESPACE} 
+                INTERFACE
+                    ${AWSNATIVESDK_BUILD_DEPENDENCIES}
+                    ${ly_declare_aws_library_BUILD_DEPENDENCIES}
+            )
 
-            endif()
-                    
         elseif (ly_declare_aws_library_BUILD_DEPENDENCIES)
+            add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
+
             target_link_libraries(${TARGET_WITH_NAMESPACE} 
                 INTERFACE
                     ${ly_declare_aws_library_BUILD_DEPENDENCIES}
             )
+        else()
+            add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
         endif()
+
+        ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_INCLUDE_PATH})
         
         target_link_options(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_LINK_OPTIONS})
 
         target_compile_definitions(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_COMPILE_DEFINITIONS})
-
     endif()
     
 endfunction()

+ 6 - 1
package-system/AWSNativeSDK/build_AWSNativeSDK_android.cmd

@@ -9,6 +9,8 @@ REM
 SET SRC_PATH=temp\src
 SET BLD_PATH=temp\build
 
+set "DOWNLOADED_PACKAGE_FOLDERS=%DOWNLOADED_PACKAGE_FOLDERS:\=/%"
+
 IF "%ANDROID_NDK_ROOT%"=="" (
     ECHO "Required envrironment variable ANDROID_NDK_ROOT is missing, please set it to local android ndk directory"
     exit /b 1
@@ -66,7 +68,10 @@ call cmake -S %SRC_PATH% -B %BLD_PATH%\%BUILD_TYPE%_%LIB_TYPE% ^
            -DCUSTOM_MEMORY_MANAGEMENT=ON^
            -DCMAKE_INSTALL_BINDIR="bin/%BUILD_TYPE%_%LIB_TYPE%" ^
            -DCMAKE_INSTALL_LIBDIR="lib/%BUILD_TYPE%_%LIB_TYPE%" ^
-           -DCMAKE_INSTALL_PREFIX="%BLD_PATH%/%BUILD_TYPE%_%LIB_TYPE%"
+           -DCMAKE_INSTALL_PREFIX="%BLD_PATH%/%BUILD_TYPE%_%LIB_TYPE%" ^
+           -DANDROID_BUILD_OPENSSL=OFF ^
+           -DANDROID_BUILD_ZLIB=OFF ^
+           -DCMAKE_MODULE_PATH="%DOWNLOADED_PACKAGE_FOLDERS%"
 IF %ERRORLEVEL% NEQ 0 (
     ECHO "CMake Configure %BUILD_TYPE% %LIB_TYPE% failed"
     exit /b 1

+ 6 - 0
package-system/AWSNativeSDK/build_config.json

@@ -23,6 +23,12 @@
             ]
          },
          "Android":{
+            "package_version":"1.9.50-rev2",
+            "depends_on_packages": [
+               [ "OpenSSL-1.1.1m-rev1-android", "b11fe493af5d6b03ebbf1a2c97fea443b125e88def5cd1c32b854220b3ad4681", "" ],
+               [ "zlib-1.2.11-rev5-android", "73c9e88892c237a3fc6eafc04268ccd9d479e6d55f9df2ed58b236c8f9cf2cae", "" ]
+            ],
+            "patch_file":"AWSNativeSDK-1.9.50-android.patch",
             "cmake_find_source":"FindAWSNativeSDK.cmake.Android",
             "custom_build_cmd": [
                "build_AWSNativeSDK_android.cmd"

+ 1 - 12
package-system/AWSNativeSDK/install_AWSNativeSDK_android.cmd

@@ -96,22 +96,11 @@ IF %ERRORLEVEL% NEQ 0 (
     exit /b 1
 )
 
-ECHO "Copying curl openssl and zlib static .a to %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies"
+ECHO "Copying curl static .a to %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies"
 copy /Y %BLD_PATH%\%BUILD_TYPE%_Static\external-install\curl\lib\*.a %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies\
 IF %ERRORLEVEL% NEQ 0 (
     ECHO "Copying 3rdParty static .a to %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies failed"
     exit /b 1
 )
 
-copy /Y %BLD_PATH%\%BUILD_TYPE%_Static\external-install\openssl\lib\*.a %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies\
-IF %ERRORLEVEL% NEQ 0 (
-    ECHO "Copying 3rdParty static .a to %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies failed"
-    exit /b 1
-)
-
-copy /Y %BLD_PATH%\%BUILD_TYPE%_Static\external-install\zlib\lib\*.a %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies\
-IF %ERRORLEVEL% NEQ 0 (
-    ECHO "Copying 3rdParty static .a to %OUT_LIB_PATH%\%BUILD_TYPE%\dependencies failed"
-    exit /b 1
-)
 GOTO:EOF

+ 2 - 2
package_build_list_host_windows.json

@@ -9,7 +9,7 @@
         "azslc-1.7.35-rev1-windows": "Scripts/extras/pull_and_build_from_git.py ../../package-system/azslc --platform-name Windows --package-root ../../package-system --clean",
         "AWSGameLiftServerSDK-3.4.2-rev1-windows": "package-system/AWSGameLiftServerSDK/build_package_image.py --platform-name windows",
         "AwsIotDeviceSdkCpp-1.15.2-rev1-windows": "Scripts/extras/pull_and_build_from_git.py ../../package-system/AwsIotDeviceSdkCpp --build-path c:/Temp/awsiot --platform-name Windows --package-root ../../package-system --clean",
-        "AWSNativeSDK-1.9.50-rev1-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/AWSNativeSDK --platform-name Android --package-root ../../package-system --clean",
+        "AWSNativeSDK-1.9.50-rev2-android": "Scripts/extras/pull_and_build_from_git.py ../../package-system/AWSNativeSDK --platform-name Android --package-root ../../package-system --clean",
         "AWSNativeSDK-1.9.50-rev2-windows": "Scripts/extras/pull_and_build_from_git.py ../../package-system/AWSNativeSDK --platform-name Windows --package-root ../../package-system --clean",
         "Blast-v1.1.7_rc2-9-geb169fe-rev2-windows": "package-system/Blast/build_package_image.py --platform-name windows",
         "Crashpad-0.8.0-rev1-windows": "package-system/Crashpad/build_package_image.py",
@@ -64,7 +64,7 @@
     "azslc-1.7.35-rev1-windows": "package-system/azslc-windows",
     "AWSGameLiftServerSDK-3.4.2-rev1-windows": "package-system/AWSGameLiftServerSDK-windows",
     "AwsIotDeviceSdkCpp-1.15.2-rev1-windows": "package-system/AwsIotDeviceSdkCpp-windows",
-    "AWSNativeSDK-1.9.50-rev1-android": "package-system/AWSNativeSDK-android",
+    "AWSNativeSDK-1.9.50-rev2-android": "package-system/AWSNativeSDK-android",
     "AWSNativeSDK-1.9.50-rev2-windows": "package-system/AWSNativeSDK-windows",
     "Blast-v1.1.7_rc2-9-geb169fe-rev1-windows": "package-system/Blast-windows",
     "cityhash-1.1-multiplatform": "package-system/cityhash-multiplatform",