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')}, | ||
|  | }) |