mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Use qt-android-cmake to produce a android apk
This introduces code to use qt-android-cmake to produce a working apk. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
1f112c7738
commit
5cbbff0084
2 changed files with 27 additions and 9 deletions
|
@ -163,7 +163,7 @@ if(SUBSURFACE_MOBILE)
|
||||||
set(QT_QUICK_PKG Quick)
|
set(QT_QUICK_PKG Quick)
|
||||||
set(QT_QUICK_LIB Qt5::Quick)
|
set(QT_QUICK_LIB Qt5::Quick)
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
if(ANDROID)
|
||||||
set(ANDROID_PKG AndroidExtras)
|
set(ANDROID_PKG AndroidExtras)
|
||||||
set(ANDROID_LIB Qt5::AndroidExtras)
|
set(ANDROID_LIB Qt5::AndroidExtras)
|
||||||
set(FBSUPPORT OFF)
|
set(FBSUPPORT OFF)
|
||||||
|
@ -235,9 +235,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
# in some builds we appear to be missing libz for some strange reason...
|
# in some builds we appear to be missing libz for some strange reason...
|
||||||
set(SUBSURFACE_LINK_LIBRARIES ${SUBSURFACE_LINK_LIBRARIES} -lz)
|
set(SUBSURFACE_LINK_LIBRARIES ${SUBSURFACE_LINK_LIBRARIES} -lz)
|
||||||
endif()
|
endif()
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
if(ANDROID)
|
||||||
set(PLATFORM_SRC android.cpp)
|
set(PLATFORM_SRC android.cpp)
|
||||||
# FIXME: Shouldn't cmake/Qt add this automatically somehow?
|
|
||||||
add_definitions(-DQ_OS_ANDROID)
|
add_definitions(-DQ_OS_ANDROID)
|
||||||
set(SUBSURFACE_TARGET subsurface)
|
set(SUBSURFACE_TARGET subsurface)
|
||||||
endif()
|
endif()
|
||||||
|
@ -448,7 +447,7 @@ target_link_libraries(subsurface_interface ${QT_LIBRARIES} ${MARBLE_LIBRARIES})
|
||||||
# add pthread to the end of the library list on Linux
|
# add pthread to the end of the library list on Linux
|
||||||
# this is only needed on Ubuntu (why do these idiots break everything?)
|
# this is only needed on Ubuntu (why do these idiots break everything?)
|
||||||
# but shouldn't hurt on other Linux versions
|
# but shouldn't hurt on other Linux versions
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT ANDROID)
|
||||||
set(SUBSURFACE_LINK_LIBRARIES ${SUBSURFACE_LINK_LIBRARIES} -lpthread)
|
set(SUBSURFACE_LINK_LIBRARIES ${SUBSURFACE_LINK_LIBRARIES} -lpthread)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -468,9 +467,9 @@ if(SUBSURFACE_MOBILE)
|
||||||
subsurface_corelib
|
subsurface_corelib
|
||||||
${SUBSURFACE_LINK_LIBRARIES})
|
${SUBSURFACE_LINK_LIBRARIES})
|
||||||
else()
|
else()
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
if(ANDROID)
|
||||||
# FIXME: is this the right way to link somehting which
|
# Produce a shared-library instead of a program.
|
||||||
# androiddeployqt can work with?
|
# Something that androiddeployqt can work with.
|
||||||
add_library(${SUBSURFACE_TARGET} SHARED ${SUBSURFACE_PKG} ${SUBSURFACE_APP} ${SUBSURFACE_RESOURCES})
|
add_library(${SUBSURFACE_TARGET} SHARED ${SUBSURFACE_PKG} ${SUBSURFACE_APP} ${SUBSURFACE_RESOURCES})
|
||||||
else()
|
else()
|
||||||
add_executable(${SUBSURFACE_TARGET} MACOSX_BUNDLE WIN32 ${SUBSURFACE_PKG} ${SUBSURFACE_APP} ${SUBSURFACE_RESOURCES})
|
add_executable(${SUBSURFACE_TARGET} MACOSX_BUNDLE WIN32 ${SUBSURFACE_PKG} ${SUBSURFACE_APP} ${SUBSURFACE_RESOURCES})
|
||||||
|
@ -714,9 +713,15 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
if(ANDROID)
|
||||||
# Android template directory
|
# Android template directory
|
||||||
set(ANDROID_PACKAGE_SOURCE_DIR, ${CMAKE_BINARY_DIR}/android)
|
set(ANDROID_PACKAGE_SOURCE_DIR, ${CMAKE_BINARY_DIR}/android)
|
||||||
|
include(${QT_ANDROID_CMAKE})
|
||||||
|
add_qt_android_apk(subsurface.apk ${SUBSURFACE_TARGET}
|
||||||
|
NAME "Subsurface"
|
||||||
|
PACKAGE_NAME "org.subsurfacedivelog"
|
||||||
|
PACKAGE_SOURCES ${CMAKE_CURRENT_LIST_DIR}/android
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
|
|
@ -16,6 +16,7 @@ export ANDROID_NDK_HOST=linux-x86
|
||||||
SQLITE_VERSION=3081002
|
SQLITE_VERSION=3081002
|
||||||
LIBXML2_VERSION=2.9.2
|
LIBXML2_VERSION=2.9.2
|
||||||
LIBXSLT_VERSION=1.1.28
|
LIBXSLT_VERSION=1.1.28
|
||||||
|
LIBZIP_VERSION=1.0.1
|
||||||
LIBZIP_VERSION=0.11.2
|
LIBZIP_VERSION=0.11.2
|
||||||
LIBGIT2_VERSION=0.23.0
|
LIBGIT2_VERSION=0.23.0
|
||||||
LIBUSB_VERSION=1.0.19
|
LIBUSB_VERSION=1.0.19
|
||||||
|
@ -41,6 +42,9 @@ export PREFIX=${BUILDROOT}/ndk-$ARCH/sysroot/usr
|
||||||
export PKG_CONFIG_LIBDIR=${PREFIX}/lib/pkgconfig
|
export PKG_CONFIG_LIBDIR=${PREFIX}/lib/pkgconfig
|
||||||
export CC=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-gcc
|
export CC=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-gcc
|
||||||
export CXX=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-g++
|
export CXX=${BUILDROOT}/ndk-$ARCH/bin/${BUILDCHAIN}-g++
|
||||||
|
# Junk needed for qt-android-cmake
|
||||||
|
export ANDROID_STANDALONE_TOOLCHAIN=${BUILDROOT}/ndk-$ARCH
|
||||||
|
export JAVA_HOME=/usr
|
||||||
|
|
||||||
if [ ! -e sqlite-autoconf-${SQLITE_VERSION}.tar.gz ] ; then
|
if [ ! -e sqlite-autoconf-${SQLITE_VERSION}.tar.gz ] ; then
|
||||||
wget http://www.sqlite.org/2015/sqlite-autoconf-${SQLITE_VERSION}.tar.gz
|
wget http://www.sqlite.org/2015/sqlite-autoconf-${SQLITE_VERSION}.tar.gz
|
||||||
|
@ -156,9 +160,18 @@ if [ ! -e $PKG_CONFIG_LIBDIR/libdivecomputer.pc ] ; then
|
||||||
popd
|
popd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ ! -e qt-android-cmake ] ; then
|
||||||
|
git clone git://github.com/LaurentGomila/qt-android-cmake.git
|
||||||
|
else
|
||||||
|
pushd qt-android-cmake
|
||||||
|
git pull -u
|
||||||
|
popd
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p subsurface-build-$ARCH
|
mkdir -p subsurface-build-$ARCH
|
||||||
cd subsurface-build-$ARCH
|
cd subsurface-build-$ARCH
|
||||||
cmake -DCMAKE_SYSTEM_NAME=Android -DFORCE_LIBSSH=OFF -DLIBDC_FROM_PKGCONFIG=ON -DLIBGIT2_FROM_PKGCONFIG=ON -DUSE_LIBGIT23_API=ON -DNO_MARBLE=ON -DNO_PRINTING=ON -DNO_USERMANUAL=ON -DCMAKE_PREFIX_PATH:UNINITIALIZED=${QT5_ANDROID}/android_${QT_ARCH}/lib/cmake $SUBSURFACE_SOURCE
|
# somehting in the qt-android-cmake-thingies mangles your path, so thats why we need to hard-code ant and pkg-config here.
|
||||||
|
cmake -DQT_ANDROID_ANT=/usr/bin/ant -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkg-config -DQT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT -DQT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT -DCMAKE_TOOLCHAIN_FILE=$BUILDROOT/qt-android-cmake/toolchain/android.toolchain.cmake -DQT_ANDROID_CMAKE=$BUILDROOT/qt-android-cmake/AddQtAndroidApk.cmake -DFORCE_LIBSSH=OFF -DLIBDC_FROM_PKGCONFIG=ON -DLIBGIT2_FROM_PKGCONFIG=ON -DUSE_LIBGIT23_API=ON -DNO_MARBLE=ON -DNO_PRINTING=ON -DNO_USERMANUAL=ON -DCMAKE_PREFIX_PATH:UNINITIALIZED=${QT5_ANDROID}/android_${QT_ARCH}/lib/cmake $SUBSURFACE_SOURCE
|
||||||
make
|
make
|
||||||
#make install INSTALL_ROOT=android_build
|
#make install INSTALL_ROOT=android_build
|
||||||
# bug in androiddeployqt? why is it looking for something with the builddir in it?
|
# bug in androiddeployqt? why is it looking for something with the builddir in it?
|
||||||
|
|
Loading…
Add table
Reference in a new issue