febio: 3.6 -> 4.7

Emily 64435f50 f832d1cd

+102 -59
+61 -16
pkgs/by-name/fe/febio/fix-cmake.patch
··· 1 + diff --git a/CMakeLists.txt b/CMakeLists.txt 2 + index c1bc953edf..f6aaf92fb5 100644 1 3 --- a/CMakeLists.txt 2 4 +++ b/CMakeLists.txt 3 - @@ -47,7 +47,7 @@ function(findLib libName libDir libOut) 5 + @@ -2,6 +2,7 @@ 6 + set(CMAKE_CXX_STANDARD 14) 7 + set(CMAKE_CXX_STANDARD_REQUIRED ON) 8 + mark_as_advanced(FORCE CMAKE_INSTALL_PREFIX) 9 + +include(GNUInstallDirs) 10 + 11 + project(FEBio) 12 + set(FEBIO_LIBS FEBioFluid FEBioLib FEBioMech FEBioMix FEBioOpt FECore NumCore FEAMR FEBioRVE FEImgLib) 13 + @@ -51,7 +52,7 @@ 4 14 find_library(TEMP NAMES ${libName}.lib ${ARGV3}.lib ${ARGV4}.lib ${ARGV5}.lib ${ARGV6}.lib 5 15 PATHS ${${libDir}} NO_DEFAULT_PATH) 6 16 else() ··· 9 19 PATHS ${${libDir}} NO_DEFAULT_PATH) 10 20 endif() 11 21 12 - diff --git a/FindDependencies.cmake b/FindDependencies.cmake 13 - index 2d644005f..7261ba923 100644 14 - --- a/FindDependencies.cmake 15 - +++ b/FindDependencies.cmake 16 - @@ -46,8 +46,8 @@ if(MKLROOT) 17 - NO_DEFAULT_PATH) 18 - 19 - find_library(MKL_OMP_LIB 20 - - NAMES iomp5 iomp5md libiomp5md.lib 21 - - PATHS ${MKLROOT}/../lib ${MKLROOT}/../compiler/lib 22 - + NAMES libiomp5@so@ libiomp5 iomp5 iomp5md libiomp5md.lib 23 - + PATHS ${MKLROOT}/lib ${MKLROOT}/../lib ${MKLROOT}/../compiler/lib 24 - PATH_SUFFIXES "intel64" "intel32" 25 - NO_DEFAULT_PATH 26 - DOC "MKL OMP Library") 22 + @@ -154,7 +155,7 @@ 23 + ##### Find Source Files ##### 24 + 25 + macro(findHdrSrc name) 26 + - file(GLOB HDR_${name} "${name}/*.h") 27 + + file(GLOB HDR_${name} "${name}/*.h" "${name}/*.hpp") 28 + file(GLOB SRC_${name} "${name}/*.cpp") 29 + endmacro() 30 + 31 + @@ -171,8 +172,9 @@ 32 + 33 + macro(addLib name TYPE) 34 + string(TOLOWER ${name} lname) 35 + - add_library(${lname} ${TYPE} ${HDR_${name}} ${SRC_${name}}) 36 + + add_library(${lname} ${TYPE} ${SRC_${name}}) 37 + set_property(TARGET ${lname} PROPERTY AUTOGEN_BUILD_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/AutoGen/${name}_autogen) 38 + + target_sources(${lname} PUBLIC FILE_SET HEADERS TYPE HEADERS FILES ${HDR_${name}}) 39 + 40 + if(NOT WIN32) 41 + set_property(TARGET ${lname} PROPERTY POSITION_INDEPENDENT_CODE ON) 42 + @@ -181,6 +183,8 @@ 43 + if(APPLE) 44 + target_link_libraries(${lname} PRIVATE "-undefined dynamic_lookup") 45 + endif() 46 + + 47 + + install(TARGETS ${lname} FILE_SET HEADERS) 48 + endmacro() 49 + 50 + foreach(name IN LISTS FEBIO_LIBS) 51 + @@ -194,6 +198,7 @@ 52 + ##### Set up executable compilation ##### 53 + file(GLOB SOURCES "FEBio/*.cpp") 54 + add_executable (febio4 ${SOURCES}) 55 + +install(TARGETS febio4) 56 + 57 + if(WIN32) 58 + target_compile_options(febio4 PRIVATE /openmp) 59 + @@ -269,7 +274,6 @@ 60 + mark_as_advanced(EXTRA_INC) 61 + 62 + ##### Setup includes, defnitions, and linking options ##### 63 + -include_directories(${PROJECT_SOURCE_DIR}) 64 + 65 + # Link LEVMAR 66 + if(USE_LEVMAR) 67 + @@ -438,3 +442,4 @@ 68 + file(WRITE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/febio.xml "${filedata}") 69 + endif() 70 + 71 + +install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/febio.xml TYPE BIN)
+41 -43
pkgs/by-name/fe/febio/package.nix
··· 1 1 { 2 2 lib, 3 3 stdenv, 4 + overrideSDK, 4 5 fetchFromGitHub, 6 + fetchpatch2, 7 + substituteAll, 5 8 cmake, 6 - boost, 7 - eigen, 8 - libxml2, 9 - mpi, 10 - python3, 9 + ninja, 10 + zlib, 11 + darwin, 11 12 mklSupport ? true, 12 13 mkl, 13 - substituteAll, 14 14 }: 15 15 16 - stdenv.mkDerivation rec { 16 + let 17 + stdenv' = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv; 18 + in 19 + 20 + stdenv'.mkDerivation (finalAttrs: { 17 21 pname = "FEBio"; 18 - version = "3.6"; 22 + version = "4.7"; 19 23 20 24 src = fetchFromGitHub { 21 25 owner = "febiosoftware"; 22 - repo = pname; 23 - rev = "v${version}"; 24 - sha256 = "187s4lyzr806xla3smq3lsvj3f6wxlhfkban89w0fnyfmfb8w9am"; 26 + repo = "FEBio"; 27 + rev = "v${finalAttrs.version}"; 28 + hash = "sha256-RRdIOyXg4jYW76ABfJdMfVtCYMLYFdvyOI98nHXCof8="; 25 29 }; 26 30 27 31 patches = [ 32 + # Fix library searching and installation 28 33 (substituteAll { 29 - src = ./fix-cmake.patch; # cannot find mkl libraries without this 34 + src = ./fix-cmake.patch; 30 35 so = stdenv.hostPlatform.extensions.sharedLibrary; 31 36 }) 32 - ]; 33 37 34 - cmakeFlags = lib.optional mklSupport "-DUSE_MKL=On" ++ lib.optional mklSupport "-DMKLROOT=${mkl}"; 35 - 36 - env.CXXFLAGS = lib.optionalString stdenv.isLinux "-include cstring"; 37 - 38 - installPhase = '' 39 - runHook preInstall 38 + # Fixed missing header include for strcpy 39 + # https://github.com/febiosoftware/FEBio/pull/92 40 + (fetchpatch2 { 41 + url = "https://github.com/febiosoftware/FEBio/commit/ad9e80e2aa8737828855458a703822f578db2fd3.patch?full_index=1"; 42 + hash = "sha256-/uLnJB/oAwLQnsZtJnUlaAEpyZVLG6o2riRwwMCH8rI="; 43 + }) 44 + ]; 40 45 41 - mkdir -p $out/include 42 - cp -R lib bin $out/ 43 - cp -R ../FECore \ 44 - ../FEBioFluid \ 45 - ../FEBioLib \ 46 - ../FEBioMech \ 47 - ../FEBioMix \ 48 - ../FEBioOpt \ 49 - ../FEBioPlot \ 50 - ../FEBioXML \ 51 - ../NumCore \ 52 - $out/include 46 + cmakeFlags = lib.optionals mklSupport [ 47 + (lib.cmakeBool "USE_MKL" true) 48 + (lib.cmakeFeature "MKLROOT" "${mkl}") 49 + ]; 53 50 54 - runHook postInstall 55 - ''; 51 + nativeBuildInputs = [ 52 + cmake 53 + ninja 54 + ]; 56 55 57 - nativeBuildInputs = [ cmake ]; 58 - buildInputs = [ 59 - boost 60 - eigen 61 - libxml2 62 - mpi 63 - python3 64 - python3.pkgs.numpy 65 - ] ++ lib.optional mklSupport mkl; 56 + buildInputs = 57 + [ zlib ] 58 + ++ lib.optionals mklSupport [ mkl ] 59 + ++ lib.optionals stdenv.isDarwin [ 60 + darwin.apple_sdk.frameworks.CoreGraphics 61 + darwin.apple_sdk.frameworks.CoreVideo 62 + darwin.apple_sdk.frameworks.Accelerate 63 + ]; 66 64 67 65 meta = { 68 66 description = "FEBio Suite Solver"; ··· 71 69 platforms = lib.platforms.unix; 72 70 maintainers = with lib.maintainers; [ Scriptkiddi ]; 73 71 }; 74 - } 72 + })