Skip to content

Commit 57e3258

Browse files
committed
add overlay ports for vcpkg older version
1 parent ffe5db7 commit 57e3258

File tree

9 files changed

+367
-2
lines changed

9 files changed

+367
-2
lines changed

.github/workflows/hipo-win-gh.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@ jobs:
2424

2525
# todo: add overlay
2626
- name: Install METIS
27-
run: vcpkg install metis
27+
run: |
28+
vcpkg install metis gklib \
29+
--overlay-ports=$env:GITHUB_WORKSPACE\ports\metis
30+
--overlay-ports=$env:GITHUB_WORKSPACE\ports\gklib
2831
2932
# run: ls C:/vcpkg/packages/metis_x64-windows/
3033
# run: ls C:/vcpkg/packages/metis_x64-windows/lib
3134
# run: ls C:/vcpkg/packages/metis_x64-windows/share
3235
# run: ls C:/vcpkg/packages/gklib_x64-windows/share/gklib
3336

3437
- name: Install OpenBLAS
35-
run: vcpkg install openblas
38+
run: vcpkg install openblas[threads]
3639

3740
- name: Create build dir
3841
run: cmake -E make_directory ${{runner.workspace}}/build

ports/gklib/android.patch

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
diff --git a/GKlibSystem.cmake b/GKlibSystem.cmake
2+
index 31a1cf1..848fd05 100644
3+
--- a/GKlibSystem.cmake
4+
+++ b/GKlibSystem.cmake
5+
@@ -113,7 +113,9 @@ endif(GKRAND)
6+
7+
8+
# Check for features.
9+
+if(NOT ANDROID OR ANDROID_NATIVE_API_LEVEL GREATER 32)
10+
check_include_file(execinfo.h HAVE_EXECINFO_H)
11+
+endif()
12+
if(HAVE_EXECINFO_H)
13+
set(GKlib_COPTIONS "${GKlib_COPTIONS} -DHAVE_EXECINFO_H")
14+
endif(HAVE_EXECINFO_H)

ports/gklib/build-fixes.patch

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 9cd1b4b..3912b26 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1,4 +1,4 @@
6+
-cmake_minimum_required(VERSION 2.8)
7+
+cmake_minimum_required(VERSION 3.22)
8+
project(GKlib C)
9+
10+
option(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" OFF)
11+
@@ -22,10 +22,11 @@ if(UNIX)
12+
target_link_libraries(GKlib m)
13+
endif(UNIX)
14+
15+
-include_directories("test")
16+
-add_subdirectory("test")
17+
18+
install(TARGETS GKlib
19+
- ARCHIVE DESTINATION lib/${LINSTALL_PATH}
20+
- LIBRARY DESTINATION lib/${LINSTALL_PATH})
21+
+ EXPORT GKlibTargets
22+
+ INCLUDES DESTINATION "include/GKlib"
23+
+)
24+
+install(EXPORT GKlibTargets FILE "GKlibConfig.cmake" DESTINATION "share/gklib")
25+
+install(FILES "win32/adapt.h" DESTINATION "include/${HINSTALL_PATH}/win32")
26+
install(FILES ${GKlib_includes} DESTINATION include/${HINSTALL_PATH})
27+
diff --git a/GKlibSystem.cmake b/GKlibSystem.cmake
28+
index 31a1cf1..172a386 100644
29+
--- a/GKlibSystem.cmake
30+
+++ b/GKlibSystem.cmake
31+
@@ -18,7 +18,6 @@ option(NO_X86 "enable NO_X86 support" OFF)
32+
33+
# Add compiler flags.
34+
if(MSVC)
35+
- set(GKlib_COPTS "/Ox")
36+
set(GKlib_COPTIONS "-DWIN32 -DMSC -D_CRT_SECURE_NO_DEPRECATE -DUSE_GKREGEX")
37+
elseif(MINGW)
38+
set(GKlib_COPTS "-DUSE_GKREGEX")
39+
@@ -33,6 +32,8 @@ if(CMAKE_COMPILER_IS_GNUCC)
40+
set(GKlib_COPTIONS "${GKlib_COPTIONS} -std=c99 -fno-strict-aliasing")
41+
if(VALGRIND)
42+
set(GKlib_COPTIONS "${GK_COPTIONS} -march=x86-64 -mtune=generic")
43+
+elseif(1)
44+
+ # Use flags from toolchain and triplet
45+
else()
46+
# -march=native is not a valid flag on PPC:
47+
if(CMAKE_SYSTEM_PROCESSOR MATCHES "power|ppc|powerpc|ppc64|powerpc64" OR (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc|ppc64"))
48+
@@ -46,6 +47,7 @@ endif(VALGRIND)
49+
endif(NOT MINGW)
50+
# GCC warnings.
51+
set(GKlib_COPTIONS "${GKlib_COPTIONS} -Werror -Wall -pedantic -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-label")
52+
+ string(REPLACE " -Werror " " " GKlib_COPTIONS "${GKlib_COPTIONS}")
53+
elseif(${CMAKE_C_COMPILER_ID} MATCHES "Sun")
54+
# Sun insists on -xc99.
55+
set(GKlib_COPTIONS "${GKlib_COPTIONS} -xc99")
56+
@@ -75,6 +77,8 @@ endif(NO_X86)
57+
if(GDB)
58+
set(GKlib_COPTS "${GKlib_COPTS} -g")
59+
set(GKlib_COPTIONS "${GKlib_COPTIONS} -Werror")
60+
+elseif(1)
61+
+ # Use flags from toolchain and triplet
62+
else()
63+
set(GKlib_COPTS "-O3")
64+
endif(GDB)
65+
diff --git a/gk_ms_inttypes.h b/gk_ms_inttypes.h
66+
index b89fc10..7247c38 100644
67+
--- a/gk_ms_inttypes.h
68+
+++ b/gk_ms_inttypes.h
69+
@@ -35,6 +35,8 @@
70+
71+
#ifndef _MSC_INTTYPES_H_ // [
72+
#define _MSC_INTTYPES_H_
73+
+#include <inttypes.h>
74+
+#elif 0
75+
76+
#if _MSC_VER > 1000
77+
#pragma once
78+
diff --git a/gk_ms_stdint.h b/gk_ms_stdint.h
79+
index 7e200dc..1c51958 100644
80+
--- a/gk_ms_stdint.h
81+
+++ b/gk_ms_stdint.h
82+
@@ -35,6 +35,8 @@
83+
84+
#ifndef _MSC_STDINT_H_ // [
85+
#define _MSC_STDINT_H_
86+
+#include <stdint.h>
87+
+#elif 0
88+
89+
#if _MSC_VER > 1000
90+
#pragma once

ports/gklib/portfile.cmake

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
if(VCPKG_TARGET_IS_WINDOWS)
2+
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
3+
endif()
4+
5+
vcpkg_from_github(
6+
OUT_SOURCE_PATH SOURCE_PATH
7+
REPO KarypisLab/GKlib
8+
REF 8bd6bad750b2b0d90800c632cf18e8ee93ad72d7
9+
SHA512 128cd9a48047b18b8013288162556f0b0f1d81845f5445f7cc62590ab28c06ee0a6c602cc999ce268ab27237eca3e8295df6432d377e45071946b98558872997
10+
PATCHES
11+
android.patch
12+
build-fixes.patch
13+
)
14+
15+
vcpkg_cmake_configure(
16+
SOURCE_PATH "${SOURCE_PATH}"
17+
OPTIONS
18+
-DHINSTALL_PATH=GKlib
19+
)
20+
21+
vcpkg_cmake_install()
22+
vcpkg_cmake_config_fixup()
23+
24+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
25+
26+
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")

ports/gklib/vcpkg.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "gklib",
3+
"version-date": "2023-03-27",
4+
"description": "General helper libraries for KarypisLab.",
5+
"homepage": "https://github.com/KarypisLab/GKlib/",
6+
"license": "Apache-2.0",
7+
"dependencies": [
8+
{
9+
"name": "vcpkg-cmake",
10+
"host": true
11+
},
12+
{
13+
"name": "vcpkg-cmake-config",
14+
"host": true
15+
}
16+
]
17+
}

ports/metis/build-fixes.patch

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index a15d19a..7210a61 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -1,9 +1,9 @@
6+
-cmake_minimum_required(VERSION 2.8)
7+
+cmake_minimum_required(VERSION 3.22)
8+
project(METIS C)
9+
10+
set(SHARED FALSE CACHE BOOL "build a shared library")
11+
12+
-if(MSVC)
13+
+if(0)
14+
set(METIS_INSTALL FALSE)
15+
else()
16+
set(METIS_INSTALL TRUE)
17+
@@ -34,19 +34,8 @@ include(./conf/gkbuild.cmake)
18+
#
19+
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${METIS_COPTIONS}")
20+
21+
-
22+
-# Add include directories.
23+
-# i.e., the -I equivalent
24+
-include_directories(build/xinclude)
25+
-include_directories(${GKLIB_PATH}/include)
26+
-include_directories(${CMAKE_INSTALL_PREFIX}/include)
27+
-
28+
-# List of paths that the compiler will search for library files.
29+
-# i.e., the -L equivalent
30+
-link_directories(${GKLIB_PATH}/lib)
31+
-link_directories(${CMAKE_INSTALL_PREFIX}/lib)
32+
-
33+
# Recursively look for CMakeLists.txt in subdirs.
34+
-add_subdirectory("build/xinclude")
35+
+add_subdirectory("include")
36+
add_subdirectory("libmetis")
37+
-add_subdirectory("programs")
38+
+
39+
+include(install_config.cmake)
40+
diff --git a/conf/gkbuild.cmake b/conf/gkbuild.cmake
41+
index 96435e5..ff43f05 100644
42+
--- a/conf/gkbuild.cmake
43+
+++ b/conf/gkbuild.cmake
44+
@@ -16,7 +16,6 @@ option(GKRAND "enable GKRAND support" OFF)
45+
46+
# Add compiler flags.
47+
if(MSVC)
48+
- set(GK_COPTS "/Ox")
49+
set(GK_COPTIONS "-DWIN32 -DMSC -D_CRT_SECURE_NO_DEPRECATE -DUSE_GKREGEX")
50+
elseif(MINGW)
51+
set(GK_COPTS "-DUSE_GKREGEX")
52+
@@ -38,7 +37,7 @@ endif(VALGRIND)
53+
set(GK_COPTIONS "${GK_COPTIONS} -fPIC")
54+
endif(NOT MINGW)
55+
# GCC warnings.
56+
- 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")
57+
+ set(GK_COPTIONS "${GK_COPTIONS} -Wall -pedantic -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-label")
58+
elseif(${CMAKE_C_COMPILER_ID} MATCHES "Sun")
59+
# Sun insists on -xc99.
60+
set(GK_COPTIONS "${GK_COPTIONS} -xc99")
61+
@@ -69,7 +68,7 @@ endif(OPENMP)
62+
if(GDB)
63+
set(GK_COPTS "${GK_COPTS} -g")
64+
set(GK_COPTIONS "${GK_COPTIONS} -Werror")
65+
-else()
66+
+elseif(0)
67+
set(GK_COPTS "-O3")
68+
endif(GDB)
69+
70+
diff --git a/include/metis.h b/include/metis.h
71+
index 7fef0e7..f8e5dcf 100644
72+
--- a/include/metis.h
73+
+++ b/include/metis.h
74+
@@ -30,7 +30,7 @@
75+
GCC does provides these definitions in stdint.h, but it may require some
76+
modifications on other architectures.
77+
--------------------------------------------------------------------------*/
78+
-//#define IDXTYPEWIDTH 32
79+
+#define IDXTYPEWIDTH 32
80+
81+
82+
/*--------------------------------------------------------------------------
83+
@@ -40,7 +40,7 @@
84+
32 : single precission floating point (float)
85+
64 : double precission floating point (double)
86+
--------------------------------------------------------------------------*/
87+
-//#define REALTYPEWIDTH 32
88+
+#define REALTYPEWIDTH 32
89+
90+
91+
92+
@@ -72,10 +72,14 @@ typedef __int64 int64_t;
93+
#define PRId64 "I64d"
94+
#define SCNd32 "ld"
95+
#define SCNd64 "I64d"
96+
+#ifdef _WIN32
97+
+#include <stdint.h>
98+
+#else
99+
#define INT32_MIN ((int32_t)_I32_MIN)
100+
#define INT32_MAX _I32_MAX
101+
#define INT64_MIN ((int64_t)_I64_MIN)
102+
#define INT64_MAX _I64_MAX
103+
+#endif // ^^^ !_WIN32
104+
#else
105+
#include <inttypes.h>
106+
#endif
107+
diff --git a/libmetis/CMakeLists.txt b/libmetis/CMakeLists.txt
108+
index fc6cec6..8aeb89a 100644
109+
--- a/libmetis/CMakeLists.txt
110+
+++ b/libmetis/CMakeLists.txt
111+
@@ -6,10 +6,9 @@ file(GLOB metis_sources *.c)
112+
113+
# Build libmetis.
114+
add_library(metis ${METIS_LIBRARY_TYPE} ${metis_sources})
115+
+find_package(GKlib CONFIG REQUIRED)
116+
+target_link_libraries(metis PUBLIC GKlib)
117+
+target_include_directories(metis PRIVATE "../include")
118+
119+
-if(METIS_INSTALL)
120+
- install(TARGETS metis
121+
- LIBRARY DESTINATION lib
122+
- RUNTIME DESTINATION lib
123+
- ARCHIVE DESTINATION lib)
124+
-endif()
125+
+install(TARGETS metis EXPORT metisTargets
126+
+ INCLUDES DESTINATION include)
127+
diff --git a/libmetis/metislib.h b/libmetis/metislib.h
128+
index dc224f4..1efccda 100644
129+
--- a/libmetis/metislib.h
130+
+++ b/libmetis/metislib.h
131+
@@ -31,7 +31,7 @@
132+
#include "proto.h"
133+
134+
135+
-#if defined(COMPILER_MSC)
136+
+#if defined(COMPILER_MSC) && (_MSC_VER < 1900)
137+
#if defined(rint)
138+
#undef rint
139+
#endif

ports/metis/install_config.cmake

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
install(EXPORT metisTargets
2+
FILE metisTargets.cmake
3+
DESTINATION share/metis
4+
)
5+
6+
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/metisConfig.cmake"
7+
"include(CMakeFindDependencyMacro)
8+
find_dependency(GKlib CONFIG)
9+
include(\"\${CMAKE_CURRENT_LIST_DIR}/metisTargets.cmake\")
10+
")
11+
12+
# Copied from https://github.com/ceres-solver/ceres-solver/blob/2.2.0/cmake/FindMETIS.cmake#L69-L77
13+
file(READ "${PROJECT_SOURCE_DIR}/include/metis.h" _METIS_VERSION_CONTENTS)
14+
string(REGEX REPLACE ".*#define METIS_VER_MAJOR[ \t]+([0-9]+).*" "\\1"
15+
METIS_VERSION_MAJOR "${_METIS_VERSION_CONTENTS}")
16+
string(REGEX REPLACE ".*#define METIS_VER_MINOR[ \t]+([0-9]+).*" "\\1"
17+
METIS_VERSION_MINOR "${_METIS_VERSION_CONTENTS}")
18+
string(REGEX REPLACE ".*#define METIS_VER_SUBMINOR[ \t]+([0-9]+).*" "\\1"
19+
METIS_VERSION_PATCH "${_METIS_VERSION_CONTENTS}")
20+
set(METIS_VERSION "${METIS_VERSION_MAJOR}.${METIS_VERSION_MINOR}.${METIS_VERSION_PATCH}")
21+
22+
include(CMakePackageConfigHelpers)
23+
write_basic_package_version_file(
24+
"${CMAKE_CURRENT_BINARY_DIR}/metisConfigVersion.cmake"
25+
VERSION ${METIS_VERSION}
26+
COMPATIBILITY SameMajorVersion
27+
)
28+
29+
install(FILES
30+
"${CMAKE_CURRENT_BINARY_DIR}/metisConfig.cmake"
31+
"${CMAKE_CURRENT_BINARY_DIR}/metisConfigVersion.cmake"
32+
DESTINATION "share/metis"
33+
)

ports/metis/portfile.cmake

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
2+
3+
vcpkg_from_github(OUT_SOURCE_PATH SOURCE_PATH
4+
REPO KarypisLab/METIS
5+
REF 94c03a6e2d1860128c2d0675cbbb86ad4f261256
6+
SHA512 9f24329fa0f0856d0b5d10a489574d857bc4538d9639055fc895363cf70aa37342eaf7bc08819500ff6d5b98a4aa99f4241880622b540d4c484ca19e693d3480
7+
PATCHES
8+
build-fixes.patch
9+
)
10+
11+
file(COPY "${CMAKE_CURRENT_LIST_DIR}/install_config.cmake" DESTINATION "${SOURCE_PATH}")
12+
13+
vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
14+
vcpkg_cmake_install()
15+
vcpkg_copy_pdbs()
16+
vcpkg_cmake_config_fixup()
17+
18+
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
19+
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
20+
file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" [=[
21+
metis provides CMake targets:
22+
find_package(metis CONFIG REQUIRED)
23+
target_link_libraries(main PRIVATE metis)
24+
]=])

ports/metis/vcpkg.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "metis",
3+
"version-date": "2022-07-27",
4+
"port-version": 1,
5+
"description": "Serial Graph Partitioning and Fill-reducing Matrix Ordering",
6+
"homepage": "https://github.com/KarypisLab/METIS",
7+
"license": "Apache-2.0",
8+
"dependencies": [
9+
"gklib",
10+
{
11+
"name": "vcpkg-cmake",
12+
"host": true
13+
},
14+
{
15+
"name": "vcpkg-cmake-config",
16+
"host": true
17+
}
18+
]
19+
}

0 commit comments

Comments
 (0)