changeset 67:cd38b9d94e57

Add linux/autopackage platform.
author janneke <janneke@gnu.org>
date Wed, 30 Nov 2005 22:11:32 +0100
parents 3e0157ebcab8
children b44ef1829e79
files GNUmakefile driver.py specs/cross.py specs/framework.py specs/gub.py specs/mingw.py
diffstat 6 files changed, 92 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/GNUmakefile	Wed Nov 30 20:34:05 2005 +0100
+++ b/GNUmakefile	Wed Nov 30 22:11:32 2005 +0100
@@ -2,7 +2,10 @@
 default: all
 
 all:
-	python driver.py mac mingw
+	python driver.py linux mac mingw
+
+linux:
+	python driver.py linux
 
 mac:
 	python driver.py mac
--- a/driver.py	Wed Nov 30 20:34:05 2005 +0100
+++ b/driver.py	Wed Nov 30 22:11:32 2005 +0100
@@ -1,10 +1,11 @@
 #!/usr/bin/python
 
 import __main__
+import getopt
 import os
 import re
+import string
 import sys
-import getopt
 
 sys.path.insert (0, 'specs/')
 
@@ -17,12 +18,13 @@
 		self.target_gcc_flags = '' 
 		self.topdir = os.getcwd ()
 		self.downloaddir = os.getcwd () + '/downloads'
-		self.build_spec = 'i686-linux'
+		self.build_architecture = gub.read_pipe ('gcc -dumpmachine')[:-1]
 		self.srcdir = os.path.join (self.topdir, 'src')
 		self.specdir = self.topdir + '/specs'
 		self.gtk_version = '2.8'
 
 		self.target_architecture = arch
+		self.tool_prefix = arch + '-'
 		self.targetdir = self.topdir + '/target/%s' % self.target_architecture
 		self.builddir = self.targetdir + '/build'
 		self.garbagedir = self.targetdir + '/garbage'
@@ -97,10 +99,11 @@
 		platform = files[0]
 	except IndexError:
 		platform = ''
-		
-	if platform not in ['mac', 'mingw', 'mingw-fedora']:
-		print 'unknown platform', platform
-		print 'Use mac, mingw, mingw-fedora'
+
+	platforms = ('linux', 'mac', 'mingw', 'mingw-fedora')
+	if platform not in platforms:
+		print 'unsupported platform:', platform
+		print 'use:', string.join (platforms)
 		sys.exit (1)
 
 	if platform == 'mac':
@@ -113,8 +116,18 @@
 		settings.target_gcc_flags = '-mwindows -mms-bitfields'
 		platform = 'mingw'
 	elif platform == 'linux':
-		settings = Settings ('ap')
+		settings = Settings ('linux')
 		platform = 'linux'
+		settings.target_architecture = settings.build_architecture
+		# Use apgcc to avoid using too new GLIBC symbols
+		# possibly -Wl,--as-needed has same effect.
+		settings.gcc = 'apgcc'
+		settings.gxx = 'apg++'
+		settings.ld = 'apgcc'
+		settings.tool_prefix = ''
+		os.environ['CC'] = settings.gcc
+		os.environ['CXX'] = settings.gxx
+		os.environ['LD'] = settings.ld
 
 	gub.start_log ()
 	settings.verbose = verbose
--- a/specs/cross.py	Wed Nov 30 20:34:05 2005 +0100
+++ b/specs/cross.py	Wed Nov 30 22:11:32 2005 +0100
@@ -2,8 +2,7 @@
 
 
 cross_config_cache ={
-	'all':
-  """ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
+	'all': '''
 ac_cv_c_long_size_t=${ac_cv_c_long_size_t=no}
 ac_cv_c_long_time_t=${ac_cv_c_long_time_t=yes}
 ac_cv_sizeof___int64=${ac_cv_sizeof___int64=0}
@@ -51,24 +50,29 @@
 lt_cv_dlopen=${lt_cv_dlopen="dlopen"}
 lt_cv_dlopen_libs=${lt_cv_dlopen_libs="none required"}
 libltdl_cv_sys_search_path=${libltdl_cv_sys_search_path="'"/lib /usr/lib $cygwin_prefix/lib"'"}
-lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192}
 ac_cv_lib_dld_shl_load=${ac_cv_lib_dld_shl_load=no}
 ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=no}
 ac_cv_c_stack_direction=${ac_cv_c_stack_direction=-1}
-"""
-,
+''',
+	'linux' : '''
+lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=32768}
+''',
 	'mac' : '''
+ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
+lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192}
 glib_cv_uscore=${glib_cv_uscore=no}
 ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
-'''
-	,
-	'cygwin': """ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes}
+''',
+	'cygwin': '''
+lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192}
+ac_cv_func_mkfifo=${ac_cv_func_mkfifo=yes}
 ac_cv_have_dev_ptmx=${ac_cv_have_dev_ptmx=}
 ac_cv_have_dev_ptc=${ac_cv_have_dev_ptc=}
-"""
-	,
-	'mingw': """ac_cv_func_mkfifo=${ac_cv_func_mkfifo=no}
+''',
+	'mingw': '''
+lt_cv_sys_max_cmd_len=${lt_cv_sys_max_cmd_len=8192}
+ac_cv_func_mkfifo=${ac_cv_func_mkfifo=no}
 ac_cv_have_dev_ptmx=${ac_cv_have_dev_ptmx=no}
 ac_cv_have_dev_ptc=${ac_cv_have_dev_ptc=no}
-"""
+'''
 }
--- a/specs/framework.py	Wed Nov 30 20:34:05 2005 +0100
+++ b/specs/framework.py	Wed Nov 30 22:11:32 2005 +0100
@@ -387,11 +387,14 @@
 
 class Zlib (gub.Target_package):
 	def configure (self):
+		zlib_is_broken = 'SHAREDTARGET=libz.so.1.2.2'
+		if self.settings.platform.startswith ('mingw'):
+			zlib_is_broken = 'target=mingw'
 		self.system ('''
 sed -i~ 's/mgwz/libz/' %(srcdir)s/configure
 shtool mkshadow %(srcdir)s %(builddir)s
-cd %(builddir)s && target=mingw AR="%(AR)s r" %(srcdir)s/configure --shared
-''')
+cd %(builddir)s && %(zlib_is_broken)s AR="%(AR)s r" %(srcdir)s/configure --shared
+''', locals ())
 
 # latest vanilla packages
 #Zlib (settings).with (version='1.2.3', mirror=download.zlib, format='bz2'),
@@ -426,4 +429,7 @@
 	),
 	}
 
+	if platform == 'linux':
+		return packages['mingw']
+	
 	return packages[platform]
--- a/specs/gub.py	Wed Nov 30 20:34:05 2005 +0100
+++ b/specs/gub.py	Wed Nov 30 22:11:32 2005 +0100
@@ -89,11 +89,12 @@
 		
 	def package_dict (self, env={}):
 		dict = {
-			'build_spec': self.settings.build_spec,
+			'build_architecture': self.settings.build_architecture,
 			'garbagedir': self.settings.garbagedir,
 			'gtk_version': self.settings.gtk_version,
 			'systemdir': self.settings.systemdir,
 			'target_architecture': self.settings.target_architecture,
+			'tool_prefix': self.settings.tool_prefix,
 			'target_gcc_flags': self.settings.target_gcc_flags,
 			'name': self.name (),
 			'version': self.version,
@@ -310,17 +311,17 @@
 	
 class Target_package (Package):
 	def configure_command (self):
-		return join_lines ('''%(srcdir)s/configure 
---config-cache 
---enable-shared 
---disable-static 
---build=%(build_spec)s 
---host=%(target_architecture)s 
---target=%(target_architecture)s 
---prefix=/usr 
---sysconfdir=/etc 
---includedir=/usr/include 
---libdir=/usr/lib 
+		return join_lines ('''%(srcdir)s/configure
+--config-cache
+--enable-shared
+--disable-static
+--build=%(build_architecture)s
+--host=%(target_architecture)s
+--target=%(target_architecture)s
+--prefix=/usr
+--sysconfdir=/etc
+--includedir=/usr/include
+--libdir=/usr/lib
 ''')
 
 	def config_cache_overrides (self, str):
@@ -335,19 +336,21 @@
 		# return self.settings.systemdir + '/usr'
 
 	def install_command (self):
-		return '''make install \
-prefix=%(installdir)s \
-exec_prefix=%(installdir)s \
-bindir=%(installdir)s/bin \
-infodir=%(installdir)s/share/info \
-mandir=%(installdir)s/share/man \
-libdir=%(installdir)s/lib \
-sysconfdir=%(installdir)s/etc \
-includedir=%(installdir)s/include \
-tooldir=%(installdir)s \
-gcc_tooldir=%(installdir)s \
-libexecdir=%(installdir)s/lib \
-'''
+		return join_lines ('''make install
+bindir=%(installdir)s/bin
+aclocaldir=%(installdir)s/share/aclocal
+datadir=%(installdir)s/share
+exec_prefix=%(installdir)s
+gcc_tooldir=%(installdir)s
+includedir=%(installdir)s/include
+infodir=%(installdir)s/share/info
+libdir=%(installdir)s/lib
+libexecdir=%(installdir)s/lib
+mandir=%(installdir)s/share/man
+prefpix=%(installdir)s
+sysconfdir=%(installdir)s/etc
+tooldir=%(installdir)s
+''')
 		
 	def config_cache (self):
 		self.system ('mkdir -p %(builddir)s')
@@ -378,26 +381,32 @@
 
 	def target_dict (self, env={}):
 		dict = {
-			'AR': '%(target_architecture)s-ar',
-			'CC':'%(target_architecture)s-gcc %(target_gcc_flags)s',
+			'AR': '%(tool_prefix)sar',
+			'CC': '%(tool_prefix)sgcc %(target_gcc_flags)s',
 			'CPPFLAGS': '-I%(systemdir)s/usr/include',
-			'CXX':'%(target_architecture)s-g++ %(target_gcc_flags)s',
-			'DLLTOOL' : '%(target_architecture)s-dlltool',
-			'DLLWRAP' : '%(target_architecture)s-dllwrap',
-			'LD': '%(target_architecture)s-ld',
+			'CXX':'%(tool_prefix)sg++ %(target_gcc_flags)s',
+			'DLLTOOL' : '%(tool_prefix)sdlltool',
+			'DLLWRAP' : '%(tool_prefix)sdllwrap',
+			'LD': '%(tool_prefix)sld',
 #			'LDFLAGS': '-L%(systemdir)s/usr/lib',
 # FIXME: for zlib, try adding bin
 			'LDFLAGS': '-L%(systemdir)s/usr/lib -L%(systemdir)s/usr/bin',
-			'NM': '%(target_architecture)s-nm',
+			'NM': '%(tool_prefix)snm',
 			'PKG_CONFIG_PATH': '%(systemdir)s/usr/lib/pkgconfig',
 			'PKG_CONFIG': '''/usr/bin/pkg-config \
 --define-variable prefix=%(systemdir)s/usr \
 --define-variable includedir=%(systemdir)s/usr/include \
 --define-variable libdir=%(systemdir)s/usr/lib \
 ''',
-			'RANLIB': '%(target_architecture)s-ranlib',
+			'RANLIB': '%(tool_prefix)sranlib',
 			'SED': 'sed', # libtool (expat mingw) fixup
 			}
+		if self.settings.__dict__.has_key ('gcc'):
+			dict['CC'] = self.settings.gcc
+		if self.settings.__dict__.has_key ('gxx'):
+			dict['CXX'] = self.settings.gxx
+		if self.settings.__dict__.has_key ('ld'):
+			dict['LD'] = self.settings.ld
 
 		dict.update (env)
 		return dict
--- a/specs/mingw.py	Wed Nov 30 20:34:05 2005 +0100
+++ b/specs/mingw.py	Wed Nov 30 22:11:32 2005 +0100
@@ -3,17 +3,12 @@
 import os
 import re
 
-
-class Binary_package (
-# FIXME: compile using mingw-runtime-src ?
-
-
 class Mingw_runtime (gub.Binary_package):
 	def set_download (self, mirror=download.gnu, format='gz', download=gub.Target_package.wget):
-		gub.Target_package.set_download (self, mirror, format, download)
+		gub.Package.set_download (self, mirror, format, download)
 		self.url = re.sub ('mingw-runtime/', 'mingw/', self.url)
 		self.url = re.sub ('w32api/', 'mingw/', self.url)
-		gub.Target_package.wget (self)
+		gub.Package.wget (self)
 		
 	def install (self):
 		gub.Binary_package.install (self)