265 lines
12 KiB
Plaintext
265 lines
12 KiB
Plaintext
|
# -*- 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')},
|
||
|
})
|