GSoC - Windows Support

From Liberty Eiffel Wiki
Jump to navigation Jump to search

Liberty Eiffel meets Windows

The following paragraphs will describe in big lines how the project is going to be implemented.

Final Goal

   Bootstrap the Liberty-Eiffel programming language (compiler,classes, functions etc.)
   from the UNIX/LINUX environment to the WINDOWS environment and wrap it into a nice installer.

General view

The first step of the process would be compiling the original germ on Windows environment, using mingw64 as compiler. Any change will be discussed with Paolo/Raphael or in the mailing list. The next step will be fixing the plugins. Both exec and net do not work as intended , therefore I must document about any possible solutions to fix the problems they cause.


After this step , a install.sh equivalent for Windows will be created via a final batch file. The final batch will include a target preparing for both the installing destination folder and the Liberty Environment (including load paths), will bootstrap SmartEiffel tools (compile the germ, including the 136.c files), generate the wrappers for the libraries and compile all the Liberty Eiffel tools. The binaries created will be tested with the Liberty Eiffel automated tests. If the tests won’t give the desired results (Windows results will be compared with the ones from Linux), further research will be made about which plugin is not working properly and the missing part of the plugins would be implemented (if they do not exist) or solve the bugs that cause the failures.


In order to satisfy all our users needs, I will create two different setup.exe files (both will contain information such as the compiler’s path).

The reason for doing so is because there are two different possible scenarios: 1. The user already has mingw64 installed on his computer. 2. Mingw64 is not yet installed on the user’s computer. If scenario number two is correct, then mingw64 will be additional installed.



Tasks :

  • Create an install.bat for all the c files from the germ (done)
  • Reproduce T1, T2, T3 from install.sh (done)

Problems that I am facing right now :

  • Fix loadpaths
  • Solve undefined reference to 'WinMain' error when compiling compile_to_c.h with mingw-w64 (solved)
  • Finding a Windows equivalent for <sys/wait.h> (convince the compiler it is running on a posix machine) (solved)
  • Getting the right tool to create an installer (HZ suggestion: NSIS, http://nsis.sourceforge.net/Main_Page - open source, configurable as an Eclipse-plugin as well)