mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-28 16:47:51 +08:00
312 lines
11 KiB
Diff
312 lines
11 KiB
Diff
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||
|
index 83144b41b..1cfe80d42 100644
|
||
|
--- a/CMakeLists.txt
|
||
|
+++ b/CMakeLists.txt
|
||
|
@@ -41,9 +41,9 @@
|
||
|
## ##
|
||
|
############################################################
|
||
|
|
||
|
-project(SCOTCH)
|
||
|
cmake_minimum_required(VERSION 3.10)
|
||
|
-enable_language(C Fortran)
|
||
|
+project(SCOTCH)
|
||
|
+enable_language(C)
|
||
|
|
||
|
# Add module directory
|
||
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
|
||
|
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||
|
index 22a81ffbe..7746b22af 100644
|
||
|
--- a/src/CMakeLists.txt
|
||
|
+++ b/src/CMakeLists.txt
|
||
|
@@ -95,14 +95,23 @@ endif()
|
||
|
|
||
|
# Thread support in Scotch
|
||
|
if(THREADS)
|
||
|
- find_package(Threads)
|
||
|
- if(Threads_FOUND)
|
||
|
+set(USE_PTHREAD OFF)
|
||
|
+if(NOT WIN32)
|
||
|
+ find_package(Threads REQUIRED)
|
||
|
+ if(CMAKE_USE_PTHREADS_INIT)
|
||
|
add_definitions(-DCOMMON_PTHREAD -DSCOTCH_PTHREAD)
|
||
|
+ set(USE_PTHREAD ON)
|
||
|
endif()
|
||
|
include(CheckPthreadAffinity)
|
||
|
if(PTHREAD_AFFINITY_LINUX_OK)
|
||
|
add_definitions(-DCOMMON_PTHREAD_AFFINITY_LINUX)
|
||
|
endif()
|
||
|
+else()
|
||
|
+ find_package(PThreads4W REQUIRED)
|
||
|
+ add_definitions(-DCOMMON_PTHREAD -DSCOTCH_PTHREAD)
|
||
|
+ link_libraries(PThreads4W::PThreads4W)
|
||
|
+ set(USE_PTHREAD ON)
|
||
|
+endif()
|
||
|
endif()
|
||
|
|
||
|
# decompression libs
|
||
|
@@ -174,8 +183,9 @@ if(BUILD_LIBSCOTCHMETIS)
|
||
|
endif(BUILD_LIBSCOTCHMETIS)
|
||
|
|
||
|
# Testing
|
||
|
-add_subdirectory(check)
|
||
|
-
|
||
|
+if(BUILD_TESTING)
|
||
|
+ add_subdirectory(check)
|
||
|
+endif()
|
||
|
####################
|
||
|
# Export targets #
|
||
|
####################
|
||
|
diff --git a/src/libscotch/CMakeLists.txt b/src/libscotch/CMakeLists.txt
|
||
|
index e3b0cb939..5ab322eca 100644
|
||
|
--- a/src/libscotch/CMakeLists.txt
|
||
|
+++ b/src/libscotch/CMakeLists.txt
|
||
|
@@ -503,12 +503,30 @@ set(SCOTCH_C_SOURCES
|
||
|
wgraph_part_zr.h
|
||
|
wgraph_store.c)
|
||
|
|
||
|
+add_library(scotcherr library_error.c)
|
||
|
+target_include_directories(scotcherr PUBLIC
|
||
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
+ $<BUILD_INTERFACE:${GENERATED_INCLUDE_DIR}>
|
||
|
+ $<INSTALL_INTERFACE:include>)
|
||
|
+
|
||
|
+add_dependencies(scotcherr scotch_h)
|
||
|
+
|
||
|
+add_library(scotcherrexit library_error_exit.c)
|
||
|
+target_include_directories(scotcherrexit PUBLIC
|
||
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
+ $<BUILD_INTERFACE:${GENERATED_INCLUDE_DIR}>
|
||
|
+ $<INSTALL_INTERFACE:include>)
|
||
|
+
|
||
|
+add_dependencies(scotcherrexit scotch_h)
|
||
|
+
|
||
|
add_library(scotch
|
||
|
${SCOTCH_C_SOURCES})
|
||
|
set_target_properties(scotch PROPERTIES VERSION
|
||
|
${SCOTCH_VERSION}.${SCOTCH_RELEASE}.${SCOTCH_PATCHLEVEL})
|
||
|
add_dependencies(scotch parser_yy_c parser_ll_c)
|
||
|
-target_link_libraries(scotch PUBLIC m)
|
||
|
+if(NOT WIN32)
|
||
|
+ target_link_libraries(scotch PUBLIC m)
|
||
|
+endif()
|
||
|
target_include_directories(scotch PUBLIC
|
||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||
|
@@ -539,10 +557,14 @@ if(LIBLZMA_FOUND)
|
||
|
endif()
|
||
|
|
||
|
# Add thread library
|
||
|
-if(Threads_FOUND)
|
||
|
- target_compile_definitions(scotch PUBLIC COMMON_PTHREAD SCOTCH_PTHREAD)
|
||
|
- target_link_libraries(scotch PUBLIC Threads::Threads)
|
||
|
-endif(Threads_FOUND)
|
||
|
+if(USE_PTHREAD)
|
||
|
+ target_compile_definitions(scotch PUBLIC COMMON_PTHREAD SCOTCH_PTHREAD)
|
||
|
+ if(NOT WIN32)
|
||
|
+ target_link_libraries(scotch PUBLIC Threads::Threads)
|
||
|
+ else()
|
||
|
+ target_link_libraries(scotch PUBLIC PThreads4W::PThreads4W)
|
||
|
+ endif()
|
||
|
+endif(USE_PTHREAD)
|
||
|
|
||
|
# Include files
|
||
|
add_dependencies(scotch scotch_h scotchf_h)
|
||
|
@@ -555,21 +577,7 @@ if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
||
|
target_compile_definitions(scotch PRIVATE SCOTCH_DEBUG_LIBRARY1)
|
||
|
endif()
|
||
|
|
||
|
-add_library(scotcherr library_error.c)
|
||
|
-target_include_directories(scotcherr PUBLIC
|
||
|
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
- $<BUILD_INTERFACE:${GENERATED_INCLUDE_DIR}>
|
||
|
- $<INSTALL_INTERFACE:include>)
|
||
|
-
|
||
|
-add_dependencies(scotcherr scotch_h)
|
||
|
-
|
||
|
-add_library(scotcherrexit library_error_exit.c)
|
||
|
-target_include_directories(scotcherrexit PUBLIC
|
||
|
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
- $<BUILD_INTERFACE:${GENERATED_INCLUDE_DIR}>
|
||
|
- $<INSTALL_INTERFACE:include>)
|
||
|
-
|
||
|
-add_dependencies(scotcherrexit scotch_h)
|
||
|
+target_link_libraries(scotch PRIVATE scotcherr)
|
||
|
|
||
|
#################
|
||
|
# libPTScotch #
|
||
|
@@ -769,10 +777,14 @@ if(BUILD_PTSCOTCH)
|
||
|
set_target_properties(ptscotch PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||
|
endif(APPLE)
|
||
|
|
||
|
- if(Threads_FOUND)
|
||
|
- target_compile_definitions(ptscotch PUBLIC SCOTCH_PTHREAD COMMON_PTHREAD)
|
||
|
- target_link_libraries(ptscotch PUBLIC Threads::Threads)
|
||
|
- endif(Threads_FOUND)
|
||
|
+ if(USE_PTHREAD)
|
||
|
+ target_compile_definitions(ptscotch PUBLIC COMMON_PTHREAD SCOTCH_PTHREAD)
|
||
|
+ if(NOT WIN32)
|
||
|
+ target_link_libraries(ptscotch PUBLIC Threads::Threads)
|
||
|
+ else()
|
||
|
+ target_link_libraries(ptscotch PUBLIC PThreads4W::PThreads4W)
|
||
|
+ endif()
|
||
|
+ endif(USE_PTHREAD)
|
||
|
|
||
|
add_library(ptscotcherr library_error.c)
|
||
|
target_include_directories(ptscotcherr PUBLIC
|
||
|
diff --git a/src/libscotch/common_file_compress.c b/src/libscotch/common_file_compress.c
|
||
|
index e1ccff54d..4dc7673a6 100644
|
||
|
--- a/src/libscotch/common_file_compress.c
|
||
|
+++ b/src/libscotch/common_file_compress.c
|
||
|
@@ -378,8 +378,11 @@ FileCompress * const compptr)
|
||
|
encodat.avail_out = FILECOMPRESSDATASIZE;
|
||
|
do {
|
||
|
if ((encodat.avail_in == 0) && (enacval == LZMA_RUN)) {
|
||
|
+#ifdef _MSC_VER
|
||
|
+ int bytenbr; //According to MSDN _read only returns int
|
||
|
+#else
|
||
|
ssize_t bytenbr;
|
||
|
-
|
||
|
+#endif
|
||
|
bytenbr = read (compptr->infdnum, compptr->bufftab, FILECOMPRESSDATASIZE); /* Read from pipe */
|
||
|
if (bytenbr < 0) {
|
||
|
errorPrint ("fileCompressLzma: cannot read");
|
||
|
diff --git a/src/libscotch/common_file_decompress.c b/src/libscotch/common_file_decompress.c
|
||
|
index 648b6f053..02bd9412c 100644
|
||
|
--- a/src/libscotch/common_file_decompress.c
|
||
|
+++ b/src/libscotch/common_file_decompress.c
|
||
|
@@ -373,7 +373,11 @@ FileCompress * const compptr)
|
||
|
decodat.avail_out = FILECOMPRESSDATASIZE;
|
||
|
do {
|
||
|
if ((decodat.avail_in == 0) && (deacval == LZMA_RUN)) {
|
||
|
+#ifdef _MSC_VER
|
||
|
+ size_t bytenbr; //According to MSDN fread returns size_t
|
||
|
+#else
|
||
|
ssize_t bytenbr;
|
||
|
+#endif
|
||
|
|
||
|
bytenbr = fread (compptr->bufftab, 1, FILECOMPRESSDATASIZE, compptr->oustptr); /* Read from pipe */
|
||
|
if (ferror (compptr->oustptr)) {
|
||
|
diff --git a/src/libscotch/common_thread.h b/src/libscotch/common_thread.h
|
||
|
index 235d92044..6d35aeb1a 100644
|
||
|
--- a/src/libscotch/common_thread.h
|
||
|
+++ b/src/libscotch/common_thread.h
|
||
|
@@ -81,6 +81,8 @@ typedef struct ThreadContext_ {
|
||
|
union { /*+ Context save area for main thread +*/
|
||
|
#ifdef COMMON_PTHREAD_AFFINITY_LINUX
|
||
|
cpu_set_t cpusdat; /*+ Original thread mask of main thread +*/
|
||
|
+#else
|
||
|
+ void* dummy;
|
||
|
#endif /* COMMON_PTHREAD_AFFINITY_LINUX */
|
||
|
} savedat;
|
||
|
#endif /* COMMON_PTHREAD */
|
||
|
diff --git a/src/libscotch/context.c b/src/libscotch/context.c
|
||
|
index 6becac0af..a88da0099 100644
|
||
|
--- a/src/libscotch/context.c
|
||
|
+++ b/src/libscotch/context.c
|
||
|
@@ -70,7 +70,11 @@ static struct ContextValuesData_ {
|
||
|
#else /* ((defined SCOTCH_DETERMINISTIC) || (defined COMMON_RANDOM_FIXED_SEED)) */
|
||
|
0
|
||
|
#endif /* ((defined SCOTCH_DETERMINISTIC) || (defined COMMON_RANDOM_FIXED_SEED)) */
|
||
|
- }, { } };
|
||
|
+ }
|
||
|
+#ifndef _MSC_VER
|
||
|
+ , { }
|
||
|
+#endif
|
||
|
+ };
|
||
|
|
||
|
/***********************************/
|
||
|
/* */
|
||
|
@@ -89,6 +93,6 @@ contextOptionsInit (
|
||
|
Context * const contptr)
|
||
|
{
|
||
|
return (contextValuesInit (contptr, &contextvaluesdat, sizeof (contextvaluesdat),
|
||
|
- CONTEXTOPTIONNUMNBR, (void *) &contextvaluesdat.vinttab - (void *) &contextvaluesdat,
|
||
|
- CONTEXTOPTIONDBLNBR, (void *) &contextvaluesdat.vdbltab - (void *) &contextvaluesdat));
|
||
|
+ CONTEXTOPTIONNUMNBR, (char *) &contextvaluesdat.vinttab - (char *) &contextvaluesdat,
|
||
|
+ CONTEXTOPTIONDBLNBR, (char *) &contextvaluesdat.vdbltab - (char *) &contextvaluesdat));
|
||
|
}
|
||
|
diff --git a/src/libscotch/parser_ll.l b/src/libscotch/parser_ll.l
|
||
|
index 6a795aad6..582f5e201 100644
|
||
|
--- a/src/libscotch/parser_ll.l
|
||
|
+++ b/src/libscotch/parser_ll.l
|
||
|
@@ -85,6 +85,10 @@
|
||
|
%option noyywrap
|
||
|
%option reentrant
|
||
|
|
||
|
+/* To support build on Windows */
|
||
|
+%option nounistd
|
||
|
+
|
||
|
+
|
||
|
IDENT [A-Za-z][0-9A-Za-z]*
|
||
|
INTEGER [0-9]+
|
||
|
FLOAT [0-9]+(\.[0-9]+)?([Ee][-+]?[0-9]+)?
|
||
|
diff --git a/src/libscotch/parser_yy.y b/src/libscotch/parser_yy.y
|
||
|
index b287da4ca..bbc10b3ef 100644
|
||
|
--- a/src/libscotch/parser_yy.y
|
||
|
+++ b/src/libscotch/parser_yy.y
|
||
|
@@ -81,6 +81,9 @@ typedef void * YY_BUFFER_STATE; /* The same; Flex and Bison de
|
||
|
** The defines and includes (bis).
|
||
|
*/
|
||
|
|
||
|
+#ifdef _MSC_VER
|
||
|
+#define YY_NO_UNISTD_H
|
||
|
+#endif
|
||
|
#include "parser.h"
|
||
|
#include "parser_yy.h"
|
||
|
#include "parser_ly.h"
|
||
|
diff --git a/src/scotch/CMakeLists.txt b/src/scotch/CMakeLists.txt
|
||
|
index 3974f4fce..b9149b931 100644
|
||
|
--- a/src/scotch/CMakeLists.txt
|
||
|
+++ b/src/scotch/CMakeLists.txt
|
||
|
@@ -67,10 +67,15 @@ function(add_scotch_exe)
|
||
|
add_dependencies(${file_we} scotch_h)
|
||
|
target_include_directories(${file_we} PRIVATE ${GENERATED_INCLUDE_DIR})
|
||
|
target_compile_definitions(${file_we} PUBLIC "SCOTCH_CODENAME=\"${SCOTCH_CODENAME}\"")
|
||
|
- if(Threads_FOUND)
|
||
|
- target_compile_definitions(${file_we} PUBLIC SCOTCH_PTHREAD COMMON_PTHREAD)
|
||
|
- target_link_libraries(${file_we} PUBLIC Threads::Threads)
|
||
|
- endif(Threads_FOUND)
|
||
|
+
|
||
|
+ if(USE_PTHREAD)
|
||
|
+ target_compile_definitions(${file_we} PUBLIC COMMON_PTHREAD SCOTCH_PTHREAD)
|
||
|
+ if(NOT WIN32)
|
||
|
+ target_link_libraries(${file_we} PUBLIC Threads::Threads)
|
||
|
+ else()
|
||
|
+ target_link_libraries(${file_we} PUBLIC PThreads4W::PThreads4W)
|
||
|
+ endif()
|
||
|
+ endif(USE_PTHREAD)
|
||
|
target_link_libraries(${file_we} PUBLIC scotch scotcherrexit)
|
||
|
endfunction(add_scotch_exe)
|
||
|
|
||
|
@@ -110,8 +115,9 @@ endforeach()
|
||
|
|
||
|
# Targets which need special source lists
|
||
|
add_scotch_exe(gout gout_c.c gout_o.c)
|
||
|
-target_link_libraries(gout PRIVATE m)
|
||
|
-
|
||
|
+if(NOT WIN32)
|
||
|
+ target_link_libraries(gout PRIVATE m)
|
||
|
+endif()
|
||
|
# gpart is a special target (same source as gmap)
|
||
|
add_scotch_exe(gpart gmap.c gmap.h)
|
||
|
target_compile_definitions(gpart PRIVATE SCOTCH_COMPILE_PART)
|
||
|
@@ -142,10 +148,14 @@ if(BUILD_PTSCOTCH)
|
||
|
${GENERATED_INCLUDE_DIR}/ptscotch.h)
|
||
|
add_dependencies(${file_we} ptscotch_h)
|
||
|
target_compile_definitions(${file_we} PUBLIC "SCOTCH_CODENAME=\"${SCOTCH_CODENAME}\"")
|
||
|
- if(Threads_FOUND)
|
||
|
- target_compile_definitions(${file_we} PUBLIC SCOTCH_PTHREAD COMMON_PTHREAD)
|
||
|
- target_link_libraries(${file_we} PUBLIC Threads::Threads)
|
||
|
- endif(Threads_FOUND)
|
||
|
+ if(USE_PTHREAD)
|
||
|
+ target_compile_definitions(${file_we} PUBLIC COMMON_PTHREAD SCOTCH_PTHREAD)
|
||
|
+ if(NOT WIN32)
|
||
|
+ target_link_libraries(${file_we} PUBLIC Threads::Threads)
|
||
|
+ else()
|
||
|
+ target_link_libraries(${file_we} PUBLIC PThreads4W::PThreads4W)
|
||
|
+ endif()
|
||
|
+ endif(USE_PTHREAD)
|
||
|
target_include_directories(${file_we} PRIVATE ${GENERATED_INCLUDE_DIR})
|
||
|
target_link_libraries(${file_we} PUBLIC scotch ptscotch ptscotcherrexit)
|
||
|
endfunction(add_ptscotch_exe)
|