From a568d1fb2d253b652dae7e19793acd7ffe86160a Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sun, 26 Jun 2022 20:44:48 -0400 Subject: [PATCH 01/32] OpenSfM builds --- SuperBuild/cmake/External-OpenSfM.cmake | 2 +- requirements.txt | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index 88fb4d44..a2713611 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -19,7 +19,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} GIT_REPOSITORY https://github.com/OpenDroneMap/OpenSfM/ - GIT_TAG 287 + GIT_TAG m1native #--Update/Patch step---------- UPDATE_COMMAND git submodule update --init --recursive #--Configure step------------- diff --git a/requirements.txt b/requirements.txt index c08df405..67084801 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ edt==2.0.2 ODMExifRead==3.0.3 Fiona==1.8.17 ; sys_platform == 'linux' or sys_platform == 'darwin' https://github.com/OpenDroneMap/windows-deps/raw/main/Fiona-1.8.19-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' -joblib==0.17.0 +joblib==1.1.0 laspy==1.7.0 lxml==4.6.1 matplotlib==3.3.3 @@ -23,9 +23,9 @@ rasterio==1.2.3 ; sys_platform == 'linux' or sys_platform == 'darwin' https://github.com/OpenDroneMap/windows-deps/raw/main/rasterio-1.2.3-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' https://github.com/OpenDroneMap/windows-deps/raw/main/GDAL-3.2.3-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' repoze.lru==0.7 -scikit-learn==0.24.2 -scikit-image==0.18.3 -scipy==1.5.4 +scikit-learn==1.1.1 +scikit-image==0.19.3 +scipy==1.8.1 xmltodict==0.12.0 fpdf2==2.4.6 Shapely==1.7.1 From 0bd04342255a46ad639c6ed2d770939c5254f799 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Tue, 9 Aug 2022 16:14:47 -0400 Subject: [PATCH 02/32] Superbuild updates --- SuperBuild/CMakeLists.txt | 4 ++-- SuperBuild/cmake/External-OpenSfM.cmake | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index d87649ca..51408a9e 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -175,7 +175,7 @@ externalproject_add(poissonrecon externalproject_add(dem2mesh GIT_REPOSITORY https://github.com/OpenDroneMap/dem2mesh.git - GIT_TAG master + GIT_TAG m1native PREFIX ${SB_BINARY_DIR}/dem2mesh SOURCE_DIR ${SB_SOURCE_DIR}/dem2mesh CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} @@ -194,7 +194,7 @@ externalproject_add(dem2points externalproject_add(odm_orthophoto DEPENDS opencv GIT_REPOSITORY https://github.com/OpenDroneMap/odm_orthophoto.git - GIT_TAG 288b + GIT_TAG m1native PREFIX ${SB_BINARY_DIR}/odm_orthophoto SOURCE_DIR ${SB_SOURCE_DIR}/odm_orthophoto CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index 355d70a9..a2713611 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -19,11 +19,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} GIT_REPOSITORY https://github.com/OpenDroneMap/OpenSfM/ -<<<<<<< HEAD GIT_TAG m1native -======= - GIT_TAG 288 ->>>>>>> 0bbd16d24fa4a1367ff540b22bce24016872a910 #--Update/Patch step---------- UPDATE_COMMAND git submodule update --init --recursive #--Configure step------------- From e0210afda68debf2b4cc67fc963738da95275047 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Aug 2022 14:38:34 -0400 Subject: [PATCH 03/32] Compiles OpenMVS --- SuperBuild/CMakeLists.txt | 23 ++++++++++++++++++++++- SuperBuild/cmake/External-OpenMVS.cmake | 3 ++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 51408a9e..81f33148 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -7,6 +7,23 @@ if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() +if (APPLE) + # Use homebrew's clang compiler since Apple + # does not allow us to link to libomp + foreach(CXX_PATH /opt/homebrew/bin/c++-12 /usr/local/c++-12) + message("Checking for ${CXX_PATH}...") + if(EXISTS "${CXX_PATH}") + message("Found Homebrew's compiler: ${CXX_PATH}") + set(CMAKE_CXX_COMPILER ${CXX_PATH}) + set(APPLE_CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") + break() + endif() + endforeach() + if (NOT APPLE_CMAKE_ARGS) + message(WARNING "Cannot find Homebrew's compiler, compilation might fail...") + endif() +endif() + # Setup SuperBuild root location set(SB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) @@ -160,10 +177,13 @@ if (WIN32) else() set (POISSON_BUILD_CMD make -j${nproc} poissonrecon) set (POISSON_BIN_PATH "Linux/PoissonRecon") + if (APPLE) + set(POISSON_BUILD_CMD COMPILER=${CMAKE_CXX_COMPILER} make -j${nproc} -f Makefile.macos poissonrecon) + endif() endif() externalproject_add(poissonrecon GIT_REPOSITORY https://github.com/OpenDroneMap/PoissonRecon.git - GIT_TAG 272 + GIT_TAG m1native PREFIX ${SB_BINARY_DIR}/PoissonRecon SOURCE_DIR ${SB_SOURCE_DIR}/PoissonRecon UPDATE_COMMAND "" @@ -180,6 +200,7 @@ externalproject_add(dem2mesh SOURCE_DIR ${SB_SOURCE_DIR}/dem2mesh CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_GDAL_ARGS} + ${APPLE_CMAKE_ARGS} ) externalproject_add(dem2points diff --git a/SuperBuild/cmake/External-OpenMVS.cmake b/SuperBuild/cmake/External-OpenMVS.cmake index 95438758..7f2c6e3b 100644 --- a/SuperBuild/cmake/External-OpenMVS.cmake +++ b/SuperBuild/cmake/External-OpenMVS.cmake @@ -24,7 +24,8 @@ externalproject_add(eigen34 ) SET(ARM64_CMAKE_ARGS "") -if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" ) + +if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64") SET(ARM64_CMAKE_ARGS -DOpenMVS_USE_SSE=OFF) endif() From 281fb52269659c176a28eca4fa71eccabfc33a98 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Aug 2022 14:56:47 -0400 Subject: [PATCH 04/32] Builds on M1 --- SuperBuild/CMakeLists.txt | 4 ++-- SuperBuild/cmake/External-MvsTexturing.cmake | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 81f33148..20ce2814 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -156,10 +156,10 @@ set(custom_libs OpenSfM externalproject_add(mve GIT_REPOSITORY https://github.com/OpenDroneMap/mve.git - GIT_TAG 262 + GIT_TAG m1native UPDATE_COMMAND "" SOURCE_DIR ${SB_SOURCE_DIR}/mve - CMAKE_ARGS ${WIN32_CMAKE_ARGS} + CMAKE_ARGS ${WIN32_CMAKE_ARGS} ${APPLE_CMAKE_ARGS} BUILD_IN_SOURCE 1 INSTALL_COMMAND "" ) diff --git a/SuperBuild/cmake/External-MvsTexturing.cmake b/SuperBuild/cmake/External-MvsTexturing.cmake index 4f8828f3..933936cb 100644 --- a/SuperBuild/cmake/External-MvsTexturing.cmake +++ b/SuperBuild/cmake/External-MvsTexturing.cmake @@ -9,7 +9,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}/${_proj_name} GIT_REPOSITORY https://github.com/OpenDroneMap/mvs-texturing - GIT_TAG 287 + GIT_TAG m1native #--Update/Patch step---------- UPDATE_COMMAND "" #--Configure step------------- From 181652e3dd205fad18d9f4a53eaf3a5ebd280554 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Tue, 16 Aug 2022 20:03:29 -0400 Subject: [PATCH 05/32] Builds PDAL --- SuperBuild/cmake/External-PDAL.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SuperBuild/cmake/External-PDAL.cmake b/SuperBuild/cmake/External-PDAL.cmake index 634c9899..4fda625c 100644 --- a/SuperBuild/cmake/External-PDAL.cmake +++ b/SuperBuild/cmake/External-PDAL.cmake @@ -3,6 +3,8 @@ set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") if (WIN32) set(LASZIP_LIB "${SB_INSTALL_DIR}/lib/laszip.lib") +elseif(APPLE) +set(LASZIP_LIB "${SB_INSTALL_DIR}/lib/liblaszip.dylib") else() set(LASZIP_LIB "${SB_INSTALL_DIR}/lib/liblaszip.so") endif() From d85805cc009c4ef80cc740c9801ed80e180062cf Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 27 Aug 2022 12:17:20 +0200 Subject: [PATCH 06/32] OpenCV misc --- SuperBuild/CMakeLists.txt | 3 +++ SuperBuild/cmake/External-OpenCV.cmake | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 20ce2814..3af24f1a 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -92,6 +92,9 @@ if (WIN32) file(COPY ${CUDA_DLLS} DESTINATION "${SB_INSTALL_DIR}/bin") set(WIN32_GDAL_ARGS -DGDAL_FOUND=TRUE -DGDAL_LIBRARY=${GDAL_LIBRARY} -DGDAL_INCLUDE_DIR=${GDAL_INCLUDE_DIR}) +elseif(APPLE) + set(PYTHON_HOME "${SB_ROOT_DIR}/../venv") + set(PYTHON_EXE_PATH "${PYTHON_HOME}/bin/python") else() set(PYTHON_EXE_PATH "/usr/bin/python3") endif() diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index f4d4b753..c2869ab8 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -2,16 +2,20 @@ set(_proj_name opencv) set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") if (WIN32) - set(WIN32_CMAKE_EXTRA_ARGS -DPYTHON3_NUMPY_INCLUDE_DIRS=${PYTHON_HOME}/lib/site-packages/numpy/core/include + set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_NUMPY_INCLUDE_DIRS=${PYTHON_HOME}/lib/site-packages/numpy/core/include -DPYTHON3_PACKAGES_PATH=${PYTHON_HOME}/lib/site-packages -DPYTHON3_EXECUTABLE=${PYTHON_EXE_PATH} -DWITH_MSMF=OFF -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib -DOPENCV_BIN_INSTALL_PATH=${SB_INSTALL_DIR}/bin) +elseif(APPLE) + set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_EXECUTABLE=${PYTHON_EXE_PATH} + -DMIN_VER_PYTHON3="3.8") + #-DPYTHON_LIBRARY=/opt/homebrew/Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/lib/) endif() -# TODO: - add PYTHON HOME -# - add NUMPY paths, packages paths? +# TODO: need to find (install?) PythonLibs via find_package +# # - re-run cmake . from opencv dir, check that bindings are being built. ExternalProject_Add(${_proj_name} @@ -64,7 +68,7 @@ ExternalProject_Add(${_proj_name} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_CMAKE_ARGS} - ${WIN32_CMAKE_EXTRA_ARGS} + ${OCV_CMAKE_EXTRA_ARGS} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} #--Install step--------------- From f696c33b11d326e6289984ae190e916080e10f9e Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 31 Aug 2022 01:00:31 +0200 Subject: [PATCH 07/32] PoC builds opencv on mac --- SuperBuild/cmake/External-OpenCV.cmake | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index c2869ab8..b2ae2ccc 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -9,9 +9,21 @@ if (WIN32) -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib -DOPENCV_BIN_INSTALL_PATH=${SB_INSTALL_DIR}/bin) elseif(APPLE) - set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_EXECUTABLE=${PYTHON_EXE_PATH} - -DMIN_VER_PYTHON3="3.8") - #-DPYTHON_LIBRARY=/opt/homebrew/Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/lib/) + set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_NUMPY_INCLUDE_DIRS=${PYTHON_HOME}/lib/site-packages/numpy/core/include + -DPYTHON3_PACKAGES_PATH=${PYTHON_HOME}/lib/site-packages + -DPYTHON3_EXECUTABLE=${PYTHON_EXE_PATH} + -DPYTHON3_LIBRARIES=/opt/homebrew/Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib + -DPYTHON3_INCLUDE_DIR=/opt/homebrew//Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/include/python3.8/ + -DPYTHON3INTERP_FOUND=ON + -DPYTHON3LIBS_FOUND=ON + -DPYTHON_DEFAULT_AVAILABLE=ON + -DPYTHON_DEFAULT_EXECUTABLE=${PYTHON_EXE_PATH} + -DOPENCV_PYTHON_INSTALL_PATH=${SB_INSTALL_DIR}/lib/python3.8 + -D__INSTALL_PATH_PYTHON3=${SB_INSTALL_DIR}/lib/python3.8 + -DHAVE_opencv_python3=ON + -DOPENCV_PYTHON_SKIP_DETECTION=ON + -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib + -DOPENCV_BIN_INSTALL_PATH=${SB_INSTALL_DIR}/bin) endif() # TODO: need to find (install?) PythonLibs via find_package From 6031131a653e5e09d74fb950e2a618c21e162a28 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 31 Aug 2022 12:33:39 +0200 Subject: [PATCH 08/32] OpenCV builds --- SuperBuild/CMakeLists.txt | 30 ++++++++++++++++++-------- SuperBuild/cmake/External-OpenCV.cmake | 20 ++++++++--------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 3af24f1a..79aa4a24 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -8,17 +8,29 @@ if (NOT CMAKE_BUILD_TYPE) endif() if (APPLE) + find_program(HOMEBREW_EXECUTABLE brew) + mark_as_advanced(FORCE HOMEBREW_EXECUTABLE) + if (HOMEBREW_EXECUTABLE) + # Detected a Homebrew install, query for its install prefix. + execute_process(COMMAND ${HOMEBREW_EXECUTABLE} --prefix + OUTPUT_VARIABLE HOMEBREW_INSTALL_PREFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + message(STATUS "Detected Homebrew with install prefix: " + "${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.") + list(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_INSTALL_PREFIX}") + endif() + # Use homebrew's clang compiler since Apple # does not allow us to link to libomp - foreach(CXX_PATH /opt/homebrew/bin/c++-12 /usr/local/c++-12) - message("Checking for ${CXX_PATH}...") - if(EXISTS "${CXX_PATH}") - message("Found Homebrew's compiler: ${CXX_PATH}") - set(CMAKE_CXX_COMPILER ${CXX_PATH}) - set(APPLE_CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") - break() - endif() - endforeach() + set(CXX_PATH ${HOMEBREW_INSTALL_PREFIX}/bin/c++-12) + message("Checking for ${CXX_PATH}...") + if(EXISTS "${CXX_PATH}") + message("Found Homebrew's compiler: ${CXX_PATH}") + set(CMAKE_CXX_COMPILER ${CXX_PATH}) + set(APPLE_CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") + break() + endif() + if (NOT APPLE_CMAKE_ARGS) message(WARNING "Cannot find Homebrew's compiler, compilation might fail...") endif() diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index b2ae2ccc..1c275477 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -9,27 +9,27 @@ if (WIN32) -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib -DOPENCV_BIN_INSTALL_PATH=${SB_INSTALL_DIR}/bin) elseif(APPLE) - set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_NUMPY_INCLUDE_DIRS=${PYTHON_HOME}/lib/site-packages/numpy/core/include - -DPYTHON3_PACKAGES_PATH=${PYTHON_HOME}/lib/site-packages + # macOS is unable to automatically detect our Python libs + set(OCV_CMAKE_EXTRA_ARGS -DPYTHON3_NUMPY_INCLUDE_DIRS=${PYTHON_HOME}/lib/python3.8/site-packages/numpy/core/include + -DPYTHON3_PACKAGES_PATH=${PYTHON_HOME}/lib/python3.8/site-packages -DPYTHON3_EXECUTABLE=${PYTHON_EXE_PATH} - -DPYTHON3_LIBRARIES=/opt/homebrew/Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib - -DPYTHON3_INCLUDE_DIR=/opt/homebrew//Cellar/python@3.8/3.8.13_2/Frameworks/Python.framework/Versions/3.8/include/python3.8/ + -DPYTHON3_LIBRARIES=${HOMEBREW_INSTALL_PREFIX}/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/libpython3.8.dylib + -DPYTHON3_INCLUDE_DIR=${HOMEBREW_INSTALL_PREFIX}/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8/ + -DPYTHON3_INCLUDE_PATH=${HOMEBREW_INSTALL_PREFIX}/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8/ -DPYTHON3INTERP_FOUND=ON -DPYTHON3LIBS_FOUND=ON -DPYTHON_DEFAULT_AVAILABLE=ON -DPYTHON_DEFAULT_EXECUTABLE=${PYTHON_EXE_PATH} - -DOPENCV_PYTHON_INSTALL_PATH=${SB_INSTALL_DIR}/lib/python3.8 - -D__INSTALL_PATH_PYTHON3=${SB_INSTALL_DIR}/lib/python3.8 + -DPYTHON3_VERSION_MAJOR=3 + -DPYTHON3_VERSION_MINOR=8 + -DOPENCV_PYTHON_INSTALL_PATH=${SB_INSTALL_DIR}/lib/python3.8/dist-packages + -D__INSTALL_PATH_PYTHON3=${SB_INSTALL_DIR}/lib/python3.8/dist-packages -DHAVE_opencv_python3=ON -DOPENCV_PYTHON_SKIP_DETECTION=ON -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib -DOPENCV_BIN_INSTALL_PATH=${SB_INSTALL_DIR}/bin) endif() -# TODO: need to find (install?) PythonLibs via find_package -# -# - re-run cmake . from opencv dir, check that bindings are being built. - ExternalProject_Add(${_proj_name} PREFIX ${_SB_BINARY_DIR} TMP_DIR ${_SB_BINARY_DIR}/tmp From 2a526f112021355e3dbfc5f4621b9af148569ab9 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 31 Aug 2022 17:40:08 +0200 Subject: [PATCH 09/32] Fix OpenCV cmake --- SuperBuild/cmake/External-OpenCV.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index 1c275477..f0abcb6f 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -22,8 +22,8 @@ elseif(APPLE) -DPYTHON_DEFAULT_EXECUTABLE=${PYTHON_EXE_PATH} -DPYTHON3_VERSION_MAJOR=3 -DPYTHON3_VERSION_MINOR=8 + -DOPENCV_CONFIG_INSTALL_PATH= -DOPENCV_PYTHON_INSTALL_PATH=${SB_INSTALL_DIR}/lib/python3.8/dist-packages - -D__INSTALL_PATH_PYTHON3=${SB_INSTALL_DIR}/lib/python3.8/dist-packages -DHAVE_opencv_python3=ON -DOPENCV_PYTHON_SKIP_DETECTION=ON -DOPENCV_LIB_INSTALL_PATH=${SB_INSTALL_DIR}/lib From 3637cadbf3820a4eeb57af895d34886b7ade7370 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 1 Sep 2022 09:39:16 +0200 Subject: [PATCH 10/32] Builds mvstexturing --- SuperBuild/cmake/External-MvsTexturing.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/SuperBuild/cmake/External-MvsTexturing.cmake b/SuperBuild/cmake/External-MvsTexturing.cmake index 933936cb..d5cd4ad4 100644 --- a/SuperBuild/cmake/External-MvsTexturing.cmake +++ b/SuperBuild/cmake/External-MvsTexturing.cmake @@ -19,6 +19,7 @@ ExternalProject_Add(${_proj_name} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_CMAKE_ARGS} + ${APPLE_CMAKE_ARGS} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} #--Install step--------------- From 847c7ebf01b278dbefb79d34eeb6f15f9e2fdb66 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 1 Sep 2022 09:45:41 +0200 Subject: [PATCH 11/32] Builds dem2points --- SuperBuild/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 79aa4a24..e944257b 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -225,6 +225,7 @@ externalproject_add(dem2points SOURCE_DIR ${SB_SOURCE_DIR}/dem2points CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_GDAL_ARGS} + ${APPLE_CMAKE_ARGS} ) externalproject_add(odm_orthophoto From 3453eda4ddbb1f4d7c917d932e94995737f537f8 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 1 Sep 2022 10:29:19 +0200 Subject: [PATCH 12/32] OpenSfM builds --- SuperBuild/cmake/External-OpenSfM.cmake | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index a2713611..98af2eef 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -3,12 +3,18 @@ set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") include(ProcessorCount) ProcessorCount(nproc) +set(EXTRA_INCLUDE_DIRS "") if(WIN32) set(OpenCV_DIR "${SB_INSTALL_DIR}/x64/vc16/lib") set(BUILD_CMD ${CMAKE_COMMAND} --build "${SB_BUILD_DIR}/opensfm" --config "${CMAKE_BUILD_TYPE}") else() - set(OpenCV_DIR "${SB_INSTALL_DIR}/lib/cmake/opencv4") set(BUILD_CMD make "-j${nproc}") + if (APPLE) + set(OpenCV_DIR "${SB_INSTALL_DIR}") + set(EXTRA_INCLUDE_DIRS "${HOMEBREW_INSTALL_PREFIX}/include") + else() + set(OpenCV_DIR "${SB_INSTALL_DIR}/lib/cmake/opencv4") + endif() endif() ExternalProject_Add(${_proj_name} @@ -28,9 +34,11 @@ ExternalProject_Add(${_proj_name} -DCERES_ROOT_DIR=${SB_INSTALL_DIR} -DOpenCV_DIR=${OpenCV_DIR} -DADDITIONAL_INCLUDE_DIRS=${SB_INSTALL_DIR}/include + -DYET_ADDITIONAL_INCLUDE_DIRS=${EXTRA_INCLUDE_DIRS} -DOPENSFM_BUILD_TESTS=off -DPYTHON_EXECUTABLE=${PYTHON_EXE_PATH} ${WIN32_CMAKE_ARGS} + ${APPLE_CMAKE_ARGS} BUILD_COMMAND ${BUILD_CMD} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} From 434042e6447ca33c91195ed8715e1a6e78d31482 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 1 Sep 2022 14:00:12 +0200 Subject: [PATCH 13/32] Build opensfm with native tools --- SuperBuild/cmake/External-OpenSfM.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index 98af2eef..49413fc6 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -38,7 +38,6 @@ ExternalProject_Add(${_proj_name} -DOPENSFM_BUILD_TESTS=off -DPYTHON_EXECUTABLE=${PYTHON_EXE_PATH} ${WIN32_CMAKE_ARGS} - ${APPLE_CMAKE_ARGS} BUILD_COMMAND ${BUILD_CMD} #--Build step----------------- BINARY_DIR ${_SB_BINARY_DIR} From 78dfe26cf392ab0f57cb77b65d0cc5a41743078f Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 1 Sep 2022 17:29:43 +0200 Subject: [PATCH 14/32] Fix rpath --- SuperBuild/cmake/External-OpenCV.cmake | 11 +++++++++++ SuperBuild/scripts/macos_fix_rpath.sh | 3 +++ 2 files changed, 14 insertions(+) create mode 100755 SuperBuild/scripts/macos_fix_rpath.sh diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index f0abcb6f..8bb780fe 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -90,3 +90,14 @@ ExternalProject_Add(${_proj_name} LOG_CONFIGURE OFF LOG_BUILD OFF ) + +if (APPLE) + set(INSTALL_NAME_TOOL "${SB_ROOT_DIR}/scripts/macos_fix_rpath.sh") + set(CV2_BINDINGS "${SB_INSTALL_DIR}/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-darwin.so") + + add_custom_command( + TARGET ${_proj_name} POST_BUILD + COMMAND ${INSTALL_NAME_TOOL} "SuperBuild/install/lib" ${CV2_BINDINGS} + COMMENT "Fixing rpath for Python bindings" + ) +endif() \ No newline at end of file diff --git a/SuperBuild/scripts/macos_fix_rpath.sh b/SuperBuild/scripts/macos_fix_rpath.sh new file mode 100755 index 00000000..aad3152e --- /dev/null +++ b/SuperBuild/scripts/macos_fix_rpath.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +install_name_tool -add_rpath "$1" "$2" || true From a6b4958caffc45ad229eb49ec9f6c346d520f06e Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Tue, 6 Sep 2022 16:14:10 -0400 Subject: [PATCH 15/32] update pyproj --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index f44dc872..dff37baf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ numpy==1.23.1 Pillow==8.3.2 vmem==1.0.1 pyodm==1.5.8 -pyproj==3.0.0.post1 +pyproj==3.3.1 Pysolar==0.9 pytz==2020.4 PyYAML==5.1 @@ -30,4 +30,4 @@ xmltodict==0.12.0 fpdf2==2.4.6 Shapely==1.7.1 onnx==1.12.0 -onnxruntime==1.11.1 \ No newline at end of file +onnxruntime==1.11.1 From 808f9e40a21c0bc3d66c47fb55876e931cd7c5b0 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Tue, 6 Sep 2022 18:18:54 -0400 Subject: [PATCH 16/32] Update vmem --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d8dc7a90..e6f97f4c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ matplotlib==3.3.3 networkx==2.5 numpy==1.23.1 Pillow==8.3.2 -vmem==1.0.1 +vmem==1.0.2 pyodm==1.5.8 pyproj==3.3.1 Pysolar==0.9 From 2b2115c298becd4812ad1e33ca1ea0d6decf70ef Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 7 Sep 2022 11:24:53 -0400 Subject: [PATCH 17/32] Fix rpath for openmvs --- SuperBuild/CMakeLists.txt | 16 ++++++++++++---- SuperBuild/cmake/External-OpenCV.cmake | 9 +-------- SuperBuild/cmake/External-OpenMVS.cmake | 6 ++++++ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index e944257b..9fd3f450 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.1) project(ODM-SuperBuild) +# Setup SuperBuild root location +set(SB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release") @@ -28,16 +31,21 @@ if (APPLE) message("Found Homebrew's compiler: ${CXX_PATH}") set(CMAKE_CXX_COMPILER ${CXX_PATH}) set(APPLE_CMAKE_ARGS "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") - break() endif() if (NOT APPLE_CMAKE_ARGS) message(WARNING "Cannot find Homebrew's compiler, compilation might fail...") endif() -endif() -# Setup SuperBuild root location -set(SB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set(INSTALL_NAME_TOOL "${SB_ROOT_DIR}/scripts/macos_fix_rpath.sh") + macro(macos_fix_rpath project library) + add_custom_command( + TARGET ${project} POST_BUILD + COMMAND ${INSTALL_NAME_TOOL} "SuperBuild/install/lib" ${library} + COMMENT "Fixing rpath for ${library}" + ) + endmacro() +endif() ################################ # Setup SuperBuild directories # diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index 8bb780fe..29340bbb 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -92,12 +92,5 @@ ExternalProject_Add(${_proj_name} ) if (APPLE) - set(INSTALL_NAME_TOOL "${SB_ROOT_DIR}/scripts/macos_fix_rpath.sh") - set(CV2_BINDINGS "${SB_INSTALL_DIR}/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-darwin.so") - - add_custom_command( - TARGET ${_proj_name} POST_BUILD - COMMAND ${INSTALL_NAME_TOOL} "SuperBuild/install/lib" ${CV2_BINDINGS} - COMMENT "Fixing rpath for Python bindings" - ) + macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-darwin.so") endif() \ No newline at end of file diff --git a/SuperBuild/cmake/External-OpenMVS.cmake b/SuperBuild/cmake/External-OpenMVS.cmake index 7f2c6e3b..129ac35a 100644 --- a/SuperBuild/cmake/External-OpenMVS.cmake +++ b/SuperBuild/cmake/External-OpenMVS.cmake @@ -77,3 +77,9 @@ ExternalProject_Add(${_proj_name} LOG_CONFIGURE OFF LOG_BUILD OFF ) + + +if(APPLE) + macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/OpenMVS/DensifyPointCloud") + macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/OpenMVS/ReconstructMesh") +endif() \ No newline at end of file From 8abd163823c5a2eaff96d8b088a4b3d896bf61d3 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 7 Sep 2022 12:28:20 -0400 Subject: [PATCH 18/32] odm_orthophoto rpath fix --- SuperBuild/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 9fd3f450..0db9755f 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -245,6 +245,9 @@ externalproject_add(odm_orthophoto CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_CMAKE_ARGS} ${WIN32_GDAL_ARGS} ) +if(APPLE) + macos_fix_rpath(odm_orthophoto "${SB_INSTALL_DIR}/bin/odm_orthophoto") +endif() externalproject_add(lastools GIT_REPOSITORY https://github.com/OpenDroneMap/LAStools.git From 8884c9c2ea7ded66ed0b0b4b70e82efe303613bb Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 7 Sep 2022 13:03:10 -0400 Subject: [PATCH 19/32] Fix entwine, obj2tiles --- SuperBuild/cmake/External-Entwine.cmake | 4 ++++ SuperBuild/cmake/External-Obj2Tiles.cmake | 2 ++ 2 files changed, 6 insertions(+) diff --git a/SuperBuild/cmake/External-Entwine.cmake b/SuperBuild/cmake/External-Entwine.cmake index 5d52e879..c943bffb 100644 --- a/SuperBuild/cmake/External-Entwine.cmake +++ b/SuperBuild/cmake/External-Entwine.cmake @@ -34,3 +34,7 @@ ExternalProject_Add(${_proj_name} LOG_CONFIGURE OFF LOG_BUILD OFF ) + +if (APPLE) + macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/entwine") +endif() \ No newline at end of file diff --git a/SuperBuild/cmake/External-Obj2Tiles.cmake b/SuperBuild/cmake/External-Obj2Tiles.cmake index 53b86913..cb83bf91 100644 --- a/SuperBuild/cmake/External-Obj2Tiles.cmake +++ b/SuperBuild/cmake/External-Obj2Tiles.cmake @@ -10,6 +10,8 @@ if (WIN32) set(OBJ2TILES_EXT ".exe") elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") set(OBJ2TILES_ARCH "LinuxArm") +elseif(APPLE) + set(OBJ2TILES_ARCH "Osx64") endif() From 278e85db6a5a67e67037445439b9178d48f20c65 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 7 Sep 2022 13:03:58 -0400 Subject: [PATCH 20/32] Change entwine branch --- SuperBuild/cmake/External-Entwine.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SuperBuild/cmake/External-Entwine.cmake b/SuperBuild/cmake/External-Entwine.cmake index c943bffb..dfc057f2 100644 --- a/SuperBuild/cmake/External-Entwine.cmake +++ b/SuperBuild/cmake/External-Entwine.cmake @@ -13,7 +13,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} GIT_REPOSITORY https://github.com/OpenDroneMap/entwine/ - GIT_TAG 285 + GIT_TAG m1native #--Update/Patch step---------- UPDATE_COMMAND "" #--Configure step------------- From 03e224691b933e8c7defd85b56c1dba290c13321 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 10 Sep 2022 15:25:37 -0400 Subject: [PATCH 21/32] Use DYLD instead of fixing rpath --- SuperBuild/CMakeLists.txt | 12 ------------ SuperBuild/cmake/External-Entwine.cmake | 6 +----- SuperBuild/cmake/External-OpenCV.cmake | 6 +----- SuperBuild/cmake/External-OpenMVS.cmake | 6 ------ run.sh | 1 + 5 files changed, 3 insertions(+), 28 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 0db9755f..0a95da39 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -36,15 +36,6 @@ if (APPLE) if (NOT APPLE_CMAKE_ARGS) message(WARNING "Cannot find Homebrew's compiler, compilation might fail...") endif() - - set(INSTALL_NAME_TOOL "${SB_ROOT_DIR}/scripts/macos_fix_rpath.sh") - macro(macos_fix_rpath project library) - add_custom_command( - TARGET ${project} POST_BUILD - COMMAND ${INSTALL_NAME_TOOL} "SuperBuild/install/lib" ${library} - COMMENT "Fixing rpath for ${library}" - ) - endmacro() endif() ################################ @@ -245,9 +236,6 @@ externalproject_add(odm_orthophoto CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} ${WIN32_CMAKE_ARGS} ${WIN32_GDAL_ARGS} ) -if(APPLE) - macos_fix_rpath(odm_orthophoto "${SB_INSTALL_DIR}/bin/odm_orthophoto") -endif() externalproject_add(lastools GIT_REPOSITORY https://github.com/OpenDroneMap/LAStools.git diff --git a/SuperBuild/cmake/External-Entwine.cmake b/SuperBuild/cmake/External-Entwine.cmake index dfc057f2..cc8f4ab2 100644 --- a/SuperBuild/cmake/External-Entwine.cmake +++ b/SuperBuild/cmake/External-Entwine.cmake @@ -33,8 +33,4 @@ ExternalProject_Add(${_proj_name} LOG_DOWNLOAD OFF LOG_CONFIGURE OFF LOG_BUILD OFF -) - -if (APPLE) - macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/entwine") -endif() \ No newline at end of file +) \ No newline at end of file diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index 29340bbb..60cb0fa3 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -89,8 +89,4 @@ ExternalProject_Add(${_proj_name} LOG_DOWNLOAD OFF LOG_CONFIGURE OFF LOG_BUILD OFF -) - -if (APPLE) - macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/lib/python3.8/dist-packages/cv2/python-3.8/cv2.cpython-38-darwin.so") -endif() \ No newline at end of file +) \ No newline at end of file diff --git a/SuperBuild/cmake/External-OpenMVS.cmake b/SuperBuild/cmake/External-OpenMVS.cmake index 129ac35a..7f2c6e3b 100644 --- a/SuperBuild/cmake/External-OpenMVS.cmake +++ b/SuperBuild/cmake/External-OpenMVS.cmake @@ -77,9 +77,3 @@ ExternalProject_Add(${_proj_name} LOG_CONFIGURE OFF LOG_BUILD OFF ) - - -if(APPLE) - macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/OpenMVS/DensifyPointCloud") - macos_fix_rpath(${_proj_name} "${SB_INSTALL_DIR}/bin/OpenMVS/ReconstructMesh") -endif() \ No newline at end of file diff --git a/run.sh b/run.sh index a743b6de..34a6a4ab 100755 --- a/run.sh +++ b/run.sh @@ -2,5 +2,6 @@ RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib +export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib python3 $RUNPATH/run.py "$@" From 643ea4eee6129735961f63678bf7f7d5fbf31e09 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 10 Sep 2022 16:19:41 -0400 Subject: [PATCH 22/32] Do not build openexr --- SuperBuild/cmake/External-OpenCV.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/SuperBuild/cmake/External-OpenCV.cmake b/SuperBuild/cmake/External-OpenCV.cmake index 60cb0fa3..812d4873 100644 --- a/SuperBuild/cmake/External-OpenCV.cmake +++ b/SuperBuild/cmake/External-OpenCV.cmake @@ -61,6 +61,7 @@ ExternalProject_Add(${_proj_name} -DWITH_VTK=OFF -DWITH_EIGEN=OFF -DWITH_OPENNI=OFF + -DWITH_OPENEXR=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF From 333eec764451709f80554d62ea69ab28809373c3 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sat, 10 Sep 2022 16:45:16 -0400 Subject: [PATCH 23/32] Propagate DYLD_LIBRARY_PATH --- opendm/system.py | 5 ++++- run.sh | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/opendm/system.py b/opendm/system.py index bf5f279a..4feff283 100644 --- a/opendm/system.py +++ b/opendm/system.py @@ -81,7 +81,10 @@ def run(cmd, env_paths=[context.superbuild_bin_path], env_vars={}, packages_path if len(packages_paths) > 0: env["PYTHONPATH"] = env.get("PYTHONPATH", "") + sep + sep.join(packages_paths) - + if sys.platform == 'darwin': + # Propagate DYLD_LIBRARY_PATH + cmd = "export DYLD_LIBRARY_PATH=\"%s\" && %s" % (env.get("DYLD_LIBRARY_PATH", ""), cmd) + for k in env_vars: env[k] = str(env_vars[k]) diff --git a/run.sh b/run.sh index 34a6a4ab..d9369dad 100755 --- a/run.sh +++ b/run.sh @@ -2,6 +2,6 @@ RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib -export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib +export DYLD_LIBRARY_PATH=$RUNPATH/SuperBuild/install/lib python3 $RUNPATH/run.py "$@" From 21895ca71a10a818b82a1d01968978e565d3dba0 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 12:00:47 -0400 Subject: [PATCH 24/32] Add macos build script --- configure_macos.sh | 121 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 configure_macos.sh diff --git a/configure_macos.sh b/configure_macos.sh new file mode 100644 index 00000000..b228febf --- /dev/null +++ b/configure_macos.sh @@ -0,0 +1,121 @@ +#!/bin/bash +uname=$(uname) +if [[ "$uname" != "Darwin" ]]; then + echo "This script is meant for MacOS only." + exit 1 +fi + +if [[ $2 =~ ^[0-9]+$ ]] ; then + processes=$2 +else + processes=$(sysctl -n hw.ncpu) +fi + +ensure_prereqs() { + export DEBIAN_FRONTEND=noninteractive + + if ! command -v xcodebuild &> /dev/null; then + echo "You need to install Xcode first. Go to the App Store and download Xcode" + exit 1 + fi + + if ! command -v brew &> /dev/null; then + echo "You need to install Homebrew first. https://brew.sh/" + exit 1 + fi + +} + +installreqs() { + ensure_prereqs + + brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost cgal libomp + brew link tbb@2020 + + python3.8 -m pip install virtualenv + + if [ -e ./venv ]; then + python3.8 -m virtualenv venv + fi + + source venv/bin/activate + pip install --ignore-installed -r requirements.txt +} + +install() { + installreqs + + echo "Compiling SuperBuild" + cd ${RUNPATH}/SuperBuild + mkdir -p build && cd build + cmake .. && make -j$processes + + cd /tmp + pip download GDAL==3.5.1 + tar -xpzf GDAL-3.5.1.tar.gz + cd GDAL-3.5.1 + if [ -e /opt/homebrew/bin/gdal-config ]; then + python setup.py build_ext --gdal-config /opt/homebrew/bin/gdal-config + else + python setup.py build_ext --gdal-config /usr/local/bin/gdal-config + fi + python setup.py build + python setup.py install + rm -fr /tmp/GDAL-3.5.1 /tmp/GDAL-3.5.1.tar.gz + + cd ${RUNPATH} + + echo "Configuration Finished" +} + +uninstall() { + echo "Removing SuperBuild and build directories" + cd ${RUNPATH}/SuperBuild + rm -rfv build src download install + cd ../ + rm -rfv build +} + +reinstall() { + echo "Reinstalling ODM modules" + uninstall + install +} + +clean() { + rm -rf \ + ${RUNPATH}/SuperBuild/build \ + ${RUNPATH}/SuperBuild/download \ + ${RUNPATH}/SuperBuild/src + + # find in /code and delete static libraries and intermediate object files + find ${RUNPATH} -type f -name "*.a" -delete -or -type f -name "*.o" -delete +} + +usage() { + echo "Usage:" + echo "bash configure.sh [nproc]" + echo "Subcommands:" + echo " install" + echo " Installs all dependencies and modules for running OpenDroneMap" + echo " reinstall" + echo " Removes SuperBuild and build modules, then re-installs them. Note this does not update OpenDroneMap to the latest version. " + echo " uninstall" + echo " Removes SuperBuild and build modules. Does not uninstall dependencies" + echo " installreqs" + echo " Only installs the requirements (does not build SuperBuild)" + echo " clean" + echo " Cleans the SuperBuild directory by removing temporary files. " + echo " help" + echo " Displays this message" + echo "[nproc] is an optional argument that can set the number of processes for the make -j tag. By default it uses $(nproc)" +} + +if [[ $1 =~ ^(install|installruntimedepsonly|reinstall|uninstall|installreqs|clean)$ ]]; then + RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + "$1" +else + echo "Invalid instructions." >&2 + usage + exit 1 +fi From 0faa7a593b742e1e4d969b0935c904120619e771 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 12:19:33 -0400 Subject: [PATCH 25/32] Update macos script, readme --- README.md | 38 +++++++++++++++++++++++++++++++------- configure_macos.sh | 2 +- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9093b07e..4618962f 100644 --- a/README.md +++ b/README.md @@ -197,20 +197,44 @@ If you have installed to a different directory by changing the `--import` comman You can run ODM natively on Ubuntu 21.04 (although we don't recommend it): -1. Download the source from [here](https://github.com/OpenDroneMap/ODM/archive/master.zip) -2. Run `bash configure.sh install` -3. Download a sample dataset from [here](https://github.com/OpenDroneMap/odm_data_aukerman/archive/master.zip) (about 550MB) and extract it in `/datasets/aukerman` -4. Run `./run.sh --project-path /datasets odm_data_aukerman` +```bash +git clone https://github.com/OpenDroneMap/ODM +cd ODM +bash configure.sh install +``` + +You can then process datasets with `./run.sh /datasets/odm_data_aukerman` + +## Native Install (MacOS) + +You can run ODM natively on Intel/ARM MacOS. + +First install: + + * Xcode + * [Homebrew](https://docs.brew.sh/Installation) + +Then Run: + +```bash +git clone https://github.com/OpenDroneMap/ODM +cd ODM +bash configure.sh install +``` + +You can then process datasets with `./run.sh /datasets/odm_data_aukerman` + +This could be improved in the future. [Helps us create a Homebrew formula](https://github.com/OpenDroneMap/ODM/issues/1531). ### Updating a native installation -When updating to a newer version of ODM, it is recommended that you run +When updating to a newer version of native ODM, it is recommended that you run: - bash configure.sh reinstall +`bash configure.sh reinstall` to ensure all the dependent packages and modules get updated. -### Build From Source +### Build Docker Images From Source If you want to rebuild your own docker image (if you have changed the source code, for example), from the ODM folder you can type: diff --git a/configure_macos.sh b/configure_macos.sh index b228febf..e5a69755 100644 --- a/configure_macos.sh +++ b/configure_macos.sh @@ -48,7 +48,7 @@ install() { echo "Compiling SuperBuild" cd ${RUNPATH}/SuperBuild mkdir -p build && cd build - cmake .. && make -j$processes + cmake .. && make -j$processes && make -j$processes opensfm cd /tmp pip download GDAL==3.5.1 From f0bdea4aed372eadabef582245cba42c43740ba2 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 12:51:29 -0400 Subject: [PATCH 26/32] Prepare for release --- SuperBuild/CMakeLists.txt | 8 ++++---- SuperBuild/cmake/External-Entwine.cmake | 2 +- SuperBuild/cmake/External-MvsTexturing.cmake | 2 +- SuperBuild/cmake/External-OpenSfM.cmake | 2 +- VERSION | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 0a95da39..862c42f5 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -170,7 +170,7 @@ set(custom_libs OpenSfM externalproject_add(mve GIT_REPOSITORY https://github.com/OpenDroneMap/mve.git - GIT_TAG m1native + GIT_TAG 290 UPDATE_COMMAND "" SOURCE_DIR ${SB_SOURCE_DIR}/mve CMAKE_ARGS ${WIN32_CMAKE_ARGS} ${APPLE_CMAKE_ARGS} @@ -197,7 +197,7 @@ else() endif() externalproject_add(poissonrecon GIT_REPOSITORY https://github.com/OpenDroneMap/PoissonRecon.git - GIT_TAG m1native + GIT_TAG 290 PREFIX ${SB_BINARY_DIR}/PoissonRecon SOURCE_DIR ${SB_SOURCE_DIR}/PoissonRecon UPDATE_COMMAND "" @@ -209,7 +209,7 @@ externalproject_add(poissonrecon externalproject_add(dem2mesh GIT_REPOSITORY https://github.com/OpenDroneMap/dem2mesh.git - GIT_TAG m1native + GIT_TAG master PREFIX ${SB_BINARY_DIR}/dem2mesh SOURCE_DIR ${SB_SOURCE_DIR}/dem2mesh CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} @@ -230,7 +230,7 @@ externalproject_add(dem2points externalproject_add(odm_orthophoto DEPENDS opencv GIT_REPOSITORY https://github.com/OpenDroneMap/odm_orthophoto.git - GIT_TAG m1native + GIT_TAG 290 PREFIX ${SB_BINARY_DIR}/odm_orthophoto SOURCE_DIR ${SB_SOURCE_DIR}/odm_orthophoto CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} diff --git a/SuperBuild/cmake/External-Entwine.cmake b/SuperBuild/cmake/External-Entwine.cmake index cc8f4ab2..6319212f 100644 --- a/SuperBuild/cmake/External-Entwine.cmake +++ b/SuperBuild/cmake/External-Entwine.cmake @@ -13,7 +13,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} GIT_REPOSITORY https://github.com/OpenDroneMap/entwine/ - GIT_TAG m1native + GIT_TAG 290 #--Update/Patch step---------- UPDATE_COMMAND "" #--Configure step------------- diff --git a/SuperBuild/cmake/External-MvsTexturing.cmake b/SuperBuild/cmake/External-MvsTexturing.cmake index d5cd4ad4..dd2d7c68 100644 --- a/SuperBuild/cmake/External-MvsTexturing.cmake +++ b/SuperBuild/cmake/External-MvsTexturing.cmake @@ -9,7 +9,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR}/${_proj_name} GIT_REPOSITORY https://github.com/OpenDroneMap/mvs-texturing - GIT_TAG m1native + GIT_TAG 290 #--Update/Patch step---------- UPDATE_COMMAND "" #--Configure step------------- diff --git a/SuperBuild/cmake/External-OpenSfM.cmake b/SuperBuild/cmake/External-OpenSfM.cmake index 49413fc6..43d76a60 100644 --- a/SuperBuild/cmake/External-OpenSfM.cmake +++ b/SuperBuild/cmake/External-OpenSfM.cmake @@ -25,7 +25,7 @@ ExternalProject_Add(${_proj_name} #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} GIT_REPOSITORY https://github.com/OpenDroneMap/OpenSfM/ - GIT_TAG m1native + GIT_TAG 290 #--Update/Patch step---------- UPDATE_COMMAND git submodule update --init --recursive #--Configure step------------- diff --git a/VERSION b/VERSION index 80803faf..c8e38b61 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.8.8 +2.9.0 From eb5cc0e1dd9f1459a228389f6b34549697317da7 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 13:40:18 -0400 Subject: [PATCH 27/32] Script fixes --- configure_macos.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 configure_macos.sh diff --git a/configure_macos.sh b/configure_macos.sh old mode 100644 new mode 100755 index e5a69755..0d1d6e6c --- a/configure_macos.sh +++ b/configure_macos.sh @@ -29,12 +29,12 @@ ensure_prereqs() { installreqs() { ensure_prereqs - brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost cgal libomp + brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost@1.76 cgal libomp brew link tbb@2020 python3.8 -m pip install virtualenv - if [ -e ./venv ]; then + if [ ! -e ./venv ]; then python3.8 -m virtualenv venv fi From 9af52a26c93b6924c493171e2292e6fb10a65e8e Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 14:20:42 -0400 Subject: [PATCH 28/32] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4618962f..e941fd91 100644 --- a/README.md +++ b/README.md @@ -211,7 +211,7 @@ You can run ODM natively on Intel/ARM MacOS. First install: - * Xcode + * Xcode 13 (not 14, there's currently a bug) * [Homebrew](https://docs.brew.sh/Installation) Then Run: From cbf33f9f7c0218c54353a137ac7359631481aba8 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 14:25:15 -0400 Subject: [PATCH 29/32] Use latest boost --- configure_macos.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure_macos.sh b/configure_macos.sh index 0d1d6e6c..7442e5f3 100755 --- a/configure_macos.sh +++ b/configure_macos.sh @@ -29,7 +29,7 @@ ensure_prereqs() { installreqs() { ensure_prereqs - brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost@1.76 cgal libomp + brew install cmake gcc@12 python@3.8 tbb@2020 eigen gdal boost cgal libomp brew link tbb@2020 python3.8 -m pip install virtualenv From b645b2077c4735937bcc5a4ea5de891924a391d1 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 15:13:33 -0400 Subject: [PATCH 30/32] Final touches --- configure_macos.sh | 4 ++-- requirements.txt | 1 + run.sh | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/configure_macos.sh b/configure_macos.sh index 7442e5f3..b86c5f30 100755 --- a/configure_macos.sh +++ b/configure_macos.sh @@ -34,7 +34,7 @@ installreqs() { python3.8 -m pip install virtualenv - if [ ! -e ./venv ]; then + if [ ! -e ${RUNPATH}/venv ]; then python3.8 -m virtualenv venv fi @@ -48,7 +48,7 @@ install() { echo "Compiling SuperBuild" cd ${RUNPATH}/SuperBuild mkdir -p build && cd build - cmake .. && make -j$processes && make -j$processes opensfm + cmake .. && make -j$processes cd /tmp pip download GDAL==3.5.1 diff --git a/requirements.txt b/requirements.txt index e6f97f4c..c5441e9a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,6 +24,7 @@ https://github.com/OpenDroneMap/windows-deps/raw/main/rasterio-1.2.3-cp38-cp38-w https://github.com/OpenDroneMap/windows-deps/raw/main/GDAL-3.2.3-cp38-cp38-win_amd64.whl ; sys_platform == 'win32' repoze.lru==0.7 scikit-learn==1.1.1 +Pywavelets==1.3.0 scikit-image==0.19.3 scipy==1.8.1 xmltodict==0.12.0 diff --git a/run.sh b/run.sh index d9369dad..a01df6e2 100755 --- a/run.sh +++ b/run.sh @@ -1,6 +1,9 @@ #!/bin/bash RUNPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +if [ -e $RUNPATH/venv ]; then + source $RUNPATH/venv/bin/activate +fi export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RUNPATH/SuperBuild/install/lib export DYLD_LIBRARY_PATH=$RUNPATH/SuperBuild/install/lib python3 $RUNPATH/run.py "$@" From 3486641224536f6e387cb146c104ef22052cd551 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 15:14:16 -0400 Subject: [PATCH 31/32] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e941fd91..5ea5adea 100644 --- a/README.md +++ b/README.md @@ -219,7 +219,7 @@ Then Run: ```bash git clone https://github.com/OpenDroneMap/ODM cd ODM -bash configure.sh install +bash configure_macos.sh install ``` You can then process datasets with `./run.sh /datasets/odm_data_aukerman` From 44914f867c66b4d685ff15752d4fc457941742b8 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 15 Sep 2022 17:31:45 -0400 Subject: [PATCH 32/32] Remove scripts --- SuperBuild/scripts/macos_fix_rpath.sh | 3 --- 1 file changed, 3 deletions(-) delete mode 100755 SuperBuild/scripts/macos_fix_rpath.sh diff --git a/SuperBuild/scripts/macos_fix_rpath.sh b/SuperBuild/scripts/macos_fix_rpath.sh deleted file mode 100755 index aad3152e..00000000 --- a/SuperBuild/scripts/macos_fix_rpath.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -install_name_tool -add_rpath "$1" "$2" || true