aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalum Robinson <calumr@users.noreply.github.com>2019-02-11 22:23:46 +0000
committerCodiferous <44823842+Codiferous@users.noreply.github.com>2019-02-11 14:23:46 -0800
commit10bde77210cc5360cdc455ec961e4bfab54592ea (patch)
tree1a74a7dd8e3234badd26e487f54e860d3d668779
parentf5f4070c9659c1fa63e45fea6f74104bc5eaec42 (diff)
downloadvcpkg-10bde77210cc5360cdc455ec961e4bfab54592ea.tar.gz
vcpkg-10bde77210cc5360cdc455ec961e4bfab54592ea.zip
[osg] Add Collada model support to OpenSceneGraph (#3950)
* [collada-dom] Initial collada-dom port * [osg] Add Collada file support
-rw-r--r--ports/collada-dom/CONTROL4
-rw-r--r--ports/collada-dom/portfile.cmake27
-rw-r--r--ports/collada-dom/use-uriparser.patch127
-rw-r--r--ports/collada-dom/vs-version-detection.patch39
-rw-r--r--ports/osg/CONTROL4
-rw-r--r--ports/osg/collada.patch76
-rw-r--r--ports/osg/portfile.cmake2
7 files changed, 279 insertions, 0 deletions
diff --git a/ports/collada-dom/CONTROL b/ports/collada-dom/CONTROL
new file mode 100644
index 000000000..6625c5a4a
--- /dev/null
+++ b/ports/collada-dom/CONTROL
@@ -0,0 +1,4 @@
+Source: collada-dom
+Version: 2.5.0
+Description: The COLLADA Document Object Model (DOM) is an application programming interface (API) that provides a C++ object representation of a COLLADA XML instance document.
+Build-Depends: zlib, libxml2, minizip, pcre, uriparser, boost-filesystem, boost-system \ No newline at end of file
diff --git a/ports/collada-dom/portfile.cmake b/ports/collada-dom/portfile.cmake
new file mode 100644
index 000000000..2612eca68
--- /dev/null
+++ b/ports/collada-dom/portfile.cmake
@@ -0,0 +1,27 @@
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/collada-dom-2.5.0)
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO rdiankov/collada-dom
+ REF d37ae7532e350b87c88712e9f6ab4b1f440d20cd
+ SHA512 cb923d296219765096f5246cc7a2b69712931f58171ae885dbdbd215fca86d911c34d12748d3304d6a5a350dc737ff0caead2495acac488af5431b437cbacc7d
+ HEAD_REF v2.5.0
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/vs-version-detection.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/use-uriparser.patch"
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/collada_dom-2.5")
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/licenses/license_e.txt DESTINATION
+ ${CURRENT_PACKAGES_DIR}/share/collada-dom
+ RENAME copyright) \ No newline at end of file
diff --git a/ports/collada-dom/use-uriparser.patch b/ports/collada-dom/use-uriparser.patch
new file mode 100644
index 000000000..6de0662ef
--- /dev/null
+++ b/ports/collada-dom/use-uriparser.patch
@@ -0,0 +1,127 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3ec1527..3f044d3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -237,23 +237,29 @@ else()
+ set(MINIZIP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dom/external-libs/minizip-1.1 ${ZLIB_INCLUDE_DIR})
+ endif()
+
+-pkg_check_modules(liburiparser liburiparser)
+-
+-if(liburiparser_FOUND)
+- set(liburiparser_CFLAGS_OTHERS "-DUSE_URIPARSER")
++find_package(UriParser)
++if(URIPARSER_FOUND)
++ set(URIPARSER_CFLAGS_OTHERS "-DUSE_URIPARSER")
++ set(URIPARSER_LIBRARIES ${URIPARSER_LIBRARY})
++ message(STATUS "liburiparser found")
+ else()
+- # try using pcrecpp
+- pkg_check_modules(libpcrecpp libpcrecpp)
+- if( libpcrecpp_FOUND )
++ pkg_check_modules(liburiparser liburiparser)
++ if(liburiparser_FOUND)
++ set(URIPARSER_CFLAGS_OTHERS "-DUSE_URIPARSER")
++ message(STATUS "liburiparser found")
++ else()
++ # try using pcrecpp
++ pkg_check_modules(libpcrecpp libpcrecpp)
++ if( libpcrecpp_FOUND )
+ set(CMAKE_REQUIRED_INCLUDES ${libpcrecpp_INCLUDE_DIRS})
+ check_include_file_cxx(pcrecpp.h HAVE_PCRECPP_H)
+ set(CMAKE_REQUIRED_INCLUDES)
+ if( NOT HAVE_PCRECPP_H )
+- set(libpcrecpp_FOUND 0)
++ set(libpcrecpp_FOUND 0)
++ endif()
+ endif()
+- endif()
+
+- if( NOT libpcrecpp_FOUND )
++ if( NOT libpcrecpp_FOUND )
+ message(STATUS "System pcre not found, using local from sources")
+ # include the local pcre
+ add_subdirectory(dom/external-libs/pcre-8.02)
+@@ -262,6 +268,7 @@ else()
+ set(libpcrecpp_LIBRARIES pcrecpp_local)
+ set(libpcrecpp_CFLAGS_OTHERS "-DPCRE_STATIC")
+ set(libpcrecpp_LDFLAGS_OTHERS)
++ endif()
+ endif()
+ endif()
+
+diff --git a/cmake-modules/FindUriParser.cmake b/cmake-modules/FindUriParser.cmake
+new file mode 100644
+index 0000000..91f466b
+--- /dev/null
++++ b/cmake-modules/FindUriParser.cmake
+@@ -0,0 +1,35 @@
++# Find the UriParser library
++# Defines:
++
++# URIPARSER_INCLUDE_DIR - uriparser include directory
++# URIPARSER_LIBRARY - uriparser library file
++# URIPARSER_FOUND - TRUE if uriparser is found
++
++if (URIPARSER_INCLUDE_DIR)
++ #check cache
++ set(URIPARSER_FIND_QUIETLY TRUE)
++endif ()
++
++if (NOT URIPARSER_INCLUDE_DIR)
++ find_path(URIPARSER_INCLUDE_DIR NAMES Uri.h PATH_SUFFIXES uriparser)
++ set(URIPARSER_INCLUDE_DIR ${URIPARSER_INCLUDE_DIR}/uriparser CACHE PATH "uriparser includes")
++endif ()
++
++find_library(URIPARSER_LIBRARY NAMES uriparser)
++
++if (URIPARSER_INCLUDE_DIR AND URIPARSER_LIBRARY)
++ set(URIPARSER_FOUND TRUE)
++ set(UriParser_FOUND TRUE)
++endif ()
++
++if (URIPARSER_FOUND)
++ if (NOT URIPARSER_FIND_QUIETLY)
++ message(STATUS "Found UriParser library: ${URIPARSER_LIBRARY}")
++ endif ()
++else ()
++ if (NOT URIPARSER_FIND_QUIETLY)
++ message(FATAL_ERROR "Could NOT find UriParser library")
++ else ()
++ message(STATUS "Could NOT find UriParser library")
++ endif ()
++endif ()
+diff --git a/dom/CMakeLists.txt b/dom/CMakeLists.txt
+index f7ffb27..62e1b8a 100644
+--- a/dom/CMakeLists.txt
++++ b/dom/CMakeLists.txt
+@@ -1,6 +1,6 @@
+ set(COLLADA_INTERNAL_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/include)
+ include_directories(${COLLADA_INTERNAL_INCLUDE})
+-set(COLLADA_LIBS minizip ${liburiparser_LIBRARIES} ${libpcrecpp_LIBRARIES} ${ZLIB_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
++set(COLLADA_LIBS minizip ${URIPARSER_LIBRARIES} ${libpcrecpp_LIBRARIES} ${ZLIB_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
+
+ file(GLOB dae_files ${CMAKE_CURRENT_SOURCE_DIR}/src/dae/*.cpp)
+ if( LIBXML2_FOUND )
+@@ -13,7 +13,7 @@ file(GLOB stddatabase_files ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/STLDatabase/
+ file(GLOB stderrplugin_files ${CMAKE_CURRENT_SOURCE_DIR}/src/modules/stdErrPlugin/*.cpp)
+
+ set(COLLADA_BASE_SOURCES ${dae_files} ${libxmlplugin_files} ${stddatabase_files} ${stderrplugin_files})
+-set(COLLADA_COMPILE_FLAGS "${liburiparser_CFLAGS_OTHERS} ${libpcrecpp_CFLAGS_OTHERS} ${EXTRA_COMPILE_FLAGS} ${Boost_CFLAGS}")
++set(COLLADA_COMPILE_FLAGS "${URIPARSER_CFLAGS_OTHERS} ${libpcrecpp_CFLAGS_OTHERS} ${EXTRA_COMPILE_FLAGS} ${Boost_CFLAGS}")
+ # create dynamic libraries
+ set(COLLADA_COMPILE_FLAGS "${COLLADA_COMPILE_FLAGS} -DDOM_DYNAMIC -DDOM_EXPORT")
+
+diff --git a/dom/src/dae/daeURI.cpp b/dom/src/dae/daeURI.cpp
+index 3a8f815..1623753 100644
+--- a/dom/src/dae/daeURI.cpp
++++ b/dom/src/dae/daeURI.cpp
+@@ -790,7 +790,7 @@ bool cdom::parseUriRef(const string& uriRef,
+ scheme = fromRange(uri.scheme);
+ authority = fromRange(uri.hostText);
+ path = fromList(uri.pathHead, "/");
+- if (uri.absolutePath != URI_TRUE and uri.hostText.first == NULL)
++ if (uri.absolutePath != URI_TRUE && uri.hostText.first == NULL)
+ path = path.erase(0, 1);
+ query = fromRange(uri.query);
+ fragment = fromRange(uri.fragment);
diff --git a/ports/collada-dom/vs-version-detection.patch b/ports/collada-dom/vs-version-detection.patch
new file mode 100644
index 000000000..7379f33be
--- /dev/null
+++ b/ports/collada-dom/vs-version-detection.patch
@@ -0,0 +1,39 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2596a23..3ec1527 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required (VERSION 2.6.0)
++cmake_minimum_required (VERSION 3.7.0)
+ project (collada-dom)
+ set( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
+
+@@ -89,14 +89,22 @@ string(TOUPPER ${COMPONENT_PREFIX} COMPONENT_PREFIX_UPPER)
+ set(CPACK_COMPONENTS_ALL ${COMPONENT_PREFIX}-base ${COMPONENT_PREFIX}-dev)
+
+ if( MSVC )
+- if( MSVC70 OR MSVC71 )
+- set(MSVC_PREFIX "vc70")
+- elseif( MSVC80 )
+- set(MSVC_PREFIX "vc80")
+- elseif( MSVC90 )
++ if( MSVC_VERSION GREATER_EQUAL 1910 )
++ set(MSVC_PREFIX "vc140")
++ elseif( MSVC_VERSION GREATER_EQUAL 1900 )
++ set(MSVC_PREFIX "vc130")
++ elseif( MSVC_VERSION GREATER_EQUAL 1800 )
++ set(MSVC_PREFIX "vc120")
++ elseif( MSVC_VERSION GREATER_EQUAL 1700 )
++ set(MSVC_PREFIX "vc110")
++ elseif( MSVC_VERSION GREATER_EQUAL 1600 )
++ set(MSVC_PREFIX "vc100")
++ elseif( MSVC_VERSION GREATER_EQUAL 1500 )
+ set(MSVC_PREFIX "vc90")
++ elseif( MSVC_VERSION GREATER_EQUAL 1400 )
++ set(MSVC_PREFIX "vc80")
+ else()
+- set(MSVC_PREFIX "vc100")
++ set(MSVC_PREFIX "vc70")
+ endif()
+ set(COLLADA_DOM_LIBRARY_SUFFIX "${COLLADA_DOM_SOVERSION}-${COLLADA_PRECISION}-${MSVC_PREFIX}-mt")
+ else()
diff --git a/ports/osg/CONTROL b/ports/osg/CONTROL
index dc9396dd4..2cca0cdaa 100644
--- a/ports/osg/CONTROL
+++ b/ports/osg/CONTROL
@@ -2,3 +2,7 @@ Source: osg
Version: 3.6.2
Description: The OpenSceneGraph is an open source high performance 3D graphics toolkit.
Build-Depends: freetype, jasper, openexr, zlib, gdal, giflib, libjpeg-turbo, libpng, tiff
+
+Feature: collada
+Description: Support for Collada (.dae) files
+Build-Depends: collada-dom
diff --git a/ports/osg/collada.patch b/ports/osg/collada.patch
new file mode 100644
index 000000000..7c856c86d
--- /dev/null
+++ b/ports/osg/collada.patch
@@ -0,0 +1,76 @@
+diff --git a/CMakeModules/FindCOLLADA.cmake b/CMakeModules/FindCOLLADA.cmake
+index 8c9c2fc33..6a8ab04ca 100644
+--- a/CMakeModules/FindCOLLADA.cmake
++++ b/CMakeModules/FindCOLLADA.cmake
+@@ -25,11 +25,11 @@ ENDIF()
+
+ IF(APPLE)
+ SET(COLLADA_BUILDNAME "mac")
+- SET(COLLADA_BOOST_BUILDNAME ${COLLADA_BUILDNAME})
++ SET(COLLADA_BOOST_BUILDNAME ${COLLADA_BUILDNAME})
+ ELSEIF(MINGW)
+ SET(COLLADA_BUILDNAME "mingw")
+- SET(COLLADA_BOOST_BUILDNAME ${COLLADA_BUILDNAME})
+-ELSEIF(MSVC_VERSION EQUAL 1900 OR MSVC_VERSION EQUAL 1910 )
++ SET(COLLADA_BOOST_BUILDNAME ${COLLADA_BUILDNAME})
++ELSEIF(MSVC_VERSION GREATER_EQUAL 1900 )
+ SET(COLLADA_BUILDNAME "vc14")
+ SET(COLLADA_BOOST_BUILDNAME "vc140")
+ ELSEIF(MSVC_VERSION EQUAL 1800)
+@@ -58,6 +58,7 @@ ENDIF()
+
+
+ FIND_PATH(COLLADA_INCLUDE_DIR dae.h
++ PATHS
+ ${COLLADA_DOM_ROOT}/include
+ $ENV{COLLADA_DIR}/include
+ $ENV{COLLADA_DIR}
+@@ -65,27 +66,19 @@ FIND_PATH(COLLADA_INCLUDE_DIR dae.h
+ /Library/Frameworks
+ /opt/local/Library/Frameworks #macports
+ /usr/local/include
+- /usr/local/include/colladadom
+- /usr/local/include/collada-dom
+- /usr/local/include/collada-dom2.5
+- /usr/local/include/collada-dom2.4
+- /usr/local/include/collada-dom2.2
+- /opt/local/include/collada-dom
+- /opt/local/include/collada-dom2.5
+- /opt/local/include/collada-dom2.4
+- /opt/local/include/collada-dom2.2
+ /usr/include/
+- /usr/include/colladadom
+- /usr/include/collada-dom
+- /usr/include/collada-dom2.5
+- /usr/include/collada-dom2.4
+- /usr/include/collada-dom2.2
+ /sw/include # Fink
+ /opt/local/include # DarwinPorts
+ /opt/csw/include # Blastwave
+ /opt/include
+ /usr/freeware/include
+ ${ACTUAL_3DPARTY_DIR}/include
++ PATH_SUFFIXES
++ colladadom
++ collada-dom
++ collada-dom2.5
++ collada-dom2.4
++ collada-dom2.2
+ )
+
+ FIND_LIBRARY(COLLADA_DYNAMIC_LIBRARY
+diff --git a/src/osgPlugins/dae/CMakeLists.txt b/src/osgPlugins/dae/CMakeLists.txt
+index af03fb866..7eadfc2f3 100644
+--- a/src/osgPlugins/dae/CMakeLists.txt
++++ b/src/osgPlugins/dae/CMakeLists.txt
+@@ -49,7 +49,9 @@ ELSE()
+ ENDIF()
+
+ ADD_DEFINITIONS(-DNO_BOOST)
+-ADD_DEFINITIONS(-DCOLLADA_DOM_SUPPORT141)
++ADD_DEFINITIONS(-DCOLLADA_DOM_USING_141
++ -DCOLLADA_DOM_SUPPORT141
++ -DCOLLADA_DOM_SUPPORT150)
+
+ IF (COLLADA_DOM_2_4_OR_LATER)
+ ADD_DEFINITIONS(-DCOLLADA_DOM_2_4_OR_LATER)
diff --git a/ports/osg/portfile.cmake b/ports/osg/portfile.cmake
index ca5c18f59..e72b5807b 100644
--- a/ports/osg/portfile.cmake
+++ b/ports/osg/portfile.cmake
@@ -22,6 +22,8 @@ vcpkg_from_github(
REF OpenSceneGraph-3.6.2
SHA512 6949dd4dea9dcffe4228086b72eafdb253bf1403b3b7a70a4727848c3cde23ad0270f41b1c3e2bdbfd410ec067ecce2052a5d26c61b032b6d46ce84b8c931bfb
HEAD_REF master
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/collada.patch"
)
vcpkg_configure_cmake(