Pārlūkot izejas kodu

add octomap, icbc, fcl (#612)

* improve magnum

* add octomap

* add icbc

* add fcl

* improve magnum again

* fix magnum
Hoildkv 4 gadi atpakaļ
vecāks
revīzija
3232355d60

+ 35 - 0
packages/f/fcl/xmake.lua

@@ -0,0 +1,35 @@
+package("fcl")
+
+    set_homepage("https://github.com/flexible-collision-library/fcl")
+    set_description("Flexible Collision Library")
+    set_license("BSD-3-Clause")
+
+    add_urls("https://github.com/flexible-collision-library/fcl/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/flexible-collision-library/fcl.git")
+    add_versions("v0.6.1", "c8a68de8d35a4a5cd563411e7577c0dc2c626aba1eef288cb1ca88561f8d8019")
+
+    if is_plat("windows") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    add_deps("cmake")
+    add_deps("eigen", "libccd", "octomap")
+    on_install("windows", "macosx", "linux", function (package)
+        local configs = {"-DFCL_BUILD_TESTS=OFF"} 
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        table.insert(configs, "-DFCL_STATIC_LIBRARY=" .. (package:config("shared") and "OFF" or "ON"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                using namespace fcl;
+                VectorN<double, 4> upper, lower;
+                for (int i = 0; i < 4; ++i)
+                    upper[i] = 1.;
+                SamplerR<double, 4> sampler(lower, upper);
+                auto sp = sampler.sample();
+            }   
+        ]]}, {configs = {languages = "c++14"}, includes = "fcl/math/sampler/sampler_r.h"}))
+    end)

+ 28 - 0
packages/i/icbc/patches/1.05/cleanup.patch

@@ -0,0 +1,28 @@
+diff --git a/icbc.h b/icbc.h
+--- a/icbc.h
++++ b/icbc.h
+@@ -2652,20 +2652,10 @@ static void evaluate_palette_amd(Color16 c0, Color16 c1, Color32 palette[4]) {
+     }
+ }
+ 
+-inline void evaluate_palette4(Color16 c0, Color16 c1, Color32 palette[4]) {
+-    if (s_decoder == Decoder_D3D10)         evaluate_palette4_d3d10(palette);    
+-    else if (s_decoder == Decoder_NVIDIA)   evaluate_palette4_nv(c0, c1, palette);
+-    else if (s_decoder == Decoder_AMD)      evaluate_palette4_amd(palette);
+-}
+-inline void evaluate_palette3(Color16 c0, Color16 c1, Color32 palette[4]) {
+-    if (s_decoder == Decoder_D3D10)         evaluate_palette3_d3d10(palette);
+-    else if (s_decoder == Decoder_NVIDIA)   evaluate_palette3_nv(c0, c1, palette);
+-    else if (s_decoder == Decoder_AMD)      evaluate_palette3_amd(palette);
+-}
+-inline void evaluate_palette(Color16 c0, Color16 c1, Color32 palette[4]) {
+-    if (s_decoder == Decoder_D3D10)         evaluate_palette_d3d10(c0, c1, palette);
+-    else if (s_decoder == Decoder_NVIDIA)   evaluate_palette_nv(c0, c1, palette);
+-    else if (s_decoder == Decoder_AMD)      evaluate_palette_amd(c0, c1, palette);
++inline void evaluate_palette(Color16 c0, Color16 c1, Color32 palette[4], Decoder decoder = s_decoder) {
++    if (decoder == Decoder_D3D10)         evaluate_palette_d3d10(c0, c1, palette);
++    else if (decoder == Decoder_NVIDIA)   evaluate_palette_nv(c0, c1, palette);
++    else if (decoder == Decoder_AMD)      evaluate_palette_amd(c0, c1, palette);
+ }
+ 
+ static void evaluate_palette(Color16 c0, Color16 c1, Vector3 palette[4]) {

+ 37 - 0
packages/i/icbc/xmake.lua

@@ -0,0 +1,37 @@
+package("icbc")
+
+    set_homepage("https://github.com/castano/icbc")
+    set_description("A High Quality SIMD BC1 Encoder")
+    
+    add_urls("https://github.com/castano/icbc/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/castano/icbc.git")
+    add_versions("1.05", "51eba57870c018c8ccd673aab3c58fd5576fadb1c149c22c3fdacf42be197bfd")
+
+    add_patches("1.05", path.join(os.scriptdir(), "patches", "1.05", "cleanup.patch"), "4704acc207940ec43c1b3bd7031ee05109fae61c0e044b0a71c899ed4612861d")
+
+    on_install("windows", "macosx", "linux", function (package)
+        io.writefile("icbc.cpp", [[
+            #define ICBC_IMPLEMENTATION
+            #include "icbc.h"
+            #define IC_PFOR_IMPLEMENTATION
+            #include "ic_pfor.h"
+        ]])
+        io.writefile("xmake.lua", [[
+            add_rules("mode.debug", "mode.release")
+            target("icbc")
+                set_kind("static")
+                set_languages("cxx11")
+                add_files("icbc.cpp")
+                add_headerfiles("icbc.h", "ic_pfor.h")
+                if is_plat("windows") then
+                    add_cxxflags("/arch:AVX512")
+                else
+                    add_cxxflags("-march=native")
+                end
+        ]])
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cxxtypes("icbc::Quality", {configs = {languages = "c++11"}, includes = "icbc.h"}))
+    end)

+ 3 - 4
packages/l/libccd/xmake.lua

@@ -4,21 +4,20 @@ package("libccd")
     set_description("libccd is library for a collision detection between two convex shapes.")
     set_description("libccd is library for a collision detection between two convex shapes.")
     set_license("BSD-3-Clause")
     set_license("BSD-3-Clause")
 
 
-    add_urls("https://github.com/danfis/libccd/archive/refs/tags/$(version).tar.gz")
+    add_urls("https://github.com/danfis/libccd/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/danfis/libccd.git")
     add_versions("v2.1", "542b6c47f522d581fbf39e51df32c7d1256ac0c626e7c2b41f1040d4b9d50d1e")
     add_versions("v2.1", "542b6c47f522d581fbf39e51df32c7d1256ac0c626e7c2b41f1040d4b9d50d1e")
 
 
     add_configs("double_precision", {description = "Enable double precision floating-point arithmetic.", default = false, type = "boolean"})
     add_configs("double_precision", {description = "Enable double precision floating-point arithmetic.", default = false, type = "boolean"})
 
 
     on_load("windows", "macosx", "linux", function (package)
     on_load("windows", "macosx", "linux", function (package)
-        if not package:config("shared") then
-            package:add("defines", "CCD_STATIC_DEFINE")
-        end
         if not package.is_built or package:is_built() then
         if not package.is_built or package:is_built() then
             package:add("deps", "cmake")
             package:add("deps", "cmake")
         end
         end
     end)
     end)
 
 
     on_install("windows", "macosx", "linux", function (package)
     on_install("windows", "macosx", "linux", function (package)
+        io.replace("src/ccd/ccd_export.h", "def CCD_STATIC_DEFINE", package:config("shared") and " 0" or " 1", {plain = true})
         local configs = {}
         local configs = {}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))

+ 2 - 0
packages/m/magnum-plugins/xmake.lua

@@ -19,6 +19,8 @@ package("magnum-plugins")
     add_deps("cmake", "magnum")
     add_deps("cmake", "magnum")
     on_load("windows", "linux", "macosx", function (package)
     on_load("windows", "linux", "macosx", function (package)
         local configdeps = {assimpimporter = "assimp",
         local configdeps = {assimpimporter = "assimp",
+                            devilimageimporter = "devil",
+                            faad2audioimporter = "faad2",
                             freetypefont = "freetype",
                             freetypefont = "freetype",
                             glslangshaderconverter = "vulkansdk",
                             glslangshaderconverter = "vulkansdk",
                             harfbuzzfont = "harfbuzz",
                             harfbuzzfont = "harfbuzz",

+ 3 - 0
packages/m/magnum/xmake.lua

@@ -39,6 +39,9 @@ package("magnum")
     end
     end
 
 
     add_deps("cmake", "corrade", "opengl")
     add_deps("cmake", "corrade", "opengl")
+    add_links("AnyAudioImporter", "AnyImageConverter", "AnyImageImporter", "AnySceneConverter", "AnySceneImporter", "MagnumFont", "MagnumFontConverter", "ObjImporter", "TgaImageConverter", "TgaImporter", "WavAudioImporter")
+    add_links("CglContext", "EglContext", "GlxContext", "WglContext", "OpenGLTester", "VulkanTester")
+    add_links("AndroidApplication", "EmscriptenApplication", "GlfwApplication", "GlxApplication", "Sdl2Application", "XEglApplication", "WindowlessCglApplication", "WindowlessEglApplication", "WindowlessGlxApplication", "WindowlessIosApplication", "WindowlessWglApplication", "WindowlessWindowsEglApplication")
     add_links("MagnumAudio", "MagnumDebugTools", "MagnumGL", "MagnumMeshTools", "MagnumPrimitives", "MagnumSceneGraph", "MagnumShaders", "MagnumText", "MagnumTextureTools", "MagnumTrade", "MagnumVk", "Magnum")
     add_links("MagnumAudio", "MagnumDebugTools", "MagnumGL", "MagnumMeshTools", "MagnumPrimitives", "MagnumSceneGraph", "MagnumShaders", "MagnumText", "MagnumTextureTools", "MagnumTrade", "MagnumVk", "Magnum")
     on_load("windows", "linux", "macosx", function (package)
     on_load("windows", "linux", "macosx", function (package)
         if package:config("audio") then
         if package:config("audio") then

+ 141 - 0
packages/o/octomap/patches/1.9.7/build.patch

@@ -0,0 +1,141 @@
+diff --git a/dynamicEDT3D/src/CMakeLists.txt b/dynamicEDT3D/src/CMakeLists.txt
+index 0b9357c..728bab7 100644
+--- a/dynamicEDT3D/src/CMakeLists.txt
++++ b/dynamicEDT3D/src/CMakeLists.txt
+@@ -2,35 +2,30 @@ SET( dynamicEDT3D_SRCS
+    dynamicEDT3D.cpp
+    )
+ 
+-add_library(dynamicedt3d SHARED ${dynamicEDT3D_SRCS})
++add_library(dynamicedt3d ${dynamicEDT3D_SRCS})
+ set_target_properties(dynamicedt3d PROPERTIES
+   VERSION ${DYNAMICEDT3D_VERSION}
+   SOVERSION ${DYNAMICEDT3D_SOVERSION}
++  OUTPUT_NAME dynamicedt3d
+ )
+ target_link_libraries(dynamicedt3d ${OCTOMAP_LIBRARIES})
+ 
+-add_library(dynamicedt3d-static STATIC ${dynamicEDT3D_SRCS})
+-target_link_libraries(dynamicedt3d-static ${OCTOMAP_LIBRARIES})
+-
+-SET_TARGET_PROPERTIES(dynamicedt3d-static PROPERTIES OUTPUT_NAME "dynamicedt3d") 
+ 
+ if(NOT EXISTS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/dynamicEDT3D")
+   file(MAKE_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/dynamicEDT3D")
+ endif()
+ 
+-export(TARGETS dynamicedt3d dynamicedt3d-static
++export(TARGETS dynamicedt3d
+   FILE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/dynamicEDT3D/dynamicEDT3DTargets.cmake")
+ 
+ # directly depend on the octomap library target when building the
+ # complete distribution, so it it recompiled as needed
+ if (CMAKE_PROJECT_NAME STREQUAL "octomap-distribution")
+-  ADD_DEPENDENCIES(dynamicedt3d-static octomap-static)
+   ADD_DEPENDENCIES(dynamicedt3d octomap)
+ endif()
+ 
+-ADD_SUBDIRECTORY(examples)
+ 
+-install(TARGETS dynamicedt3d dynamicedt3d-static
++install(TARGETS dynamicedt3d
+   EXPORT dynamicEDT3DTargets
+   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+   ${INSTALL_TARGETS_DEFAULT_ARGS}
+diff --git a/octomap/CMakeLists.txt b/octomap/CMakeLists.txt
+index f091ea1..7ec808f 100644
+--- a/octomap/CMakeLists.txt
++++ b/octomap/CMakeLists.txt
+@@ -94,7 +94,7 @@ set(OCTOMAP_INCLUDE_DIRS "${INCLUDE_DIRS}")
+ set(OCTOMAP_LIB_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
+ # Set library names as absolute paths
+ # Windows, spec. MSVC requires the .lib suffix for imported libs
+-IF(WIN32)
++IF(WIN32 OR NOT BUILD_SHARED_LIBS)
+   set(OCTOMAP_LIBRARY
+     "${CMAKE_IMPORT_LIBRARY_PREFIX}octomap${CMAKE_IMPORT_LIBRARY_SUFFIX}"
+   )
+diff --git a/octomap/src/CMakeLists.txt b/octomap/src/CMakeLists.txt
+index 45b384f..7b1a860 100644
+--- a/octomap/src/CMakeLists.txt
++++ b/octomap/src/CMakeLists.txt
+@@ -11,14 +11,12 @@ SET (octomap_SRCS
+   )
+ 
+ # dynamic and static libs, see CMake FAQ:
+-ADD_LIBRARY( octomap SHARED ${octomap_SRCS})
++ADD_LIBRARY( octomap ${octomap_SRCS})
+ set_target_properties( octomap PROPERTIES
+   VERSION ${OCTOMAP_VERSION}
+   SOVERSION ${OCTOMAP_SOVERSION}
++  OUTPUT_NAME octomap
+ )
+-ADD_LIBRARY( octomap-static STATIC ${octomap_SRCS})
+-SET_TARGET_PROPERTIES(octomap-static PROPERTIES OUTPUT_NAME "octomap") 
+-add_dependencies(octomap-static octomath-static)
+ 
+ TARGET_LINK_LIBRARIES(octomap octomath)
+ 
+@@ -26,7 +24,7 @@ if(NOT EXISTS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap")
+   file(MAKE_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap")
+ endif()
+ 
+-export(TARGETS octomap octomap-static
++export(TARGETS octomap
+   APPEND FILE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap/octomap-targets.cmake")
+ 
+ ADD_SUBDIRECTORY( testing )
+@@ -55,19 +53,10 @@ TARGET_LINK_LIBRARIES(eval_octree_accuracy octomap)
+ ADD_EXECUTABLE(compare_octrees compare_octrees.cpp)
+ TARGET_LINK_LIBRARIES(compare_octrees octomap)
+ 
+-ADD_EXECUTABLE(simple_example simple_example.cpp)
+-TARGET_LINK_LIBRARIES(simple_example octomap)
+-
+-ADD_EXECUTABLE(normals_example normals_example.cpp)
+-TARGET_LINK_LIBRARIES(normals_example octomap)
+-
+-ADD_EXECUTABLE(intersection_example intersection_example.cpp)
+-TARGET_LINK_LIBRARIES(intersection_example octomap)
+-
+ ADD_EXECUTABLE(octree2pointcloud octree2pointcloud.cpp)
+ TARGET_LINK_LIBRARIES(octree2pointcloud octomap)
+ 
+-install(TARGETS octomap octomap-static
++install(TARGETS octomap
+   EXPORT octomap-targets
+   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+   ${INSTALL_TARGETS_DEFAULT_ARGS}
+diff --git a/octomap/src/math/CMakeLists.txt b/octomap/src/math/CMakeLists.txt
+index 3b47ec4..d453153 100644
+--- a/octomap/src/math/CMakeLists.txt
++++ b/octomap/src/math/CMakeLists.txt
+@@ -5,24 +5,23 @@ SET (octomath_SRCS
+  )
+ 
+ 
+-ADD_LIBRARY( octomath SHARED ${octomath_SRCS})
++ADD_LIBRARY( octomath ${octomath_SRCS})
+ 
+ SET_TARGET_PROPERTIES( octomath PROPERTIES
+   VERSION ${OCTOMAP_VERSION}
+   SOVERSION ${OCTOMAP_SOVERSION}
++  OUTPUT_NAME octomath
+ )
+ 
+-ADD_LIBRARY( octomath-static STATIC ${octomath_SRCS})
+-SET_TARGET_PROPERTIES(octomath-static PROPERTIES OUTPUT_NAME "octomath")
+ 
+ if(NOT EXISTS "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap")
+   file(MAKE_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap")
+ endif()
+ 
+-export(TARGETS octomath octomath-static
++export(TARGETS octomath
+   APPEND FILE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cmake/octomap/octomap-targets.cmake")
+ 
+-install(TARGETS octomath octomath-static
++install(TARGETS octomath
+   EXPORT octomap-targets
+   INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+   ${INSTALL_TARGETS_DEFAULT_ARGS}

+ 34 - 0
packages/o/octomap/xmake.lua

@@ -0,0 +1,34 @@
+package("octomap")
+
+    set_homepage("https://octomap.github.io/")
+    set_description("An Efficient Probabilistic 3D Mapping Framework Based on Octrees")
+    set_license("BSD-3-Clause")
+
+    add_urls("https://github.com/OctoMap/octomap/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/OctoMap/octomap.git")
+    add_versions("v1.9.7", "3e9ac020686ceb4e17e161bffc5a0dafd9cccab33adeb9adee59a61c418ea1c1")
+
+    add_patches("v1.9.7", path.join(os.scriptdir(), "patches", "1.9.7", "build.patch"), "396b7b28c754f876c8552da93abf463f31bd65e327f454e75b8a5c10bb62ded4")
+
+    if is_plat("windows") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    add_deps("cmake")
+    on_install("windows", "macosx", "linux", function (package)
+        local configs = {}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+        package:addenv("PATH", "bin")
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                octomap::OcTree tree(0.1);
+                octomap::point3d endpoint(0.05f, 0.05f, 0.05f);
+                tree.updateNode(endpoint, true);
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "octomap/octomap.h"}))
+    end)