diff options
Diffstat (limited to 'pkgs/applications/science/misc/openmodelica/omcompiler/default.nix')
-rw-r--r-- | pkgs/applications/science/misc/openmodelica/omcompiler/default.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix b/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix new file mode 100644 index 00000000000..b49c0f0f60c --- /dev/null +++ b/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix @@ -0,0 +1,63 @@ +{ stdenv +, lib +, gfortran +, flex +, bison +, jre8 +, blas +, lapack +, curl +, readline +, expat +, pkg-config +, buildPackages +, targetPackages +, libffi +, binutils +, mkOpenModelicaDerivation +}: +let + isCross = stdenv.buildPlatform != stdenv.hostPlatform; + nativeOMCompiler = buildPackages.openmodelica.omcompiler; +in +mkOpenModelicaDerivation ({ + pname = "omcompiler"; + omtarget = "omc"; + omdir = "OMCompiler"; + omdeps = [ ]; + omautoconf = true; + + nativeBuildInputs = [ + jre8 + gfortran + flex + bison + pkg-config + ] ++ lib.optional isCross nativeOMCompiler; + + buildInputs = [ targetPackages.stdenv.cc.cc blas lapack curl readline expat libffi binutils ]; + + postPatch = '' + sed -i -e '/^\s*AR=ar$/ s/ar/${stdenv.cc.targetPrefix}ar/ + /^\s*ar / s/ar /${stdenv.cc.targetPrefix}ar / + /^\s*ranlib/ s/ranlib /${stdenv.cc.targetPrefix}ranlib /' \ + $(find ./OMCompiler -name 'Makefile*') + ''; + + preFixup = '' + for entry in $(find $out -name libipopt.so); do + patchelf --shrink-rpath --allowed-rpath-prefixes /nix/store $entry + patchelf --set-rpath '$ORIGIN':"$(patchelf --print-rpath $entry)" $entry + done + ''; + + meta = with lib; { + description = "Modelica compiler from OpenModelica suite"; + homepage = "https://openmodelica.org"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ smironov ]; + platforms = platforms.linux; + }; +} // lib.optionalAttrs isCross { + configureFlags = [ "--with-omc=${nativeOMCompiler}/bin/omc" ]; +}) |