From e7b8959d06b701496ab71bcda8c40ab55d9576bd Mon Sep 17 00:00:00 2001 From: Locochoco Date: Mon, 11 Mar 2024 16:38:55 -0300 Subject: [PATCH] basalt-monado: init at release-673cc5c6 --- .../ba/basalt-monado/fixed-cmakes.patch | 353 ++++++++++++++++++ .../ba/basalt-monado/opengl-executables.patch | 87 +++++ pkgs/by-name/ba/basalt-monado/package.nix | 110 ++++++ .../basalt-monado/pangolin-0_6-cstdint.patch | 23 ++ .../by-name/ba/basalt-monado/remove-ros.patch | 68 ++++ pkgs/top-level/all-packages.nix | 6 + 6 files changed, 647 insertions(+) create mode 100644 pkgs/by-name/ba/basalt-monado/fixed-cmakes.patch create mode 100644 pkgs/by-name/ba/basalt-monado/opengl-executables.patch create mode 100644 pkgs/by-name/ba/basalt-monado/package.nix create mode 100644 pkgs/by-name/ba/basalt-monado/pangolin-0_6-cstdint.patch create mode 100644 pkgs/by-name/ba/basalt-monado/remove-ros.patch diff --git a/pkgs/by-name/ba/basalt-monado/fixed-cmakes.patch b/pkgs/by-name/ba/basalt-monado/fixed-cmakes.patch new file mode 100644 index 00000000000000..7027125a638fb4 --- /dev/null +++ b/pkgs/by-name/ba/basalt-monado/fixed-cmakes.patch @@ -0,0 +1,353 @@ +From eb93b6b5c3b7823a256451a50947df672588243b Mon Sep 17 00:00:00 2001 +From: Locochoco +Date: Sun, 10 Mar 2024 21:31:59 -0300 +Subject: [PATCH] fixed cmakes + +--- + CMakeLists.txt | 44 +++++---- + thirdparty/CMakeLists.txt | 150 ++++++++++++++--------------- + thirdparty/apriltag/CMakeLists.txt | 1 + + 3 files changed, 100 insertions(+), 95 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index dbea255..75a1d68 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,11 +2,10 @@ cmake_minimum_required(VERSION 3.10...3.18) + + project(basalt) + +-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/" ${CMAKE_MODULE_PATH}) + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + + if(NOT EIGEN_ROOT) +- set(EIGEN_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/basalt-headers/thirdparty/eigen") ++ set(EIGEN_ROOT "${BASALT_HEADERS_SRC}/eigen") + endif() + + string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWERCASE) +@@ -277,7 +276,7 @@ set(CMAKE_CXX_FLAGS "${BASALT_CXX_FLAGS} ${BASALT_MARCH_FLAGS} ${BASALT_PASSED_C + + + set(EIGEN_INCLUDE_DIR_HINTS ${EIGEN_ROOT}) +-find_package(Eigen3 3.4.0 EXACT REQUIRED MODULE) ++find_package(Eigen3 3.4.0 EXACT REQUIRED) + message(STATUS "Found Eigen headers in: ${EIGEN3_INCLUDE_DIR}") + if(NOT EIGEN3_INCLUDE_DIR MATCHES "^${EIGEN_ROOT}") + message(WARNING "Found Eigen headers are outside of specified EIGEN_ROOT '${EIGEN_ROOT}'") +@@ -310,13 +309,18 @@ add_library(basalt::vit INTERFACE IMPORTED) + set_property(TARGET basalt::vit PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/vit) + target_sources(basalt::vit INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/vit/vit_implementation_helper.cpp) + +-# custom scoped cli11 target +-add_library(basalt::cli11 INTERFACE IMPORTED) +-set_property(TARGET basalt::cli11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/CLI11/include) ++# custom scoped CLI11::CLI11 target ++find_package(CLI11 REQUIRED) ++message(STATUS "Found CLI11::CLI11 ${CLI11_VERSION} in: ${CLI11_DIR}") ++ ++#add_library(CLI11::CLI11 INTERFACE IMPORTED) ++#set_property(TARGET CLI11::CLI11 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/CLI11/include) + + # custom scoped magic_enum target ++find_package(magic_enum REQUIRED) ++message(STATUS "Found magic_enum ${magic_enum_VERSION} in: ${magic_enum_DIR}") + add_library(basalt::magic_enum INTERFACE IMPORTED) +-set_property(TARGET basalt::magic_enum PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/magic_enum/include) ++set_property(TARGET basalt::magic_enum PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${magic_enum_INCLUDE_DIRS}) + + # main library + add_library(basalt_internal STATIC) +@@ -402,7 +406,7 @@ target_sources(basalt_internal + ) + + target_link_libraries(basalt_internal +- PUBLIC ${STD_CXX_FS} basalt::opencv basalt::basalt-headers TBB::tbb pangolin basalt::cli11 basalt::vit basalt::magic_enum ++ PUBLIC ${STD_CXX_FS} basalt::opencv basalt::basalt-headers TBB::tbb pangolin CLI11::CLI11 basalt::vit basalt::magic_enum + PRIVATE nlohmann::json fmt::fmt) + target_include_directories(basalt_internal PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) + target_compile_definitions(basalt_internal PUBLIC ${BASALT_COMPILE_DEFINITIONS}) +@@ -450,47 +454,47 @@ target_link_libraries(basalt basalt_internal) + if(NOT BASALT_BUILD_SHARED_LIBRARY_ONLY) + + add_executable(basalt_calibrate src/calibrate.cpp src/calibration/cam_calib.cpp) +-target_link_libraries(basalt_calibrate basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_calibrate basalt_internal pangolin CLI11::CLI11) + + add_executable(basalt_calibrate_imu src/calibrate_imu.cpp src/calibration/cam_imu_calib.cpp) +-target_link_libraries(basalt_calibrate_imu basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_calibrate_imu basalt_internal pangolin CLI11::CLI11) + + + add_executable(basalt_vio_sim src/vio_sim.cpp) +-target_link_libraries(basalt_vio_sim basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_vio_sim basalt_internal pangolin CLI11::CLI11) + + add_executable(basalt_mapper_sim src/mapper_sim.cpp) +-target_link_libraries(basalt_mapper_sim basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_mapper_sim basalt_internal pangolin CLI11::CLI11) + + # mapper sim native doesn't use template free interface + if(BASALT_INSTANTIATIONS_DOUBLE) + add_executable(basalt_mapper_sim_naive src/mapper_sim_naive.cpp) +- target_link_libraries(basalt_mapper_sim_naive basalt_internal pangolin basalt::cli11) ++ target_link_libraries(basalt_mapper_sim_naive basalt_internal pangolin CLI11::CLI11) + endif() + + add_executable(basalt_mapper src/mapper.cpp) +-target_link_libraries(basalt_mapper basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_mapper basalt_internal pangolin CLI11::CLI11) + + + add_executable(basalt_opt_flow src/opt_flow.cpp) +-target_link_libraries(basalt_opt_flow basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_opt_flow basalt_internal pangolin CLI11::CLI11) + + add_executable(basalt_vio src/vio.cpp) +-target_link_libraries(basalt_vio basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_vio basalt_internal pangolin CLI11::CLI11) + + add_executable(basalt_time_alignment src/time_alignment.cpp) +-target_link_libraries(basalt_time_alignment basalt_internal pangolin basalt::cli11) ++target_link_libraries(basalt_time_alignment basalt_internal pangolin CLI11::CLI11) + + add_executable(basalt_kitti_eval src/kitti_eval.cpp) +-target_link_libraries(basalt_kitti_eval basalt::basalt-headers basalt::cli11) ++target_link_libraries(basalt_kitti_eval basalt::basalt-headers CLI11::CLI11) + + find_package(realsense2 QUIET) + if(realsense2_FOUND) + add_executable(basalt_rs_t265_record src/rs_t265_record.cpp src/device/rs_t265.cpp) +- target_link_libraries(basalt_rs_t265_record basalt_internal realsense2::realsense2 pangolin basalt::cli11) ++ target_link_libraries(basalt_rs_t265_record basalt_internal realsense2::realsense2 pangolin CLI11::CLI11) + + add_executable(basalt_rs_t265_vio src/rs_t265_vio.cpp src/device/rs_t265.cpp) +- target_link_libraries(basalt_rs_t265_vio basalt_internal realsense2::realsense2 pangolin basalt::cli11) ++ target_link_libraries(basalt_rs_t265_vio basalt_internal realsense2::realsense2 pangolin CLI11::CLI11) + endif() + + endif(NOT BASALT_BUILD_SHARED_LIBRARY_ONLY) +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index 5beecd9..293a1b2 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -4,7 +4,7 @@ add_library(nlohmann::json INTERFACE IMPORTED GLOBAL) + set_property(TARGET nlohmann::json PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/json/) + + add_subdirectory(basalt-headers EXCLUDE_FROM_ALL) +-add_subdirectory(ros EXCLUDE_FROM_ALL) ++#add_subdirectory(ros EXCLUDE_FROM_ALL) + add_subdirectory(apriltag EXCLUDE_FROM_ALL) + + +@@ -28,122 +28,122 @@ set(EIGEN_INCLUDE_DIRS "${EIGEN3_INCLUDE_DIR}") + + + # Hack to disable march=native in opengv +-macro(add_definitions) +- if(NOT ${ARGV0} STREQUAL "-march=native") +- _add_definitions(${ARGN}) +- endif() +-endmacro() +-add_subdirectory(opengv EXCLUDE_FROM_ALL) ++#macro(add_definitions) ++# if(NOT ${ARGV0} STREQUAL "-march=native") ++# _add_definitions(${ARGN}) ++# endif() ++#endmacro() ++#add_subdirectory(opengv EXCLUDE_FROM_ALL) + + # Hack to disable CPack in Pangolin. +-macro(include) +- if(NOT ${ARGV0} STREQUAL "CPack") +- _include(${ARGN}) +- endif() +-endmacro() +-add_subdirectory(Pangolin EXCLUDE_FROM_ALL) ++#macro(include) ++# if(NOT ${ARGV0} STREQUAL "CPack") ++# _include(${ARGN}) ++# endif() ++#endmacro() ++#add_subdirectory(Pangolin EXCLUDE_FROM_ALL) + + + # fix aprilgrid + target_compile_options(apriltag PRIVATE "-Wno-unused-private-field") + + # fix opengv: c++17 and debug postfix +-set_target_properties(opengv PROPERTIES +- CXX_STANDARD 17 +- DEBUG_POSTFIX "") ++#set_target_properties(opengv PROPERTIES ++# CXX_STANDARD 17 ++# DEBUG_POSTFIX "") + + # fix opengv: compile options (CMAKE_CXX_FLAGS is overwritten by Opengv) +-target_compile_options(opengv PRIVATE +- -Wno-unused-private-field +- ${BASALT_MARCH_FLAGS} +- "SHELL:${BASALT_PASSED_CXX_FLAGS}") ++#target_compile_options(opengv PRIVATE ++# -Wno-unused-private-field ++# ${BASALT_MARCH_FLAGS} ++# "SHELL:${BASALT_PASSED_CXX_FLAGS}") + + # TODO: enable once mpark issue is fixed upstream pangolin + #set_target_properties(pangolin PROPERTIES + # CXX_STANDARD 17) + + # fix pangolin: gcc +-if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") +- target_compile_options(pangolin PRIVATE "-Wno-implicit-fallthrough") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") ++# target_compile_options(pangolin PRIVATE "-Wno-implicit-fallthrough") ++#endif() + + # fix pangolin: macOS +-if(APPLE) +- target_compile_options(pangolin PRIVATE "-Wno-objc-missing-super-calls") +-endif() ++#if(APPLE) ++# target_compile_options(pangolin PRIVATE "-Wno-objc-missing-super-calls") ++#endif() + + # fix pangolin: macOS >= 10.14 Mojave +-if(APPLE AND CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 18.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-deprecated-declarations") ++#if(APPLE AND CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 18.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-deprecated-declarations") + +- if((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-deprecated-copy") +- endif() ++# if((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-deprecated-copy") ++# endif() + +-endif() ++#endif() + + # fix pangolin: clang +-if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") +- target_compile_options(pangolin PRIVATE "-Wno-null-pointer-arithmetic") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") ++# target_compile_options(pangolin PRIVATE "-Wno-null-pointer-arithmetic") ++#endif() + + # fix pangolin: clang >= 8.0 +-if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-defaulted-function-deleted") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-defaulted-function-deleted") ++#endif() + + # fix pangolin: clang >= 10.0 +-if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-deprecated-copy") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-deprecated-copy") ++#endif() + + # fix pangolin: clang >= 13.0 +-if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-unused-but-set-variable;-Wno-null-pointer-subtraction") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-unused-but-set-variable;-Wno-null-pointer-subtraction") ++#endif() + + # fix pangolin: clang >= 14.0 +-if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0.0) +- target_compile_options(pangolin PRIVATE "-Wno-unused-but-set-variable") +-endif() ++#if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0.0) ++# target_compile_options(pangolin PRIVATE "-Wno-unused-but-set-variable") ++#endif() + + # fix pangolin: GCC >= 9.0 +-if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) +- target_compile_options(pangolin PRIVATE "-Wno-stringop-truncation;-Wno-deprecated-copy") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) ++# target_compile_options(pangolin PRIVATE "-Wno-stringop-truncation;-Wno-deprecated-copy") ++#endif() + + # fix pangolin: GCC >= 10.0 +-if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0) +- target_compile_options(pangolin PRIVATE "-Wno-parentheses") +-endif() ++#if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0) ++# target_compile_options(pangolin PRIVATE "-Wno-parentheses") ++#endif() + + # check here the directories for the pangolin and opengv targets, and + # confirm that the eigen-related include dirs match. +-foreach(_target opengv pangolin) +- get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) +- foreach(_dir IN LISTS _include_dirs) +- if("${_dir}" MATCHES ".*/eigen3?(/unsupported)?$") +- if(NOT _dir MATCHES "^${EIGEN3_INCLUDE_DIR}.*") +- endif() +- endif() +- endforeach() +-endforeach() ++#foreach(_target opengv pangolin) ++# get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) ++# foreach(_dir IN LISTS _include_dirs) ++# if("${_dir}" MATCHES ".*/eigen3?(/unsupported)?$") ++# if(NOT _dir MATCHES "^${EIGEN3_INCLUDE_DIR}.*") ++# endif() ++# endif() ++# endforeach() ++#endforeach() + + # opengv and pangolin assume that eigen is found outside the source + # directory and thus include it in INTERFACE_INCLUDE_DIRECTORIES, + # which makes cmake complain that that property contains paths in the + # source folder. Thus, we update the property to only include these + # eigen paths in the "BUILD_INTERFACE" (not "INSTALL"). +-if (EIGEN3_INCLUDE_DIR MATCHES "^${CMAKE_SOURCE_DIR}.*") +- foreach(_target opengv pangolin) +- get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) +- set(_include_dirs_new "") +- foreach(_dir IN LISTS _include_dirs) +- if(_dir MATCHES ".*/eigen(/unsupported)?$") +- string(REGEX REPLACE "(^${CMAKE_SOURCE_DIR}.*$)" "$" _dir "${_dir}") +- endif() +- list(APPEND _include_dirs_new "${_dir}") +- endforeach() +- set_target_properties(${_target} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_include_dirs_new}") +- endforeach() +-endif() ++#if (EIGEN3_INCLUDE_DIR MATCHES "^${CMAKE_SOURCE_DIR}.*") ++# foreach(_target opengv pangolin) ++# get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) ++# set(_include_dirs_new "") ++# foreach(_dir IN LISTS _include_dirs) ++# if(_dir MATCHES ".*/eigen(/unsupported)?$") ++# string(REGEX REPLACE "(^${CMAKE_SOURCE_DIR}.*$)" "$" _dir "${_dir}") ++# endif() ++# list(APPEND _include_dirs_new "${_dir}") ++# endforeach() ++# set_target_properties(${_target} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_include_dirs_new}") ++# endforeach() ++#endif() +diff --git a/thirdparty/apriltag/CMakeLists.txt b/thirdparty/apriltag/CMakeLists.txt +index 9c36fa8..7af2715 100644 +--- a/thirdparty/apriltag/CMakeLists.txt ++++ b/thirdparty/apriltag/CMakeLists.txt +@@ -1,5 +1,6 @@ + cmake_minimum_required(VERSION 3.2...3.18) + ++find_package(Sophus REQUIRED) + + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") +-- +2.43.1 + diff --git a/pkgs/by-name/ba/basalt-monado/opengl-executables.patch b/pkgs/by-name/ba/basalt-monado/opengl-executables.patch new file mode 100644 index 00000000000000..ca80fd019e00da --- /dev/null +++ b/pkgs/by-name/ba/basalt-monado/opengl-executables.patch @@ -0,0 +1,87 @@ +From e130bda12537448bb531a18073f7ce5ca3a04d93 Mon Sep 17 00:00:00 2001 +From: Locochoco +Date: Mon, 11 Mar 2024 11:10:04 -0300 +Subject: [PATCH] opengl executables patch + +--- + CMakeLists.txt | 28 ++++++++++++++++------------ + 1 file changed, 16 insertions(+), 12 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9baa1e8..744d75f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -322,6 +322,10 @@ message(STATUS "Found magic_enum ${magic_enum_VERSION} in: ${magic_enum_DIR}") + add_library(basalt::magic_enum INTERFACE IMPORTED) + set_property(TARGET basalt::magic_enum PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${magic_enum_INCLUDE_DIRS}) + ++find_package(OpenGL REQUIRED) ++find_package(GLUT REQUIRED) ++find_package(GLEW REQUIRED) ++ + # main library + add_library(basalt_internal STATIC) + +@@ -453,47 +457,47 @@ target_link_libraries(basalt basalt_internal) + if(NOT BASALT_BUILD_SHARED_LIBRARY_ONLY) + + add_executable(basalt_calibrate src/calibrate.cpp src/calibration/cam_calib.cpp) +-target_link_libraries(basalt_calibrate basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_calibrate basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES} ) + + add_executable(basalt_calibrate_imu src/calibrate_imu.cpp src/calibration/cam_imu_calib.cpp) +-target_link_libraries(basalt_calibrate_imu basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_calibrate_imu basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + + add_executable(basalt_vio_sim src/vio_sim.cpp) +-target_link_libraries(basalt_vio_sim basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_vio_sim basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + add_executable(basalt_mapper_sim src/mapper_sim.cpp) +-target_link_libraries(basalt_mapper_sim basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_mapper_sim basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + # mapper sim native doesn't use template free interface + if(BASALT_INSTANTIATIONS_DOUBLE) + add_executable(basalt_mapper_sim_naive src/mapper_sim_naive.cpp) +- target_link_libraries(basalt_mapper_sim_naive basalt_internal pangolin CLI11::CLI11) ++ target_link_libraries(basalt_mapper_sim_naive basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + endif() + + add_executable(basalt_mapper src/mapper.cpp) +-target_link_libraries(basalt_mapper basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_mapper basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + + add_executable(basalt_opt_flow src/opt_flow.cpp) +-target_link_libraries(basalt_opt_flow basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_opt_flow basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + add_executable(basalt_vio src/vio.cpp) +-target_link_libraries(basalt_vio basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_vio basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + add_executable(basalt_time_alignment src/time_alignment.cpp) +-target_link_libraries(basalt_time_alignment basalt_internal pangolin CLI11::CLI11) ++target_link_libraries(basalt_time_alignment basalt_internal pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + add_executable(basalt_kitti_eval src/kitti_eval.cpp) +-target_link_libraries(basalt_kitti_eval basalt::basalt-headers CLI11::CLI11) ++target_link_libraries(basalt_kitti_eval basalt::basalt-headers CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + find_package(realsense2 QUIET) + if(realsense2_FOUND) + add_executable(basalt_rs_t265_record src/rs_t265_record.cpp src/device/rs_t265.cpp) +- target_link_libraries(basalt_rs_t265_record basalt_internal realsense2::realsense2 pangolin CLI11::CLI11) ++ target_link_libraries(basalt_rs_t265_record basalt_internal realsense2::realsense2 pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + + add_executable(basalt_rs_t265_vio src/rs_t265_vio.cpp src/device/rs_t265.cpp) +- target_link_libraries(basalt_rs_t265_vio basalt_internal realsense2::realsense2 pangolin CLI11::CLI11) ++ target_link_libraries(basalt_rs_t265_vio basalt_internal realsense2::realsense2 pangolin CLI11::CLI11 ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARIES}) + endif() + + endif(NOT BASALT_BUILD_SHARED_LIBRARY_ONLY) +-- +2.43.1 + diff --git a/pkgs/by-name/ba/basalt-monado/package.nix b/pkgs/by-name/ba/basalt-monado/package.nix new file mode 100644 index 00000000000000..2ca00101e6e847 --- /dev/null +++ b/pkgs/by-name/ba/basalt-monado/package.nix @@ -0,0 +1,110 @@ +{ stdenv, + lib, + fetchFromGitLab, + fetchFromGitHub, + autoPatchelfHook, + boost, + bzip2, + cereal, + cli11, + cmake, + eigen, + extra-cmake-modules, + fmt, + freeglut, + glew, + libGL, + magic-enum, + opencv, + opengv, + pangolin, + pkg-config, + sophus, + tbb, + nix-update-script +}: +stdenv.mkDerivation (finalAttrs: { + pname = "basalt-monado"; + version = "release-673cc5c6"; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "mateosss"; + repo = "basalt"; + rev = finalAttrs.version; + hash = "sha256-cj4R6QtZ2yK8VEeNxu5KBNAQez6O0hsTc8CLdIxegyE="; + }; + + headers-src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "mateosss"; + repo = "basalt-headers"; + rev = "28b09b3a5802d44835655778cdd9b1974569bd47"; + hash = "sha256-gCHCB/1hEy3R/MGexdbq3tIz30Ciw2QmmAqz5wjKhM0="; + }; + + postUnpack = '' + rm -r source/thirdparty/basalt-headers + ln -s ${finalAttrs.headers-src} source/thirdparty/basalt-headers + ''; + + patches = [ + ./fixed-cmakes.patch + ./remove-ros.patch + ./opengl-executables.patch + ]; + + nativeBuildInputs = [ + cmake + cli11 + extra-cmake-modules + pkg-config + autoPatchelfHook + ]; + + buildInputs = [ + boost + eigen + tbb + fmt + bzip2 + opengv + cli11 + magic-enum + sophus + cereal + freeglut + glew + libGL + opencv + (pangolin.overrideAttrs { + version = "0.6"; + src = fetchFromGitHub { + owner = "stevenlovegrove"; + repo = "Pangolin"; + rev = "86eb4975fc4fc8b5d92148c2e370045ae9bf9f5d"; + sha256 = "sha256-fKteOuOuGMWPZFxOUGCUcjeLXtTUXSGMSs1QfM5qblU="; + }; + patches = [ ./pangolin-0_6-cstdint.patch ]; + }) + ]; + + cmakeFlags = [ + (lib.cmakeBool "BASALT_BUILTIN_CEREAL" false) + (lib.cmakeBool "BASALT_BUILTIN_EIGEN" false) + (lib.cmakeBool "BASALT_BUILTIN_SOPHUS" false) + (lib.cmakeBool "BASALT_INSTANTIATIONS_DOUBLE" false) + (lib.cmakeBool "BUILD_TESTS" false) + ]; + + passthru.updateScript = nix-update-script {}; + + meta = with lib; { + description = "A fork of Basalt improved for tracking XR devices with Monado"; + homepage = "https://gitlab.freedesktop.org/mateosss/basalt"; + license = licenses.bsd3; + mainProgram = "basalt_vio"; + maintainers = [ maintainers.locochoco ]; + platforms = platforms.all; + }; +}) diff --git a/pkgs/by-name/ba/basalt-monado/pangolin-0_6-cstdint.patch b/pkgs/by-name/ba/basalt-monado/pangolin-0_6-cstdint.patch new file mode 100644 index 00000000000000..98e3cb29bf397d --- /dev/null +++ b/pkgs/by-name/ba/basalt-monado/pangolin-0_6-cstdint.patch @@ -0,0 +1,23 @@ +diff --git a/include/pangolin/log/packetstream_tags.h b/include/pangolin/log/packetstream_tags.h +index 13216f3d..66a5bd61 100644 +--- a/include/pangolin/log/packetstream_tags.h ++++ b/include/pangolin/log/packetstream_tags.h +@@ -1,6 +1,7 @@ + #pragma once + + #include ++#include + + namespace pangolin { + +diff --git a/src/image/image_io_jpg.cpp b/src/image/image_io_jpg.cpp +index cfa110a1..9b1b98df 100644 +--- a/src/image/image_io_jpg.cpp ++++ b/src/image/image_io_jpg.cpp +@@ -1,5 +1,6 @@ + #include + #include ++#include + + + #include diff --git a/pkgs/by-name/ba/basalt-monado/remove-ros.patch b/pkgs/by-name/ba/basalt-monado/remove-ros.patch new file mode 100644 index 00000000000000..0573882c751db0 --- /dev/null +++ b/pkgs/by-name/ba/basalt-monado/remove-ros.patch @@ -0,0 +1,68 @@ +From f3e045d9a2634ed99703e56a63a9b1b53f510702 Mon Sep 17 00:00:00 2001 +From: Locochoco +Date: Sun, 10 Mar 2024 22:09:53 -0300 +Subject: [PATCH] remove ros + +--- + CMakeLists.txt | 3 +-- + src/io/dataset_io.cpp | 3 --- + thirdparty/CMakeLists.txt | 1 - + 3 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 75a1d68..9baa1e8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -424,7 +424,6 @@ target_sources(basalt_internal + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/dataset_io.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/dataset_io_euroc.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/dataset_io_kitti.h +- ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/dataset_io_rosbag.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/dataset_io_uzh.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/io/marg_data_io.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/basalt/vi_estimator/nfr_mapper.h +@@ -435,7 +434,7 @@ target_sources(basalt_internal + ${CMAKE_CURRENT_SOURCE_DIR}/src/io/dataset_io.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/vi_estimator/nfr_mapper.cpp + ) +-target_link_libraries(basalt_internal PRIVATE rosbag apriltag opengv) ++target_link_libraries(basalt_internal PRIVATE apriltag opengv) + + + endif() +diff --git a/src/io/dataset_io.cpp b/src/io/dataset_io.cpp +index 0629d12..17ae036 100644 +--- a/src/io/dataset_io.cpp ++++ b/src/io/dataset_io.cpp +@@ -36,7 +36,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include + #include + #include +-#include + #include + + namespace basalt { +@@ -45,8 +44,6 @@ DatasetIoInterfacePtr DatasetIoFactory::getDatasetIo(const std::string &dataset_ + if (dataset_type == "euroc") { + // return DatasetIoInterfacePtr(); + return DatasetIoInterfacePtr(new EurocIO(load_mocap_as_gt)); +- } else if (dataset_type == "bag") { +- return DatasetIoInterfacePtr(new RosbagIO); + } else if (dataset_type == "uzh") { + return DatasetIoInterfacePtr(new UzhIO); + } else if (dataset_type == "kitti") { +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index 293a1b2..d4fb1dd 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -4,7 +4,6 @@ add_library(nlohmann::json INTERFACE IMPORTED GLOBAL) + set_property(TARGET nlohmann::json PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/json/) + + add_subdirectory(basalt-headers EXCLUDE_FROM_ALL) +-#add_subdirectory(ros EXCLUDE_FROM_ALL) + add_subdirectory(apriltag EXCLUDE_FROM_ALL) + + +-- +2.43.1 + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7bc821761088d8..034f9fe0eb07b8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -438,6 +438,12 @@ with pkgs; catppuccin-plymouth = callPackage ../data/themes/catppuccin-plymouth { }; + basalt-monado = callPackage ../by-name/ba/basalt-monado/package.nix { + tbb = tbb_2021_11; + cereal = cereal_1_3_2; + opencv = opencv.override{ enableGtk3 = true; }; + }; + btdu = callPackage ../tools/misc/btdu { }; ccal = callPackage ../tools/misc/ccal { };