<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maeli</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maeli"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Maeli"/>
		<updated>2026-05-18T22:02:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2077</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2077"/>
				<updated>2006-04-21T18:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document.&lt;br /&gt;
* Alternatively you can use a [[Automatic Build Scripts]]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;br /&gt;
&lt;br /&gt;
still todo : skript to generate a working environement for EiffelStudio&lt;br /&gt;
&lt;br /&gt;
note : it seems to be neccessary to install gtk-2.6 if you want to build a working environement for EiffelStudio (neccessary for some vision2-libraries)&lt;br /&gt;
&lt;br /&gt;
a first (binary) experimental releas is available from http://eiffelsoftware.origo.ethz.ch/downloads/builds/experimental/&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2076</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2076"/>
				<updated>2006-04-21T18:19:43Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document.&lt;br /&gt;
* Alternatively you can use a [[Automatic Build Scripts]]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''DOS'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;br /&gt;
&lt;br /&gt;
still todo : skript to generate a working environement for EiffelStudio&lt;br /&gt;
&lt;br /&gt;
note : it seems to be neccessary to install gtk-2.6 if you want to build a working environement for EiffelStudio (neccessary for some vision2-libraries)&lt;br /&gt;
&lt;br /&gt;
a first experimental releas is available from http://eiffelsoftware.origo.ethz.ch/downloads/builds/experimental/&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2030</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2030"/>
				<updated>2006-04-21T02:43:02Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document. This is the only method on Windows.&lt;br /&gt;
* Alternatively (on Linux/UNIX) you can use a compilation script that Bernd Schoeller has kindly posted to the developer mailinglist: [http://origo.ethz.ch/pipermail/es-devel/2006-April/000016.html Linux compilation script]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows''' (cmd)&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;br /&gt;
&lt;br /&gt;
still todo : skript to generate a working environement for EiffelStudio&lt;br /&gt;
&lt;br /&gt;
note : it seems to be neccessary to install gtk-2.6 if you want to build a working environement for EiffelStudio&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2029</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2029"/>
				<updated>2006-04-21T02:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document. This is the only method on Windows.&lt;br /&gt;
* Alternatively (on Linux/UNIX) you can use a compilation script that Bernd Schoeller has kindly posted to the developer mailinglist: [http://origo.ethz.ch/pipermail/es-devel/2006-April/000016.html Linux compilation script]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows''' (cmd)&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;br /&gt;
&lt;br /&gt;
still todo : skript to generate a working environement for EiffelStudio&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2026</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2026"/>
				<updated>2006-04-20T22:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document. This is the only method on Windows.&lt;br /&gt;
* Alternatively (on Linux/UNIX) you can use a compilation script that Bernd Schoeller has kindly posted to the developer mailinglist: [http://origo.ethz.ch/pipermail/es-devel/2006-April/000016.html Linux compilation script]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows''' (cmd)&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear (currently, vision2 is not yet properly working, estudio itself looks working)&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2025</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2025"/>
				<updated>2006-04-20T22:20:47Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document. This is the only method on Windows.&lt;br /&gt;
* Alternatively (on Linux/UNIX) you can use a compilation script that Bernd Schoeller has kindly posted to the developer mailinglist: [http://origo.ethz.ch/pipermail/es-devel/2006-April/000016.html Linux compilation script]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows''' (cmd)&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear (currently, vision2 is not yet properly working)&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/porting/ and have a look at the basher.sh - skript&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2024</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=2024"/>
				<updated>2006-04-20T22:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: /* Mac OS X specific */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/downloads/builds/. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' on Windows you will need the Microsoft C compiler to compile Eiffel Studio. How to install the free version of the Microsoft C compiler: [[Installing Microsoft C compiler]]&lt;br /&gt;
&lt;br /&gt;
===Compilation methods===&lt;br /&gt;
Currently there are two compilation methods. &lt;br /&gt;
* You can either compile EiffelStudio from scratch following the instructions in this document. This is the only method on Windows.&lt;br /&gt;
* Alternatively (on Linux/UNIX) you can use a compilation script that Bernd Schoeller has kindly posted to the developer mailinglist: [http://origo.ethz.ch/pipermail/es-devel/2006-April/000016.html Linux compilation script]&lt;br /&gt;
If possible, use the compilation script and report any errors to the developer mailing list.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
#Point an environment variable called '''EIFFEL_SRC''' to the directory where you want to compile EiffelStudio&amp;lt;br&amp;gt;Usually we use the '''XXdev''' convention for this directory name - where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
#Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
#Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Delivery 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To update the sourcefiles to the latest revision, perform the following steps:&lt;br /&gt;
&lt;br /&gt;
'''Bash and Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up&lt;br /&gt;
svn up free_add_ons&lt;br /&gt;
svn up Delivery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installing gobo==&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&amp;lt;br/&amp;gt;&lt;br /&gt;
As the anonymous CVS on sourceforge is currently broken, use the following link from the gobo newsgroup to get the [http://www.gobosoft.com/download/gobo-cvs-060418.zip CVS-checkout of 18.April].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz and extract it into $EIFFEL_SRC/library. Here is the list of commands to do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library&lt;br /&gt;
tar -xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_unix.tgz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Also make sure, that the path to the binaries of your c compiler is placed before the path to cygwin or else the wrong linker will be used. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows''' (cmd)&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./configure.bat [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;./configure.bat clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''' is set correctly to your current &amp;quot;EiffelStudio&amp;quot; installation!&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd %EIFFEL_SRC%/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
./make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
./make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' These changes are not required if you try to compile a finalized version of EiffelStudio, but only if you want to create a workbench version of EiffelStudio for development and debugging.&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
* compile it under linux (as described above, but finalize with ec -ace &amp;lt;chosen_ace_file&amp;gt; -finalize -c_compile)&lt;br /&gt;
* copy the F_Code directory to the mac (and build the whole source arround it... so that it almost looks like under linux)&lt;br /&gt;
* compile it there using make (compile all the dependencies as described above, then try to compile ...  &amp;amp; ok change a lot of stuff in the Makefile.SH's or do it otherwise! )&lt;br /&gt;
* fix whatever problems appear (currently, vision2 is not yet properly working)&lt;br /&gt;
&lt;br /&gt;
for more information : try the experimental release from http://eiffelsoftware.origo.ethz.ch/downloads/builds/ and have a look at the basher.sh - skript&lt;br /&gt;
&lt;br /&gt;
sorry, I do not know why it is offline now !!&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=1845</id>
		<title>Compiling EiffelStudio</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Compiling_EiffelStudio&amp;diff=1845"/>
				<updated>2006-04-11T15:04:30Z</updated>
		
		<summary type="html">&lt;p&gt;Maeli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Compiler]]&lt;br /&gt;
[[Category:EiffelStudio]]&lt;br /&gt;
&lt;br /&gt;
== Installing EiffelStudio ==&lt;br /&gt;
&lt;br /&gt;
To compile EiffelStudio, you need an already working EiffelStudio compiler on your machine. The current source tree '''requires at least version 5.7''' of EiffelStudio. You can download it from http://eiffelsoftware.origo.ethz.ch/builds. This version still requires a registration (we missed to remove the registration cluster while compiling). You need to '''activate''' EiffelStudio (see below), because in some cases the compiler won't work correctly if not activated. [[Installing EiffelStudio]] is covered in its own article.&lt;br /&gt;
&lt;br /&gt;
==Extracting source code==&lt;br /&gt;
&lt;br /&gt;
===Checking out from SVN===&lt;br /&gt;
Define the '''EIFFEL_SRC''' environment variable. Usually we use the '''XXdev''' convention where XX is the version number from the current developped version of the compiler.&lt;br /&gt;
&lt;br /&gt;
Make sure that '''ISE_EIFFEL''', '''ISE_PLATFORM''' and '''ISE_C_COMPILER''' (on windows only) are properly defined&lt;br /&gt;
&lt;br /&gt;
Perform the following checkout procedures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Windows'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co %SVNURL%/trunk/Src -N 57dev&lt;br /&gt;
svn co %SVNURL%/trunk/Src/bench/C 57dev/C&lt;br /&gt;
svn co %SVNURL%/trunk/Src/bench/Eiffel 57dev/Eiffel&lt;br /&gt;
svn co %SVNURL%/trunk/Src/common 57dev/Eiffel/common&lt;br /&gt;
svn co %SVNURL%/trunk/Delivery -N 57dev/Delivery&lt;br /&gt;
svn co %SVNURL%/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up C_library&lt;br /&gt;
svn up dotnet&lt;br /&gt;
svn up library&lt;br /&gt;
svn up library.net&lt;br /&gt;
svn up tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bash'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export SVNURL=https://eiffelsoftware.origo.ethz.ch/svn/es&lt;br /&gt;
svn co $SVNURL/trunk/Src -N 57dev&lt;br /&gt;
svn co $SVNURL/trunk/Src/bench/C 57dev/C&lt;br /&gt;
svn co $SVNURL/trunk/Src/bench/Eiffel 57dev/Eiffel&lt;br /&gt;
svn co $SVNURL/trunk/Src/common 57dev/Eiffel/common&lt;br /&gt;
svn co $SVNURL/trunk/Delivery -N 57dev/Delivery&lt;br /&gt;
svn co $SVNURL/trunk/free_add_ons 57dev/free_add_ons&lt;br /&gt;
&lt;br /&gt;
cd 57dev&lt;br /&gt;
svn up C_library&lt;br /&gt;
svn up dotnet&lt;br /&gt;
svn up library&lt;br /&gt;
svn up library.net&lt;br /&gt;
svn up tools&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installing gobo===&lt;br /&gt;
&lt;br /&gt;
You have to unzip the gobo distribution from $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz and extract it into $EIFFEL_SRC/library.&lt;br /&gt;
&lt;br /&gt;
Please make sure to use the version provided or the very latest version from CVS. All other versions (including the official 3.4 release) will not work because of name clashes in the UC_STRING class between GOBO and EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Compiling C libraries==&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Windows===&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the run-time, you need to ensure that '''bash''' is in your '''PATH'''. You can download it from [http://www.cygwin.com http://www.cygwin.com]. Once done you can do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C&lt;br /&gt;
configure [win32|win64] [b|m]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument indicated whether you are compiling the run-time for 32 or 64 bits. The second one is to tell which C compiler will be used. For now only `b' (Borland) and `m' (Microsoft) are officially supported. We also informally support `g' (GCC) and `l' (LCC).&lt;br /&gt;
&lt;br /&gt;
On Windows 32 bits to clean up all the generated files you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure clean&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows 64 bits, you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;configure cleand&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling run-time on Unix===&lt;br /&gt;
&lt;br /&gt;
The command is simply:&lt;br /&gt;
&amp;lt;pre&amp;gt;./quick_configure&amp;lt;/pre&amp;gt;&lt;br /&gt;
This requires that '''ISE_PLATFORM''' is properly defined. The `quick_configure' script will look for the file CONFIGS/$ISE_PLATFORM and use it to extract the platform specific information to compile the run-time. If not found then an error will be reported.&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from libraries===&lt;br /&gt;
&lt;br /&gt;
Here is the list of commands to compile all required C libraries on Windows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/library/wel/Clib&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Unix it is slightly different:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/library/event/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/net/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/Clib&lt;br /&gt;
finish_freezing -library&lt;br /&gt;
cd $EIFFEL_SRC/library/vision2/implementation/gtk/Clib&lt;br /&gt;
finish_freezing -library&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from C_library===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows to read PNG file. On Unix, this is not required because it is included in GTK+2.4. Simply do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/C_library/zlib&lt;br /&gt;
make_msc.bat&lt;br /&gt;
cd $EIFFEL_SRC/C_library/libpng&lt;br /&gt;
make_msc.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Compiling C code from compiler===&lt;br /&gt;
&lt;br /&gt;
This is only required on Windows as this C code is a tiny wrapper around the Microsoft C++ API to generate and to debug .NET code.&lt;br /&gt;
&lt;br /&gt;
To compile it, you first need to install the Microsoft .NET SDK. You can download it from their website.&lt;br /&gt;
&lt;br /&gt;
After installing it, you need to update your '''LIB''' and '''INCLUDE''' environment variable to include the path the lib and include directory of the .NET Framework SDK.&lt;br /&gt;
&lt;br /&gt;
Once properly installed, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib&lt;br /&gt;
nmake&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling EiffelStudio==&lt;br /&gt;
&lt;br /&gt;
Now that we have taken care of the C code compilation we can compile the compiler. There are four ace files in $EIFFEL_SRC/Eiffel/Ace:&lt;br /&gt;
* batch.mswin.ace&lt;br /&gt;
* newbench.mswin.ace&lt;br /&gt;
* batch.unix.ace&lt;br /&gt;
* newbench.linux.ace&lt;br /&gt;
The first two are for windows, the last two for unix (even if the last one says `linux').&lt;br /&gt;
&lt;br /&gt;
To compile simply do:&lt;br /&gt;
&amp;lt;pre&amp;gt;ec -ace &amp;lt;chosen_ace_file&amp;gt; -c_compile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: the 'ec' binary produced by the newbench .ace file contains the full Eiffel compiler, including the batch version. 'estudio' is just a wrapper (available in Src/bench/C/ipc/daemon). So, you need either the one or the other.&lt;br /&gt;
&lt;br /&gt;
===Windows specific===&lt;br /&gt;
&lt;br /&gt;
At the end of the compilation for the workbench version, the C compilation will fail reporting an undefined reference to `nbref'. This is because the ace file has been built for the finalized version of EiffelStudio not the workbench version. To fix this problem do the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;copy ec.lnk h&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then edit the file `h' and replace '''mtcompiler.lib''' by '''mtwcompiler.lib'''.&lt;br /&gt;
Once this is done you can complete you do:&lt;br /&gt;
&amp;lt;pre&amp;gt;link @h&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to update to the new version of metadata consumer tool, follow the instructions described [[Compiling Metadata Consumer|here]].&lt;br /&gt;
&lt;br /&gt;
===Unix specific===&lt;br /&gt;
&lt;br /&gt;
Like the windows version the C compilation, it will fail, but this time for two reasons:&lt;br /&gt;
* nbref&lt;br /&gt;
* linking order causing many errors to be reported&lt;br /&gt;
&lt;br /&gt;
Here is the recommended way, make a copy of the generated Makefile and put it at the same level as your EIFGEN directory. Edit it and replace '''libmtcompiler.a''' by '''libmtwcompiler.a''', then search for &amp;quot;$(EXTERNALS) $(EIFLIB)&amp;quot; and replace it by &amp;quot;$(EIFLIB) $(EXTERNALS)&amp;quot;. Once this is done, you can do:&lt;br /&gt;
&amp;lt;pre&amp;gt;make -f ../../Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A little script that does the necessary changes: Place it at the same level as the EIFGEN directory is.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[bash,N]&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
cp EIFGEN/W_code/Makefile .&lt;br /&gt;
sed 's/libmtcompiler\.a/libmtwcompiler\.a/g' Makefile &amp;gt; tmp&lt;br /&gt;
sed 's/\$(EXTERNALS) \$(EIFLIB)/\$\(EIFLIB\) \$\(EXTERNALS\)/g' tmp &amp;gt; Makefile&lt;br /&gt;
cd EIFGEN/W_code&lt;br /&gt;
make -f ../../Makefile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, if you encounter problems with your self-compiled version of EiffelStudio, you might try to compile it with GCC 3.x. Version 4 of GCC has a slight change in semantics and EiffelStudio has not been updated. You can see the change in behavior in the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[C,N]&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a;&lt;br /&gt;
int b;&lt;br /&gt;
int *pointer;&lt;br /&gt;
&lt;br /&gt;
int foo()&lt;br /&gt;
{&lt;br /&gt;
  pointer = &amp;amp;b;&lt;br /&gt;
  return 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char** argv) &lt;br /&gt;
{&lt;br /&gt;
  a = 3;&lt;br /&gt;
  b = 0;&lt;br /&gt;
&lt;br /&gt;
  pointer = &amp;amp;a;&lt;br /&gt;
&lt;br /&gt;
  *pointer = foo();&lt;br /&gt;
&lt;br /&gt;
  printf (&amp;quot;You are using GCC %d.%d\n&amp;quot;,a,b);&lt;br /&gt;
  return 0;  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mac OS X specific===&lt;br /&gt;
&lt;br /&gt;
nothing documented yet...&lt;/div&gt;</summary>
		<author><name>Maeli</name></author>	</entry>

	</feed>