diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/parmetis | |
Diffstat (limited to 'vcpkg/ports/parmetis')
| -rw-r--r-- | vcpkg/ports/parmetis/build-fixes.patch | 104 | ||||
| -rw-r--r-- | vcpkg/ports/parmetis/portfile.cmake | 24 | ||||
| -rw-r--r-- | vcpkg/ports/parmetis/use_stdint.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/parmetis/vcpkg.json | 19 |
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 + } + ] +} |