summary refs log tree commit diff
path: root/pkgs/applications/science/misc/openmodelica/omcompiler/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/science/misc/openmodelica/omcompiler/default.nix')
-rw-r--r--pkgs/applications/science/misc/openmodelica/omcompiler/default.nix63
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" ];
+})