83 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								AT the time of this writing (Nov 2014), YAP uses the mkwin script to
							 | 
						||
| 
								 | 
							
								compile in WIN32. The script requires either a WIN32 environment, or a
							 | 
						||
| 
								 | 
							
								cross-compiler/emulator package.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								YAP has been known to compile under VISUAL C++, and should compile and
							 | 
						||
| 
								 | 
							
								work under cygwin, but the favorite approach is to use a native
							 | 
						||
| 
								 | 
							
								msys/mingw environment. This approach has two key advantages:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  + it does not need an interface layer and a DLL, like cygwin.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  + it enables cross-compilation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								YAP uses rge `mkwin` script to generate a new YAP installer. The script is
							 | 
						||
| 
								 | 
							
								controlled by a set of of variables that should be defined early on in
							 | 
						||
| 
								 | 
							
								the text. It executes by first calling `configure`, next running `make`, and
							 | 
						||
| 
								 | 
							
								last (if all went well) executing `nsys`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In more detail, the following mingw based environments have been
							 | 
						||
| 
								 | 
							
								tested to develop YAP:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * MSYS 1 and mingw32/64: most WIN32 development did occur in this
							 | 
						||
| 
								 | 
							
								    native environment. Best results were achieved with
							 | 
						||
| 
								 | 
							
								    MSYS-1.0.* and TDM-GCC:
							 | 
						||
| 
								 | 
							
								     
							 | 
						||
| 
								 | 
							
								    mingw: http://www.mingw.org/
							 | 
						||
| 
								 | 
							
								    original msys: http://www.mingw.org/wiki/MSYS
							 | 
						||
| 
								 | 
							
								    mingw64: http://mingw-w64.sourceforge.net/
							 | 
						||
| 
								 | 
							
								    TDM-GCC: http://tdm-gcc.tdragon.net/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * This distribution was compiled with the MSYS2 integrated
							 | 
						||
| 
								 | 
							
								    development, that supports 32 and 64 bit compilation. Setting up
							 | 
						||
| 
								 | 
							
								    MSYS2 should be done with care, but it is worth it as the
							 | 
						||
| 
								 | 
							
								    distribution works nicely in MINGW32 and MINGW64 mode. A third
							 | 
						||
| 
								 | 
							
								    compilation mode, MSYS mode, has problems with compiling sockets.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    msys2: http://sourceforge.net/projects/msys2/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * cygwin and cygwin64 now can generate native applications
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    cygwin: https://www.cygwin.com/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * Linux has a nice cross-compilation environment, with some of the best 
							 | 
						||
| 
								 | 
							
								    work done for Fedora.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    fedora mingw cross-compiler: http://fedoraproject.org/wiki/MinGW/CrossCompilerFramework
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    One problem is that this environment requires emulation of WIN32
							 | 
						||
| 
								 | 
							
								    executables to generate the initial saved state and to compile
							 | 
						||
| 
								 | 
							
								    `chr`. `wine` sometimes does the task, but it sometimes fails.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  * OSX has the `mxe` package, a port of mingw that is in active 
							 | 
						||
| 
								 | 
							
								    development.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    mxe: http://mxe.cc/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Note that OSX has technical limitations that preclude porting
							 | 
						||
| 
								 | 
							
								    wine64. wine32 is distributed with package managers such as ports
							 | 
						||
| 
								 | 
							
								    and brew.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								=== Setting up WIN32 compilation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Compiling WIN32 packages depends on a number of parameters: chosen compiler,
							 | 
						||
| 
								 | 
							
								packages to install, directory setup. You may have to change these ones that
							 | 
						||
| 
								 | 
							
								control the `mkwin` script:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * `VER`: major/minor number  
							 | 
						||
| 
								 | 
							
								 * `PATCHID`: third digit
							 | 
						||
| 
								 | 
							
								 * `SRC`: directory containing yap sources, in the local environment notation.
							 | 
						||
| 
								 | 
							
								 * `SRC_WIN`: same, but in WIN32 standard notation.
							 | 
						||
| 
								 | 
							
								 * `THREADS`: yes or no? controllable from the command line.
							 | 
						||
| 
								 | 
							
								 * `ABI`: "32" or "64", controllable from the command line.
							 | 
						||
| 
								 | 
							
								 * `NSIS`: installer generator, usually "/c/Program Files (x86)/NSIS/makensis".
							 | 
						||
| 
								 | 
							
								 * `DOCS_DIR`: where you have the doxygen output.
							 | 
						||
| 
								 | 
							
								 * `GCC_DIR`: root of gcc seup.
							 | 
						||
| 
								 | 
							
								 * `HOST`: argument to `--host` configure command.
							 | 
						||
| 
								 | 
							
								 * `BUILD`: build directory
							 | 
						||
| 
								 | 
							
								 * `GMP`: multi-precision package; yes, no, or the installation directory; usually in the distribution.
							 | 
						||
| 
								 | 
							
								 * `CUDD`: BDD package, usually in the distribution.
							 | 
						||
| 
								 | 
							
								 * `JAVA`: Java sdk directory, usually in the distribution.
							 | 
						||
| 
								 | 
							
								 * `PYTHON`: Python package, usually in the distribution.
							 | 
						||
| 
								 | 
							
								 * `R`: R environment package, usually in the distribution.
							 | 
						||
| 
								 | 
							
								 * `GECODE`: constraint solver package, usually not in the WIN32 distribution.
							 |