aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/parmetis
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/parmetis
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/parmetis')
-rw-r--r--vcpkg/ports/parmetis/build-fixes.patch104
-rw-r--r--vcpkg/ports/parmetis/portfile.cmake24
-rw-r--r--vcpkg/ports/parmetis/use_stdint.patch22
-rw-r--r--vcpkg/ports/parmetis/vcpkg.json19
4 files changed, 169 insertions, 0 deletions
diff --git a/vcpkg/ports/parmetis/build-fixes.patch b/vcpkg/ports/parmetis/build-fixes.patch
new file mode 100644
index 0000000..f3b016f
--- /dev/null
+++ b/vcpkg/ports/parmetis/build-fixes.patch
@@ -0,0 +1,104 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 146bc5f..f5c5d48 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 2.8)
++cmake_minimum_required(VERSION 3.22)
+ project(ParMETIS C)
+
+
+@@ -24,20 +24,20 @@ include(./conf/gkbuild.cmake)
+ # i.e., the -I equivalent
+ include_directories(include)
+ include_directories(${MPI_INCLUDE_PATH})
+-include_directories(${GKLIB_PATH}/include)
+-include_directories(${METIS_PATH}/include)
+-include_directories(${CMAKE_INSTALL_PREFIX}/include)
+
+ # List of paths that the compiler will search for library files.
+ # i.e., the -L equivalent
+-link_directories(${GKLIB_PATH}/lib)
+-link_directories(${METIS_PATH}/lib)
+-link_directories(${CMAKE_INSTALL_PREFIX}/lib)
+-
+ # List of directories that cmake will look for CMakeLists.txt
+ add_subdirectory(include)
+ add_subdirectory(libparmetis)
+-add_subdirectory(programs)
+
+ # This is for testing during development and is not being distributed
+ #add_subdirectory(test)
++
++install(EXPORT parmetisTargets FILE "parmetisTargets.cmake" DESTINATION "share/parmetis")
++file(WRITE "${CMAKE_INSTALL_PREFIX}/share/parmetis/parmetisConfig.cmake" [=[
++include(CMakeFindDependencyMacro)
++find_dependency(GKlib CONFIG)
++find_dependency(metis CONFIG)
++include("${CMAKE_CURRENT_LIST_DIR}/parmetisTargets.cmake")
++]=])
+diff --git a/conf/gkbuild.cmake b/conf/gkbuild.cmake
+index ec91224..c4161fa 100644
+--- a/conf/gkbuild.cmake
++++ b/conf/gkbuild.cmake
+@@ -15,7 +15,6 @@ option(GKRAND "enable GKRAND support" OFF)
+
+ # Add compiler flags.
+ if(MSVC)
+- set(GK_COPTS "/Ox")
+ set(GK_COPTIONS "-DWIN32 -DMSC -D_CRT_SECURE_NO_DEPRECATE -DUSE_GKREGEX")
+ elseif(MINGW)
+ set(GK_COPTS "-DUSE_GKREGEX")
+@@ -31,6 +30,8 @@ if(CMAKE_COMPILER_IS_GNUCC)
+ # -march=native is not a valid flag on PPC:
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "power|ppc|powerpc|ppc64|powerpc64" OR (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64"))
+ set(GK_COPTIONS "${GK_COPTIONS} -mtune=native")
++elseif(1)
++ # Use flags from toolchain and triplet
+ else()
+ set(GK_COPTIONS "${GK_COPTIONS} -march=native")
+ endif()
+@@ -39,6 +40,7 @@ endif()
+ endif(NOT MINGW)
+ # GCC warnings.
+ set(GK_COPTIONS "${GK_COPTIONS} -Werror -Wall -pedantic -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-label")
++ string(REPLACE " -Werror " " " GK_COPTIONS "${GK_COPTIONS}")
+ elseif(${CMAKE_C_COMPILER_ID} MATCHES "Sun")
+ # Sun insists on -xc99.
+ set(GK_COPTIONS "${GK_COPTIONS} -xc99")
+@@ -69,6 +71,8 @@ endif(OPENMP)
+ if(GDB)
+ set(GK_COPTS "${GK_COPTS} -g")
+ set(GK_COPTIONS "${GK_COPTIONS} -Werror")
++elseif(1)
++ # Use flags from toolchain and triplet
+ else()
+ set(GK_COPTS "-O3")
+ endif(GDB)
+diff --git a/libparmetis/CMakeLists.txt b/libparmetis/CMakeLists.txt
+index b9d6d84..d8fb19b 100644
+--- a/libparmetis/CMakeLists.txt
++++ b/libparmetis/CMakeLists.txt
+@@ -7,11 +7,17 @@ file(GLOB parmetis_sources *.c)
+ # Create libparmetis
+ add_library(parmetis ${ParMETIS_LIBRARY_TYPE} ${parmetis_sources})
+
+-if(SHARED)
+- target_link_libraries(parmetis metis GKlib)
+-endif()
+-
++find_package(GKlib CONFIG REQUIRED)
++find_package(metis CONFIG REQUIRED)
++find_package(MPI REQUIRED)
++
++target_link_libraries(parmetis PRIVATE GKlib::GKlib metis ${MPI_C_LIBRARIES})
++target_include_directories(parmetis PRIVATE ${MPI_C_INCLUDE_DIRS})
++target_include_directories(parmetis PRIVATE "../include")
++
+ install(TARGETS parmetis
++ EXPORT parmetisTargets
++ INCLUDES DESTINATION include
+ LIBRARY DESTINATION lib
+- RUNTIME DESTINATION lib
++ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib)
diff --git a/vcpkg/ports/parmetis/portfile.cmake b/vcpkg/ports/parmetis/portfile.cmake
new file mode 100644
index 0000000..fee6549
--- /dev/null
+++ b/vcpkg/ports/parmetis/portfile.cmake
@@ -0,0 +1,24 @@
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO KarypisLab/ParMETIS
+ REF 8ee6a372ca703836f593e3c450ca903f04be14df
+ SHA512 a71d212a1c8682eb662ef6bb8bdcb124bc13c353e76ac236b01e544bddb975740c36be54c05305e1114e4daf20fec56642ffa319a6426c87c5538ea2225c156b
+ PATCHES
+ build-fixes.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DSHARED=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/parmetis/use_stdint.patch b/vcpkg/ports/parmetis/use_stdint.patch
new file mode 100644
index 0000000..5b239e6
--- /dev/null
+++ b/vcpkg/ports/parmetis/use_stdint.patch
@@ -0,0 +1,22 @@
+diff --git a/metis/GKlib/ms_stdint.h b/metis/GKlib/ms_stdint.h
+index 7e200dc..0d07a7a 100644
+--- a/metis/GKlib/ms_stdint.h
++++ b/metis/GKlib/ms_stdint.h
+@@ -42,6 +42,10 @@
+
+ #include <limits.h>
+
++#if(_MSC_VER >= 1900)
++ #include <stdint.h>
++#else
++
+ // For Visual Studio 6 in C++ mode wrap <wchar.h> include with 'extern "C++" {}'
+ // or compiler give many errors like this:
+ // error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+@@ -218,5 +222,6 @@ typedef uint64_t uintmax_t;
+
+ #endif // __STDC_CONSTANT_MACROS ]
+
++#endif
+
+ #endif // _MSC_STDINT_H_ ]
diff --git a/vcpkg/ports/parmetis/vcpkg.json b/vcpkg/ports/parmetis/vcpkg.json
new file mode 100644
index 0000000..e69539f
--- /dev/null
+++ b/vcpkg/ports/parmetis/vcpkg.json
@@ -0,0 +1,19 @@
+{
+ "name": "parmetis",
+ "version-date": "2023-03-26",
+ "description": "Parallel Graph Partitioning and Fill-reducing Matrix Ordering",
+ "homepage": "https://github.com/KarypisLab/ParMETIS",
+ "license": null,
+ "dependencies": [
+ "metis",
+ "mpi",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}