Skip to content

Commit a48292e

Browse files
committed
Merge branch 'master' into phil-dist_model_v5
* master: Fix GL matrix handling. Correct conditional GL. GLES2 support.
2 parents 17e444f + ae74790 commit a48292e

File tree

6 files changed

+350
-53
lines changed

6 files changed

+350
-53
lines changed

Linux/CMakeLists.txt

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#
99

1010
#
11-
# Packages required: libjpeg-dev libopencv-calib3d-dev libssl-dev libcurl4-openssl-dev
11+
# Packages required: libjpeg-dev libopencv-calib3d-dev libssl-dev libcurl4-openssl-dev libconfig-dev
1212
#
1313

1414
cmake_minimum_required( VERSION 3.2 )
@@ -28,10 +28,25 @@ project("artoolkitx_calib_camera"
2828
set(ARTOOLKITX_HOME "${CMAKE_CURRENT_SOURCE_DIR}/../../artoolkitx")
2929
set(ARTOOLKITX_CAMERA_CALIBRATION_HOME "${CMAKE_CURRENT_SOURCE_DIR}/..")
3030

31-
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_HOME}/Source/depends/linux")
32-
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/linux")
31+
add_definitions("-DARX_TARGET_PLATFORM_LINUX=1")
3332

34-
add_definitions("-DTARGET_PLATFORM_LINUX=1")
33+
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
34+
add_definitions("-DDEBUG=1")
35+
endif()
36+
37+
# Search prefix.
38+
list(APPEND CMAKE_MODULE_PATH "${ARTOOLKITX_HOME}/Source/cmake")
39+
if(ARX_TARGET_PLATFORM_VARIANT)
40+
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_HOME}/Source/depends/linux-${ARX_TARGET_PLATFORM_VARIANT}")
41+
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/linux-${ARX_TARGET_PLATFORM_VARIANT}")
42+
else()
43+
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_HOME}/Source/depends/linux")
44+
list(APPEND CMAKE_FIND_ROOT_PATH "${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/depends/linux")
45+
endif()
46+
if ("${ARX_TARGET_PLATFORM_VARIANT}" STREQUAL "raspbian")
47+
list(APPEND CMAKE_FIND_ROOT_PATH "/opt/vc/")
48+
set(GL_PREFER_EMBEDDED 1)
49+
endif()
3550

3651
# Installation settings.
3752
# If the user didn't define CMAKE_INSTALL_PREFIX, set a local install destination.
@@ -47,13 +62,26 @@ set(CMAKE_CXX_EXTENSIONS OFF)
4762

4863
include_directories(${ARTOOLKITX_CAMERA_CALIBRATION_HOME})
4964

50-
find_package(OpenGL REQUIRED)
51-
include_directories(${OPENGL_INCLUDE_DIR})
52-
5365
find_package(SDL2 REQUIRED)
54-
include(${SDL2_DIR}/sdl2-config.cmake)
55-
string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES)
56-
include_directories(${SDL2_INCLUDE_DIRS})
66+
string(STRIP "${SDL2_LIBRARY}" SDL2_LIBRARY)
67+
include_directories(${SDL2_INCLUDE_DIR})
68+
if ("${ARX_TARGET_PLATFORM_VARIANT}" STREQUAL "raspbian")
69+
list(APPEND SDL2_LIBRARY -Wl,--no-undefined -lm -L/opt/vc/lib -lbcm_host -ldl -ldl -lpthread -lrt)
70+
endif()
71+
72+
find_package(OpenGL)
73+
find_package(OpenGLES2)
74+
find_package(OpenGL3)
75+
if ((OPENGL_FOUND OR OpenGL3_FOUND) AND OPENGLES2_FOUND)
76+
if(GL_PREFER_EMBEDDED)
77+
set(OPENGL_FOUND 0)
78+
set(OpenGL3_FOUND 0)
79+
message(STATUS "Opting for embedded OpenGL")
80+
else()
81+
set(OPENGLES2_FOUND 0)
82+
message(STATUS "Opting for desktop OpenGL. Set GL_PREFER_EMBEDDED to change.")
83+
endif()
84+
endif()
5785

5886
find_package(JPEG REQUIRED)
5987
include_directories(${JPEG_INCLUDE_DIR})
@@ -145,8 +173,7 @@ add_dependencies(${CMAKE_PROJECT_NAME}
145173

146174
target_link_libraries(${CMAKE_PROJECT_NAME}
147175
ARX
148-
${OPENGL_LIBRARIES}
149-
${SDL2_LIBRARIES}
176+
${SDL2_LIBRARY}
150177
${JPEG_LIBRARIES}
151178
${OPENCV_CALIB3D_LIBRARY} ${OPENCV_FEATURES2D_LIBRARY} ${OPENCV_IMGPROC_LIBRARY} ${OPENCV_FLANN_LIBRARY} ${OPENCV_CORE_LIBRARY}
152179
${CURL_LIBRARIES} ${OPENSSL_LIBRARIES}
@@ -155,6 +182,19 @@ target_link_libraries(${CMAKE_PROJECT_NAME}
155182
m
156183
)
157184

185+
if(OPENGL_FOUND)
186+
target_include_directories(${PROJECT_NAME} PRIVATE ${OPENGL_INCLUDE_DIR})
187+
target_link_libraries(${CMAKE_PROJECT_NAME} ${OPENGL_LIBRARIES})
188+
endif()
189+
if(OPENGLES2_FOUND)
190+
target_include_directories(${PROJECT_NAME} PRIVATE ${OPENGLES2_INCLUDE_DIR})
191+
target_link_libraries(${CMAKE_PROJECT_NAME} ${OPENGLES2_LIBRARIES})
192+
endif()
193+
if(OpenGL3_FOUND)
194+
target_include_directories(${PROJECT_NAME} PRIVATE ${OpenGL3_INCLUDE_PATH})
195+
target_link_libraries(${CMAKE_PROJECT_NAME} ${OpenGL3_LIBRARIES})
196+
endif()
197+
158198
get_directory_property(ARXCC_DEFINES DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS)
159199
foreach(d ${ARXCC_DEFINES})
160200
message(STATUS "Defined: " ${d})

build.sh

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ VERSION=`sed -En -e 's/.*VERSION_STRING[[:space:]]+"([0-9]+\.[0-9]+(\.[0-9]+)*)"
2222
VERSION=`echo -n "${VERSION}" | sed -E -e 's/([0-9]+\.[0-9]+)\.0/\1/'`
2323

2424
function usage {
25-
echo "Usage: $(basename $0) (macos | linux)... "
25+
echo "Usage: $(basename $0) [--debug] (macos | windows | linux | linux-raspbian)... "
2626
exit 1
2727
}
2828

@@ -31,7 +31,10 @@ if [ $# -eq 0 ]; then
3131
fi
3232

3333
# -e = exit on errors; -x = debug
34-
set -e -x
34+
set -e
35+
36+
# -x = debug
37+
#set -x
3538

3639
# Parse parameters
3740
while test $# -gt 0
@@ -45,6 +48,12 @@ do
4548
;;
4649
linux) BUILD_LINUX=1
4750
;;
51+
linux-raspbian) BUILD_LINUX_RASPBIAN=1
52+
;;
53+
windows) BUILD_WINDOWS=1
54+
;;
55+
--debug) DEBUG=
56+
;;
4857
--*) echo "bad option $1"
4958
usage
5059
;;
@@ -55,7 +64,6 @@ do
5564
shift
5665
done
5766

58-
5967
# Set OS-dependent variables.
6068
OS=`uname -s`
6169
ARCH=`uname -m`
@@ -64,12 +72,25 @@ if [ "$OS" = "Linux" ]
6472
then
6573
CPUS=`/usr/bin/nproc`
6674
TAR='/bin/tar'
75+
# Identify Linux OS. Sets useful variables: ID, ID_LIKE, VERSION, NAME, PRETTY_NAME.
76+
source /etc/os-release
77+
# Windows Subsystem for Linux identifies itself as 'Linux'. Additional test required.
78+
if grep -qE "(Microsoft|WSL)" /proc/version &> /dev/null ; then
79+
OS='Windows'
80+
fi
6781
elif [ "$OS" = "Darwin" ]
6882
then
6983
CPUS=`/usr/sbin/sysctl -n hw.ncpu`
7084
elif [ "$OS" = "CYGWIN_NT-6.1" ]
7185
then
86+
# bash on Cygwin.
87+
CPUS=`/usr/bin/nproc`
88+
OS='Windows'
89+
elif [ "$OS" = "MINGW64_NT-10.0" ]
90+
then
91+
# git-bash on Windows.
7292
CPUS=`/usr/bin/nproc`
93+
OS='Windows'
7394
else
7495
CPUS=1
7596
fi
@@ -184,6 +205,45 @@ if [ $BUILD_LINUX ] ; then
184205
fi
185206
# /BUILD_LINUX
186207

208+
# Linux
209+
if [ $BUILD_LINUX_RASPBIAN ] ; then
210+
(cd Linux
211+
mkdir -p build-raspbian
212+
cd build-raspbian
213+
cmake .. -DCMAKE_BUILD_TYPE=Release -DARX_TARGET_PLATFORM_VARIANT="raspbian" -DVERSION="${VERSION}"
214+
make
215+
make install
216+
)
217+
218+
fi
219+
# /BUILD_LINUX_RASPBIAN
220+
187221
fi
188222
# /Linux
189223

224+
if [ "$OS" = "Windows" ] ; then
225+
# ======================================================================
226+
# Build platforms hosted by Windows
227+
# ======================================================================
228+
229+
# Windows
230+
if [ $BUILD_WINDOWS ] ; then
231+
232+
if [ ! -d "build-windows" ] ; then
233+
mkdir build-windows
234+
fi
235+
236+
SDK_FILENAME="artoolkitX for Windows v${SDK_VERSION_PRETTY}.dmg"
237+
curl -f -o "${SDK_FILENAME}" --location "${SDK_URL_DIR}$(rawurlencode "${SDK_FILENAME}")"
238+
239+
(cd Windows
240+
mkdir -p build
241+
cd build
242+
cmake.exe .. -DCMAKE_CONFIGURATION_TYPES=${DEBUG+Debug}${DEBUG-Release} "-GVisual Studio 15 2017 Win64" -D"VERSION=${VERSION}"
243+
cmake.exe --build . --config ${DEBUG+Debug}${DEBUG-Release} --target install
244+
)
245+
fi
246+
# /BUILD_WINDOWS
247+
248+
fi
249+
# /Windows

0 commit comments

Comments
 (0)