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)