aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/vlfeat
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/vlfeat')
-rw-r--r--vcpkg/ports/vlfeat/CMakeLists.txt141
-rw-r--r--vcpkg/ports/vlfeat/expose_missing_symbols.patch81
-rw-r--r--vcpkg/ports/vlfeat/fix-openmp-build.patch11
-rw-r--r--vcpkg/ports/vlfeat/portfile.cmake43
-rw-r--r--vcpkg/ports/vlfeat/vcpkg.json22
5 files changed, 298 insertions, 0 deletions
diff --git a/vcpkg/ports/vlfeat/CMakeLists.txt b/vcpkg/ports/vlfeat/CMakeLists.txt
new file mode 100644
index 0000000..4e4edb8
--- /dev/null
+++ b/vcpkg/ports/vlfeat/CMakeLists.txt
@@ -0,0 +1,141 @@
+cmake_minimum_required(VERSION 3.10)
+project(vlfeat LANGUAGES C)
+
+if(NOT DEFINED CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "Release")
+endif()
+
+if(MSVC)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+ add_definitions(-D__LITTLE_ENDIAN__)
+ add_compile_options(/Zp8)
+ add_compile_options(/wd4146)
+ if(CMAKE_C_FLAGS MATCHES "/W[0-4]")
+ string(REGEX REPLACE "/W[0-4]" "/W1" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+ endif()
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCC)
+ add_compile_options(-Wno-unused-function)
+ add_compile_options(-Wno-long-long)
+ add_compile_options(-Wno-variadic-macros)
+endif()
+
+if(USE_SSE)
+ add_definitions(-D__SSE2__)
+ set(SSE2_VL_C_FILES "vl/mathop_sse2.c" "vl/imopv_sse2.c")
+ set(SSE2_VL_H_FILES "vl/mathop_sse2.h" "vl/imopv_sse2.h")
+else()
+ add_definitions(-DVL_DISABLE_SSE2)
+endif()
+
+if(USE_AVX)
+ set(AVX_VL_C_FILES "vl/mathop_avx.c")
+ set(AVX_VL_H_FILES "vl/mathop_avx.h")
+else()
+ add_definitions(-DVL_DISABLE_AVX)
+endif()
+
+
+set (C_SOURCES
+ vl/aib.c
+ vl/array.c
+ vl/covdet.c
+ vl/dsift.c
+ vl/fisher.c
+ vl/generic.c
+ vl/getopt_long.c
+ vl/gmm.c
+ vl/hikmeans.c
+ vl/hog.c
+ vl/homkermap.c
+ vl/host.c
+ vl/ikmeans.c
+ vl/imopv.c
+ vl/kdtree.c
+ vl/kmeans.c
+ vl/lbp.c
+ vl/liop.c
+ vl/mathop.c
+ ${AVX_VL_C_FILES}
+ ${SSE2_VL_C_FILES}
+ vl/mser.c
+ vl/pgm.c
+ vl/quickshift.c
+ vl/random.c
+ vl/rodrigues.c
+ vl/scalespace.c
+ vl/sift.c
+ vl/slic.c
+ vl/stringop.c
+ vl/svm.c
+ vl/svmdataset.c
+ vl/vlad.c
+)
+
+set (H_SOURCES
+ vl/aib.h
+ vl/array.h
+ vl/covdet.h
+ vl/dsift.h
+ vl/fisher.h
+ vl/generic.h
+ vl/getopt_long.h
+ vl/gmm.h
+ vl/heap-def.h
+ vl/hikmeans.h
+ vl/hog.h
+ vl/homkermap.h
+ vl/host.h
+ vl/ikmeans.h
+ vl/imopv.h
+ vl/kdtree.h
+ vl/kmeans.h
+ vl/lbp.h
+ vl/liop.h
+ vl/mathop.h
+ ${AVX_VL_H_FILES}
+ ${SSE2_VL_H_FILES}
+ vl/mser.h
+ vl/pgm.h
+ vl/qsort-def.h
+ vl/quickshift.h
+ vl/random.h
+ vl/rodrigues.h
+ vl/scalespace.h
+ vl/shuffle-def.h
+ vl/sift.h
+ vl/slic.h
+ vl/stringop.h
+ vl/svm.h
+ vl/svmdataset.h
+ vl/vlad.h
+)
+
+include(GNUInstallDirs)
+
+add_library(vl ${C_SOURCES} ${H_SOURCES})
+set_property(TARGET vl PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_compile_definitions(vl PRIVATE -DVL_BUILD_DLL)
+target_include_directories(vl PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+target_compile_features(vl PRIVATE c_std_99)
+
+if(ENABLE_OPENMP)
+ find_package(OpenMP REQUIRED)
+ # PRIVATE because '#pragma omp' is only used in .c files
+ target_link_libraries(vl PRIVATE OpenMP::OpenMP_C)
+endif()
+
+install(TARGETS vl
+ EXPORT vlfeatTargets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+)
+install(FILES ${H_SOURCES} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/vl")
+
+install(EXPORT vlfeatTargets
+ FILE vlfeatConfig.cmake
+ NAMESPACE unofficial::vlfeat::
+ DESTINATION "share/vlfeat"
+)
diff --git a/vcpkg/ports/vlfeat/expose_missing_symbols.patch b/vcpkg/ports/vlfeat/expose_missing_symbols.patch
new file mode 100644
index 0000000..b7cbc16
--- /dev/null
+++ b/vcpkg/ports/vlfeat/expose_missing_symbols.patch
@@ -0,0 +1,81 @@
+diff --git a/vl/generic.c b/vl/generic.c
+index c6f84a9..8617ed2 100644
+--- a/vl/generic.c
++++ b/vl/generic.c
+@@ -1513,13 +1513,13 @@ vl_thread_specific_state_delete (VlThreadState * self)
+ */
+
+ #if (defined(VL_OS_LINUX) || defined(VL_OS_MACOSX)) && defined(VL_COMPILER_GNUC)
+-static void vl_constructor () __attribute__ ((constructor)) ;
+-static void vl_destructor () __attribute__ ((destructor)) ;
++//static void vl_constructor () __attribute__ ((constructor)) ;
++//static void vl_destructor () __attribute__ ((destructor)) ;
+ #endif
+
+ #if defined(VL_OS_WIN)
+-static void vl_constructor () ;
+-static void vl_destructor () ;
++//static void vl_constructor () ;
++//static void vl_destructor () ;
+
+ BOOL WINAPI DllMain(
+ HINSTANCE hinstDLL, // handle to DLL module
+@@ -1563,7 +1563,7 @@ BOOL WINAPI DllMain(
+ /* ---------------------------------------------------------------- */
+
+ /** @internal @brief Initialize VLFeat state */
+-static void
++void
+ vl_constructor (void)
+ {
+ VlState * state ;
+@@ -1637,7 +1637,7 @@ vl_constructor (void)
+ }
+
+ /** @internal @brief Destruct VLFeat */
+-static void
++void
+ vl_destructor ()
+ {
+ VlState * state ;
+diff --git a/vl/generic.h b/vl/generic.h
+index 4ef87f2..30a974e 100644
+--- a/vl/generic.h
++++ b/vl/generic.h
+@@ -206,5 +206,7 @@ VL_EXPORT double vl_toc (void) ;
+ VL_EXPORT double vl_get_cpu_time (void) ;
+ /** @} */
+
++VL_EXPORT void vl_constructor();
++VL_EXPORT void vl_destructor();
+ /* VL_GENERIC_H */
+ #endif
+diff --git a/vl/sift.c b/vl/sift.c
+index 03963fe..6477a81 100644
+--- a/vl/sift.c
++++ b/vl/sift.c
+@@ -1443,7 +1443,7 @@ vl_sift_detect (VlSiftFilt * f)
+ ** @remark The minimum octave size is 2x2xS.
+ **/
+
+-static void
++void
+ update_gradient (VlSiftFilt *f)
+ {
+ int s_min = f->s_min ;
+diff --git a/vl/sift.h b/vl/sift.h
+index 50e03f4..f9558ad 100644
+--- a/vl/sift.h
++++ b/vl/sift.h
+@@ -139,6 +139,11 @@ void vl_sift_keypoint_init (VlSiftFilt const *f,
+ double sigma) ;
+ /** @} */
+
++VL_EXPORT
++void vl_sift_update_gradient(VlSiftFilt* f);
++
++#define update_gradient vl_sift_update_gradient
++
+ /** @name Retrieve data and parameters
+ ** @{
+ **/
diff --git a/vcpkg/ports/vlfeat/fix-openmp-build.patch b/vcpkg/ports/vlfeat/fix-openmp-build.patch
new file mode 100644
index 0000000..2f8b2f7
--- /dev/null
+++ b/vcpkg/ports/vlfeat/fix-openmp-build.patch
@@ -0,0 +1,11 @@
+--- a/vl/kmeans.c
++++ b/vl/kmeans.c
+@@ -669,7 +669,7 @@ VL_XCAT(_vl_kmeans_quantize_, SFX)
+
+ #ifdef _OPENMP
+ #pragma omp parallel default(none) \
+- shared(self, distances, assignments, numData, distFn, data) \
++ shared(self, distances, assignments, numData, distFn, data, vl_infinity_d) \
+ num_threads(vl_get_max_threads())
+ #endif
+ {
diff --git a/vcpkg/ports/vlfeat/portfile.cmake b/vcpkg/ports/vlfeat/portfile.cmake
new file mode 100644
index 0000000..7ff1f7d
--- /dev/null
+++ b/vcpkg/ports/vlfeat/portfile.cmake
@@ -0,0 +1,43 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO vlfeat/vlfeat
+ REF 1b9075fc42fe54b42f0e937f8b9a230d8e2c7701
+ SHA512 6d317a1a9496ccac80244553d555fe060b150ccc7ee397a353b64f3a8451f24d1f03d8c00ed04cd9fc2dc066a5c5089b03695c614cb43ffa09be363660278255
+ PATCHES
+ expose_missing_symbols.patch
+ fix-openmp-build.patch
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ openmp ENABLE_OPENMP
+)
+
+set(USE_SSE ON)
+set(USE_AVX OFF) # feature is broken, so it's always off anyway
+
+if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
+ set(USE_SSE OFF)
+ set(USE_AVX OFF)
+endif()
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DUSE_SSE=${USE_SSE}
+ -DUSE_AVX=${USE_AVX}
+ ${FEATURE_OPTIONS}
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/vl/host.h" "__declspec(dllimport)" "__declspec(dllexport)")
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/vlfeat/vcpkg.json b/vcpkg/ports/vlfeat/vcpkg.json
new file mode 100644
index 0000000..78fd67d
--- /dev/null
+++ b/vcpkg/ports/vlfeat/vcpkg.json
@@ -0,0 +1,22 @@
+{
+ "name": "vlfeat",
+ "version-date": "2020-07-10",
+ "port-version": 5,
+ "description": "An open library of computer vision algorithms",
+ "homepage": "https://www.vlfeat.org",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "openmp": {
+ "description": "Enable OpenMP support"
+ }
+ }
+}