Professional Documents
Culture Documents
CMake Lists
CMake Lists
0)
# https://github.com/libjpeg-turbo/libjpeg-turbo/releases
set(LIBJPEG_TURBO_VERSION 1.5.3)
set(LIBJPEG_TURBO_HASH
SHA256=b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523)
# http://www.libpng.org/pub/png/libpng.html
set(LIBPNG_VERSION 1.6.37)
set(LIBPNG_HASH
SHA256=505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca)
# https://www.freetype.org/index.html#news
set(FREETYPE2_VERSION 2.10.4)
set(FREETYPE2_HASH
SHA256=5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac)
# https://github.com/kcat/openal-soft/releases
set(OPENAL_VERSION 1.21.1)
set(OPENAL_HASH
SHA256=8ac17e4e3b32c1af3d5508acfffb838640669b4274606b7892aa796ca9d7467f)
# http://www.boost.org/users/download/
set(BOOST_VERSION 1.69.0)
set(BOOST_HASH
SHA256=8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406)
# https://www.ffmpeg.org/download.html
set(FFMPEG_VERSION 4.4)
set(FFMPEG_HASH
SHA256=42093549751b582cf0f338a21a3664f52e0a9fbe0d238d3c992005e493607d0e)
# https://www.libsdl.org/download-2.0.php
set(SDL2_VERSION 2.0.12)
set(SDL2_HASH
SHA256=349268f695c02efbc9b9148a70b85e58cefbbf704abd3e91be654db7f1e2c863)
# https://github.com/bulletphysics/bullet3/releases
set(BULLET_VERSION 3.17)
set(BULLET_HASH
SHA256=baa642c906576d4d98d041d0acb80d85dd6eff6e3c16a009b1abf1ccd2bc0a61)
# https://github.com/MyGUI/mygui/releases
set(MYGUI_VERSION 3.4.0)
set(MYGUI_HASH
SHA256=d1d5f294670ae71f7200ed4b30859018281d8cfd45d6a38d18b97a4aba604c42)
# https://github.com/ptitSeb/gl4es/releases
set(GL4ES_VERSION v1.1.4)
set(GL4ES_HASH
SHA256=b565e717c7d192e936bda25f3cb90ad8db398af56414ec08294b6716574c1a6d)
# https://github.com/OpenMW/osg/releases
set(OSG_VERSION ada34a6d38772f684aa70d2eb76549a33edc9a5f)
set(OSG_HASH
SHA256=e1e356a53246c49306408e626df2a00a5e7e550d3d2221748313d83105980ffa)
# https://github.com/lz4/lz4/releases
set(LZ4_VERSION 1.9.3)
set(LZ4_HASH
SHA256=030644df4611007ff7dc962d981f390361e6c97a34e5cbc393ddfbe019ffe2c1)
# https://github.com/OpenMW/openmw/commits/master
set(OPENMW_VERSION openmw-47)
set(OPENMW_HASH
SHA256=16761609ec153e585efb3c25f20bb7c03f474d8d453e3f3400f900b82b707a5e)
project(openmw-android)
include(ExternalProject)
set(wrapper_command ${CMAKE_BINARY_DIR}/command_wrapper.sh)
set(ndk_triplet ${NDK_TRIPLET})
set(download_dir ${CMAKE_SOURCE_DIR}/downloads/)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(host ${ndk_triplet})
set(android_platform android-${ANDROID_API})
set(app_abi ${ABI})
set(COMMON_CMAKE_ARGS
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/toolchain/ndk/build/cmake/
android.toolchain.cmake
-DANDROID_ABI=${app_abi}
-DANDROID_PLATFORM=${android_platform}
-DANDROID_STL=c++_shared
-DANDROID_CPP_FEATURES=rtti\ exceptions
-DCMAKE_C_FLAGS=-DMYGUI_DONT_REPLACE_NULLPTR\ -I${prefix}/include/\
$ENV{CFLAGS}
-DCMAKE_CXX_FLAGS=-DMYGUI_DONT_REPLACE_NULLPTR\ -I${prefix}/include/\
$ENV{CXXFLAGS}
-DCMAKE_SHARED_LINKER_FLAGS=$ENV{LDFLAGS}
-DCMAKE_BUILD_TYPE=${BUILD_TYPE}
-DCMAKE_DEBUG_POSTFIX=
-DCMAKE_INSTALL_PREFIX=${prefix}
-DCMAKE_FIND_ROOT_PATH=${prefix}
)
set(COMMON_NDK_BUILD_FLAGS
NDK_PROJECT_PATH=.
APP_BUILD_SCRIPT=<SOURCE_DIR>/Android.mk
APP_PLATFORM=${android_platform}
APP_ABI=${app_abi}
LOCAL_LDFLAGS=$ENV{LDFLAGS}
-j4
)
set(COMMON_AUTOCONF_FLAGS
--enable-static
--disable-shared
--prefix=${prefix}
)
# ffmpeg doesn't like --host, so sandwich it between adding --host to the flags
set(ffmpeg_configure_flags ${COMMON_AUTOCONF_FLAGS})
if (${BUILD_TYPE} STREQUAL "debug")
# ffmpeg fails to compile if we have asm enabled and optimizations disabled,
so disable both
set(ffmpeg_configure_flags ${ffmpeg_configure_flags} --disable-asm --disable-
optimizations)
endif()
set(COMMON_AUTOCONF_FLAGS
--host=${host}
${COMMON_AUTOCONF_FLAGS}
)
# on x86 enabling simd results in text relocations, which are banned on Android
set(libjpeg_turbo_flags "")
if (${ARCH} STREQUAL "x86")
set(libjpeg_turbo_flags ${libjpeg_turbo_flags} --without-simd)
endif()
ExternalProject_Add(libjpeg-turbo
URL https://sourceforge.net/projects/libjpeg-turbo/files/$
{LIBJPEG_TURBO_VERSION}/libjpeg-turbo-${LIBJPEG_TURBO_VERSION}.tar.gz/download
https://github.com/xyzz/openmw-deps/releases/download/v0/libjpeg-turbo-$
{LIBJPEG_TURBO_VERSION}.tar.gz
URL_HASH ${LIBJPEG_TURBO_HASH}
DOWNLOAD_DIR ${download_dir}
ExternalProject_Add(libpng
URL http://prdownloads.sourceforge.net/libpng/libpng-${LIBPNG_VERSION}.tar.xz
https://github.com/xyzz/openmw-deps/releases/download/v0/libpng-$
{LIBPNG_VERSION}.tar.xz
URL_HASH ${LIBPNG_HASH}
DOWNLOAD_DIR ${download_dir}
ExternalProject_Add(openal
URL https://github.com/kcat/openal-soft/archive/${OPENAL_VERSION}.tar.gz
https://github.com/xyzz/openmw-deps/releases/download/v0/openal-soft-$
{OPENAL_VERSION}.tar.gz
URL_HASH ${OPENAL_HASH}
DOWNLOAD_DIR ${download_dir}
BUILD_IN_SOURCE 1
BUILD_COMMAND ""
ExternalProject_Add(ffmpeg
URL http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2
https://github.com/xyzz/openmw-deps/releases/download/v0/ffmpeg-$
{FFMPEG_VERSION}.tar.bz2
URL_HASH ${FFMPEG_HASH}
DOWNLOAD_DIR ${download_dir}
ExternalProject_Add(sdl2
URL https://www.libsdl.org/release/SDL2-${SDL2_VERSION}.tar.gz
https://github.com/xyzz/openmw-deps/releases/download/v0/SDL2-$
{SDL2_VERSION}.tar.gz
URL_HASH ${SDL2_HASH}
DOWNLOAD_DIR ${download_dir}
CONFIGURE_COMMAND ""
ExternalProject_Add(bullet
URL https://github.com/bulletphysics/bullet3/archive/${BULLET_VERSION}.tar.gz
https://github.com/xyzz/openmw-deps/releases/download/v0/bullet3-$
{BULLET_VERSION}.tar.gz
URL_HASH ${BULLET_HASH}
DOWNLOAD_DIR ${download_dir}
set(GL4ES_PATCH
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/gl4es/shared-
library.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/gl4es/disable-
shader-hacks.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/gl4es/highp-
fog.patch
)
ExternalProject_Add(gl4es
URL https://github.com/ptitSeb/gl4es/archive/${GL4ES_VERSION}.tar.gz
URL_HASH ${GL4ES_HASH}
DOWNLOAD_DIR ${download_dir}
PATCH_COMMAND ${GL4ES_PATCH}
CONFIGURE_COMMAND ""
ExternalProject_Add(mygui
DEPENDS freetype2
URL https://github.com/MyGUI/mygui/archive/MyGUI${MYGUI_VERSION}.tar.gz
https://github.com/xyzz/openmw-deps/releases/download/v0/MyGUI$
{MYGUI_VERSION}.tar.gz
URL_HASH ${MYGUI_HASH}
DOWNLOAD_DIR ${download_dir}
-DMYGUI_STATIC=ON
ExternalProject_Add(lz4
URL https://github.com/lz4/lz4/archive/v${LZ4_VERSION}.tar.gz
https://github.com/xyzz/openmw-deps/releases/download/v0/v$
{LZ4_VERSION}.tar.gz
URL_HASH ${LZ4_HASH}
DOWNLOAD_DIR ${download_dir}
set(OSG_PATCH
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/disable-
polygon-offset.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/remove-lib-
prefix-from-plugins.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/fix-
freetype-include-dirs.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/0001-
Replace-Atomic-impl-with-std-atomic.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/0002-
BufferObject-make-numClients-atomic.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/0004-
IncrementalCompileOperation-wrap-some-stuff-in-atomi.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/remove-
zlib-dependency.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/osg/0005-
CullSettings-make-inheritanceMask-atomic-to-silence-.patch
)
ExternalProject_Add(osg
DEPENDS libjpeg-turbo libpng gl4es freetype2
URL https://github.com/OpenMW/osg/archive/${OSG_VERSION}.tar.gz
URL_HASH ${OSG_HASH}
DOWNLOAD_DIR ${download_dir}
PATCH_COMMAND ${OSG_PATCH}
CONFIGURE_COMMAND ${wrapper_command} cmake <SOURCE_DIR>
${COMMON_CMAKE_ARGS}
${OSG_COMMON}
set(OPENMW_COMMON
-DBUILD_BSATOOL=0
-DBUILD_NIFTEST=0
-DBUILD_ESMTOOL=0
-DBUILD_LAUNCHER=0
-DBUILD_MWINIIMPORTER=0
-DBUILD_ESSIMPORTER=0
-DBUILD_OPENCS=0
-DBUILD_WIZARD=0
-DBUILD_MYGUI_PLUGIN=0
-DOPENAL_INCLUDE_DIR=${prefix}/include/AL/
-DBullet_INCLUDE_DIR=${prefix}/include/bullet/
-DOPENGL_ES=OFF
-DOSG_STATIC=TRUE
-DMyGUI_LIBRARY=${prefix}/lib/libMyGUIEngineStatic.a
-DOPENMW_LTO_BUILD=1
)
set(OPENMW_PATCH
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/01-
loadingscreen-disable-for-now.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/02-
windowmanagerimp-always-show-mouse.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/03-
android-fix-context-being-lost-on-app-minimize.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/04-
settingswindow-save-user-settings-file-when-ok-is-pr.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/05-
components-misc-stringops-use-boost-format-instead-o.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/06-fix-
build.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/07-
refraction-fix.patch &&
patch -d <SOURCE_DIR> -p1 -t -N < ${CMAKE_SOURCE_DIR}/patches/openmw/08-
highp.patch &&
cp ${CMAKE_SOURCE_DIR}/patches/openmw/android_main.cpp
<SOURCE_DIR>/apps/openmw/android_main.cpp
)
ExternalProject_Add(openmw
DEPENDS boost openal osg mygui ffmpeg sdl2 bullet lz4
URL https://github.com/OpenMW/openmw/archive/${OPENMW_VERSION}.tar.gz
URL_HASH ${OPENMW_HASH}
DOWNLOAD_DIR ${download_dir}
PATCH_COMMAND ${OPENMW_PATCH}
CONFIGURE_COMMAND ${wrapper_command} cmake <SOURCE_DIR>
${COMMON_CMAKE_ARGS}
${OPENMW_COMMON}
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND ""
)