Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
howtos:win32:build [2014/06/22 13:53] – Add tags enricohowtos:win32:build [2016/08/08 09:23] (current) – Drop old Waf instructions and a redirect to the current build instructions enrico
Line 1: Line 1:
-====== Build Geany on Windows ======+~~REDIRECT>howtos:win32:msys2~~
  
-This howto describes how to set up a working build environment on Windows 
-to be able to compile, build and test Geany and Geany-Plugins. 
- 
-Furthermore, this howto will cover how to create a full Geany release on Windows including 
-generating the Windows installers. 
- 
- 
-The described setup is quite custom and might not be state-of-art and as clean as it could. 
-However, it worked for the author([[users/enrico]]) for years :). 
- 
-Be careful about paths: this howto assumes everything is installed on the C: drive of a Windows 
-system (tested on Windows XP and 7). Furthermore, most additional dependent libraries and helper 
-utilities are installed into c:\libs. 
-It is recommended to keep these locations. If you need to change them, be careful and be sure 
-to adjust all paths mentioned in the following sections before executing them. 
- 
-Also note that in some of the linked helper scripts, the paths are hardcoded, so you need to adjust 
-them as well. 
- 
- 
- 
-===== Prerequisites ===== 
- 
-Download and install the following tools 
- 
-==== Git ==== 
- 
-Download and install from http://git-scm.com/download/win 
- 
-==== Python ==== 
- 
-Python is required for the Waf build system and various helper scripts. 
-Best to use the x86 (32bit) version of the latest Python 2 installer. 
-Download the installer, execute it and follow the instructions (install to c:\python27). 
- 
-https://www.python.org/downloads/windows/ 
- 
- 
-==== Perl ==== 
- 
-Download and install the Strawberry Perl distribution from http://strawberryperl.com. 
-This distribution also includes the mingw-gcc and related tools which will be used to compile Geany later. 
-Choose the 32bit installer and install Perl into c:\perl. 
- 
-http://strawberryperl.com/ 
- 
- 
-==== NSIS ==== 
- 
-To be able to Windows installers for Geany (most probably only interesting for Geany core devs), you need 
-the Nullsoft Scriptable Install System (NSIS). 
- 
-Download and install NSIS 2.46. 
- 
-http://nsis.sourceforge.net/Download 
- 
- 
-==== UnxUtils ==== 
- 
-UnxUtils contain lots of well known and useful tools from a Unix system, compiled for Windows (find, grep, etc.). 
- 
-Download the ZIP archive and unpack it to C:\libs\utils 
- 
-http://sourceforge.net/projects/unxutils/files/latest/download 
- 
- 
-==== GTK+ ==== 
- 
-And now to the exciting part: GTK+ on Windows. 
- 
-The easiest way is to download the whole GTK+ bundle (GTK+2.0, http://www.gtk.org/download/win32.php) and extract it to c:\libs. 
- 
-http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip 
- 
- 
-==== Gettext ==== 
- 
-Download the following archives and extract them to c:\libs. 
- 
-  * http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-dev_0.18.1.1-2_win32.zip 
-  * http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip 
- 
-==== Further dependencies (for geany-plugins) ==== 
- 
-If you want to compile geany-plugins as well, you need the following dependencies. 
-Download the archives and extract them into c:\libs. 
- 
- 
-  * http://download.tuxfamily.org/ctpl/releases/ctpl-0.3.2-win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/libsoup/2.26/libsoup-dev_2.26.3-1_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/libsoup/2.26/libsoup_2.26.3-1_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/libxml2_2.9.0-1_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/libxml2-dev_2.9.0-1_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/enchant-dev_1.5.0-2_win32.zip 
-  * http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/enchant_1.5.0-2_win32.zip 
- 
- 
-=== Lua for Windows === 
- 
-Setting up Lua on Windows in our custom build environment requires a few additional steps. 
- 
-  * Download lua-5.1.4_Win32_dll12_lib.zip from http://sourceforge.net/projects/luabinaries/files/5.1.4/Windows%20Libraries/ 
-  * Extract to c:\libs 
-  * Move liblua5.1.* to c:\libs\lib 
-  * Create c:\libs\lib\pkgconfig\lua.pc with the following content: 
- 
-<code ini lua.pc> 
-prefix=c:\libs 
-exec_prefix=${prefix} 
-libdir=${exec_prefix}/lib 
-includedir=${prefix}/include 
-datarootdir=${prefix}/share 
-datadir=${datarootdir} 
-localedir=${datarootdir}/locale 
- 
-Name: Lua 
-Description: A fast and lightweight IDE using GTK2 
-Requires: gtk+-2.0 >= 2.8.0 
-Version: 5.1 
-Libs: -L${libdir} -llua5.1 
-Cflags: -I${includedir} 
-</code> 
- 
- 
-===== Setup ===== 
- 
-==== Modify %PATH% ==== 
- 
-For convenience and a working build system, you need to extend the %PATH% variable, so the newly installed tools will be available 
-without typing the whole path every time. 
- 
-To do so, open the //Control Panel// and choose //System and Security\System//, then click on the left on //Advanced system settings//. 
-In the newly opened dialog, click on //Environment Variables//. In the list of //System variables// search for //Path//. 
- 
-Edit it and add the following paths to the end of list (seperated with semicolon): 
- 
-<code> 
-C:\python27;C:\Program Files (x86)\NSIS;c:\libs\bin;C:\libs\utils\usr\local\wbin;C:\Program Files (x86)\Git\cmd;C:\perl\perl\site\bin;C:\perl\perl\bin;C:\perl\c\bin 
-</code> 
- 
-It might be some of the paths were already added by some installers. Adding them twice won't hurt but it is always better to check the whole list before saving. 
- 
-Then save and close all dialogs. 
- 
-To test the new setting, open a new command line window (Start -> Run -> "cmd.exe") and test executing the following commands: 
- 
-  * python 
-  * perl 
-  * wget 
-  * pkg-config 
-  * makensis 
- 
- 
-==== Clone the Geany repository from Github ==== 
- 
-Before starting with the rest, you need the Geany source code first (and the code of geany-plugins and the extra themes). 
-In a command line window, execute the following commands: 
- 
-<code> 
-mkdir \git 
-cd \git 
-git clone git://github.com/geany/geany 
-git clone git://github.com/geany/geany-plugins 
-git clone git://github.com/geany/geany-themes 
-</code> 
- 
-===== Build and test ===== 
- 
- 
-==== Build Geany ==== 
- 
-Now you are ready to compile and build Geany already. 
- 
-In a command line window, execute the following commands: 
- 
-<code> 
-cd \git\geany 
-python waf configure 
-python waf build 
-python waf install 
-</code> 
- 
-If all went fine, you should have a full Geany for Windows build in \git\geany\geany-1.25 (or whatever is the current version of GIT Master). 
- 
- 
-=== Copy include headers for later use === 
- 
-To be able to compile plugins against your current version of Geany,  
-you need to copy the header files and the pkg-config file geany.pc to 
-c:\libs so that pkg-config and the compiler will find those files. 
- 
-To do so easily, you can use the following script to copy the header files and the geany.pc  
-pkg-config file to c:\libs. 
- 
-<code python copy_headers.py> 
-#!/usr/bin/env python 
- 
-import os, shutil 
- 
-VERSION = '1.25' 
-DEST = r'\libs' 
- 
-# header files 
-shutil.rmtree(r'\libs\include\geany', ignore_errors=True) 
-shutil.copytree(r'geany-%s\include\geany' % VERSION, r'%s\include\geany' % DEST) 
-# geany.pc 
-shutil.copy(r'geany-%s\lib\pkgconfig\geany.pc' % VERSION, r'%s\lib\pkgconfig' % DEST) 
-</code> 
- 
- 
-==== Build Geany-Plugins ==== 
- 
-After Geany has been compiled and the headers copied into the target location, you 
-should be able to compile Geany-Plugins as well. 
-In a command line window, execute the following commands: 
- 
-<code> 
-cd \git\geany 
-python waf configure 
-python waf build 
-python waf install 
-</code> 
- 
-Carefully read the output of //python waf configure// and check whether the installed dependencies 
-have been found. At the time of writing, it is expected that the following dependencies will not 
-be found and/or are not really supported yet: 
- 
-  * GpgMe 
-  * GtkSpell 
-  * PyGTK (an update to this tutorial for building GeanyPy using PyGTK on Windows is planned) 
-  * VTE 
-  * Vala 
-  * WebKit 
- 
- 
-If all went fine, you should have the plugins built in \git\geany-plugins\geany-plugins-1.25 (or whatever is the current version of GIT Master). 
- 
- 
-==== Test the Geany build ==== 
- 
-After you have built Geany and Geany-Plugins from source, you might want to run and test it. 
-This is a bit tricky but possible. 
- 
-=== Initial test setup === 
- 
-Execute the following commands only once: 
- 
-  * create directory: c:\git\geany_test 
-  * copy everything from c:\git\geany\geany-1.25 to c:\git\geany_test 
-  * copy bundled GTK runtine environment to c:\git\geany_test 
-  * copy everything from c:\git\geany-plugins\geany-plugins-1.25 to c:\git\geany_test 
-  * copy plugins dependencies from c:\git\geany-plugins\contrib to c:\git\geany_test 
-   
-=== Usage === 
- 
-Save the following script to \git\geany\ 
- 
-<code winbatch _geany_test.bat> 
-cd c:\git\geany\ 
- 
-copy _build_\geany.exe c:\git\geany_test\bin\ 
-xcopy /Y _build_\*.dll c:\git\geany_test\lib\ 
- 
-cd c:\git\geany-plugins\ 
-for /F "usebackq" %%i in (`dir /s /b _build_\*.dll`) do copy %%i c:\git\geany_test\lib 
-# cleanup 
-rm c:\git\geany_test\lib\libgeanylua.dll 
- 
-cd c:\git\geany_test\bin\ 
- 
-geany.exe -v --socket-file ..\_geany_config\mysocket -c ..\_geany_config 
-</code> 
- 
-Then whenever you want to test a Geany build, run _geany_test.bat from \git\geany. 
- 
- 
-===== Release Geany and Geany-Plugins ===== 
- 
- 
-==== Release Geany ==== 
- 
- 
-  * edit release.py and update VERSION constant 
-  * check for a clean working copy (e.g. no uncommitted changes) 
-  * clean and build (adjust versions as necessary): 
-<code> 
-rmdir /S geany-1.24 
-python waf clean 
-git pull 
-python waf configure --no-scm 
-python waf build 
-python waf install 
-python release.py 
-</code> 
-  * Party! 
- 
- 
-==== Release Geany-Plugins ==== 
- 
-  * edit: release.py and update VERSION constant 
-  * check for a clean working copy (e.g. no uncommitted changes) 
-  * clean and build (adjust versions as necessary): 
-<code> 
-rmdir /S geany-plugins-1.24 
-python waf clean 
-git pull 
-python waf configure --no-scm 
-python waf build 
-python waf install 
-python release.py 
-</code> 
-  * Party! 
- 
- 
- 
- 
-====== TODO ====== 
- 
-  * document and provide stripped GTK bundle 
-  * document and provide plugins contrib 
-  * document release process in detail 
-  * document PyGTK installation  
- 
- 
-{{tag>howto win32 build}} 
Print/export