[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/bksys
From: Thomas Nagy <tnagyemail-mail () yahoo ! fr>
Date: 2005-09-18 20:18:57
Message-ID: 1127074737.722822.28618.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 461836 by tnagy:
Moved more KDE specific code to kde4, improved the dcop processing
M +1 -1 generic.py
M +0 -5 kde3.py
M +147 -3 kde4.py
M +3 -0 unix/detect_kde4.py
--- trunk/KDE/kdelibs/bksys/generic.py #461835:461836
@@ -431,7 +431,7 @@
# This avoids recompiling the same files over and over again:
# very handy when working with cvs
# TODO: not portable so add a win32 ifdef
- if os.getuid() != 0: env.CacheDir( env.join(os.getcwd(),'cache','objects') )
+ #if os.getuid() != 0: env.CacheDir( env.join(os.getcwd(),'cache','objects') )
# Avoid spreading .sconsign files everywhere - keep this line
env.SConsignFile( env['CACHEDIR']+'scons_signatures' )
--- trunk/KDE/kdelibs/bksys/kde3.py #461835:461836
@@ -435,9 +435,6 @@
It also makes custom checks against double includes like : ['file.ui', 'file.cpp']
(file.cpp is already included because of file.ui) """
- # ITA
- #print "kdefiles"
-
q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
def scan_moc(cppfile):
addfile=None
@@ -527,8 +524,6 @@
if ofile == file:
env.pprint('RED',"WARNING: You have included %s.kcfg and another file of the \
same prefix"%file)
print "Files generated by kconfig_compiler (settings.h, settings.cpp) must not \
be included"
- # ITA
- #print "end kdefiles"
return src
--- trunk/KDE/kdelibs/bksys/kde4.py #461835:461836
@@ -29,6 +29,8 @@
('KDEXDG', ''), ('KDEXDGDIR', ''), ('KDEMENU', ''),
('KDEMIME', ''), ('KDEICONS', ''), ('KDESERV', ''),
('KDESERVTYPES', ''), ('KDEAPPS', ''),
+
+ ('DCOPIDL', ''), ('DCOPIDL2CPP', ''),
)
opts.Update(env)
@@ -53,13 +55,13 @@
Builder=SCons.Builder.Builder
## KIDL file
- env['BUILDERS']['Kidl']=Builder(action= 'dcopidl $SOURCE > $TARGET || (rm -f \
$TARGET ; false)', + env['BUILDERS']['Kidl']=Builder(action='$DCOPIDL $SOURCE \
> $TARGET || (rm -f $TARGET ; false)', suffix='.kidl', src_suffix='.h')
## DCOP
- env['BUILDERS']['Dcop']=Builder(action='dcopidl2cpp --c++-suffix cpp \
--no-signals --no-stub $SOURCE', + \
env['BUILDERS']['Dcop']=Builder(action='$DCOPIDL2CPP --c++-suffix cpp --no-signals \
--no-stub $SOURCE', suffix='_skel.cpp', src_suffix='.kidl')
## STUB
- env['BUILDERS']['Stub']=Builder(action= 'dcopidl2cpp --c++-suffix cpp \
--no-signals --no-skel $SOURCE', + \
env['BUILDERS']['Stub']=Builder(action='$DCOPIDL2CPP --c++-suffix cpp --no-signals \
--no-skel $SOURCE', suffix='_stub.cpp', src_suffix='.kidl')
## DOCUMENTATION
@@ -155,6 +157,148 @@
continue
lenv.bksys_install(destdir, iconfile, icon_filename)
+ ui_ext = [".ui"]
+ kcfg_ext = ['.kcfgc']
+ header_ext = [".h", ".hxx", ".hpp", ".hh"]
+ cpp_ext = [".cpp", ".cxx", ".cc"]
+ skel_ext = [".skel", ".SKEL"]
+ stub_ext = [".stub", ".STUB"]
+
+ def KDEfiles(lenv, target, source):
+ """ Returns a list of files for scons (handles kde tricks like .skel)
+ It also makes custom checks against double includes like : ['file.ui', 'file.cpp']
+ (file.cpp is already included because of file.ui) """
+
+ q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
+ def scan_moc(cppfile):
+ addfile=None
+
+ # try to find the header
+ orifile=cppfile.srcnode().name
+ bs=SCons.Util.splitext(orifile)[0]
+
+ h_file=''
+ dir=cppfile.dir
+ for n_h_ext in header_ext:
+ afile=dir.File(bs+n_h_ext)
+ if afile.rexists():
+ #h_ext=n_h_ext
+ h_file=afile
+ break
+ # We have the header corresponding to the cpp file
+ if h_file:
+ h_contents = h_file.get_contents()
+ if q_object_search.search(h_contents):
+ # we know now there is Q_OBJECT macro
+ reg = '\n\s*#include\s*("|<)'+str(bs)+'.moc("|>)'
+ meta_object_search = re.compile(reg)
+ #cpp_contents = open(file_cpp, 'rb').read()
+ cpp_contents=cppfile.get_contents()
+ if meta_object_search.search(cpp_contents):
+ lenv.Moc(h_file)
+ else:
+ lenv.Moccpp(h_file)
+ addfile=bs+'_moc.cpp'
+ print "WARNING: moc.cpp for "+h_file.name+" consider using #include <file.moc> \
instead" + return addfile
+ src=[]
+ ui_files=[]
+ kcfg_files=[]
+ other_files=[]
+ kidl=[]
+
+ source_=lenv.make_list(source)
+
+ # For each file, check wether it is a dcop file or not, and create the complete \
list of sources + for file in source_:
+
+ sfile=SCons.Node.FS.default_fs.File(str(file)) # why str(file) ? because ordinal \
not in range issues + bs = SCons.Util.splitext(file)[0]
+ ext = SCons.Util.splitext(file)[1]
+ if ext in skel_ext:
+ if not bs in kidl:
+ kidl.append(bs)
+ lenv.Dcop(bs+'.kidl')
+ src.append(bs+'_skel.cpp')
+ elif ext in stub_ext:
+ if not bs in kidl:
+ kidl.append(bs)
+ lenv.Stub(bs+'.kidl')
+ src.append(bs+'_stub.cpp')
+ elif ext == ".moch":
+ lenv.Moccpp(bs+'.h')
+ src.append(bs+'_moc.cpp')
+ elif ext in cpp_ext:
+ src.append(file)
+ if not env.has_key('NOMOCFILE'):
+ ret = scan_moc(sfile)
+ if ret: src.append( sfile.dir.File(ret) )
+ elif ext in ui_ext:
+ lenv.Uic(file)
+ src.append(bs+'.cpp')
+ elif ext in kcfg_ext:
+ name=SCons.Util.splitext(sfile.name)[0]
+ hfile=lenv.Kcfg(file)
+ cppkcfgfile=sfile.dir.File(bs+'.cpp')
+ src.append(bs+'.cpp')
+ else:
+ src.append(file)
+
+ for base in kidl: lenv.Kidl(base+'.h')
+
+ # Now check against typical newbie errors
+ for file in ui_files:
+ for ofile in other_files:
+ if ofile == file:
+ env.pprint('RED',"WARNING: You have included %s.ui and another file of the same \
prefix"%file) + print "Files generated by uic (file.h, file.cpp must not be \
included" + for file in kcfg_files:
+ for ofile in other_files:
+ if ofile == file:
+ env.pprint('RED',"WARNING: You have included %s.kcfg and another file of the \
same prefix"%file) + print "Files generated by kconfig_compiler (settings.h, \
settings.cpp) must not be included" + return src
+
+ #valid_targets = "program convenience shlib kioslave staticlib".split()
+ import generic
+ class kobject(generic.genobj):
+ def __init__(self, val, senv=None):
+ if senv: generic.genobj.__init__(self, val, senv)
+ else: generic.genobj.__init__(self, val, env)
+ self.iskdelib=0
+ def it_is_a_kdelib(self): self.iskdelib=1
+ def execute(self):
+ if self.executed: return
+ if self.orenv.has_key('DUMPCONFIG'):
+ self.executed=1
+ self.xml()
+ return
+ if (self.type=='shlib' or self.type=='kioslave'):
+ install_dir = 'KDEMODULE'
+ if self.iskdelib==1: install_dir = 'KDELIB'
+ self.instdir=getInstDirForResType(self.orenv, install_dir)
+ elif self.type=='program':
+ self.instdir=getInstDirForResType(self.orenv, 'KDEBIN')
+ self.perms=0755
+
+ # ITA
+ #print self.source
+ #print "hallo"
+ self.p_localsource=KDEfiles(env, self.joinpath(self.target), \
self.joinpath(self.source)) + # ITA
+ #print self.p_localsource
+ generic.genobj.execute(self)
+
+ def xml(self):
+ dirprefix = reldir('.')
+ if not dirprefix: dirprefix=self.dirprefix
+ ret='<compile type="%s" dirprefix="%s" target="%s" cxxflags="%s" cflags="%s" \
includes="%s" linkflags="%s" libpaths="%s" libs="%s" vnum="%s" iskdelib="%s" \
libprefix="%s">\n' % (self.type, dirprefix, self.target, self.cxxflags, self.cflags, \
self.includes, self.linkflags, self.libpaths, self.libs, self.vnum, self.iskdelib, \
self.libprefix) + if self.source:
+ for i in self.orenv.make_list(self.source): ret+=' <source file="%s"/>\n' % i
+ ret+="</compile>\n"
+ self.orenv.add_dump(ret)
+
+
from SCons.Script.SConscript import SConsEnvironment
SConsEnvironment.KDEicon = KDEicon
--- trunk/KDE/kdelibs/bksys/unix/detect_kde4.py #461835:461836
@@ -27,6 +27,9 @@
env['KDEDATA']='/usr/share'
env['KDEMIME']='/usr/share/mimelnk'
+ env['DCOPIDL']='build/dcop/dcopidl/dcopidlold'
+ env['DCOPIDL2CPP']='build/dcop/dcopidl2cpp/dcopidl2cpp'
+
def detect(env):
"""
def getpath(varname):
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic