precice: fix output and cmake

This commit is contained in:
Scriptkiddi 2020-01-04 16:32:59 +01:00 committed by Lassulus
parent 45158b5c65
commit 50f3a9f100
2 changed files with 134 additions and 12 deletions

View File

@ -0,0 +1,112 @@
From 078cc28a3ece0dcc4033961090a6e5d6e63b3ec5 Mon Sep 17 00:00:00 2001
From: Scriptkiddi <fritz@otlinghaus.it>
Date: Sat, 4 Jan 2020 17:59:32 +0100
Subject: [PATCH] Fix the install target dirs to use the CMAKE flags
---
CMakeLists.txt | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 96b9d1b5..ff8191ae 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(preCICE VERSION 1.6.1 LANGUAGES CXX)
#
# Overview of this configuration
-#
+#
# PREAMBLE
# Setup Options
# Find Mandatory Dependencies
@@ -30,6 +30,7 @@ include(CheckCXX11Library)
include(CopyTargetProperty)
include(XSDKMacros)
include(Validation)
+include(GNUInstallDirs)
# CMake Policies
@@ -197,7 +198,7 @@ if(CMAKE_VERSION VERSION_LESS "3.11")
endif()
endif()
-# Add precice as an empty target
+# Add precice as an empty target
add_library(precice ${preCICE_DUMMY})
set_target_properties(precice PROPERTIES
# precice is a C++11 project
@@ -267,7 +268,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/cmake/DetectGitRevision.cmake)
configure_file("${PROJECT_SOURCE_DIR}/src/precice/impl/versions.hpp.in" "${PROJECT_BINARY_DIR}/src/precice/impl/versions.hpp" @ONLY)
# Includes Configuration
-target_include_directories(precice PUBLIC
+target_include_directories(precice PUBLIC
$<BUILD_INTERFACE:${preCICE_SOURCE_DIR}/src>
$<BUILD_INTERFACE:${preCICE_BINARY_DIR}/src>
$<INSTALL_INTERFACE:include>
@@ -282,7 +283,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/src/sources.cmake)
#
add_executable(binprecice "src/drivers/main.cpp")
-target_link_libraries(binprecice
+target_link_libraries(binprecice
PRIVATE
Threads::Threads
precice
@@ -365,18 +366,18 @@ include(${CMAKE_CURRENT_LIST_DIR}/src/tests.cmake)
# binprecice - the precice binary
install(TARGETS precice binprecice
EXPORT preciceTargets
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib
- RUNTIME DESTINATION bin
- PUBLIC_HEADER DESTINATION include/precice
- INCLUDES DESTINATION include/precice
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/precice
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/precice
)
if(PRECICE_InstallTest)
# Install the testprecice target
install(TARGETS testprecice
EXPORT preciceTargets
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
# Install the resources necessary for the tests
@@ -396,7 +397,7 @@ endif()
install(EXPORT preciceTargets
FILE preciceTargets.cmake
NAMESPACE precice::
- DESTINATION lib/cmake/precice
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/precice
)
# Generate a Package Config File for precice
@@ -408,7 +409,7 @@ write_basic_package_version_file("preciceConfigVersion.cmake"
# Install the Config and the ConfigVersion files
install(FILES "cmake/preciceConfig.cmake" "${preCICE_BINARY_DIR}/preciceConfigVersion.cmake"
- DESTINATION lib/cmake/precice
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/precice
)
# Setup the config in the build directory
@@ -477,7 +478,7 @@ configure_file(
"lib/pkgconfig/libprecice.pc"
@ONLY
)
-install(DIRECTORY "${preCICE_BINARY_DIR}/lib/pkgconfig"
+install(DIRECTORY "${preCICE_BINARY_DIR}/lib/pkgconfig"
DESTINATION lib
)
--
2.23.1

View File

@ -1,26 +1,35 @@
{ lib, stdenv, fetchFromGitHub, cmake, gcc, boost, eigen, libxml2, openmpi, python2, python2Packages }:
{ lib, stdenv, fetchFromGitHub, cmake, gcc, boost, eigen, libxml2, openmpi, python3, python3Packages }:
stdenv.mkDerivation rec {
pname = "precice";
version = "1.6.1";
version = "2020-01-20";
# Todo next release switch back to versioning but for python3 support master is needed
src = fetchFromGitHub {
owner = "precice";
repo = pname;
rev = "v${version}";
sha256 = "00631zw6cpm67j35cwad04nwgfcvlxa8p660fwz30pgj2hzdx3d2";
rev = "9f778290416416255fc73a495e962def301648b0";
sha256 = "1ij43qjbf1aq3lh91gqpviajc8lyl7qkxfccmj5md5vwf88vjaip";
};
preConfigure = ''
cmakeFlags="-DBUILD_SHARED_LIBS=ON -DPETSC=off"
'';
cmakeFlags = [
"-DBUILD_SHARED_LIBS=ON"
"-DPETSC=off"
"-DPYTHON_LIBRARIES=${python3.libPrefix}"
"-DPYTHON_INCLUDE_DIR=${python3}/include/${python3.libPrefix}m"
];
nativeBuildInputs = [ cmake gcc ];
buildInputs = [ boost eigen libxml2 openmpi python2 python2Packages.numpy ];
installPhase = ''
mkdir -p $out/lib
cp libprecice.so libprecice.so.1.6.1 $out/lib/
'';
buildInputs = [ boost eigen libxml2 openmpi python3 python3Packages.numpy ];
patches = [
./0001-Fix-the-install-target-dirs-to-use-the-CMAKE-flags.patch # CMake Packaging is not perfect upstream, after this PR it is https://github.com/precice/precice/pull/577/files
];
enableParallelBuilding = true;
postInstall = ''
substituteInPlace "$out"/lib/cmake/precice/preciceTargets.cmake \
--replace 'INTERFACE_INCLUDE_DIRECTORIES "''${_IMPORT_PREFIX}/include;' 'INTERFACE_INCLUDE_DIRECTORIES "'$out/include';'
''; # Check if this can be removed after upstream PR 577
meta = {
description = "preCICE stands for Precise Code Interaction Coupling Environment";
@ -31,3 +40,4 @@ stdenv.mkDerivation rec {
};
}