git: a51acec18b0e - main - science/openmodelica: New port: Modelica-based modeling and simulation environment

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Mon, 12 Dec 2022 20:41:15 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a51acec18b0e393659f8d346b37fb75b43f3c31b

commit a51acec18b0e393659f8d346b37fb75b43f3c31b
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-12-12 15:44:12 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-12-12 20:41:12 +0000

    science/openmodelica: New port: Modelica-based modeling and simulation environment
---
 science/Makefile                                   |    1 +
 science/openmodelica/Makefile                      |  111 ++
 science/openmodelica/distinfo                      |   23 +
 science/openmodelica/files/example-hello-world.mo  |    5 +
 .../files/example-second-order-system.mo           |   30 +
 science/openmodelica/files/gcc.sh                  |    3 +
 ...MIL_ThirdParty_Expat_expat-2.1.0_CMakeLists.txt |   10 +
 ...ty_Ipopt-3.13.4_ThirdParty_MUMPS_CMakeLists.txt |   11 +
 .../patch-OMCompiler_Compiler_boot_CMakeLists.txt  |   13 +
 ...atch-OMCompiler_Compiler_runtime_CMakeLists.txt |   15 +
 ...atch-OMCompiler_Compiler_runtime_settingsimpl.c |   20 +
 .../patch-OMCompiler_Compiler_runtime_systemimpl.c |   21 +
 ...OMEditLIB_Simulation_SimulationOutputWidget.cpp |   13 +
 .../patch-OMEdit_OMEditLIB_Util_Utilities.cpp      |   11 +
 ...ch-OMSimulator_OMTLMSimulator_3rdParty_Makefile |   11 +
 .../patch-OMSimulator_OMTLMSimulator_Makefile.head |   15 +
 ...LMSimulator_common_Communication_TLMCommUtil.cc |   11 +
 ...atch-OMSimulator_OMTLMSimulator_common_Makefile |   24 +
 science/openmodelica/pkg-descr                     |    7 +
 science/openmodelica/pkg-message                   |   16 +
 science/openmodelica/pkg-plist                     | 1105 ++++++++++++++++++++
 21 files changed, 1476 insertions(+)

diff --git a/science/Makefile b/science/Makefile
index 66c51566ca33..60c62f11692a 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -218,6 +218,7 @@
     SUBDIR += openems
     SUBDIR += openkim-models
     SUBDIR += openmc
+    SUBDIR += openmodelica
     SUBDIR += openmolcas
     SUBDIR += openmx
     SUBDIR += opensim-core
diff --git a/science/openmodelica/Makefile b/science/openmodelica/Makefile
new file mode 100644
index 000000000000..f04c2a539bab
--- /dev/null
+++ b/science/openmodelica/Makefile
@@ -0,0 +1,111 @@
+PORTNAME=	openmodelica
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.20.0
+CATEGORIES=	science cad java
+MASTER_SITES=	https://build.openmodelica.org/omc/bootstrap/:bootstrap
+DISTFILES=	sources.tar.gz:bootstrap
+DIST_SUBDIR=	${PORTNAME}-${PORTVERSION}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Modelica-based modeling and simulation environment
+WWW=		https://openmodelica.org/
+
+LICENSE=	OSMC-PL
+LICENSE_NAME=	Public license for OpenModelica
+LICENSE_TEXT=	See https://github.com/OpenModelica/OpenModelica/blob/master/OSMC-License.txt
+LICENSE_PERMS=	auto-accept dist-mirror dist-sell pkg-mirror pkg-sell
+
+BUILD_DEPENDS=	asciidoc:textproc/asciidoc \
+		autoconf>0:devel/autoconf \
+		automake:devel/automake \
+		gmake:devel/gmake \
+		libtool>0:devel/libtool \
+		${LOCALBASE}/include/readline/readline.h:devel/readline
+LIB_DEPENDS=	\
+		libboost_filesystem.so:devel/boost-libs \
+		libcurl.so:ftp/curl \
+		libosg.so:graphics/osg \
+		libuuid.so:misc/e2fsprogs-libuuid
+RUN_DEPENDS=	bash:shells/bash \
+		gmake:devel/gmake
+
+USES=		cmake compiler:c++14-lang dos2unix iconv fortran gettext-runtime gl gnome blaslapack localbase:ldflags qt:5 pkgconfig python:build shebangfix
+USE_QT=		concurrent core gui network opengl printsupport svg webkit widgets xml xmlpatterns buildtools:build qmake:build
+USE_GL=		gl opengl
+USE_GNOME=	libxml2
+USE_JAVA=	yes
+USE_LDCONFIG=	${PREFIX}/lib/omc ${PREFIX}/lib/omc/OMSimulator ${PREFIX}/lib/omc/cpp ${PREFIX}/lib/omc/ffi # https://github.com/OpenModelica/OpenModelica/issues/9925
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	OpenModelica
+GH_PROJECT=	OpenModelica
+
+DOS2UNIX_FILES=	OMSimulator/OMTLMSimulator/3rdParty/Makefile \
+		OMCompiler/3rdParty/FMIL/ThirdParty/Expat/expat-2.1.0/CMakeLists.txt
+
+SHEBANG_GLOB=	*.sh *.in *.ac
+SHEBANG_FILES=	OMSimulator/OMTLMSimulator/OMFMISimulatorWrapper/StartTLMOMFMISimulatorWrapper \
+		OMSimulator/OMTLMSimulator/Hopsan/StartTLMHopsan \
+		OMSimulator/testsuite/tlm/StartTLMFmiWrapper \
+		OMSimulator/OMTLMSimulator/FMIWrapper/StartTLMFmiWrapper \
+		OMSimulator/OMTLMSimulator/OpenModelica/StartTLMOpenModelica
+
+GH_TUPLE=	\
+		OpenModelica:OMOptim:4116ef7:OMOptim/OMOptim \
+			OpenModelica:OpenModelica-common:08a0180:OMOptim_common/OMOptim/common \
+		OpenModelica:OMSimulator:af996ad:OMSimulator/OMSimulator \
+			OpenModelica:OMSimulator-3rdParty:6202ca1:OMSimulator_3rdParty/OMSimulator/3rdParty \
+			OpenModelica:OMTLMSimulator:07d5353:OMSimulator_OMTLMSimulator/OMSimulator/OMTLMSimulator \
+		OpenModelica:OMCompiler-3rdParty:a60ba6c:OMCompiler_3rdParty/OMCompiler/3rdParty \
+		OpenModelica:OMSens:66b920b:OMSens/OMSens \
+		OpenModelica:OMSens_Qt:ef85128:OMSens_Qt/OMSens_Qt \
+			OpenModelica:OpenModelica-common:08a0180:OMSens_Qt_common/OMSens_Qt/common
+
+# this should change make program everywhere, but it doesn't,
+# hence the patches in OMCompiler/Compiler/runtime/CMakeLists.txt, OMEdit/OMEditLIB/Simulation/SimulationOutputWidget.cpp
+CMAKE_ARGS=	-DCMAKE_MAKE_PROGRAM=gmake \
+		-DPython_EXECUTABLE=${PYTHON_CMD}
+
+LDFLAGS+=	-lexecinfo -lintl -pthread
+
+BINARY_ALIAS=	make=${GMAKE} gcc=${FILESDIR}/gcc.sh git=false
+
+CONFLICTS_BUILD=	sundials
+
+post-extract:
+	# remove stray *.orig files
+	@${FIND} ${WRKSRC} -name "*.orig" -delete
+	# remove rtime that isn't used on FreeBSD
+	@${RM} -r ${WRKSRC}/OMSimulator/OMTLMSimulator/3rdParty/rtime
+	# create symlink for sources.tar.gz
+	@${MKDIR} ${WRKSRC}/OMCompiler/Compiler/boot/bomc
+	@${LN} -s ${DISTDIR}/${DIST_SUBDIR}/sources.tar.gz ${WRKSRC}/OMCompiler/Compiler/boot/bomc/sources.tar.gz
+
+post-patch:
+	# fix bash shebangs
+	@${REINPLACE_CMD} -e 's|#!/bin/bash|#!${LOCALBASE}/bin/bash|' \
+		${WRKSRC}/OMCompiler/Examples/GenerateDoc.mos \
+		${WRKSRC}/OMCompiler/3rdParty/tbb/build/generate_tbbvars.sh
+	# add path to libgfortran to link flags for OM internal builds
+	@${REINPLACE_CMD} \
+		-e 's|@RT_LDFLAGS_GENERATED_CODE_SIM@|& -L${LOCALBASE}/lib/gcc${FC:S/gfortran//}|' \
+		${WRKSRC}/OMCompiler/Compiler/Util/Autoconf.mo.in
+
+post-install:
+	# workaround for https://github.com/OpenModelica/OpenModelica/issues/9919
+	cd ${STAGEDIR}${PREFIX} && ${CHMOD} +x \
+		bin/OMSimulator bin/OMSimulatorPython3 bin/StartTLMFmiWrapper
+	# remove unnecessary files
+	${RM} -r \
+		${STAGEDIR}${PREFIX}/share/zmq \
+		${STAGEDIR}${PREFIX}/doc \
+		${STAGEDIR}${PREFIX}/share/doc
+	# remove empty directories
+	${FIND} ${STAGEDIR}${PREFIX}/include -type d -empty -delete
+	# strip binaries
+	cd ${STAGEDIR}${PREFIX} && ${STRIP_CMD} \
+		bin/OMSimulator bin/FMIWrapper \
+		lib/omc/OMSimulator/libomtlmsimulator.so lib/omc/OMSimulator/libOMSimulator.so \
+		lib/omc/libomtlmsimulator.so lib/omc/libOMSimulator.so
+
+.include <bsd.port.mk>
diff --git a/science/openmodelica/distinfo b/science/openmodelica/distinfo
new file mode 100644
index 000000000000..d80c68babd09
--- /dev/null
+++ b/science/openmodelica/distinfo
@@ -0,0 +1,23 @@
+TIMESTAMP = 1670827690
+SHA256 (openmodelica-1.20.0/sources.tar.gz) = d41b20ccb9395189fa1edd6dd86ae09023571876f2504904366a91d3491a8c19
+SIZE (openmodelica-1.20.0/sources.tar.gz) = 3322762
+SHA256 (openmodelica-1.20.0/OpenModelica-OpenModelica-v1.20.0_GH0.tar.gz) = 0b04923cc4d0b5d9e29679864a1d1b8e6ec8ecd7f456779dfe5212886f644f5c
+SIZE (openmodelica-1.20.0/OpenModelica-OpenModelica-v1.20.0_GH0.tar.gz) = 92236817
+SHA256 (openmodelica-1.20.0/OpenModelica-OMOptim-4116ef7_GH0.tar.gz) = 6562015ccf8c8042fe7a8b881bdd3d4237dea4b6d4ed95e1eadeb5338521a911
+SIZE (openmodelica-1.20.0/OpenModelica-OMOptim-4116ef7_GH0.tar.gz) = 4021972
+SHA256 (openmodelica-1.20.0/OpenModelica-OpenModelica-common-08a0180_GH0.tar.gz) = ef6045612777ede7cab882ca1bd665ba5c6d5ebfa4760be3bf797558d71fd9fe
+SIZE (openmodelica-1.20.0/OpenModelica-OpenModelica-common-08a0180_GH0.tar.gz) = 36101
+SHA256 (openmodelica-1.20.0/OpenModelica-OMSimulator-af996ad_GH0.tar.gz) = ba33fed5de32e0957060caef6742048037f0f47cd90f6bb7630efb4ba0944740
+SIZE (openmodelica-1.20.0/OpenModelica-OMSimulator-af996ad_GH0.tar.gz) = 87888293
+SHA256 (openmodelica-1.20.0/OpenModelica-OMSimulator-3rdParty-6202ca1_GH0.tar.gz) = f1c7320dd8b8bf491a8fe24157e7b79a879740834422b418654f8ccea06f329f
+SIZE (openmodelica-1.20.0/OpenModelica-OMSimulator-3rdParty-6202ca1_GH0.tar.gz) = 12841559
+SHA256 (openmodelica-1.20.0/OpenModelica-OMTLMSimulator-07d5353_GH0.tar.gz) = 0ae4867efb68e6452f55470c35f8b10ce4ff374a57204595225e0ac75f7acec3
+SIZE (openmodelica-1.20.0/OpenModelica-OMTLMSimulator-07d5353_GH0.tar.gz) = 45578453
+SHA256 (openmodelica-1.20.0/OpenModelica-OMCompiler-3rdParty-a60ba6c_GH0.tar.gz) = cca8f2516d8c4f84c5bf5199e1c7c9ff36165f6ed97f27c7679550178c9655a7
+SIZE (openmodelica-1.20.0/OpenModelica-OMCompiler-3rdParty-a60ba6c_GH0.tar.gz) = 41909764
+SHA256 (openmodelica-1.20.0/OpenModelica-OMSens-66b920b_GH0.tar.gz) = f0982350a9ea20a24e1be408fbadd9562373a29cbdecb8a9981a5562b24af73c
+SIZE (openmodelica-1.20.0/OpenModelica-OMSens-66b920b_GH0.tar.gz) = 8870024
+SHA256 (openmodelica-1.20.0/OpenModelica-OMSens_Qt-ef85128_GH0.tar.gz) = a6db8a107098a1f2c999923e020a5f337485a00057771ac9407a8af373278493
+SIZE (openmodelica-1.20.0/OpenModelica-OMSens_Qt-ef85128_GH0.tar.gz) = 210584
+SHA256 (openmodelica-1.20.0/OpenModelica-OpenModelica-common-08a0180_GH0.tar.gz) = ef6045612777ede7cab882ca1bd665ba5c6d5ebfa4760be3bf797558d71fd9fe
+SIZE (openmodelica-1.20.0/OpenModelica-OpenModelica-common-08a0180_GH0.tar.gz) = 36101
diff --git a/science/openmodelica/files/example-hello-world.mo b/science/openmodelica/files/example-hello-world.mo
new file mode 100644
index 000000000000..05c71e79f69d
--- /dev/null
+++ b/science/openmodelica/files/example-hello-world.mo
@@ -0,0 +1,5 @@
+class HelloWorld "A simple equation"
+  Real x(start=1);
+equation
+  der(x)= -x;
+end HelloWorld;
diff --git a/science/openmodelica/files/example-second-order-system.mo b/science/openmodelica/files/example-second-order-system.mo
new file mode 100644
index 000000000000..b90c4466d1f9
--- /dev/null
+++ b/science/openmodelica/files/example-second-order-system.mo
@@ -0,0 +1,30 @@
+model SecondOrderSystem "A second order rotational system"
+  type Angle=Real(unit="rad");
+  type AngularVelocity=Real(unit="rad/s");
+  type Inertia=Real(unit="kg.m2");
+  type Stiffness=Real(unit="N.m/rad");
+  type Damping=Real(unit="N.m.s/rad");
+  parameter Inertia J1=0.4 "Moment of inertia for inertia 1";
+  parameter Inertia J2=1.0 "Moment of inertia for inertia 2";
+  parameter Stiffness c1=11 "Spring constant for spring 1";
+  parameter Stiffness c2=5 "Spring constant for spring 2";
+  parameter Damping d1=0.2 "Damping for damper 1";
+  parameter Damping d2=1.0 "Damping for damper 2";
+  Angle phi1 "Angle for inertia 1";
+  Angle phi2 "Angle for inertia 2";
+  AngularVelocity omega1 "Velocity of inertia 1";
+  AngularVelocity omega2 "Velocity of inertia 2";
+initial equation
+  phi1 = 0;
+  phi2 = 1;
+  omega1 = 0;
+  omega2 = 0;
+equation
+  // Equations for inertia 1
+  omega1 = der(phi1);
+  J1*der(omega1) = c1*(phi2-phi1)+d1*der(phi2-phi1);
+  // Equations for inertia 2
+  omega2 = der(phi2);
+  J2*der(omega2) = c1*(phi1-phi2)+d1*der(phi1-phi2)-c2*phi2-d2*der(phi2);
+end SecondOrderSystem;
+
diff --git a/science/openmodelica/files/gcc.sh b/science/openmodelica/files/gcc.sh
new file mode 100755
index 000000000000..c9ce337f84fd
--- /dev/null
+++ b/science/openmodelica/files/gcc.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/usr/bin/cc "$@" -I/usr/local/include -L/usr/local/lib
diff --git a/science/openmodelica/files/patch-OMCompiler_3rdParty_FMIL_ThirdParty_Expat_expat-2.1.0_CMakeLists.txt b/science/openmodelica/files/patch-OMCompiler_3rdParty_FMIL_ThirdParty_Expat_expat-2.1.0_CMakeLists.txt
new file mode 100644
index 000000000000..ca01e0fea225
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_3rdParty_FMIL_ThirdParty_Expat_expat-2.1.0_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- OMCompiler/3rdParty/FMIL/ThirdParty/Expat/expat-2.1.0/CMakeLists.txt.orig	2022-12-10 10:46:09 UTC
++++ OMCompiler/3rdParty/FMIL/ThirdParty/Expat/expat-2.1.0/CMakeLists.txt
+@@ -62,6 +62,7 @@ else(BUILD_shared)
+ endif(BUILD_shared)
+ 
+ add_library(expat ${_SHARED} ${expat_SRCS})
++target_include_directories(expat PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/lib)
+ 
+ if(NOT BUILD_shared)
+   target_compile_definitions(expat PUBLIC XML_STATIC)
diff --git a/science/openmodelica/files/patch-OMCompiler_3rdParty_Ipopt-3.13.4_ThirdParty_MUMPS_CMakeLists.txt b/science/openmodelica/files/patch-OMCompiler_3rdParty_Ipopt-3.13.4_ThirdParty_MUMPS_CMakeLists.txt
new file mode 100644
index 000000000000..4bc9b79ee2e1
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_3rdParty_Ipopt-3.13.4_ThirdParty_MUMPS_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- OMCompiler/3rdParty/Ipopt-3.13.4/ThirdParty/MUMPS/CMakeLists.txt.orig	2022-12-09 19:22:30 UTC
++++ OMCompiler/3rdParty/Ipopt-3.13.4/ThirdParty/MUMPS/CMakeLists.txt
+@@ -143,7 +143,7 @@ endif ()
+ target_link_libraries(coinmumps PUBLIC ${LAPACK_LIBRARIES})
+ 
+ if(THREADS_HAVE_PTHREAD_ARG)
+-  target_compile_options(coinmumps PUBLIC pthread)
++  target_compile_options(coinmumps PUBLIC ${CMAKE_THREAD_LIBS_INIT})
+ endif()
+ if(CMAKE_THREAD_LIBS_INIT)
+   target_link_libraries(coinmumps PUBLIC ${CMAKE_THREAD_LIBS_INIT})
diff --git a/science/openmodelica/files/patch-OMCompiler_Compiler_boot_CMakeLists.txt b/science/openmodelica/files/patch-OMCompiler_Compiler_boot_CMakeLists.txt
new file mode 100644
index 000000000000..3ceec5fe1769
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_Compiler_boot_CMakeLists.txt
@@ -0,0 +1,13 @@
+--- OMCompiler/Compiler/boot/CMakeLists.txt.orig	2022-12-12 07:29:42 UTC
++++ OMCompiler/Compiler/boot/CMakeLists.txt
+@@ -9,9 +9,9 @@ else()
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bomc/)
+ file(DOWNLOAD https://build.openmodelica.org/omc/bootstrap/sources.tar.gz
+      ${CMAKE_CURRENT_SOURCE_DIR}/bomc/sources.tar.gz SHOW_PROGRESS)
++endif()
+ execute_process(COMMAND tar xzf sources.tar.gz
+                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bomc/)
+-endif()
+ 
+ # OpenModelicaBootstrappingHeader.h should probably be added to source control and
+ # updated just like the bootstrap-source c files.
diff --git a/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_CMakeLists.txt b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_CMakeLists.txt
new file mode 100644
index 000000000000..5ea89f69a1c1
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_CMakeLists.txt
@@ -0,0 +1,15 @@
+--- OMCompiler/Compiler/runtime/CMakeLists.txt.orig	2022-12-11 22:46:50 UTC
++++ OMCompiler/Compiler/runtime/CMakeLists.txt
+@@ -242,7 +242,11 @@ endif()
+ if (MINGW)
+   set(OMC_MAKE_EXE "mingw32-make")
+ else()
+-  set(OMC_MAKE_EXE "make")
++  if(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD")
++    set(OMC_MAKE_EXE "gmake")
++  else()
++    set(OMC_MAKE_EXE "make")
++  endif()
+ endif()
+ 
+ set(OMC_CMAKE_EXE "${CMAKE_COMMAND}")
diff --git a/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_settingsimpl.c b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_settingsimpl.c
new file mode 100644
index 000000000000..f00d516472ef
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_settingsimpl.c
@@ -0,0 +1,20 @@
+--- OMCompiler/Compiler/runtime/settingsimpl.c.orig	2022-12-10 10:59:38 UTC
++++ OMCompiler/Compiler/runtime/settingsimpl.c
+@@ -90,7 +90,7 @@ const char* SettingsImpl__getInstallationDirectoryPath
+   return path &&*path ? path : "OPENMODELICA_BOOTSTRAPPING_STAGE_NO_OPENMODELICAHOME";
+ }
+ #else
+-#if (defined(__linux__) || defined(__APPLE_CC__))
++#if (defined(__linux__) || defined(__APPLE_CC__) || defined(__FreeBSD__))
+ /* Helper function to strip /bin/... or /lib/... from the executable path of omc */
+ static void stripbinpath(char *omhome)
+ {
+@@ -112,7 +112,7 @@ static void stripbinpath(char *omhome)
+ #endif
+ 
+ /* Do not free or modify the returned variable of getInstallationDirectoryPath. It's part of the environment! */
+-#if defined(__linux__) || defined(__APPLE_CC__)
++#if defined(__linux__) || defined(__APPLE_CC__) || defined(__FreeBSD__)
+ #include <dlfcn.h>
+ 
+ const char* SettingsImpl__getInstallationDirectoryPath(void) {
diff --git a/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_systemimpl.c b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_systemimpl.c
new file mode 100644
index 000000000000..c54f136f2489
--- /dev/null
+++ b/science/openmodelica/files/patch-OMCompiler_Compiler_runtime_systemimpl.c
@@ -0,0 +1,21 @@
+- make it single-threaded as a workaround for https://github.com/OpenModelica/OpenModelica/issues/9922
+
+--- OMCompiler/Compiler/runtime/systemimpl.c.orig	2022-12-11 20:16:40 UTC
++++ OMCompiler/Compiler/runtime/systemimpl.c
+@@ -775,6 +775,7 @@ char* System_popen(threadData_t *threadData, const cha
+ 
+ int System_numProcessors(void)
+ {
++#if 0
+ #if WITH_HWLOC==1
+   hwloc_topology_t topology;
+   if (0==hwloc_topology_init(&topology) && 0==hwloc_topology_load(topology)) {
+@@ -793,6 +794,8 @@ int System_numProcessors(void)
+ #else
+   return intMax(sysconf(_SC_NPROCESSORS_ONLN), 1);
+ #endif
++#endif
++  return 1;
+ }
+ 
+ struct systemCallWorkerThreadArgs {
diff --git a/science/openmodelica/files/patch-OMEdit_OMEditLIB_Simulation_SimulationOutputWidget.cpp b/science/openmodelica/files/patch-OMEdit_OMEditLIB_Simulation_SimulationOutputWidget.cpp
new file mode 100644
index 000000000000..a80b0dd09db8
--- /dev/null
+++ b/science/openmodelica/files/patch-OMEdit_OMEditLIB_Simulation_SimulationOutputWidget.cpp
@@ -0,0 +1,13 @@
+--- OMEdit/OMEditLIB/Simulation/SimulationOutputWidget.cpp.orig	2022-12-12 04:38:34 UTC
++++ OMEdit/OMEditLIB/Simulation/SimulationOutputWidget.cpp
+@@ -577,8 +577,8 @@ void SimulationOutputWidget::compileModel()
+     args << "-j" + numProcs;
+   }
+   args << "-f" << mSimulationOptions.getOutputFileName() + ".makefile";
+-  writeCompilationOutput(QString("%1 %2\n").arg("make").arg(args.join(" ")), Qt::blue);
+-  mpCompilationProcess->start("make", args);
++  writeCompilationOutput(QString("%1 %2\n").arg("gmake").arg(args.join(" ")), Qt::blue);
++  mpCompilationProcess->start("gmake", args);
+ #endif
+ }
+ 
diff --git a/science/openmodelica/files/patch-OMEdit_OMEditLIB_Util_Utilities.cpp b/science/openmodelica/files/patch-OMEdit_OMEditLIB_Util_Utilities.cpp
new file mode 100644
index 000000000000..b90236c4886e
--- /dev/null
+++ b/science/openmodelica/files/patch-OMEdit_OMEditLIB_Util_Utilities.cpp
@@ -0,0 +1,11 @@
+--- OMEdit/OMEditLIB/Util/Utilities.cpp.orig	2022-12-11 19:01:44 UTC
++++ OMEdit/OMEditLIB/Util/Utilities.cpp
+@@ -1012,7 +1012,7 @@ QIcon Utilities::FileIconProvider::FileIconProviderImp
+   // Get icon from OS.
+   QIcon icon;
+   // File icons are unknown on linux systems.
+-#if defined(Q_OS_LINUX)
++#if defined(Q_OS_UNIX)
+   icon = isDir ? QFileIconProvider::icon(fileInfo) : mUnknownFileIcon;
+ #else
+   icon = QFileIconProvider::icon(fileInfo);
diff --git a/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_3rdParty_Makefile b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_3rdParty_Makefile
new file mode 100644
index 000000000000..42b3257f4054
--- /dev/null
+++ b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_3rdParty_Makefile
@@ -0,0 +1,11 @@
+--- OMSimulator/OMTLMSimulator/3rdParty/Makefile.orig	2022-12-11 02:57:08 UTC
++++ OMSimulator/OMTLMSimulator/3rdParty/Makefile
+@@ -8,7 +8,7 @@ ifeq ($(detected_OS),Darwin)
+   #Dont build rtime on Mac
+   buildlibs=misc/src
+ else
+-  buildlibs=misc/src rtime
++  buildlibs=misc/src
+ endif
+ else
+   # This is for BEAST
diff --git a/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_Makefile.head b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_Makefile.head
new file mode 100644
index 000000000000..3449b2493dad
--- /dev/null
+++ b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_Makefile.head
@@ -0,0 +1,15 @@
+--- OMSimulator/OMTLMSimulator/Makefile.head.orig	2022-12-11 03:25:38 UTC
++++ OMSimulator/OMTLMSimulator/Makefile.head
+@@ -100,7 +100,12 @@ ifeq ($(detected_OS),Darwin)
+ EXTRAFLAGS += -DNO_RTIME
+ RTIMELIB =
+ else
++ifeq ($(detected_OS),FreeBSD)
++EXTRAFLAGS += -DNO_RTIME
++RTIMELIB =
++else
+ RTIMELIB = -lrtime
++endif
+ endif
+ 
+ override CC += $(CFLAGS) $(EXTRAFLAGS)
diff --git a/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Communication_TLMCommUtil.cc b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Communication_TLMCommUtil.cc
new file mode 100644
index 000000000000..3c92ea110570
--- /dev/null
+++ b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Communication_TLMCommUtil.cc
@@ -0,0 +1,11 @@
+--- OMSimulator/OMTLMSimulator/common/Communication/TLMCommUtil.cc.orig	2022-12-11 03:21:23 UTC
++++ OMSimulator/OMTLMSimulator/common/Communication/TLMCommUtil.cc
+@@ -42,7 +42,7 @@ void TLMCommUtil::SendMessage(TLMMessage& mess) {
+         TLMCommUtil::ByteSwap(&mess.Header.TLMInterfaceID, sizeof(mess.Header.TLMInterfaceID));
+     }
+ 
+-#if defined( WIN32) || defined(__APPLE__)
++#if defined( WIN32) || defined(__APPLE__) || defined(__FreeBSD__)
+     const int MSG_MORE = 0;
+ #endif
+ 
diff --git a/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Makefile b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Makefile
new file mode 100644
index 000000000000..0d4c1a538ad5
--- /dev/null
+++ b/science/openmodelica/files/patch-OMSimulator_OMTLMSimulator_common_Makefile
@@ -0,0 +1,24 @@
+--- OMSimulator/OMTLMSimulator/common/Makefile.orig	2022-12-11 03:01:49 UTC
++++ OMSimulator/OMTLMSimulator/common/Makefile
+@@ -13,7 +13,7 @@ endif
+ include $(MAKEFILEHEADHOME)/Makefile.head
+ 
+ MISCHOME = ../3rdParty/misc
+-TIMEHOME = ../3rdParty/rtime
++#TIMEHOME = ../3rdParty/rtime
+ 
+ SRCCLT= Plugin/PluginImplementer.cc \
+ 	Plugin/MonitoringPluginImplementer.cc \
+@@ -74,11 +74,10 @@ OBJS = $(SRC:%.cc=$(ABI)/%.o)
+ 
+ INCLUDES= -I. \
+ 	-I$(MISCHOME)/include \
+-	-I$(TIMEHOME) \
++	-DNO_RTIME \
+ 	$(INCLPTHREAD)
+ 
+ LIBS = 	-L$(MISCHOME)/lib/$(ABI) \
+-	-L$(TIMEHOME)/lib/$(ABI) \
+ 	-L$(ABI) \
+ 	-lmisc $(RTIMELIB)
+ 
diff --git a/science/openmodelica/pkg-descr b/science/openmodelica/pkg-descr
new file mode 100644
index 000000000000..5bb5d3be6940
--- /dev/null
+++ b/science/openmodelica/pkg-descr
@@ -0,0 +1,7 @@
+OPENMODELICA is an open-source Modelica-based modeling and simulation
+environment intended for industrial and academic usage.
+
+The goal with the OpenModelica effort is to create a comprehensive Open Source
+Modelica modeling, compilation and simulation environment based on free software
+distributed in binary and source code form for research, teaching, and
+industrial usage.
diff --git a/science/openmodelica/pkg-message b/science/openmodelica/pkg-message
new file mode 100644
index 000000000000..ebc964b40671
--- /dev/null
+++ b/science/openmodelica/pkg-message
@@ -0,0 +1,16 @@
+[
+{ type: install
+  message: <<EOM
+You installed OpenModelica: a modeling and simulation environment.
+
+The first program to run is OMEdit.
+
+In OMEdit you need to:
+- go to the File/Manage Libraries menu item and install the 'Modelica' library
+- go to the File/System Libraries and enable several libraries under it
+
+This should make several library items appear in the left pane in OMEdit.
+
+EOM
+}
+]
diff --git a/science/openmodelica/pkg-plist b/science/openmodelica/pkg-plist
new file mode 100644
index 000000000000..2d1b53adea18
--- /dev/null
+++ b/science/openmodelica/pkg-plist
@@ -0,0 +1,1105 @@
+bin/FMIWrapper
+bin/OMEdit
+bin/OMNotebook
+bin/OMPlot
+bin/OMShell
+bin/OMSimulator
+bin/OMSimulatorPython3
+bin/StartTLMFmiWrapper
+bin/omc
+bin/omc-diff
+include/omc/FMI/fmi_import_context.h
+include/omc/FMI/fmi_import_util.h
+include/omc/FMI/fmi_util.h
+include/omc/FMI/fmi_version.h
+include/omc/FMI1/fmi1_enums.h
+include/omc/FMI1/fmi1_functions.h
+include/omc/FMI1/fmi1_import.h
+include/omc/FMI1/fmi1_import_capabilities.h
+include/omc/FMI1/fmi1_import_capi.h
+include/omc/FMI1/fmi1_import_convenience.h
+include/omc/FMI1/fmi1_import_cosim.h
+include/omc/FMI1/fmi1_import_type.h
+include/omc/FMI1/fmi1_import_unit.h
+include/omc/FMI1/fmi1_import_variable.h
+include/omc/FMI1/fmi1_import_variable_list.h
+include/omc/FMI1/fmi1_import_vendor_annotations.h
+include/omc/FMI1/fmi1_types.h
+include/omc/FMI1/fmiFunctions.h
+include/omc/FMI1/fmiModelFunctions.h
+include/omc/FMI1/fmiModelTypes.h
+include/omc/FMI1/fmiPlatformTypes.h
+include/omc/FMI2/fmi2FunctionTypes.h
+include/omc/FMI2/fmi2Functions.h
+include/omc/FMI2/fmi2TypesPlatform.h
+include/omc/FMI2/fmi2_enums.h
+include/omc/FMI2/fmi2_functions.h
+include/omc/FMI2/fmi2_import.h
+include/omc/FMI2/fmi2_import_capi.h
+include/omc/FMI2/fmi2_import_convenience.h
+include/omc/FMI2/fmi2_import_type.h
+include/omc/FMI2/fmi2_import_unit.h
+include/omc/FMI2/fmi2_import_variable.h
+include/omc/FMI2/fmi2_import_variable_list.h
+include/omc/FMI2/fmi2_types.h
+include/omc/FMI2/fmi2_xml_callbacks.h
+include/omc/Ipopt/IpAlgBuilder.hpp
+include/omc/Ipopt/IpAlgStrategy.hpp
+include/omc/Ipopt/IpAlgTypes.hpp
+include/omc/Ipopt/IpAugSystemSolver.hpp
+include/omc/Ipopt/IpBlas.hpp
+include/omc/Ipopt/IpCachedResults.hpp
+include/omc/Ipopt/IpCompoundMatrix.hpp
+include/omc/Ipopt/IpCompoundSymMatrix.hpp
+include/omc/Ipopt/IpCompoundVector.hpp
+include/omc/Ipopt/IpConvCheck.hpp
+include/omc/Ipopt/IpDebug.hpp
+include/omc/Ipopt/IpDenseVector.hpp
+include/omc/Ipopt/IpDiagMatrix.hpp
+include/omc/Ipopt/IpEqMultCalculator.hpp
+include/omc/Ipopt/IpException.hpp
+include/omc/Ipopt/IpExpansionMatrix.hpp
+include/omc/Ipopt/IpGenTMatrix.hpp
+include/omc/Ipopt/IpHessianUpdater.hpp
+include/omc/Ipopt/IpIdentityMatrix.hpp
+include/omc/Ipopt/IpIpoptAlg.hpp
+include/omc/Ipopt/IpIpoptApplication.hpp
+include/omc/Ipopt/IpIpoptCalculatedQuantities.hpp
+include/omc/Ipopt/IpIpoptData.hpp
+include/omc/Ipopt/IpIpoptNLP.hpp
+include/omc/Ipopt/IpIterateInitializer.hpp
+include/omc/Ipopt/IpIteratesVector.hpp
+include/omc/Ipopt/IpIterationOutput.hpp
+include/omc/Ipopt/IpJournalist.hpp
+include/omc/Ipopt/IpLapack.hpp
+include/omc/Ipopt/IpLineSearch.hpp
+include/omc/Ipopt/IpMatrix.hpp
+include/omc/Ipopt/IpMuUpdate.hpp
+include/omc/Ipopt/IpNLP.hpp
+include/omc/Ipopt/IpNLPScaling.hpp
+include/omc/Ipopt/IpObserver.hpp
+include/omc/Ipopt/IpOptionsList.hpp
+include/omc/Ipopt/IpOrigIpoptNLP.hpp
+include/omc/Ipopt/IpPDSystemSolver.hpp
+include/omc/Ipopt/IpReferenced.hpp
+include/omc/Ipopt/IpRegOptions.hpp
+include/omc/Ipopt/IpReturnCodes.h
+include/omc/Ipopt/IpReturnCodes.hpp
+include/omc/Ipopt/IpReturnCodes.inc
+include/omc/Ipopt/IpReturnCodes_inc.h
+include/omc/Ipopt/IpScaledMatrix.hpp
+include/omc/Ipopt/IpSearchDirCalculator.hpp
+include/omc/Ipopt/IpSmartPtr.hpp
+include/omc/Ipopt/IpSolveStatistics.hpp
+include/omc/Ipopt/IpStdCInterface.h
+include/omc/Ipopt/IpSumSymMatrix.hpp
+include/omc/Ipopt/IpSymLinearSolver.hpp
+include/omc/Ipopt/IpSymMatrix.hpp
+include/omc/Ipopt/IpSymScaledMatrix.hpp
+include/omc/Ipopt/IpSymTMatrix.hpp
+include/omc/Ipopt/IpTNLP.hpp
+include/omc/Ipopt/IpTNLPAdapter.hpp
+include/omc/Ipopt/IpTNLPReducer.hpp
+include/omc/Ipopt/IpTaggedObject.hpp
+include/omc/Ipopt/IpTimedTask.hpp
+include/omc/Ipopt/IpTimingStatistics.hpp
+include/omc/Ipopt/IpTripletHelper.hpp
+include/omc/Ipopt/IpTypes.hpp
+include/omc/Ipopt/IpUtils.hpp
+include/omc/Ipopt/IpVector.hpp
+include/omc/Ipopt/IpZeroSymMatrix.hpp
+include/omc/Ipopt/IpoptConfig.h
+include/omc/Ipopt/config_ipopt_default.h
+include/omc/JM/jm_callbacks.h
+include/omc/JM/jm_named_ptr.h
+include/omc/JM/jm_portability.h
+include/omc/JM/jm_stack.h
+include/omc/JM/jm_string_set.h
+include/omc/JM/jm_types.h
+include/omc/JM/jm_vector.h
+include/omc/JM/jm_vector_template.h
+include/omc/OMSimulator.h
+include/omc/ParModelica/auto/om_pm_interface.hpp
+include/omc/Types.h
+include/omc/c/ModelicaUtilities.h
+include/omc/c/dataReconciliation/dataReconciliation.h
+include/omc/c/fmi-export/fmu1_model_interface.c.inc
+include/omc/c/fmi-export/fmu1_model_interface.h
+include/omc/c/fmi-export/fmu2_model_interface.c.inc
+include/omc/c/fmi-export/fmu2_model_interface.h
+include/omc/c/fmi-export/fmu_read_flags.c.inc
+include/omc/c/fmi-export/fmu_read_flags.h
+include/omc/c/fmi/fmi2FunctionTypes.h
+include/omc/c/fmi/fmi2Functions.h
+include/omc/c/fmi/fmi2TypesPlatform.h
+include/omc/c/fmi/fmiModelFunctions.h
+include/omc/c/fmi/fmiModelTypes.h
+include/omc/c/gc/memory_pool.h
+include/omc/c/gc/omc_gc.h
+include/omc/c/linearization/linearize.h
+include/omc/c/meta/meta_modelica.h
+include/omc/c/meta/meta_modelica_builtin.h
+include/omc/c/meta/meta_modelica_builtin_boxptr.h
+include/omc/c/meta/meta_modelica_builtin_boxvar.h
+include/omc/c/meta/meta_modelica_data.h
+include/omc/c/meta/meta_modelica_mk_box.h
+include/omc/c/meta/meta_modelica_segv.h
+include/omc/c/omc_inline.h
+include/omc/c/omc_simulation_settings.h
+include/omc/c/openmodelica.h
+include/omc/c/openmodelica_func.h
+include/omc/c/openmodelica_types.h
+include/omc/c/optimization/OptimizerData.h
+include/omc/c/optimization/OptimizerInterface.h
+include/omc/c/optimization/OptimizerLocalFunction.h
+include/omc/c/simulation/modelinfo.h
+include/omc/c/simulation/omc_simulation_util.h
+include/omc/c/simulation/options.h
+include/omc/c/simulation/results/MatVer4.h
+include/omc/c/simulation/results/simulation_result.h
+include/omc/c/simulation/results/simulation_result_csv.h
+include/omc/c/simulation/results/simulation_result_ia.h
+include/omc/c/simulation/results/simulation_result_mat4.h
+include/omc/c/simulation/results/simulation_result_plt.h
+include/omc/c/simulation/results/simulation_result_wall.h
+include/omc/c/simulation/simulation_info_json.h
+include/omc/c/simulation/simulation_input_xml.h
+include/omc/c/simulation/simulation_omc_assert.h
+include/omc/c/simulation/simulation_runtime.h
+include/omc/c/simulation/socket.h
+include/omc/c/simulation/solver/cvode_solver.h
+include/omc/c/simulation/solver/dae_mode.h
+include/omc/c/simulation/solver/dassl.h
+include/omc/c/simulation/solver/delay.h
+include/omc/c/simulation/solver/embedded_server.h
+include/omc/c/simulation/solver/epsilon.h
+include/omc/c/simulation/solver/events.h
+include/omc/c/simulation/solver/external_input.h
+include/omc/c/simulation/solver/fmi_events.h
+include/omc/c/simulation/solver/gbode_conf.h
+include/omc/c/simulation/solver/gbode_ctrl.h
+include/omc/c/simulation/solver/gbode_events.h
+include/omc/c/simulation/solver/gbode_main.h
+include/omc/c/simulation/solver/gbode_nls.h
+include/omc/c/simulation/solver/gbode_sparse.h
+include/omc/c/simulation/solver/gbode_step.h
+include/omc/c/simulation/solver/gbode_tableau.h
+include/omc/c/simulation/solver/gbode_util.h
+include/omc/c/simulation/solver/ida_solver.h
+include/omc/c/simulation/solver/initialization/initialization.h
+include/omc/c/simulation/solver/irksco.h
+include/omc/c/simulation/solver/jacobianSymbolical.h
+include/omc/c/simulation/solver/kinsolSolver.h
+include/omc/c/simulation/solver/linearSolverKlu.h
+include/omc/c/simulation/solver/linearSolverLapack.h
+include/omc/c/simulation/solver/linearSolverLis.h
+include/omc/c/simulation/solver/linearSolverTotalPivot.h
+include/omc/c/simulation/solver/linearSolverUmfpack.h
+include/omc/c/simulation/solver/linearSystem.h
+include/omc/c/simulation/solver/mixedSearchSolver.h
+include/omc/c/simulation/solver/mixedSystem.h
+include/omc/c/simulation/solver/model_help.h
+include/omc/c/simulation/solver/newtonIteration.h
+include/omc/c/simulation/solver/nonlinearSolverHomotopy.h
+include/omc/c/simulation/solver/nonlinearSolverHybrd.h
+include/omc/c/simulation/solver/nonlinearSolverNewton.h
+include/omc/c/simulation/solver/nonlinearSystem.h
+include/omc/c/simulation/solver/nonlinearValuesList.h
+include/omc/c/simulation/solver/omc_math.h
+include/omc/c/simulation/solver/perform_qss_simulation.c.inc
+include/omc/c/simulation/solver/perform_simulation.c.inc
+include/omc/c/simulation/solver/radau.h
+include/omc/c/simulation/solver/real_time_sync.h
+include/omc/c/simulation/solver/solver_main.h
+include/omc/c/simulation/solver/spatialDistribution.h
+include/omc/c/simulation/solver/stateset.h
+include/omc/c/simulation/solver/sundials_error.h
+include/omc/c/simulation/solver/sym_solver_ssc.h
+include/omc/c/simulation/solver/synchronous.h
+include/omc/c/simulation_data.h
+include/omc/c/util/ModelicaUtilitiesExtra.h
+include/omc/c/util/base_array.h
+include/omc/c/util/boolean_array.h
+include/omc/c/util/context.h
+include/omc/c/util/division.h
+include/omc/c/util/doubleEndedList.h
+include/omc/c/util/generic_array.h
+include/omc/c/util/index_spec.h
+include/omc/c/util/integer_array.h
+include/omc/c/util/jacobian_util.h
+include/omc/c/util/java_interface.h
+include/omc/c/util/jni.h
+include/omc/c/util/jni_md.h
+include/omc/c/util/jni_md_solaris.h
+include/omc/c/util/jni_md_windows.h
+include/omc/c/util/libcsv.h
+include/omc/c/util/list.h
+include/omc/c/util/modelica.h
+include/omc/c/util/modelica_string.h
+include/omc/c/util/modelica_string_lit.h
+include/omc/c/util/omc_error.h
+include/omc/c/util/omc_file.h
+include/omc/c/util/omc_init.h
+include/omc/c/util/omc_mmap.h
+include/omc/c/util/omc_msvc.h
+include/omc/c/util/omc_numbers.h
+include/omc/c/util/omc_spinlock.h
+include/omc/c/util/parallel_helper.h
+include/omc/c/util/rational.h
+include/omc/c/util/read_csv.h
+include/omc/c/util/read_matlab4.h
+include/omc/c/util/read_write.h
+include/omc/c/util/real_array.h
+include/omc/c/util/ringbuffer.h
+include/omc/c/util/rtclock.h
+include/omc/c/util/simulation_options.h
+include/omc/c/util/string_array.h
+include/omc/c/util/tinymt64.h
+include/omc/c/util/uthash.h
+include/omc/c/util/utility.h
+include/omc/c/util/varinfo.h
+include/omc/c/util/write_csv.h
+include/omc/c/util/write_matlab4.h
+include/omc/cminpack-1/cminpack.h
+include/omc/cminpack-1/minpack.h
+include/omc/cpp/Core/DataExchange/DefaultContainerManager.h
+include/omc/cpp/Core/DataExchange/FactoryExport.h
+include/omc/cpp/Core/DataExchange/FactoryPolicy.h
+include/omc/cpp/Core/DataExchange/HistoryImpl.h
+include/omc/cpp/Core/DataExchange/IHistory.h
+include/omc/cpp/Core/DataExchange/IPropertyReader.h
+include/omc/cpp/Core/DataExchange/ISimTable.h
+include/omc/cpp/Core/DataExchange/ISimVar.h
+include/omc/cpp/Core/DataExchange/ParallelContainerManager.h
+include/omc/cpp/Core/DataExchange/Policies/BufferReaderWriter.h
+include/omc/cpp/Core/DataExchange/Policies/MatfileWriter.h
+include/omc/cpp/Core/DataExchange/Policies/TextfileWriter.h
+include/omc/cpp/Core/DataExchange/SimBoolean.h
+include/omc/cpp/Core/DataExchange/SimData.h
+include/omc/cpp/Core/DataExchange/SimDouble.h
+include/omc/cpp/Core/DataExchange/SimInteger.h
+include/omc/cpp/Core/DataExchange/SimString.h
+include/omc/cpp/Core/DataExchange/Writer.h
+include/omc/cpp/Core/DataExchange/XmlPropertyReader.h
+include/omc/cpp/Core/Math/Array.h
+include/omc/cpp/Core/Math/ArrayOperations.h
+include/omc/cpp/Core/Math/ArraySlice.h
+include/omc/cpp/Core/Math/Constants.h
+include/omc/cpp/Core/Math/Functions.h
+include/omc/cpp/Core/Math/IBlas.h
+include/omc/cpp/Core/Math/ILapack.h
+include/omc/cpp/Core/Math/OMAPI.h
+include/omc/cpp/Core/Math/SparseMatrix.h
+include/omc/cpp/Core/Math/Utility.h
+include/omc/cpp/Core/Modelica.h
+include/omc/cpp/Core/ModelicaDefine.h
+include/omc/cpp/Core/SimController/Configuration.h
+include/omc/cpp/Core/SimController/FactoryExport.h
+include/omc/cpp/Core/SimController/ISimController.h
+include/omc/cpp/Core/SimController/ISimData.h
+include/omc/cpp/Core/SimController/ISimObjects.h
+include/omc/cpp/Core/SimController/Initialization.h
+include/omc/cpp/Core/SimController/SimController.h
+include/omc/cpp/Core/SimController/SimManager.h
+include/omc/cpp/Core/SimController/SimObjects.h
+include/omc/cpp/Core/SimulationSettings/IGlobalSettings.h
+include/omc/cpp/Core/SimulationSettings/ISettingsFactory.h
+include/omc/cpp/Core/Solver/AlgLoopSolverDefaultImplementation.h
+include/omc/cpp/Core/Solver/FactoryExport.h
+include/omc/cpp/Core/Solver/ILinSolverSettings.h
+include/omc/cpp/Core/Solver/ILinearAlgLoopSolver.h
+include/omc/cpp/Core/Solver/INonLinSolverSettings.h
+include/omc/cpp/Core/Solver/INonLinearAlgLoopSolver.h
+include/omc/cpp/Core/Solver/ISolver.h
+include/omc/cpp/Core/Solver/ISolverSettings.h
+include/omc/cpp/Core/Solver/SimulationMonitor.h
+include/omc/cpp/Core/Solver/SolverDefaultImplementation.h
+include/omc/cpp/Core/Solver/SolverSettings.h
+include/omc/cpp/Core/Solver/SystemStateSelection.h
+include/omc/cpp/Core/System/AlgLoopSolverFactory.h
+include/omc/cpp/Core/System/ContinuousEvents.h
+include/omc/cpp/Core/System/DiscreteEvents.h
+include/omc/cpp/Core/System/EventHandling.h
+include/omc/cpp/Core/System/FactoryExport.h
+include/omc/cpp/Core/System/IAlgLoopSolverFactory.h
+include/omc/cpp/Core/System/IContinuous.h
+include/omc/cpp/Core/System/ICoupledSystem.h
+include/omc/cpp/Core/System/IEvent.h
+include/omc/cpp/Core/System/ILinearAlgLoop.h
+include/omc/cpp/Core/System/IMixedSystem.h
+include/omc/cpp/Core/System/INonLinearAlgLoop.h
+include/omc/cpp/Core/System/ISimVars.h
+include/omc/cpp/Core/System/IStateSelection.h
+include/omc/cpp/Core/System/IStepEvent.h
+include/omc/cpp/Core/System/ISystemInitialization.h
+include/omc/cpp/Core/System/ISystemProperties.h
+include/omc/cpp/Core/System/ISystemTypes.h
+include/omc/cpp/Core/System/ITime.h
+include/omc/cpp/Core/System/IWriteOutput.h
+include/omc/cpp/Core/System/LinearAlgLoopDefaultImplementation.h
+include/omc/cpp/Core/System/NonLinearAlgLoopDefaultImplementation.h
+include/omc/cpp/Core/System/SimVars.h
+include/omc/cpp/Core/System/SystemDefaultImplementation.h
+include/omc/cpp/Core/Utils/Modelica/ModelicaSimulationError.h
+include/omc/cpp/Core/Utils/extension/adaptable_factory.hpp
+include/omc/cpp/Core/Utils/extension/barriers.hpp
+include/omc/cpp/Core/Utils/extension/common.hpp
+include/omc/cpp/Core/Utils/extension/convenience.hpp
+include/omc/cpp/Core/Utils/extension/extension.hpp
+include/omc/cpp/Core/Utils/extension/factory.hpp
+include/omc/cpp/Core/Utils/extension/factory_map.hpp
+include/omc/cpp/Core/Utils/extension/filesystem.hpp
+include/omc/cpp/Core/Utils/extension/impl/adaptable_factory.hpp
+include/omc/cpp/Core/Utils/extension/impl/adaptable_factory_free_functions.hpp
+include/omc/cpp/Core/Utils/extension/impl/adaptable_factory_set.hpp
+include/omc/cpp/Core/Utils/extension/impl/create.hpp
+include/omc/cpp/Core/Utils/extension/impl/create_func.hpp
+include/omc/cpp/Core/Utils/extension/impl/decl.hpp
+include/omc/cpp/Core/Utils/extension/impl/factory.hpp
+include/omc/cpp/Core/Utils/extension/impl/factory_map.hpp
+include/omc/cpp/Core/Utils/extension/impl/function.hpp
+include/omc/cpp/Core/Utils/extension/impl/library_impl.hpp
+include/omc/cpp/Core/Utils/extension/impl/shared_library.hpp
+include/omc/cpp/Core/Utils/extension/impl/typeinfo.hpp
+include/omc/cpp/Core/Utils/extension/logger.hpp
+include/omc/cpp/Core/Utils/extension/measure_time.hpp
+include/omc/cpp/Core/Utils/extension/measure_time_papi.hpp
+include/omc/cpp/Core/Utils/extension/measure_time_rdtsc.hpp
+include/omc/cpp/Core/Utils/extension/measure_time_scorep.hpp
+include/omc/cpp/Core/Utils/extension/measure_time_statistic.hpp
+include/omc/cpp/Core/Utils/extension/parameter.hpp
+include/omc/cpp/Core/Utils/extension/parameter_map.hpp
+include/omc/cpp/Core/Utils/extension/registry.hpp
+include/omc/cpp/Core/Utils/extension/shared_library.hpp
+include/omc/cpp/Core/Utils/extension/type_map.hpp
+include/omc/cpp/FMU/FMUGlobalSettings.h
+include/omc/cpp/FMU/FMULibInterface.h
+include/omc/cpp/FMU/FMULogger.h
+include/omc/cpp/FMU/FMUWrapper.h
+include/omc/cpp/FMU/FactoryExport.h
+include/omc/cpp/FMU/IFMUInterface.h
+include/omc/cpp/FMU/fmiModelFunctions.h
+include/omc/cpp/FMU/fmiModelTypes.h
+include/omc/cpp/FMU2/FMU2GlobalSettings.h
+include/omc/cpp/FMU2/FMU2Interface.cpp
+include/omc/cpp/FMU2/FMU2Wrapper.cpp
+include/omc/cpp/FMU2/FMU2Wrapper.h
+include/omc/cpp/FMU2/fmi2FunctionTypes.h
+include/omc/cpp/FMU2/fmi2Functions.h
+include/omc/cpp/FMU2/fmi2TypesPlatform.h
+include/omc/cpp/LibrariesConfig.h
+include/omc/cpp/ModelicaConfig_gcc.inc
+include/omc/cpp/ModelicaLibraryConfig_gcc.inc
+include/omc/cpp/ModelicaUtilities.h
+include/omc/cpp/SimCoreFactory/OMCFactory/OMCFactory.h
+include/omc/cpp/SimCoreFactory/Policies/FactoryConfig.h
+include/omc/expat.h
+include/omc/expat_external.h
+include/omc/ffi/ffi.h
+include/omc/ffi/ffitarget.h
+include/omc/fmilib.h
+include/omc/fmilib_config.h
+include/omc/gc.h
+include/omc/gc/gc.h
+include/omc/gc/gc_backptr.h
+include/omc/gc/gc_config_macros.h
+include/omc/gc/gc_disclaim.h
+include/omc/gc/gc_gcj.h
+include/omc/gc/gc_inline.h
+include/omc/gc/gc_mark.h
+include/omc/gc/gc_pthread_redirects.h
+include/omc/gc/gc_tiny_fl.h
+include/omc/gc/gc_typed.h
+include/omc/gc/gc_version.h
+include/omc/gc/javaxfc.h
+include/omc/gc/leak_detector.h
+include/omc/metis.h
+include/omc/suitesparse/SuiteSparse_config.h
+include/omc/suitesparse/amd.h
+include/omc/suitesparse/btf.h
+include/omc/suitesparse/colamd.h
+include/omc/suitesparse/klu.h
+include/omc/suitesparse/umfpack.h
+include/omc/suitesparse/umfpack_col_to_triplet.h
+include/omc/suitesparse/umfpack_defaults.h
+include/omc/suitesparse/umfpack_free_numeric.h
+include/omc/suitesparse/umfpack_free_symbolic.h
+include/omc/suitesparse/umfpack_get_determinant.h
+include/omc/suitesparse/umfpack_get_lunz.h
+include/omc/suitesparse/umfpack_get_numeric.h
+include/omc/suitesparse/umfpack_get_symbolic.h
+include/omc/suitesparse/umfpack_global.h
+include/omc/suitesparse/umfpack_load_numeric.h
+include/omc/suitesparse/umfpack_load_symbolic.h
+include/omc/suitesparse/umfpack_numeric.h
+include/omc/suitesparse/umfpack_qsymbolic.h
+include/omc/suitesparse/umfpack_report_control.h
+include/omc/suitesparse/umfpack_report_info.h
+include/omc/suitesparse/umfpack_report_matrix.h
+include/omc/suitesparse/umfpack_report_numeric.h
+include/omc/suitesparse/umfpack_report_perm.h
+include/omc/suitesparse/umfpack_report_status.h
+include/omc/suitesparse/umfpack_report_symbolic.h
+include/omc/suitesparse/umfpack_report_triplet.h
+include/omc/suitesparse/umfpack_report_vector.h
+include/omc/suitesparse/umfpack_save_numeric.h
+include/omc/suitesparse/umfpack_save_symbolic.h
+include/omc/suitesparse/umfpack_scale.h
+include/omc/suitesparse/umfpack_solve.h
+include/omc/suitesparse/umfpack_symbolic.h
+include/omc/suitesparse/umfpack_tictoc.h
*** 655 LINES SKIPPED ***