Skip to content

Commit 05057bf

Browse files
authored
Merge pull request #8 from artoolkitx/phil-android-build
Android build needs dependencies.
2 parents 32b7531 + 833406d commit 05057bf

27 files changed

+6526
-8
lines changed

Android/app/src/main/cpp/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ project("artoolkitx_calib_camera"
2424

2525
set(ARTOOLKITX_CAMERA_CALIBRATION_HOME "${CMAKE_CURRENT_SOURCE_DIR}/../../../../..")
2626
set(ARTOOLKITX_HOME "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/android/artoolkitx")
27-
list(APPEND CMAKE_MODULE_PATH "${ARTOOLKITX_HOME}/Source/cmake")
27+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
2828

2929
# armeabi-v7a requires cpufeatures library?
3030
# include(AndroidNdkModules)
@@ -41,7 +41,6 @@ include_directories(${ARTOOLKITX_CAMERA_CALIBRATION_HOME})
4141

4242
set(CMAKE_LIBRARY_ARCHITECTURE "${ANDROID_ABI}")
4343
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/android")
44-
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_HOME}/Source/depends/android")
4544

4645
# SDL
4746
find_path(
@@ -74,7 +73,7 @@ target_include_directories(main PRIVATE ${JPEG_INCLUDE_DIR})
7473
target_link_libraries(main ${JPEG_LIBRARIES})
7574

7675
# OpenCV
77-
set(OpenCV_PATH "${ARTOOLKITX_HOME}/Source/depends/android/lib/${ANDROID_ABI}")
76+
set(OpenCV_PATH "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/android/lib/${ANDROID_ABI}")
7877
find_package(OpenCV REQUIRED)
7978
if(OpenCV_FOUND)
8079
target_include_directories(main PRIVATE ${OpenCV_INCLUDE_DIR})
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# This module defines
2+
# OpenCV_LIBS, the library/libraries to link against
3+
# OpenCV_INCLUDE_DIR, where to find opencv2/opencv.hpp
4+
# OpenCV_FOUND, if false, do not try to link to OpenCV
5+
#
6+
# $OPENCVDIR is an environment variable that would
7+
# correspond to the ./configure --prefix=$OPENCV
8+
# used in building OpenCV.
9+
#
10+
# On macOS/iOS, this will prefer the Framework version (if found) over others.
11+
# People will have to manually change the cache values of
12+
# OpenCV_LIBS to override this selection or set the CMake environment
13+
# CMAKE_INCLUDE_PATH to modify the search paths.
14+
#
15+
16+
SET(OpenCV_SEARCH_PATHS
17+
~/Library/Frameworks
18+
/Library/Frameworks
19+
/usr/local
20+
/usr
21+
/sw # Fink
22+
/opt/local # DarwinPorts
23+
/opt/csw # Blastwave
24+
/opt
25+
${OpenCV_PATH}
26+
)
27+
28+
FIND_PATH(OpenCV_INCLUDE_DIR opencv2/opencv.hpp
29+
HINTS
30+
$ENV{OPENCV2DIR}
31+
PATH_SUFFIXES include/opencv4 include
32+
PATHS ${OpenCV_SEARCH_PATHS}
33+
)
34+
35+
if(DEFINED OPENCV_LIB_VERSION_SUFFIX)
36+
set (SUFFIX_LIST "")
37+
foreach(x ${CMAKE_FIND_LIBRARY_SUFFIXES})
38+
list (APPEND SUFFIX_LIST ${OPENCV_LIB_VERSION_SUFFIX}${x} ${x})
39+
endforeach()
40+
set(CMAKE_FIND_LIBRARY_SUFFIXES ${SUFFIX_LIST})
41+
#message(STATUS "CMAKE_FIND_LIBRARY_SUFFIXES=${CMAKE_FIND_LIBRARY_SUFFIXES}")
42+
endif()
43+
44+
IF(${OpenCV_INCLUDE_DIR} MATCHES ".framework")
45+
FIND_LIBRARY(OpenCV_LIBS opencv2 HINTS $ENV{OPENCV2DIR} PATHS ${OpenCV_SEARCH_PATHS})
46+
FIND_LIBRARY(OpenCL_LIBS OpenCL)
47+
IF (NOT ${OpenCL_LIBS} STREQUAL "OpenCL_LIBS-NOTFOUND")
48+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCL_LIBS})
49+
ENDIF()
50+
ELSE()
51+
FIND_LIBRARY(OpenCV_LIB_CALIB32 NAMES opencv_calib3d HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
52+
FIND_LIBRARY(OpenCV_LIB_CORE NAMES opencv_core HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
53+
FIND_LIBRARY(OpenCV_LIB_FEATURES2D NAMES opencv_features2d HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
54+
FIND_LIBRARY(OpenCV_LIB_FLANN NAMES opencv_flann HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
55+
FIND_LIBRARY(OpenCV_LIB_IMGPROC NAMES opencv_imgproc HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
56+
FIND_LIBRARY(OpenCV_LIB_VIDEO NAMES opencv_video HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
57+
SET(OpenCV_LIBS ${OpenCV_LIB_CALIB32} ${OpenCV_LIB_FEATURES2D} ${OpenCV_LIB_FLANN} ${OpenCV_LIB_VIDEO} ${OpenCV_LIB_IMGPROC} ${OpenCV_LIB_CORE})
58+
ENDIF()
59+
60+
IF(WIN32)
61+
FIND_LIBRARY(OpenCV_LIB_IPPICV NAMES ippicvmt HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
62+
FIND_LIBRARY(OpenCV_LIB_IPPIW NAMES ippiw HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
63+
FIND_LIBRARY(OpenCV_LIB_ITTNOTIFY NAMES ittnotify HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
64+
# Image formats and dependencies static libs.
65+
#FIND_LIBRARY(OpenCV_LIB_ADE NAMES ade HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
66+
#FIND_LIBRARY(OpenCV_LIB_ILMIMF NAMES IlmImf HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
67+
#FIND_LIBRARY(OpenCV_LIB_LIBJPEG NAMES libjpeg-turbo HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
68+
#FIND_LIBRARY(OpenCV_LIB_LIBJP2 NAMES libopenjp2 HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
69+
#FIND_LIBRARY(OpenCV_LIB_LIBPNG NAMES libpng HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
70+
#FIND_LIBRARY(OpenCV_LIB_LIBPROTOBUF NAMES libprotobuf HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
71+
#FIND_LIBRARY(OpenCV_LIB_LIBTIFF NAMES libtiff HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
72+
#FIND_LIBRARY(OpenCV_LIB_LIBWEBP NAMES libwebp HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
73+
#FIND_LIBRARY(OpenCV_LIB_QUIRC NAMES quirc HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
74+
#FIND_LIBRARY(OpenCV_LIB_ZLIB NAMES zlib HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
75+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIB_IPPICV} ${OpenCV_LIB_IPPIW} ${OpenCV_LIB_ITTNOTIFY})
76+
ENDIF()
77+
78+
IF(ANDROID)
79+
FIND_LIBRARY(OpenCV_LIB_TBB NAMES tbb HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
80+
FIND_LIBRARY(OpenCV_LIB_ITTNOTIFY NAMES ittnotify HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
81+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIB_TBB} ${OpenCV_LIB_ITTNOTIFY})
82+
# Intel-only.
83+
FIND_LIBRARY(OpenCV_LIB_IPPIW NAMES ippiw HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
84+
FIND_LIBRARY(OpenCV_LIB_IPPICV NAMES ippicv HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
85+
IF (NOT ${OpenCV_LIB_IPPIW} STREQUAL "OpenCV_LIB_IPPIW-NOTFOUND")
86+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIB_IPPIW})
87+
ENDIF()
88+
IF (NOT ${OpenCV_LIB_IPPICV} STREQUAL "OpenCV_LIB_IPPICV-NOTFOUND")
89+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_LIB_IPPICV})
90+
ENDIF()
91+
# ARM-only.
92+
FIND_LIBRARY(OPENCV_LIB_TEG NAMES tegra_hal HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
93+
FIND_LIBRARY(OPENCV_LIB_CPUF NAMES cpufeatures HINTS $ENV{OPENCV2DIR} PATH_SUFFIXES lib64 lib lib/x64 lib/x86 PATHS ${OpenCV_SEARCH_PATHS})
94+
IF (NOT ${OPENCV_LIB_TEG} STREQUAL "OPENCV_LIB_TEG-NOTFOUND")
95+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OPENCV_LIB_TEG})
96+
ENDIF()
97+
IF (NOT ${OPENCV_LIB_CPUF} STREQUAL "OPENCV_LIB_CPUF-NOTFOUND")
98+
SET(OpenCV_LIBS ${OpenCV_LIBS} ${OPENCV_LIB_CPUF})
99+
ENDIF()
100+
ENDIF()
101+
102+
# handle the QUIETLY and REQUIRED arguments and set OpenCV_FOUND to TRUE if
103+
# all listed variables are TRUE
104+
INCLUDE(FindPackageHandleStandardArgs)
105+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenCV REQUIRED_VARS OpenCV_LIBS OpenCV_INCLUDE_DIR)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Try to find OpenGLES2. Once done this will define:
2+
# OPENGLES2_FOUND
3+
# OPENGLES2_INCLUDE_DIRS
4+
# OPENGLES2_LIBRARIES
5+
# OPENGLES2_DEFINITIONS
6+
7+
if(APPLE)
8+
find_path(OPENGLES2_INCLUDE_DIR
9+
OpenGLES/ES2/gl.h
10+
)
11+
12+
find_library(OPENGLES2_FRAMEWORKS OpenGLES)
13+
if(OPENGLES2_FRAMEWORKS)
14+
set(OPENGLES2_LIBRARIES "-framework OpenGLES")
15+
endif()
16+
elseif(ANDROID)
17+
find_path(OPENGLES2_INCLUDE_DIR GLES2/gl2.h
18+
"${ANDROID_STANDALONE_TOOLCHAIN}/usr/include"
19+
)
20+
21+
find_library(OPENGLES2_LIBRARIES NAMES GLESv2
22+
PATHS "${ANDROID_STANDALONE_TOOLCHAIN}/usr/lib"
23+
)
24+
else()
25+
find_package(PkgConfig QUIET)
26+
pkg_check_modules(PC_OPENGLES2 glesv2)
27+
28+
if (PC_OPENGLES2_FOUND)
29+
set(OPENGLES2_DEFINITIONS ${PC_OPENGLES2_CFLAGS_OTHER})
30+
endif ()
31+
32+
find_path(OPENGLES2_INCLUDE_DIR NAMES GLES2/gl2.h
33+
HINTS ${PC_OPENGLES2_INCLUDEDIR} ${PC_OPENGLES2_INCLUDE_DIRS}
34+
)
35+
36+
if(EMSCRIPTEN)
37+
# GLES2 is native, no linking required.
38+
set(OPENGLES2_LIBRARIES "")
39+
else()
40+
set(OPENGLES2_NAMES ${OPENGLES2_NAMES} glesv2 GLESv2 brcmGLESv2)
41+
find_library(OPENGLES2_LIBRARIES NAMES ${OPENGLES2_NAMES}
42+
HINTS ${PC_OPENGLES2_LIBDIR} ${PC_OPENGLES2_LIBRARY_DIRS}
43+
)
44+
endif()
45+
endif()
46+
47+
include(FindPackageHandleStandardArgs)
48+
find_package_handle_standard_args(OpenGLES2 REQUIRED_VARS OPENGLES2_INCLUDE_DIR
49+
FOUND_VAR OPENGLES2_FOUND)
50+
51+
mark_as_advanced(OPENGLES2_INCLUDE_DIR OPENGLES2_LIBRARIES)

build.sh

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ if [ $BUILD_IOS ] ; then
193193
)
194194
fi
195195
# /BUILD_IOS
196+
fi
197+
# /Darwin
196198

197199
if [ "$OS" = "Darwin" ] || [ "$OS" = "Linux" ] || [ "$OS" = "Windows" ] ; then
198200
# ======================================================================
@@ -203,12 +205,18 @@ if [ "$OS" = "Darwin" ] || [ "$OS" = "Linux" ] || [ "$OS" = "Windows" ] ; then
203205
if [ $BUILD_ANDROID ] ; then
204206

205207
cd "${OURDIR}"
208+
if [ ! -d "depends/android/include/opencv2" ] ; then
209+
curl --location "https://github.com/artoolkitx/opencv/releases/download/4.6.0/opencv-4.6.0-dev-artoolkitx-android.tgz" -o opencv2.tgz
210+
tar xzf opencv2.tgz --strip-components=1 -C depends/android
211+
rm opencv2.tgz
212+
fi
206213
# If artoolkitx folder is not a symlink, fetch artoolkitx from latest build into a location where the build can find it.
207214
if [[ ! -L "${OURDIR}/depends/android/artoolkitx" ]] ; then
208215
IMAGE="artoolkitx-${ARTOOLKITX_VERSION}-Android.zip"
209216
find_or_fetch_artoolkitx "${IMAGE}"
210217
rm -rf "${OURDIR}/depends/android/artoolkitx"
211-
unzip "${OURDIR}/${SDK_FILENAME}" -d "${OURDIR}/depends/android/artoolkitx"
218+
unzip -q "${OURDIR}/${IMAGE}" -d "${OURDIR}/depends/android"
219+
mv "${OURDIR}/depends/android/artoolkitX" "${OURDIR}/depends/android/artoolkitx"
212220
fi
213221

214222
# Make the version number available to Gradle.
@@ -217,10 +225,6 @@ if [ $BUILD_ANDROID ] ; then
217225
(cd "${OURDIR}/Android"
218226
echo "Building Android project"
219227
./gradlew assembleRelease
220-
if [[ ]] ; then
221-
zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
222-
223-
fi
224228
)
225229
fi
226230
# /BUILD_ANDROID

depends/android/include/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
opencv2/

0 commit comments

Comments
 (0)