From: Reino Ruusu Date: Fri, 14 Sep 2018 11:24:53 +0000 (+0300) Subject: Updates to FMILibrary and its build process X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;ds=sidebyside;h=87cc423aefd98832c6c8d0979afc21551f8ceca3;p=simantics%2Ffmil.git Updates to FMILibrary and its build process * Windows batch file for building FMILibrary. * New build instrcutions in README.txt. * Newly built FMILibrary binaries. gitlab #6 Change-Id: Id88e9c3d254fab85c3d25f4a8c581ad9071fa6a3 --- diff --git a/org.simantics.fmil.core/README.md b/org.simantics.fmil.core/README.md index 0539e37..d5ef5ef 100644 --- a/org.simantics.fmil.core/README.md +++ b/org.simantics.fmil.core/README.md @@ -11,20 +11,46 @@ This is not usually needed, you can use the existing build. Remember to manually delete CMakeCache and CMakeFiles from FMILibrary/build/expatex/-folder Follow the instructions provided by the Linux Dockerfile and linuxbuild.sh. -In short: -1) Download the desired FMILibrary source .zip -2) Unzip in a location of your choosing -3) Open terminal -4) Change directory to where you want to build the output -5) Run cmake from command-line and provide as the first argument the path to where you unzipped sources in step 2 + +On Windows the library must be manually downloaded and unzipped to the *native* directory. +The build can then be performed by executing the batch file *./windowsbuild.bat* in the same directory. + +The build steps are: +1. Download the desired FMILibrary source .zip from https://jmodelica.org/fmil/FMILibrary-2.0.3-src.zip +2. Unzip the package to the *native* directory. +3. Open terminal with development tools configured + * Visual Studio: Use the *"Developer Command Prompt for VS 2017"* start menu entry +4. Execute build script + * Linux: `docker build -f Dockerfile -t fmilibrary:build .`, then `docker run -v /path/to/org.simantics.fmil.linux64/libraries:/output fmilibrary:build` + * Windows: `cd native`, then `windowsbuild.bat` + +Automated steps: +1. Replace *fmi_util.c* file under *"/src/Util/src/FMI/fmi_util.c"* with contents of *fmi_util.c.txt*, located +under */native/FMUSimulator/fmi_util.c.txt*. +2. Change directory to where you want to build the output +3. Run cmake from command-line and provide as the first argument the path to where you unzipped sources in step 2 Optional) To make a debug version, add -DFMILIB_ENABLE_LOG_LEVEL_DEBUG=ON before the path to source -6) In both debug and normal case, run "make" and "make install test" to verify the installation + * Windows: Specify build tools and target architecture with + * `cmake -G "Visual Studio 15"` (32-bit) or + * `cmake -G "Visual Studio 15 Win64"` (64-bit) +4. Use the generated makefiles/project files to perform the build + * Linux: In both debug and normal case, run "make" and "make install test" to verify the installation + * Windows: Execute the command `msbuild FMILibrary.sln /p:Configuration= /p:Platform=` If the build succeeded, you should have .dll files which you can now copy to your win32 or win64 org.simantics.fmil.* projects. Specifically: fmu1_dll_cs.dll, fmu1_dll_me.dll, fmu2_dll_cs.dll, fmu2_dll_me.sll and fmilib_shared.dll Copy the corresponding "Debug" build files to the sub-directoryn "Debug" in the projects. +### Windows-build with Visual Studio + +On Windows, cmake needs to be run separately for 32-bit and 64-bit builds. See the Windows batch file *update_fmilibrary.bat*, which performs both automatically. + +### Building on linux + +When building the libfmilib_shared.so, we need to replace fmi_util.c file under "/src/Util/src/FMI/fmi_util.c" with contents of fmi_util.c.txt, located +under /native/FMUSimulator/fmi_util.c.txt. The Dockerfile already does this so if you build the libfmilib_shared.so with that, then you needn't worry about this. + ## FMUSimulator When you have the Visual Studio files: @@ -33,9 +59,3 @@ Build from command-line our FMUSimulator.dll 1) Open a terminal 2) Navigate to org.simantics.fmil.core/native/FMUSimulator 3) Run "msbuild.exe" - -## Building on linux - -When building the libfmilib_shared.so, we need to replace fmi_util.c file under "/src/Util/src/FMI/fmi_util.c" with contents of fmi_util.c.txt, located -under /native/FMUSimulator/fmi_util.c.txt. The Dockerfile already does this so if you build the libfmilib_shared.so with that, then you needn't worry about this. - \ No newline at end of file diff --git a/org.simantics.fmil.core/native/.gitignore b/org.simantics.fmil.core/native/.gitignore new file mode 100644 index 0000000..c058303 --- /dev/null +++ b/org.simantics.fmil.core/native/.gitignore @@ -0,0 +1,4 @@ +/FMILibrary-2.0.3/ +/Debug/ +/Release/ +/x64/ diff --git a/org.simantics.fmil.core/native/windowsbuild.bat b/org.simantics.fmil.core/native/windowsbuild.bat new file mode 100644 index 0000000..e644859 --- /dev/null +++ b/org.simantics.fmil.core/native/windowsbuild.bat @@ -0,0 +1,23 @@ +cd FMILibrary-2.0.3 + +xcopy /y ..\FMUSimulator\fmi_util.c.txt .\src\Util\src\FMI\fmi_util.c + +mkdir build32 +cd build32 +cmake .. -G "Visual Studio 15" +msbuild FMILibrary.sln /p:Configuration=Release /p:Platform=Win32 +msbuild FMILibrary.sln /p:Configuration=Debug /p:Platform=Win32 + +xcopy /y Release\*.dll ..\..\..\..\org.simantics.fmil.win32\libraries + +cd .. + +mkdir build64 +cd build64 +cmake .. -G "Visual Studio 15 Win64" +msbuild FMILibrary.sln /p:Configuration=Release /p:Platform=x64 +msbuild FMILibrary.sln /p:Configuration=Debug /p:Platform=x64 + +xcopy /y Release\*.dll ..\..\..\..\org.simantics.fmil.win64\libraries + +cd ..\.. diff --git a/org.simantics.fmil.win32/libraries/Debug/FMUSimulator.dll b/org.simantics.fmil.win32/libraries/Debug/FMUSimulator.dll deleted file mode 100644 index 389caa2..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/FMUSimulator.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/Debug/fmilib_shared.dll b/org.simantics.fmil.win32/libraries/Debug/fmilib_shared.dll deleted file mode 100644 index eedf974..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/fmilib_shared.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_cs.dll b/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_cs.dll deleted file mode 100644 index 6397ee9..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_cs.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_me.dll b/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_me.dll deleted file mode 100644 index a518568..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/fmu1_dll_me.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_cs.dll b/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_cs.dll deleted file mode 100644 index 89117c0..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_cs.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_me.dll b/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_me.dll deleted file mode 100644 index 3350c00..0000000 Binary files a/org.simantics.fmil.win32/libraries/Debug/fmu2_dll_me.dll and /dev/null differ diff --git a/org.simantics.fmil.win32/libraries/fmilib_shared.dll b/org.simantics.fmil.win32/libraries/fmilib_shared.dll index 7eb972d..a59c2a9 100644 Binary files a/org.simantics.fmil.win32/libraries/fmilib_shared.dll and b/org.simantics.fmil.win32/libraries/fmilib_shared.dll differ diff --git a/org.simantics.fmil.win32/libraries/fmu1_dll_cs.dll b/org.simantics.fmil.win32/libraries/fmu1_dll_cs.dll index edd1487..632a042 100644 Binary files a/org.simantics.fmil.win32/libraries/fmu1_dll_cs.dll and b/org.simantics.fmil.win32/libraries/fmu1_dll_cs.dll differ diff --git a/org.simantics.fmil.win32/libraries/fmu1_dll_me.dll b/org.simantics.fmil.win32/libraries/fmu1_dll_me.dll index 2f80629..cd18e7e 100644 Binary files a/org.simantics.fmil.win32/libraries/fmu1_dll_me.dll and b/org.simantics.fmil.win32/libraries/fmu1_dll_me.dll differ diff --git a/org.simantics.fmil.win32/libraries/fmu2_dll_cs.dll b/org.simantics.fmil.win32/libraries/fmu2_dll_cs.dll index eb847c6..cb5dba4 100644 Binary files a/org.simantics.fmil.win32/libraries/fmu2_dll_cs.dll and b/org.simantics.fmil.win32/libraries/fmu2_dll_cs.dll differ diff --git a/org.simantics.fmil.win32/libraries/fmu2_dll_me.dll b/org.simantics.fmil.win32/libraries/fmu2_dll_me.dll index 7668516..ecd6a4c 100644 Binary files a/org.simantics.fmil.win32/libraries/fmu2_dll_me.dll and b/org.simantics.fmil.win32/libraries/fmu2_dll_me.dll differ diff --git a/org.simantics.fmil.win64/libraries/Debug/FMUSimulator.dll b/org.simantics.fmil.win64/libraries/Debug/FMUSimulator.dll deleted file mode 100644 index 09df102..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/FMUSimulator.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/Debug/fmilib_shared.dll b/org.simantics.fmil.win64/libraries/Debug/fmilib_shared.dll deleted file mode 100644 index 5b7305c..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/fmilib_shared.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_cs.dll b/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_cs.dll deleted file mode 100644 index 263de8e..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_cs.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_me.dll b/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_me.dll deleted file mode 100644 index 75ffc94..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/fmu1_dll_me.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_cs.dll b/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_cs.dll deleted file mode 100644 index ce8c580..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_cs.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_me.dll b/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_me.dll deleted file mode 100644 index 7c54efe..0000000 Binary files a/org.simantics.fmil.win64/libraries/Debug/fmu2_dll_me.dll and /dev/null differ diff --git a/org.simantics.fmil.win64/libraries/fmilib_shared.dll b/org.simantics.fmil.win64/libraries/fmilib_shared.dll index 5870f10..61518ca 100644 Binary files a/org.simantics.fmil.win64/libraries/fmilib_shared.dll and b/org.simantics.fmil.win64/libraries/fmilib_shared.dll differ diff --git a/org.simantics.fmil.win64/libraries/fmu1_dll_cs.dll b/org.simantics.fmil.win64/libraries/fmu1_dll_cs.dll index 88ec224..c86c6e0 100644 Binary files a/org.simantics.fmil.win64/libraries/fmu1_dll_cs.dll and b/org.simantics.fmil.win64/libraries/fmu1_dll_cs.dll differ diff --git a/org.simantics.fmil.win64/libraries/fmu1_dll_me.dll b/org.simantics.fmil.win64/libraries/fmu1_dll_me.dll index bbdb6d9..b03b4ff 100644 Binary files a/org.simantics.fmil.win64/libraries/fmu1_dll_me.dll and b/org.simantics.fmil.win64/libraries/fmu1_dll_me.dll differ diff --git a/org.simantics.fmil.win64/libraries/fmu2_dll_cs.dll b/org.simantics.fmil.win64/libraries/fmu2_dll_cs.dll index 9f28b07..ca92163 100644 Binary files a/org.simantics.fmil.win64/libraries/fmu2_dll_cs.dll and b/org.simantics.fmil.win64/libraries/fmu2_dll_cs.dll differ diff --git a/org.simantics.fmil.win64/libraries/fmu2_dll_me.dll b/org.simantics.fmil.win64/libraries/fmu2_dll_me.dll index bd3b0e3..146a9b5 100644 Binary files a/org.simantics.fmil.win64/libraries/fmu2_dll_me.dll and b/org.simantics.fmil.win64/libraries/fmu2_dll_me.dll differ