mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-07-09 23:23:00 -04:00
Add dev-libs/vera as dependency and remove the bundled vera. Add python use flag to enable python bindings, support multiple python version. Signed-off-by: Nguyen Dinh Dang Duong <dangduong31205@gmail.com>
320 lines
15 KiB
Diff
320 lines
15 KiB
Diff
From e692a65ee828896d6d08f9b8b6e8cb0cb04ee2eb Mon Sep 17 00:00:00 2001
|
|
From: Nguyen Dinh Dang Duong <dangduong31205@gmail.com>
|
|
Date: Thu, 10 Jul 2025 23:00:42 +0700
|
|
Subject: [PATCH 1/2] Fix CMakelists
|
|
|
|
---
|
|
CMakeLists.txt | 226 +++++++++++++++++++++++--------------------------
|
|
1 file changed, 104 insertions(+), 122 deletions(-)
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 0a90b18..672e9b9 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -13,12 +13,8 @@ set(CMAKE_CXX_STANDARD 14)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
-# The compiled vera
|
|
-add_subdirectory(deps)
|
|
-
|
|
-if(MSVC)
|
|
- add_definitions( -DPLATFORM_WINDOWS )
|
|
-endif()
|
|
+find_package(PkgConfig REQUIRED)
|
|
+include_directories(${PROJECT_SOURCE_DIR}/deps)
|
|
|
|
if (NO_X11 OR FORCE_GBM)
|
|
add_compile_options(-std=c++14 -DGLM_FORCE_CXX14 -fpermissive -Wno-psabi -lpthread)
|
|
@@ -38,7 +34,7 @@ set(CORE_HEADERS
|
|
"${PROJECT_SOURCE_DIR}/src/core/tools/tracker.h"
|
|
)
|
|
|
|
-set(CORE_SOURCES
|
|
+set(CORE_SOURCES
|
|
"${PROJECT_SOURCE_DIR}/src/core/sandbox.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/core/sceneRender.cpp"
|
|
"${PROJECT_SOURCE_DIR}/src/core/uniforms.cpp"
|
|
@@ -48,22 +44,24 @@ set(CORE_SOURCES
|
|
"${PROJECT_SOURCE_DIR}/src/core/tools/tracker.cpp"
|
|
)
|
|
|
|
-add_executable(glslViewer
|
|
+add_executable(glslViewer
|
|
"${PROJECT_SOURCE_DIR}/src/main.cpp"
|
|
${CORE_SOURCES}
|
|
)
|
|
|
|
-
|
|
-include_directories(deps/liblo)
|
|
-target_include_directories(glslViewer PRIVATE deps)
|
|
+# Vera
|
|
+pkg_check_modules(VERA REQUIRED vera)
|
|
+include_directories(${VERA_INCLUDE_DIRS})
|
|
+link_libraries(${VERA_LIBRARIES})
|
|
target_link_libraries(glslViewer PRIVATE vera)
|
|
+
|
|
# target_compile_definitions(vera PUBLIC SUPPORT_PLY_BINARY)
|
|
target_compile_definitions(glslViewer PRIVATE GLSLVIEWER_VERSION_MAJOR=${VERSION_MAJOR})
|
|
target_compile_definitions(glslViewer PRIVATE GLSLVIEWER_VERSION_MINOR=${VERSION_MINOR})
|
|
target_compile_definitions(glslViewer PRIVATE GLSLVIEWER_VERSION_PATCH=${VERSION_PATCH})
|
|
|
|
-if (EMSCRIPTEN)
|
|
-
|
|
+if (EMSCRIPTEN)
|
|
+
|
|
set(LFLAGS "${LFLAGS} -s USE_GLFW=3")
|
|
# set(LFLAGS "${LFLAGS} -s FULL_ES2=1")
|
|
# set(LFLAGS "${LFLAGS} -s FULL_ES3=1")
|
|
@@ -78,17 +76,18 @@ if (EMSCRIPTEN)
|
|
set(LFLAGS "${LFLAGS} -s NO_DYNAMIC_EXECUTION=1")
|
|
# set(LFLAGS "${LFLAGS} -s NO_DISABLE_EXCEPTION_CATCHING")
|
|
|
|
- # Copy the default index.html
|
|
+ # Copy the default index.html
|
|
file(COPY assets/index.html DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
|
|
|
|
- # Add examples folder to the .data file system
|
|
+ # Add examples folder to the .data file system
|
|
file(COPY examples DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
|
|
set(LFLAGS "${LFLAGS} --preload-file examples")
|
|
|
|
set_target_properties(glslViewer PROPERTIES LINK_FLAGS "${LFLAGS}")
|
|
target_link_libraries(glslViewer PRIVATE glfw webxr)
|
|
-
|
|
+
|
|
else()
|
|
+ # Curses
|
|
find_package(Curses)
|
|
if (CURSES_FOUND)
|
|
target_compile_definitions(glslViewer PUBLIC SUPPORT_NCURSES)
|
|
@@ -96,8 +95,28 @@ else()
|
|
target_link_libraries(glslViewer PRIVATE ${CURSES_LIBRARY})
|
|
endif()
|
|
|
|
- target_compile_definitions(glslViewer PUBLIC
|
|
- SUPPORT_MULTITHREAD_RECORDING
|
|
+ find_library(TINFO_LIB tinfo)
|
|
+ if (TINFO_LIB)
|
|
+ target_link_libraries(glslViewer PRIVATE ${TINFO_LIB})
|
|
+ endif()
|
|
+
|
|
+ # OpenGL
|
|
+ set(OpenGL_GL_PREFERENCE GLVND)
|
|
+ find_package(OpenGL REQUIRED)
|
|
+ target_include_directories(glslViewer PRIVATE ${OPENGL_INCLUDE_DIR})
|
|
+ target_link_libraries(glslViewer PRIVATE OpenGL::GL)
|
|
+
|
|
+ # Liblo
|
|
+ pkg_check_modules(LIBLO REQUIRED liblo)
|
|
+ target_include_directories(glslViewer PRIVATE ${LIBLO_INCLUDE_DIRS})
|
|
+ target_link_libraries(glslViewer PRIVATE ${LIBLO_LIBRARIES})
|
|
+
|
|
+ # Glm
|
|
+ find_package(glm REQUIRED)
|
|
+ target_include_directories(glslViewer PRIVATE ${GLM_INCLUDE_DIRS})
|
|
+
|
|
+ target_compile_definitions(glslViewer PUBLIC
|
|
+ SUPPORT_MULTITHREAD_RECORDING
|
|
SUPPORT_OSC
|
|
)
|
|
|
|
@@ -127,105 +146,73 @@ else()
|
|
# set a default system name - use CMake setting (Linux|Windows|...)
|
|
set(SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
|
|
|
|
- # for msvc the SYSTEM_NAME is set win32/64 instead of "Windows"
|
|
- if(MSVC)
|
|
- if(CMAKE_CL_64)
|
|
- set(SYSTEM_NAME "win64")
|
|
- else()
|
|
- set(SYSTEM_NAME "win32")
|
|
- endif()
|
|
- endif()
|
|
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-${SYSTEM_NAME}-${SYSTEM_ARCH}")
|
|
|
|
- if (MSVC)
|
|
- target_link_libraries(glslViewer PRIVATE
|
|
- lo_static
|
|
- Ws2_32.lib
|
|
- Iphlpapi.lib
|
|
+ target_link_libraries(glslViewer PRIVATE pthread dl)
|
|
+ install(TARGETS glslViewer DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
+
|
|
+ if (NOT APPLE)
|
|
+ target_link_libraries(glslViewer PRIVATE atomic)
|
|
+
|
|
+ # Install glslViewer Icon
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.png" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.desktop" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
|
+
|
|
+ # Install supported MIME file types by GlslViewer
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer-types.xml" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
|
|
+
|
|
+ # Add a thumbnailer for 3D Models
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.thumbnailer" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers)
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslThumbnailer.sh"
|
|
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+ RENAME "glslThumbnailer")
|
|
+
|
|
+ # Add ScreenSaver script
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.py"
|
|
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+ RENAME "glslScreenSaver")
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.frag" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
|
|
+ install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.yaml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
|
|
+
|
|
+ find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu)
|
|
+ execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install --novendor ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop)
|
|
+
|
|
+ # set(CPACK_GENERATOR "DEB")
|
|
+ set(DEBSRC_BUILD_DEPENDS debhelper git cmake xorg-dev libgbm-dev libglu1-mesa-dev libavcodec-dev libavfilter-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev libv4l-dev libjpeg-dev libpng-dev libtiff-dev)
|
|
+ set(DEBSRC_PACKAGE_DEPENDS ffmpeg libavcodec-extra libavfilter-extra xorg-x11-server-Xvfb )
|
|
+
|
|
+ set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|
+
|
|
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS)
|
|
+ foreach(DEP ${DEBSRC_PACKAGE_DEPENDS})
|
|
+ set(CPACK_DEBIAN_PACKAGE_DEPEND "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${DEP}")
|
|
+ endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})
|
|
+
|
|
+ set(CPACK_DEBIAN_BUILD_DEPENDS)
|
|
+ foreach(DEP ${DEBSRC_BUILD_DEPENDS})
|
|
+ set(CPACK_DEBIAN_BUILD_DEPENDS "${CPACK_DEBIAN_BUILD_DEPENDS}, ${DEP}")
|
|
+ endforeach(DEP ${DEBSRC_BUILD_DEPENDS})
|
|
+
|
|
+ # find out and set DEB_ARCHITECTURE
|
|
+ execute_process(
|
|
+ COMMAND dpkg --print-architecture
|
|
+ OUTPUT_VARIABLE DEB_ARCHITECTURE
|
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
-
|
|
- install(TARGETS glslViewer)
|
|
- set(CPACK_GENERATOR "ZIP")
|
|
-
|
|
- else()
|
|
- target_link_libraries(glslViewer PRIVATE pthread dl lo_static)
|
|
- install(TARGETS glslViewer DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
-
|
|
- if (NOT APPLE)
|
|
- target_link_libraries(glslViewer PRIVATE atomic)
|
|
-
|
|
- # Install glslViewer Icon
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.png" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.desktop" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
|
-
|
|
- # Install supported MIME file types by GlslViewer
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer-types.xml" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
|
|
- find_program(XDG-MIME_EXECUTABLE xdg-mime)
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} install --novendor ${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime/packages/glslViewer-types.xml)")
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop model/lst)")
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop model/ply)")
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop model/obj)")
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop model/gltf-binary)")
|
|
- install(CODE "execute_process(COMMAND ${XDG-MIME_EXECUTABLE} default ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop model/gltf+json)")
|
|
- find_program(UPDATE_MIME_DATABASE update-mime-database)
|
|
- install(CODE "execute_process(COMMAND ${UPDATE_MIME_DATABASE} ${CMAKE_INSTALL_FULL_DATAROOTDIR}/mime )")
|
|
- find_program(UPDATE_DESKTOP_DATABASE update-desktop-database)
|
|
- install(CODE "execute_process(COMMAND ${UPDATE_DESKTOP_DATABASE} ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)")
|
|
-
|
|
- # Add a thumbnailer for 3D Models
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslViewer.thumbnailer" DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/thumbnailers)
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslThumbnailer.sh"
|
|
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
- DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
- RENAME "glslThumbnailer")
|
|
-
|
|
- # Add ScreenSaver script
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.py"
|
|
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
- DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
- RENAME "glslScreenSaver")
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.frag" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
|
|
- install(FILES "${PROJECT_SOURCE_DIR}/assets/glslScreenSaver.yaml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glslViewer")
|
|
-
|
|
- find_program(XDG-DESKTOP-MENU_EXECUTABLE xdg-desktop-menu)
|
|
- execute_process(COMMAND ${XDG-DESKTOP-MENU_EXECUTABLE} install --novendor ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/glslViewer.desktop)
|
|
-
|
|
- # set(CPACK_GENERATOR "DEB")
|
|
- set(DEBSRC_BUILD_DEPENDS debhelper git cmake xorg-dev libgbm-dev libglu1-mesa-dev libavcodec-dev libavfilter-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev libv4l-dev libjpeg-dev libpng-dev libtiff-dev)
|
|
- set(DEBSRC_PACKAGE_DEPENDS ffmpeg libavcodec-extra libavfilter-extra xorg-x11-server-Xvfb )
|
|
-
|
|
- set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
|
|
-
|
|
- set(CPACK_DEBIAN_PACKAGE_DEPENDS)
|
|
- foreach(DEP ${DEBSRC_PACKAGE_DEPENDS})
|
|
- set(CPACK_DEBIAN_PACKAGE_DEPEND "${CPACK_DEBIAN_PACKAGE_DEPENDS}, ${DEP}")
|
|
- endforeach(DEP ${DEBSRC_PACKAGE_DEPENDS})
|
|
-
|
|
- set(CPACK_DEBIAN_BUILD_DEPENDS)
|
|
- foreach(DEP ${DEBSRC_BUILD_DEPENDS})
|
|
- set(CPACK_DEBIAN_BUILD_DEPENDS "${CPACK_DEBIAN_BUILD_DEPENDS}, ${DEP}")
|
|
- endforeach(DEP ${DEBSRC_BUILD_DEPENDS})
|
|
-
|
|
- # find out and set DEB_ARCHITECTURE
|
|
- execute_process(
|
|
- COMMAND dpkg --print-architecture
|
|
- OUTPUT_VARIABLE DEB_ARCHITECTURE
|
|
- OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
- )
|
|
- message(STATUS "package_details.cmake: your architecture is ${DEB_ARCHITECTURE}")
|
|
-
|
|
- set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
|
|
- set(CPACK_DEBIAN_PACKAGE_SECTION graphics)
|
|
- set(CPACK_DEBIAN_PACKAGE_PRIORITY extra )
|
|
- set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Patricio Gonzalez Vivo <patriciogonzalezvivo@gmail.com>")
|
|
- set(CPACK_DEBIAN_DISTRIBUTION_NAME ubuntu )
|
|
- set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal )
|
|
- set(CPACK_DEBIAN_CHANGELOG " * Latest development version.")
|
|
- # set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG ${PROJECT_SOURCE_DIR}/changelog)
|
|
- # set(CPACK_DEBIAN_UPDATE_CHANGELOG ON)
|
|
- set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-${DEB_ARCHITECTURE}")
|
|
- endif()
|
|
-
|
|
+ message(STATUS "package_details.cmake: your architecture is ${DEB_ARCHITECTURE}")
|
|
+
|
|
+ set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${DEB_ARCHITECTURE})
|
|
+ set(CPACK_DEBIAN_PACKAGE_SECTION graphics)
|
|
+ set(CPACK_DEBIAN_PACKAGE_PRIORITY extra )
|
|
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Patricio Gonzalez Vivo <patriciogonzalezvivo@gmail.com>")
|
|
+ set(CPACK_DEBIAN_DISTRIBUTION_NAME ubuntu )
|
|
+ set(CPACK_DEBIAN_DISTRIBUTION_RELEASES bionic focal )
|
|
+ set(CPACK_DEBIAN_CHANGELOG " * Latest development version.")
|
|
+ # set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG ${PROJECT_SOURCE_DIR}/changelog)
|
|
+ # set(CPACK_DEBIAN_UPDATE_CHANGELOG ON)
|
|
+ set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}-${DEB_ARCHITECTURE}")
|
|
endif()
|
|
|
|
include(CPack)
|
|
@@ -233,12 +220,8 @@ else()
|
|
endif()
|
|
|
|
if (PYTHON_BINDINGS)
|
|
- find_package(Python3 3.10 REQUIRED COMPONENTS Interpreter Development)
|
|
-
|
|
- # pybind11
|
|
- set(DEPS_FOLDER "${PROJECT_SOURCE_DIR}/deps")
|
|
- add_subdirectory("${DEPS_FOLDER}/pybind11")
|
|
- include_directories(${pybind11_INCLUDE_DIRS})
|
|
+ find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
|
|
+ find_package(pybind11 REQUIRED)
|
|
|
|
set(PYBIND_INCLUDES
|
|
"${PROJECT_SOURCE_DIR}/src/python/engine.h"
|
|
@@ -255,7 +238,6 @@ if (PYTHON_BINDINGS)
|
|
target_compile_definitions(PyGlslViewer PRIVATE GLSLVIEWER_VERSION_MAJOR=${VERSION_MAJOR})
|
|
target_compile_definitions(PyGlslViewer PRIVATE GLSLVIEWER_VERSION_MINOR=${VERSION_MINOR})
|
|
target_compile_definitions(PyGlslViewer PRIVATE GLSLVIEWER_VERSION_PATCH=${VERSION_PATCH})
|
|
- target_include_directories(PyGlslViewer PUBLIC ${DEPS_FOLDER})
|
|
target_link_libraries(PyGlslViewer PRIVATE vera pybind11::module)
|
|
|
|
-endif()
|
|
\ No newline at end of file
|
|
+endif()
|
|
--
|
|
2.50.0
|
|
|