PIKApp/build/windows/jhbuild/build.jhbuildrc

265 lines
12 KiB
Python

# -*- mode: python -*-
# This code is licensed under the GPLv2 License
# Derived work from the original freedesktop.org example.jhbuildrc
#
# This jhbuildrc file is created for the purpose of cross compile Gtk+
# with Mingw32 under Linux.
#
# Author: Alberto Ruiz <aruiz@gnome.org>
#
# modified by: Rolf Gebhardt <rg@klige.de>
#
moduleset = os.environ['PWD']+'/pika.moduleset'
module = os.environ.get('MODULE', 'pika-dev')
modules = [module]
flavour = os.environ.get('BUILD_FLAVOUR', 'rls')
if flavour == 'rls':
flavour_ext = ''
flavour_opt = ''
flavour_cflags = " -g "
else:
flavour_ext = '-dbg'
flavour_opt = "--enable-debug=yes"
flavour_cflags = " -g -O0 "
buildarch = os.environ.get('BUILD_ARCH', 'i686')
if buildarch != "i686" and buildarch != "x86_64":
print ("Warning: BUILD_ARCH not recognized")
# checkoutroot: path to download packages elsewhere
# prefix: target path to install the compiled binaries
checkoutroot = os.environ['PWD']+'/checkout/'
prefix = os.environ['PWD'] + '/targets/' + module + flavour_ext + '-' + buildarch + '/'
tarballdir = None
os.environ['prefix'] = prefix
searchprefix = os.environ['PWD']+'/targets/pika-common' + flavour_ext + '-' + buildarch + '/'
#The host value is obtained with the result of executing
#the config.guess script on any of the packages.
#This value must be valid for most linux/x86 out there
os.environ['HOST'] = 'x86_64-unknown-linux-gnu'
os.environ['TARGET'] = os.environ.get('MINGW_TARGET', buildarch + '-w64-mingw32')
os.environ['PKG_CONFIG_LIBDIR'] = ""
addpath('PKG_CONFIG_LIBDIR', os.path.join(searchprefix, 'lib', 'pkgconfig'))
addpath('PKG_CONFIG_LIBDIR', os.path.join(searchprefix, 'share', 'pkgconfig'))
os.environ['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_LIBDIR']
#Prefix for all the tools
mingw_tool_prefix = os.environ.get('MINGW_TOOLPREFIX', os.environ.get('MINGW_LOCATION', '/usr') + '/bin/' + os.environ['TARGET'] + '-')
mingw_tools = {'ADDR2LINE': 'addr2line',
'AS': 'as', 'CC': 'gcc', 'CPP': 'cpp',
'Cppfilt': 'c++filt', 'CXX': 'g++',
'DLLTOOL': 'dlltool', 'DLLWRAP': 'dllwrap',
'GCOV': 'gcov', 'LD': 'ld', 'NM': 'nm',
'OBJCOPY': 'objcopy', 'OBJDUMP': 'objdump',
'READELF': 'readelf', 'SIZE': 'size',
'STRINGS': 'strings', 'WINDRES': 'windres',
'AR': 'ar', 'RANLIB': 'ranlib', 'STRIP': 'strip'}
#Exporting all as environment variables with its prefix
mingw_tools_args = str()
for tool in mingw_tools.keys():
fullpath_tool = mingw_tool_prefix + mingw_tools[tool]
os.environ[tool] = fullpath_tool
# Allow enabling ccache
if os.environ.get('MINGW_USE_CCACHE', '') == 'yes':
os.environ['CC'] = 'ccache ' + os.environ['CC']
os.environ['CPP'] = 'ccache ' + os.environ['CPP']
os.environ['CXX'] = 'ccache ' + os.environ['CXX']
# Clear DISPLAY (prevents wine from popping up dialogs on some machines)
os.environ['DISPLAY'] = ''
#Added another common env var name for windres
os.environ['RC'] = os.environ['WINDRES']
#Exporting tool flags environment variables
os.environ['LDFLAGS'] = '-L'+searchprefix+'/lib'
os.environ['CFLAGS'] = '-mms-bitfields -I'+searchprefix+'/include '
os.environ['CPPFLAGS'] = '-I'+searchprefix+'/include'
os.environ['CXXFLAGS'] = '-mms-bitfields'
os.environ['CFLAGS'] += os.environ.get('MINGW_CFLAGS', '')
os.environ['CFLAGS'] += flavour_cflags
os.environ['CXXFLAGS']+= flavour_cflags
# CMake stuff
cmakeargs += ' -DCMAKE_TOOLCHAIN_FILE=' + os.environ['PWD'] + '/toolchain.cmake '
cmakeargs += ' -DCMAKE_FIND_ROOT_PATH="' + searchprefix + ';' + prefix + '" '
#Don't install libraries in lib64, even if compiling on 64-bit machines
use_lib64 = False
#Make scripts run with the interpreter that's running this script
#(required wherever /usr/bin/python is python 3)
import sys
os.environ['PYTHON'] = os.environ.get("PYTHON", sys.executable)
#needed by win32/Makefile.gcc of zlib
os.environ['INCLUDE_PATH'] = prefix+'/include'
os.environ['LIBRARY_PATH'] = prefix+'/lib'
os.environ['BINARY_PATH'] = prefix+'/bin'
#Populating autogenargs
autogenargs = ' --build='+os.environ['HOST']
autogenargs += ' --host='+os.environ['TARGET']
autogenargs += ' --disable-docs'
autogenargs += ' --enable-all-warnings --enable-maintainer-mode'
autogenargs += ' --disable-static'
autogenargs += ' '+flavour_opt
for tool in ('AR', 'RANLIB', 'STRIP', 'AS',
'DLLTOOL', 'OBJDUMP', 'NM', 'WINDRES'):
autogenargs += ' '+tool+'="'+os.environ[tool]+'" '
#Module specific configure arguments
module_autogenargs['zlib'] = ' --prefix='+prefix+' --shared'
module_autogenargs['jasper'] = autogenargs + """ --enable-shared"""
module_autogenargs['gettext'] = autogenargs + """ --without-emacs \
--without-cvs \
--disable-curses \
--disable-java \
--disable-native-java \
--enable-relocatable \
--enable-threads=win32"""
module_autogenargs['glib2'] = autogenargs + """ --disable-gtk-doc \
--disable-modular-tests \
--cache-file=""" + os.environ['PWD'] + "/win32.cache"
module_autogenargs['cairo'] = autogenargs + """ --enable-xlib=no \
--enable-xlib-xrender=no \
--enable-xcb=no \
--enable-xcb-shm=no \
--enable-pthread=no \
--enable-win32-font=yes"""
module_autogenargs['pixman'] = autogenargs + """ --enable-gtk=no"""
module_autogenargs['pango'] = autogenargs + """ --disable-gtk-doc \
--enable-explicit-deps=no \
--with-included-modules"""
module_autogenargs['atk'] = autogenargs + """ --disable-glibtest \
--disable-gtk-doc \
--enable-introspection=no"""
module_autogenargs['gdk-pixbuf2']= autogenargs + """ --with-included-loaders"""
module_autogenargs['gtk2'] = autogenargs + """ --disable-glibtest \
--disable-gtk-doc \
--disable-cups"""
module_autogenargs['gtk3'] = autogenargs + """ --disable-glibtest \
--disable-gtk-doc \
--disable-cups \
--enable-gtk2-dependency"""
module_autogenargs['fontconfig'] = autogenargs + """ --with-arch=i686 \
--enable-libxml2"""
module_autogenargs['icu'] = autogenargs + """ --with-cross-build=$(pwd)/../icu-native/ """
module_autogenargs['libxml2'] = autogenargs + """ --with-python=no \
--with-iconv=yes \
--with-zlib=no """
module_autogenargs['librsvg'] = autogenargs + """ --enable-introspection=no"""
module_autogenargs['libsoup'] = autogenargs + """ --without-apache-httpd"""
module_autogenargs['libwmf'] = autogenargs + """ --disable-gd \
--without-x \
--with-freetype=""" + prefix
module_autogenargs['ghostscript']= autogenargs + """ --without-jasper \
--with-system-libtiff \
--without-x \
--disable-cups \
--disable-contrib """
module_autogenargs['libgexiv2'] = autogenargs + "--disable-introspection"
module_autogenargs['webkitgtk'] = autogenargs.replace ("--enable-debug=yes", "") + """ \
--with-gtk=2.0 \
--with-target=win32 \
--disable-webkit2 \
--disable-geolocation \
--disable-video \
--disable-spellcheck \
--disable-credential-storage \
--disable-fast-malloc \
--disable-debug \
--disable-debug-symbols \
--disable-debug-features \
\
--disable-gamepad \
--with-acceleration_backend=none"""
module_autogenargs['babl'] = autogenargs + """ --enable-introspection=no"""
module_autogenargs['gegl'] = autogenargs + """ --enable-introspection=no \
--with-sdl=no"""
module_autogenargs['pika-stable']= autogenargs + """ --disable-python \
--disable-gtk-doc """
module_autogenargs['pika-dev'] = autogenargs + """ --disable-python \
--disable-gtk-doc """
module_autogenargs['pika-gtk3'] = autogenargs + """ --disable-python \
--disable-gtk-doc """
module_autogenargs['gdb'] = autogenargs.replace ("--disable-static", "")
module_cmakeargs['openjpeg2'] = cmakeargs + " -DBUILD_PKGCONFIG_FILES=ON"
module_makeargs['mingw32-pthreads']= " CROSS=" + mingw_tool_prefix
module_extra_env.update (
{'mingw32-pthreads':
{'PREFIX': prefix, 'INSTALL': 'install'},
'webkitgtk':
{'CFLAGS': os.environ['CFLAGS'].replace ("-g", ""),
'CXXFLAGS': os.environ['CXXFLAGS'].replace ("-g", "") + ' -I' + checkoutroot + 'pthreads-w32-2-9-1-release -w'},
'ghostscript':
{'CFLAGS': os.environ['CFLAGS'].replace ("-O0", "").replace ("-mms-bitfields", ""), 'ac_cv_lib_pthread_pthread_create': 'no', 'CC': os.environ['CC'] + " -mms-bitfields"},
'icu-native': {},
'poppler-data':
{'PREFIX': prefix},
'freetype2':
{'LIBPNG_CFLAGS': ' ', 'LIBPNG_LDFLAGS': '-lpng'},
'cairo':
{'ax_cv_c_float_words_bigendian': 'no'},
'json-c':
{'ac_cv_func_malloc_0_nonnull': 'yes', 'ac_cv_func_realloc_0_nonnull': 'yes'}, # Erm... this is potentially bad...
# Ensure that pika doesn't get the host machine's freetype-config
'pika-dev':
{'FREETYPE_CONFIG': os.path.join(searchprefix, 'bin', 'freetype-config'),
'ac_cv_lib_bz2_BZ2_bzCompress': 'yes',
'WMF_CONFIG': os.path.join(searchprefix, 'bin', 'libwmf-config')},
'pika-stable':
{'FREETYPE_CONFIG': os.path.join(searchprefix, 'bin', 'freetype-config'),
'ac_cv_lib_bz2_BZ2_bzCompress': 'yes',
'WMF_CONFIG': os.path.join(searchprefix, 'bin', 'libwmf-config')},
'pika-gtk3':
{'FREETYPE_CONFIG': os.path.join(searchprefix, 'bin', 'freetype-config'),
'ac_cv_lib_bz2_BZ2_bzCompress': 'yes',
'WMF_CONFIG': os.path.join(searchprefix, 'bin', 'libwmf-config')},
})