diff --git a/CMakeLists.txt b/CMakeLists.txt index b4d815abd1..2c7c41b7ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,13 @@ foreach(CUSTOM_MACRO ${HIFI_CUSTOM_MACROS}) include(${CUSTOM_MACRO}) endforeach() +if (ANDROID) + file(GLOB ANDROID_CUSTOM_MACROS "cmake/android/*.cmake") + foreach(CUSTOM_MACRO ${ANDROID_CUSTOM_MACROS}) + include(${CUSTOM_MACRO}) + endforeach() +endif () + # add subdirectories for all targets if (NOT ANDROID) add_subdirectory(assignment-client) diff --git a/cmake/android/AndroidManifest.xml.in b/cmake/android/AndroidManifest.xml.in new file mode 100755 index 0000000000..a5f7bd01ce --- /dev/null +++ b/cmake/android/AndroidManifest.xml.in @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/cmake/android/Apk.cmake b/cmake/android/Apk.cmake new file mode 100755 index 0000000000..b48bfbfd33 --- /dev/null +++ b/cmake/android/Apk.cmake @@ -0,0 +1,260 @@ +#*********************************************************# +#* File: Apk.cmake * +#* Android apk tools +#* +#* Copyright (C) 2002-2013 The PixelLight Team (http://www.pixellight.org/) +#* +#* This file is part of PixelLight. +#* +#* Permission is hereby granted, free of charge, to any person obtaining a copy of this software +#* and associated documentation files (the "Software"), to deal in the Software without +#* restriction, including without limitation the rights to use, copy, modify, merge, publish, +#* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the +#* Software is furnished to do so, subject to the following conditions: +#* +#* The above copyright notice and this permission notice shall be included in all copies or +#* substantial portions of the Software. +#* +#* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +#* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +#* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +#* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +#* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#*********************************************************# + + +################################################## +## Options +################################################## +set(ANDROID_APK_CREATE "1" CACHE BOOL "Create apk file?") +set(ANDROID_APK_INSTALL "1" CACHE BOOL "Install created apk file on the device automatically?") +set(ANDROID_APK_RUN "1" CACHE BOOL "Run created apk file on the device automatically? (installs it automatically as well, \"ANDROID_APK_INSTALL\"-option is ignored)") +set(ANDROID_APK_TOP_LEVEL_DOMAIN "io" CACHE STRING "Top level domain name of the organization (follow the package naming conventions (http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions))") +set(ANDROID_APK_DOMAIN "highfidelity" CACHE STRING "Organization's domain (follow the package naming conventions (http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions))") +set(ANDROID_APK_SUBDOMAIN "gvrinterface" CACHE STRING "Any subdomains (follow the package naming conventions (http://en.wikipedia.org/wiki/Java_package#Package_naming_conventions))") +set(ANDROID_APK_FULLSCREEN "1" CACHE BOOL "Run the application in fullscreen? (no status/title bar)") +set(ANDROID_APK_RELEASE "0" CACHE BOOL "Create apk file ready for release? (signed, you have to enter a password during build, do also setup \"ANDROID_APK_SIGNER_KEYSTORE\" and \"ANDROID_APK_SIGNER_ALIAS\")") +set(ANDROID_APK_SIGNER_KEYSTORE "~/my-release-key.keystore" CACHE STRING "Keystore for signing the apk file (only required for release apk)") +set(ANDROID_APK_SIGNER_ALIAS "myalias" CACHE STRING "Alias for signing the apk file (only required for release apk)") + + +################################################## +## Variables +################################################## +set(ANDROID_THIS_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) # Directory this CMake file is in + + +################################################## +## MACRO: android_create_apk +## +## Create/copy Android apk related files +## +## @param name +## Name of the project (e.g. "MyProject"), this will also be the name of the created apk file +## @param apk_directory +## Directory were to construct the apk file in (e.g. "${CMAKE_BINARY_DIR}/apk") +## @param shared_libraries +## List of shared libraries (absolute filenames) this application is using, these libraries are copied into the apk file and will be loaded automatically within a generated Java file - Lookout! The order is important due to shared library dependencies! +## @param assets +## List of assets to copy into the apk file (absolute filenames, wildcards like "*.*" are allowed) +## @param data_directory +## Subdirectory within the apk asset directory to copy the "assets"-files into (e.g. "Data") +## +## @remarks +## Requires the following tools to be found automatically +## - "android" (part of the Android SDK) +## - "adb" (part of the Android SDK) +## - "ant" (type e.g. "sudo apt-get install ant" on your Linux system to install Ant) +## - "jarsigner" (part of the JDK) +## - "zipalign" (part of the Android SDK) +################################################## +macro(android_create_apk name apk_directory shared_libraries assets data_directory) + if(ANDROID_APK_CREATE) + # Construct the current package name and theme + set(ANDROID_APK_PACKAGE "${ANDROID_APK_TOP_LEVEL_DOMAIN}.${ANDROID_APK_DOMAIN}.${ANDROID_APK_SUBDOMAIN}") + if(ANDROID_APK_FULLSCREEN) + set(ANDROID_APK_THEME "android:theme=\"@android:style/Theme.NoTitleBar.Fullscreen\"") + else() + set(ANDROID_APK_THEME "") + endif() + set(ANDROID_NAME ${name}) + if(CMAKE_BUILD_TYPE MATCHES Debug) + set(ANDROID_APK_DEBUGGABLE "true") + set(ANDROID_APK_RELEASE_LOCAL "0") + else() + set(ANDROID_APK_DEBUGGABLE "false") + set(ANDROID_APK_RELEASE_LOCAL ${ANDROID_APK_RELEASE}) + endif() + + # Create "AndroidManifest.xml" + configure_file("${ANDROID_THIS_DIRECTORY}/AndroidManifest.xml.in" "${apk_directory}/AndroidManifest.xml") + + # Create "res/values/strings.xml" + configure_file("${ANDROID_THIS_DIRECTORY}/strings.xml.in" "${apk_directory}/res/values/strings.xml") + + # Get a list of libraries to load in (e.g. "PLCore;PLMath" etc.) + set(ANDROID_SHARED_LIBRARIES_TO_LOAD "") + foreach(value ${shared_libraries}) + # "value" is e.g. "/home/cofenberg/pl_ndk/Bin-Linux-ndk/Runtime/armeabi/libPLCore.so" + get_filename_component(shared_library_filename ${value} NAME_WE) + + # "shared_library_filename" is e.g. "libPLCore", but we need "PLCore" + string(LENGTH ${shared_library_filename} shared_library_filename_length) + math(EXPR shared_library_filename_length ${shared_library_filename_length}-3) + string(SUBSTRING ${shared_library_filename} 3 ${shared_library_filename_length} shared_library_filename) + + # "shared_library_filename" is now e.g. "PLCore", this is what we want -> Add it to the list + set(ANDROID_SHARED_LIBRARIES_TO_LOAD ${ANDROID_SHARED_LIBRARIES_TO_LOAD} ${shared_library_filename}) + endforeach() + + # Create Java file which is responsible for loading in the required shared libraries (the content of "ANDROID_SHARED_LIBRARIES_TO_LOAD" is used for this) + configure_file("${ANDROID_THIS_DIRECTORY}/LoadLibraries.java.in" "${apk_directory}/src/${ANDROID_APK_TOP_LEVEL_DOMAIN}/${ANDROID_APK_DOMAIN}/${ANDROID_APK_SUBDOMAIN}/LoadLibraries.java") + + # Create the directory for the libraries + add_custom_command(TARGET ${ANDROID_NAME} + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E remove_directory "${apk_directory}/libs" + ) + add_custom_command(TARGET ${ANDROID_NAME} + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${apk_directory}/libs/${ARM_TARGET}" + ) + + # Copy the used shared libraries + foreach(value ${shared_libraries}) + add_custom_command(TARGET ${ANDROID_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${value} "${apk_directory}/libs/${ARM_TARGET}" + ) + endforeach() + + # Create "build.xml", "default.properties", "local.properties" and "proguard.cfg" files + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND android update project -t android-${ANDROID_API_LEVEL} --name ${ANDROID_NAME} --path "${apk_directory}" + ) + + # Copy assets + add_custom_command(TARGET ${ANDROID_NAME} + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E remove_directory "${apk_directory}/assets" + ) + add_custom_command(TARGET ${ANDROID_NAME} + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${apk_directory}/assets/${data_directory}" + ) + foreach(value ${assets}) + android_copy_files(${value} "${apk_directory}/assets/${data_directory}") + endforeach() + + # In case of debug build, do also copy gdbserver + if(CMAKE_BUILD_TYPE MATCHES Debug) + add_custom_command(TARGET ${ANDROID_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_GDBSERVER} "${apk_directory}/libs/${ARM_TARGET}" + ) + endif() + + # Uninstall previous version from the device/emulator (else we may get e.g. signature conflicts) + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND adb uninstall ${ANDROID_APK_PACKAGE} + ) + + # Build the apk file + if(ANDROID_APK_RELEASE_LOCAL) + # Let Ant create the unsigned apk file + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND ant release + WORKING_DIRECTORY "${apk_directory}" + ) + + # Sign the apk file + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND jarsigner -verbose -keystore ${ANDROID_APK_SIGNER_KEYSTORE} bin/${ANDROID_NAME}-unsigned.apk ${ANDROID_APK_SIGNER_ALIAS} + WORKING_DIRECTORY "${apk_directory}" + ) + + # Align the apk file + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND zipalign -v -f 4 bin/${ANDROID_NAME}-unsigned.apk bin/${ANDROID_NAME}.apk + WORKING_DIRECTORY "${apk_directory}" + ) + + # Install current version on the device/emulator + if(ANDROID_APK_INSTALL OR ANDROID_APK_RUN) + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND adb install -r bin/${ANDROID_NAME}.apk + WORKING_DIRECTORY "${apk_directory}" + ) + endif() + else() + # Let Ant create the unsigned apk file + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND ant debug + WORKING_DIRECTORY "${apk_directory}" + ) + + # Install current version on the device/emulator + if(ANDROID_APK_INSTALL OR ANDROID_APK_RUN) + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND adb install -r bin/${ANDROID_NAME}-debug.apk + WORKING_DIRECTORY "${apk_directory}" + ) + endif() + endif() + + # Start the application + if(ANDROID_APK_RUN) + add_custom_command(TARGET ${ANDROID_NAME} + COMMAND adb shell am start -n ${ANDROID_APK_PACKAGE}/${ANDROID_APK_PACKAGE}.LoadLibraries + ) + endif() + endif() +endmacro(android_create_apk name apk_directory shared_libraries assets data_directory) + +################################################## +## MACRO: android_copy_files +## +## Copy files from one place to another using wildcards +################################################## +macro(android_copy_files src dest) + # Get path + get_filename_component(path ${src} PATH) + + # Get exclude option + set(exclude) + if("${ARGV2}" STREQUAL "EXCLUDE") + set(exclude ${ARGV3}) + endif() + + # Find files + file(GLOB_RECURSE files RELATIVE ${path} ${src}) + + # Find files + foreach(file ${files}) + # Get source and destination file + set(src_file ${path}/${file}) + set(dst_file ${dest}/${file}) + + # Check exclude expression + set(copy 1) + if(exclude) + if(file MATCHES ${exclude}) + set(copy 0) + endif() + endif() + + # Process file + if(copy EQUAL 1) + # Create output directory + get_filename_component(dst_path ${dst_file} PATH) + file(MAKE_DIRECTORY ${dst_path}) + + # Copy file + add_custom_command(TARGET ${ANDROID_NAME} + PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${src_file} ${dst_file} VERBATIM + ) + endif() + endforeach(file ${files}) +endmacro(android_copy_files src dest) + diff --git a/cmake/android/LoadLibraries.java.in b/cmake/android/LoadLibraries.java.in new file mode 100755 index 0000000000..6832128e35 --- /dev/null +++ b/cmake/android/LoadLibraries.java.in @@ -0,0 +1,19 @@ +// IMPORTANT: Do not manually manipulate this automatically generated file, changes will be gone after the next build! + +package ${ANDROID_APK_TOP_LEVEL_DOMAIN}.${ANDROID_APK_DOMAIN}.${ANDROID_APK_SUBDOMAIN}; + +import android.app.NativeActivity; + +public class LoadLibraries extends NativeActivity { + + static { + // List of libraries to load in (e.g. "PLCore;PLMath" etc.) + String sharedLibrariesToLoad = "${ANDROID_SHARED_LIBRARIES_TO_LOAD}"; + + // Load in all shared libraries + String [] libraries = sharedLibrariesToLoad.split(";"); + for (int i=0; i + + + + + ${ANDROID_NAME} + diff --git a/cmake/macros/LinkSharedDependencies.cmake b/cmake/macros/LinkSharedDependencies.cmake index a73f57dc1d..e25f36fe47 100644 --- a/cmake/macros/LinkSharedDependencies.cmake +++ b/cmake/macros/LinkSharedDependencies.cmake @@ -24,9 +24,12 @@ macro(LINK_SHARED_DEPENDENCIES) include_directories(SYSTEM ${${TARGET_NAME}_DEPENDENCY_INCLUDES}) endif () - # we've already linked our Qt modules, but we need to bubble them up to parents - list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK "${${TARGET}_QT_MODULES_TO_LINK}") - + if (${TARGET_NAME}_QT_MODULES_TO_LINK) + # we've already linked our Qt modules, but we need to bubble them up to parents + list(REMOVE_DUPLICATES ${TARGET_NAME}_QT_MODULES_TO_LINK) + list(APPEND ${TARGET_NAME}_LIBRARIES_TO_LINK "${${TARGET_NAME}_QT_MODULES_TO_LINK}") + endif () + # set the property on this target so it can be retreived by targets linking to us set_target_properties(${TARGET_NAME} PROPERTIES DEPENDENCY_LIBRARIES "${${TARGET_NAME}_LIBRARIES_TO_LINK}") set_target_properties(${TARGET_NAME} PROPERTIES DEPENDENCY_INCLUDES "${${TARGET_NAME}_DEPENDENCY_INCLUDES}") diff --git a/cmake/macros/SetupHifiLibrary.cmake b/cmake/macros/SetupHifiLibrary.cmake index 950286ce45..97e1c63f4c 100644 --- a/cmake/macros/SetupHifiLibrary.cmake +++ b/cmake/macros/SetupHifiLibrary.cmake @@ -13,10 +13,10 @@ macro(SETUP_HIFI_LIBRARY) # grab the implemenation and header files file(GLOB_RECURSE LIB_SRCS "src/*.h" "src/*.cpp") - set(LIB_SRCS ${LIB_SRCS}) + list(APPEND ${TARGET_NAME}_SRCS ${LIB_SRCS}) # create a library and set the property so it can be referenced later - add_library(${TARGET_NAME} ${LIB_SRCS} ${AUTOMTC_SRC}) + add_library(${TARGET_NAME} ${${TARGET_NAME}_SRCS} ${AUTOMTC_SRC}) set(QT_MODULES_TO_LINK ${ARGN}) list(APPEND QT_MODULES_TO_LINK Core) diff --git a/cmake/macros/apk.cmake b/cmake/macros/apk.cmake deleted file mode 100644 index 66ceaf51fd..0000000000 --- a/cmake/macros/apk.cmake +++ /dev/null @@ -1,146 +0,0 @@ -#*********************************************************# -#* File: Apk.cmake * -#* Android apk tools -#* -#* Copyright (C) 2002-2013 The PixelLight Team (http://www.pixellight.org/) -#* -#* This file is part of PixelLight. -#* -#* Permission is hereby granted, free of charge, to any person obtaining a copy of this software -#* and associated documentation files (the "Software"), to deal in the Software without -#* restriction, including without limitation the rights to use, copy, modify, merge, publish, -#* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the -#* Software is furnished to do so, subject to the following conditions: -#* -#* The above copyright notice and this permission notice shall be included in all copies or -#* substantial portions of the Software. -#* -#* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -#* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -#* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -#* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -#* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -#*********************************************************# - - -################################################## -## Options -################################################## -set(ANDROID_APK_API_LEVEL "19" CACHE STRING "Android APK API level") -set(ANDROID_APK_INSTALL "0" CACHE BOOL "Install created apk file on the device automatically?") -set(ANDROID_APK_RUN "0" CACHE BOOL "Run created apk file on the device automatically? (installs it automatically as well, \"ANDROID_APK_INSTALL\"-option is ignored)") -set(ANDROID_APK_SIGNER_KEYSTORE "~/my-release-key.keystore" CACHE STRING "Keystore for signing the apk file (only required for release apk)") -set(ANDROID_APK_SIGNER_ALIAS "myalias" CACHE STRING "Alias for signing the apk file (only required for release apk)") - -################################################## -## Variables -################################################## -set(ANDROID_THIS_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) # Directory this CMake file is in - -################################################## -## MACRO: android_create_apk -## -## Create/copy Android apk related files -## -## @param name -## Name of the project (e.g. "MyProject"), this will also be the name of the created apk file -## @param apk_pacakge_name -## Pacakge name of the application -## @param apk_directory -## Directory were to construct the apk file in (e.g. "${CMAKE_BINARY_DIR}/apk") -## @param libs_directory -## Directory where the built android libraries will be POST_BUILD, e.g ${CMAKE_SOURCE_DIR}/libs -## @param assets_directory -## Directory where the assets for the application are locatated -## -## @remarks -## Requires the following tools to be found automatically -## - "android" (part of the Android SDK) -## - "adb" (part of the Android SDK) -## - "ant" (type e.g. "sudo apt-get install ant" on your Linux system to install Ant) -## - "jarsigner" (part of the JDK) -## - "zipalign" (part of the Android SDK) -################################################## -macro(android_create_apk name apk_package_name apk_directory libs_directory android_directory assets_directory) - set(ANDROID_NAME ${name}) - set(ANDROID_APK_PACKAGE ${apk_package_name}) - - # Create the directory for the libraries - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E remove_directory "${apk_directory}/libs") - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${apk_directory}/libs") - add_custom_command(TARGET ${ANDROID_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${libs_directory}" "${apk_directory}/libs/") - - # Create "build.xml", "default.properties", "local.properties" and "proguard.cfg" files - if(CMAKE_BUILD_TYPE MATCHES Release) - set(ANDROID_APK_DEBUGGABLE "false") - else() - set(ANDROID_APK_DEBUGGABLE "true") - endif() - - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${apk_directory}/res") - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${android_directory}/res" "${apk_directory}/res/") - - configure_file("${android_directory}/AndroidManifest.xml" "${apk_directory}/AndroidManifest.xml") - - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND android update project -t android-${ANDROID_APK_API_LEVEL} --name ${ANDROID_NAME} --path "${apk_directory}") - - # Copy assets - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E remove_directory "${apk_directory}/assets") - add_custom_command(TARGET ${ANDROID_NAME} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${apk_directory}/assets/") - add_custom_command(TARGET ${ANDROID_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${CMAKE_SOURCE_DIR}/assets" "${apk_directory}/assets/") - - # Build the apk file - if(CMAKE_BUILD_TYPE MATCHES Release) - # Let Ant create the unsigned apk file - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND ant release - WORKING_DIRECTORY "${apk_directory}") - - # Sign the apk file - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND jarsigner -verbose -keystore ${ANDROID_APK_SIGNER_KEYSTORE} bin/${ANDROID_NAME}-unsigned.apk ${ANDROID_APK_SIGNER_ALIAS} - WORKING_DIRECTORY "${apk_directory}") - - # Align the apk file - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND zipalign -v -f 4 bin/${ANDROID_NAME}-unsigned.apk bin/${ANDROID_NAME}.apk - WORKING_DIRECTORY "${apk_directory}") - - # Install current version on the device/emulator - if(ANDROID_APK_INSTALL OR ANDROID_APK_RUN) - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND adb install -r bin/${ANDROID_NAME}.apk - WORKING_DIRECTORY "${apk_directory}") - endif() - else() - # Let Ant create the unsigned apk file - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND ant debug - WORKING_DIRECTORY "${apk_directory}") - - # Install current version on the device/emulator - if(ANDROID_APK_INSTALL OR ANDROID_APK_RUN) - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND adb install -r bin/${ANDROID_NAME}-debug.apk - WORKING_DIRECTORY "${apk_directory}") - endif() - endif() - - # Start the application - if(ANDROID_APK_RUN) - add_custom_command(TARGET ${ANDROID_NAME} - COMMAND adb shell am start -n ${ANDROID_APK_PACKAGE}/android.app.NativeActivity) - endif() -endmacro(android_create_apk name apk_directory libs_directory assets_directory) \ No newline at end of file diff --git a/gvr-interface/CMakeLists.txt b/gvr-interface/CMakeLists.txt index ebf46f4234..cde3cd65df 100644 --- a/gvr-interface/CMakeLists.txt +++ b/gvr-interface/CMakeLists.txt @@ -1,19 +1,33 @@ -project(gvr-builder) +set(TARGET_NAME gvr-interface) + +set(BUILD_SHARED_LIBS ON) + +set(${TARGET_NAME}_SRCS + ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c +) + +setup_hifi_library() include_directories(${ANDROID_NDK}/sources/android/native_app_glue) -set(GVR_SRC - ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c - src/main.cpp -) +# include_glm() +# +# link_hifi_libraries(shared networking) +link_shared_dependencies() -add_library(gvr-interface SHARED ${GVR_SRC}) +target_link_libraries(${TARGET_NAME} log android) +set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_DEFINITIONS "ANDROID") -target_link_libraries(gvr-interface log android) -set_target_properties(gvr-interface PROPERTIES COMPILE_DEFINITIONS "ANDROID") -android_create_apk(gvr-interface "io.highfidelity.interface" - "${CMAKE_BINARY_DIR}/apk" - "${CMAKE_BINARY_DIR}/libs" - "${CMAKE_CURRENT_SOURCE_DIR}/android" +set(ANDROID_API_LEVEL 19) +set(ARM_TARGET "armeabi-v7a") + +set(TARGET_SHARED_LIBRARIES ${${TARGET_NAME}_LIBRARIES_TO_LINK}) +list(APPEND TARGET_SHARED_LIBRARIES "${LIBRARY_OUTPUT_PATH}/lib${TARGET_NAME}.so") + +android_create_apk( + ${TARGET_NAME} + "${CMAKE_BINARY_DIR}/apk" + "${TARGET_SHARED_LIBRARIES}" "${CMAKE_CURRENT_SOURCE_DIR}/assets" + "Data" ) \ No newline at end of file diff --git a/gvr-interface/android/AndroidManifest.xml b/gvr-interface/android/AndroidManifest.xml deleted file mode 100644 index 229d2ea0c2..0000000000 --- a/gvr-interface/android/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/gvr-interface/android/res/values/strings.xml b/gvr-interface/android/res/values/strings.xml deleted file mode 100644 index 401a5a122b..0000000000 --- a/gvr-interface/android/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - Interface - \ No newline at end of file diff --git a/gvr-interface/src/main.cpp b/gvr-interface/src/main.cpp index 775b23cfca..89f49f0fcf 100644 --- a/gvr-interface/src/main.cpp +++ b/gvr-interface/src/main.cpp @@ -12,6 +12,8 @@ #include #include +// #include + // usage of log #define APP_NAME "Interface" @@ -35,6 +37,8 @@ void android_main(struct android_app* state) { // set up so when commands happen we call our custom handler state->onAppCmd = custom_handle_cmd; + + // NodeList* nodeList = NodeList::createInstance(NodeType::Agent); while (1) { struct android_poll_source* source; @@ -52,6 +56,6 @@ void android_main(struct android_app* state) { LOGINFO("We are exiting"); return; } - } + } } } \ No newline at end of file diff --git a/libs/armeabi-v7a/libgvr-interface.so b/libs/armeabi-v7a/libgvr-interface.so new file mode 100755 index 0000000000..fca66eb93f Binary files /dev/null and b/libs/armeabi-v7a/libgvr-interface.so differ diff --git a/libs/armeabi-v7a/libnetworking.a b/libs/armeabi-v7a/libnetworking.a new file mode 100644 index 0000000000..f8b66803e0 Binary files /dev/null and b/libs/armeabi-v7a/libnetworking.a differ diff --git a/libs/armeabi-v7a/libshared.a b/libs/armeabi-v7a/libshared.a new file mode 100644 index 0000000000..4d12e36f77 Binary files /dev/null and b/libs/armeabi-v7a/libshared.a differ