[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/bksys
From:       Benjamin Reed <ranger () befunk ! com>
Date:       2005-09-30 20:55:37
Message-ID: 1128113737.288798.26171.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 465789 by reed:

it's not pretty, but linking is starting to work on osx

 M  +14 -3     generic.py  
 M  +6 -1      lowlevel.py  
 A             osx/detect_qt4.py  
 M  +24 -4     qt4.py  
 M  +5 -0      unix/detect_generic.py  


--- trunk/KDE/kdelibs/bksys/generic.py #465788:465789
@@ -49,6 +49,10 @@
 		elif key == 'colorful':  use_colors = dict[key]
 		else: print 'unknown key: '+key
 
+	## rpath flags are wrong (and pointless) on darwin
+	if sys.platform == 'darwin':
+		want_rpath = 0
+
 	## make sure the build dir is available
 	## TODO what if it is in a non-existing subdirectory ? (ita)
 	if not os.path.exists(build_dir): os.mkdir(build_dir)
@@ -281,9 +285,13 @@
 				# TODO: we need to mark in the cache that something is not there, rather than \
re-testing on every scons run  #if not self.env.has_key('LIBPATH_'+lib) and not \
self.env.has_key('INCLUDES_'+lib) and not self.env.has_key('LIB_'+lib) and not \
self.env.has_key('LINKFLAGS_'+lib):  #	raise genobj.WrongLibError(lib)
-				if self.env.has_key('LIB_'+lib):
+				if self.env.has_key('FRAMEWORK_'+lib):
+					self.env.AppendUnique(FRAMEWORKS=self.env['FRAMEWORK_'+lib])
+				elif self.env.has_key('LIB_'+lib):
 					self.env.AppendUnique(LIBS=self.env['LIB_'+lib])
-				if self.env.has_key('LIBPATH_'+lib):
+				if self.env.has_key('FRAMEWORKPATH_'+lib):
+					self.env.AppendUnique(FRAMEWORKPATH=self.env['FRAMEWORKPATH_'+lib])
+				elif self.env.has_key('LIBPATH_'+lib):
 					self.env.AppendUnique(LIBPATH=self.env['LIBPATH_'+lib])
 				if self.env.has_key('LINKFLAGS_'+lib):
 					self.env.AppendUnique(LINKFLAGS=self.env['LINKFLAGS_'+lib])
@@ -678,8 +686,11 @@
 			lst=target.split('/')
 			tname=lst[len(lst)-1]
 			libname=tname.split('.')[0]
+			# TODO: proper handling of bundles (LD* instead of LIB* in scons?)
+			# TODO: -undefined dynamic_lookup == "allow undefined", need proper support for
+			# -no-undefined and similar in such a way that's cross-platform
 			if sys.platform == 'darwin':
-				thisenv.AppendUnique(LINKFLAGS = ["-Wl,--soname=%s.%s.dylib" % (libname, num)] )
+				thisenv.AppendUnique(LINKFLAGS = ["-undefined","dynamic_lookup","-install_name", \
"%s.%s.dylib" % (libname, num)] )  else:
 				thisenv.AppendUnique(LINKFLAGS = ["-Wl,--soname=%s.so.%s" % (libname, num)] )
 
--- trunk/KDE/kdelibs/bksys/lowlevel.py #465788:465789
@@ -19,13 +19,18 @@
 def generate(env):
 	if env['HELP']: return
 
+	import sys
+
 	#######################################
 	## other stuff
 
 	if env['WINDOWS']:
 		env['CONVENIENCE']         = []
 	else:
-		env['CONVENIENCE']         = ['-fPIC','-DPIC'] # TODO flags for convenience \
libraries +		if sys.platform == 'darwin':
+			env['CONVENIENCE']         = ['-fPIC','-DPIC','-fno-common'] # TODO flags for \
convenience libraries +		else:
+			env['CONVENIENCE']         = ['-fPIC','-DPIC'] # TODO flags for convenience \
libraries  
 	########## zlib
 	env['LIB_Z']               = ['z']
--- trunk/KDE/kdelibs/bksys/qt4.py #465788:465789
@@ -57,40 +57,61 @@
 		('LIBPATH_QT', ''),
 		('LIB_QT', ''),
 		('RPATH_QT', ''),
+		('FRAMEWORKPATH_QT', ''),
+		('FRAMEWORK_QT', ''),
 
 		('CPPPATH_QT3SUPPORT', ''),
 		('CXXFLAGS_QT3SUPPORT', ''),
 		('LIB_QT3SUPPORT', ''),
 		('RPATH_QT3SUPPORT', ''),
+		('FRAMEWORK_QT3SUPPORT', ''),
+		('FRAMEWORKPATH_QT3SUPPORT', ''),
 
 		('CPPPATH_QTCORE', ''),
 		('LIB_QTCORE', ''),
 		('RPATH_QTCORE', ''),
+		('FRAMEWORK_QTCORE', ''),
+		('FRAMEWORKPATH_QTCORE', ''),
 
 		('CPPPATH_QTDESIGNER', ''),
 		('LIB_QTDESIGNER', ''),
+		('FRAMEWORK_QTDESIGNER', ''),
+		('FRAMEWORKPATH_QTDESIGNER', ''),
+
 		('CPPPATH_QTASSISTANT', ''),
 		('LIB_QTASSISTANT', ''),
+		('FRAMEWORK_QTASSISTANT', ''),
+		('FRAMEWORKPATH_QTASSISTANT', ''),
 			
 		('CPPPATH_QTNETWORK', ''),
 		('LIB_QTNETWORK', ''),
 		('RPATH_QTNETWORK', ''),
+		('FRAMEWORK_QTNETWORK', ''),
+		('FRAMEWORKPATH_QTNETWORK', ''),
 
 		('CPPPATH_QTGUI', ''),
 		('LIB_QTGUI', ''),
 		('RPATH_QTGUI', ''),
+		('FRAMEWORK_QTGUI', ''),
+		('FRAMEWORKPATH_QTGUI', ''),
 
 		('CPPPATH_QTOPENGL', ''),
 		('LIB_QTOPENGL', ''),
 		('RPATH_QTOPENGL', ''),
+		('FRAMEWORK_QTOPENGL', ''),
+		('FRAMEWORKPATH_QTOPENGL', ''),
 
 		('CPPPATH_QTSQL', ''),
 		('LIB_QTSQL', ''),
 		('RPATH_QTSQL', ''),
+		('FRAMEWORK_QTSQL', ''),
+		('FRAMEWORKPATH_QTSQL', ''),
 
 		('CPPPATH_QTXML', ''),
 		('LIB_QTXML', ''),
 		('RPATH_QTXML', ''),
+		('FRAMEWORK_QTXML', ''),
+		('FRAMEWORKPATH_QTXML', ''),
 
 		# TODO remove
 		('QTPLUGINS', 'uic executable command'),
@@ -100,15 +121,14 @@
 	opts.Update(env)
 
 	# reconfigure when things are missing
-	if not env['HELP'] and (env['_CONFIGURE_'] or not env.has_key('LIB_QT')):
+	if not env['HELP'] and (env['_CONFIGURE_'] or (not env.has_key('LIB_QT') and not \
env.has_key('FRAMEWORK_QT'))):  env['_CONFIGURE_']=1
 		for opt in opts.options:
 			if env.has_key(opt.key): env.__delitem__(opt.key)
 		import sys
 		if sys.platform == 'darwin':
-			# TODO: implement Qt .framework detection, rather than just the shared lib \
                version
-			# sys.path.append('bksys'+os.sep+'osx')
-			sys.path.append('bksys'+os.sep+'unix')
+			sys.path.append('bksys'+os.sep+'osx')
+			#sys.path.append('bksys'+os.sep+'unix')
 			from detect_qt4 import detect
 		else:
 			sys.path.append('bksys'+os.sep+'unix')
--- trunk/KDE/kdelibs/bksys/unix/detect_generic.py #465788:465789
@@ -16,6 +16,11 @@
 
 	if os.environ.has_key('CFLAGS'): env['GENCCFLAGS'] = SCons.Util.CLVar( \
os.environ['CFLAGS'] )  
+	## Mac OS X settings
+	if sys.platform == 'darwin':
+		env['GENCXXFLAGS'] += ['-fno-common']
+		env['GENLINKFLAGS'] += ['-undefined', 'dynamic_lookup']
+
 	## Linux settings
 	if sys.platform == 'linux2':
 		env['GENCXXFLAGS'] += ['-D_XOPEN_SOURCE=500', '-D_BSD_SOURCE', '-D_GNU_SOURCE']


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic