Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pangolin] Fix build failure on UNIX #12515

Merged
merged 8 commits into from
Aug 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion ports/pangolin/CONTROL
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
Source: pangolin
Version: 0.5-7
Version: 0.5
Port-Version: 8
Build-Depends: eigen3, glew, libpng, libjpeg-turbo, ffmpeg
Homepage: https://github.com/stevenlovegrove/Pangolin
Description: Lightweight GUI Library
Supports: !uwp & !osx & !(windows&static)
14 changes: 14 additions & 0 deletions ports/pangolin/fix-dependency-python.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7f364a7..b6567a2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -213,6 +213,9 @@ endif()
find_package(PythonLibs QUIET)
if(BUILD_PANGOLIN_GUI AND BUILD_PANGOLIN_VARS AND PYTHONLIBS_FOUND AND NOT _WIN_)
set(HAVE_PYTHON 1)
+ if (UNIX)
+ set(PYTHON_LIBRARY ${PYTHON_LIBRARY} dl)
+ endif()
list(APPEND HEADERS
${INCDIR}/console/ConsoleInterpreter.h
${INCDIR}/console/ConsoleView.h
50 changes: 50 additions & 0 deletions ports/pangolin/fix-dependeny-ffmpeg.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
diff --git a/CMakeModules/FindFFMPEG.cmake b/CMakeModules/FindFFMPEG.cmake
index 4f77e5a..151762f 100644
--- a/CMakeModules/FindFFMPEG.cmake
+++ b/CMakeModules/FindFFMPEG.cmake
@@ -21,6 +21,14 @@ FIND_PATH(
SWSCALE_INCLUDE_DIR libswscale/swscale.h
/usr/include /usr/local/include /opt/local/include
)
+FIND_PATH(
+ AVDEVICE_INCLUDE_DIR libavdevice/avdevice.h
+ /usr/include /usr/local/include /opt/local/include
+)
+FIND_PATH(
+ SWRESAMPLE_INCLUDE_DIR libswresample/swresample.h
+ /usr/include /usr/local/include /opt/local/include
+)

# Find Library files
FIND_LIBRARY(
@@ -43,15 +51,28 @@ FIND_LIBRARY(
NAMES swscale
PATH /usr/lib /usr/local/lib /opt/local/lib
)
+FIND_LIBRARY(
+ AVDEVICE_LIBRARY
+ NAMES avdevice
+ PATH /usr/lib /usr/local/lib /opt/local/lib
+)
+FIND_LIBRARY(
+ SWRESAMPLE_LIBRARY
+ NAMES swresample
+ PATH /usr/lib /usr/local/lib /opt/local/lib
+)

IF( EXISTS "${AVUTIL_INCLUDE_DIR}/libavutil/pixdesc.h" )
SET( AVUTIL_HAVE_PIXDESC TRUE)
endif()

IF(AVCODEC_INCLUDE_DIR AND AVFORMAT_INCLUDE_DIR AND AVUTIL_INCLUDE_DIR AND SWSCALE_INCLUDE_DIR AND AVCODEC_LIBRARY AND AVFORMAT_LIBRARY AND AVUTIL_LIBRARY AND SWSCALE_LIBRARY AND AVUTIL_HAVE_PIXDESC)
+ IF (WIN32)
+ SET(AVFORMAT_LIBRARY ${AVFORMAT_LIBRARY} Ws2_32 Secur32 Bcrypt)
+ ENDIF()
SET(FFMPEG_FOUND TRUE)
- SET(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVFORMAT_LIBRARY} ${AVUTIL_LIBRARY} ${SWSCALE_LIBRARY})
- SET(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWSCALE_INCLUDE_DIR})
+ SET(FFMPEG_LIBRARIES ${AVFORMAT_LIBRARY} ${AVDEVICE_LIBRARY} ${AVCODEC_LIBRARY} ${AVUTIL_LIBRARY} ${SWSCALE_LIBRARY} ${SWRESAMPLE_LIBRARY})
+ SET(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWSCALE_INCLUDE_DIR} ${AVDEVICE_INCLUDE_DIR} ${SWRESAMPLE_INCLUDE_DIR})

include(CheckCXXSourceCompiles)

34 changes: 16 additions & 18 deletions ports/pangolin/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
include(vcpkg_common_functions)

vcpkg_check_linkage(ONLY_STATIC_LIBRARY)

vcpkg_from_github(
Expand All @@ -11,6 +9,8 @@ vcpkg_from_github(
PATCHES
deprecated_constants.patch # Change from upstream pangolin to address build failures from latest ffmpeg library
fix-includepath-error.patch # include path has one more ../
fix-dependeny-ffmpeg.patch
fix-dependency-python.patch
)

file(REMOVE ${SOURCE_PATH}/CMakeModules/FindGLEW.cmake)
Expand All @@ -33,7 +33,9 @@ vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/Pangolin)

vcpkg_copy_pdbs()

if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)

if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(GLOB EXE ${CURRENT_PACKAGES_DIR}/lib/*.dll)
file(COPY ${EXE} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
file(REMOVE ${EXE})
Expand All @@ -42,21 +44,17 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(COPY ${DEBUG_EXE} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
file(REMOVE ${DEBUG_EXE})

file(READ ${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-debug.cmake PANGOLIN_TARGETS)
string(REPLACE "lib/pangolin.dll" "bin/pangolin.dll" PANGOLIN_TARGETS "${PANGOLIN_TARGETS}")
file(WRITE ${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-debug.cmake "${PANGOLIN_TARGETS}")

file(READ ${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-release.cmake PANGOLIN_TARGETS)
string(REPLACE "lib/pangolin.dll" "bin/pangolin.dll" PANGOLIN_TARGETS "${PANGOLIN_TARGETS}")
file(WRITE ${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-release.cmake "${PANGOLIN_TARGETS}")
vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-debug.cmake
"lib/pangolin.dll" "bin/pangolin.dll"
)
vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/share/pangolin/PangolinTargets-release.cmake
"lib/pangolin.dll" "bin/pangolin.dll"
)

# Copy missing header file
file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/src/include/pangolin/pangolin_export.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/pangolin)
endif()

file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)

# Copy missing header file
file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/src/include/pangolin/pangolin_export.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/pangolin)

# Put the license file where vcpkg expects it
file(COPY ${SOURCE_PATH}/LICENCE DESTINATION ${CURRENT_PACKAGES_DIR}/share/Pangolin/)
file(COPY ${CURRENT_PORT_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/Pangolin/)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/Pangolin/LICENCE ${CURRENT_PACKAGES_DIR}/share/Pangolin/copyright)
file(COPY ${CURRENT_PORT_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}/)
file(INSTALL ${SOURCE_PATH}/LICENCE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
4 changes: 0 additions & 4 deletions scripts/ci.baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1304,10 +1304,6 @@ osgearth:x64-windows-static=fail
osg-qt:x64-windows-static=fail
paho-mqtt:arm-uwp=fail
paho-mqtt:x64-uwp=fail
pangolin:x64-linux=fail
pangolin:x64-osx=fail
pangolin:x64-uwp=fail
pangolin:x64-windows-static=fail
pangomm:x64-osx=fail
pangomm:arm64-windows=fail
parmetis:x64-linux=fail
Expand Down