Deleted empty file ChangeLog. Update some cmake files with latest macros. Add basic cmake build instructions. Few cosmetics. Signed-off-by: gregory guy <gregory-tde@laposte.net>pull/4/head
parent
ac5847e869
commit
48deaabece
@ -1,84 +1,17 @@
|
||||
sctest REQUIREMENTS
|
||||
------------------------
|
||||
|
||||
tde is needed to run sctest
|
||||
|
||||
To compile sctest, the tde development packages
|
||||
are needed: tdelibs-devel, tdebase-devel and python
|
||||
|
||||
scons is also needed http://www.scons.org
|
||||
(this tool also used by Blender, ..)
|
||||
Make sure scons is at least v0.96.1, otherwise
|
||||
the compilation will fail. In case if you do not have
|
||||
it, a minimum distribution is provided (see SCONS below)
|
||||
|
||||
-> One should only have to run :
|
||||
$ scons
|
||||
# scons install
|
||||
(do "scons install" as root - the menus may not
|
||||
show up if you skip this step)
|
||||
|
||||
|
||||
SCONS
|
||||
-----
|
||||
|
||||
-> If scons is missing, use the one bundled with PROGRAMNAME :
|
||||
./unpack_local_scons.sh
|
||||
python scons.py
|
||||
python scons.py install
|
||||
(run the last command as root)
|
||||
|
||||
|
||||
-> For your convenience, a quick makefile is created :
|
||||
./unpack_local_scons.sh
|
||||
make
|
||||
make install
|
||||
|
||||
|
||||
USEFUL SCONS COMMANDS
|
||||
---------------------
|
||||
|
||||
build the targets : scons
|
||||
install them : scons install
|
||||
clean the project : scons -c
|
||||
uninstall : scons -c install
|
||||
build in parallel : scons -j2
|
||||
|
||||
CONFIGURATION NOTES
|
||||
-------------------
|
||||
|
||||
The installation scripts are relying on the tde-config program.
|
||||
The programs tde-config, qmake, uic and moc must be accesssible
|
||||
through your PATH.
|
||||
|
||||
Qt and tde may not be installed as expected (in TQTDIR and TDEDIR)
|
||||
So until tde-config is able to give that information, you may
|
||||
have to give those paths.
|
||||
|
||||
Here are some examples :
|
||||
On Fedora/Redhat
|
||||
scons configure kdeincludes=/usr/include/tde/
|
||||
On Debian
|
||||
scons configure qtincludes=/usr/include/qt/ kdeinclude=/usr/include/tde/
|
||||
To install in some particular location with additional include paths
|
||||
scons configure prefix=~/tmp extraincludes=/tmp/include:/usr/local/include
|
||||
|
||||
For more options to tune the build look at the .py files available on
|
||||
the top-level directory :
|
||||
generic.py, kde.py, ...
|
||||
|
||||
The build system is based on bksys, a build system that replaces
|
||||
autoconf, automake and make in a row. Feel free to report your opinion
|
||||
about it to the authors.
|
||||
|
||||
BUILDING RPMS OR DEBS WITH CHECKINSTALL
|
||||
---------------------------------------
|
||||
|
||||
With checkinstall 1.6, use
|
||||
$ scons
|
||||
# checkinstall --fstrans=no --nodoc scons install
|
||||
# scons uninstall
|
||||
|
||||
---------------------------------------
|
||||
enjoy KStreamRipper
|
||||
Michael Goettsche
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
kstreamripper relies on cmake to build.
|
||||
|
||||
Here are suggested default options:
|
||||
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \
|
||||
-DCMAKE_INSTALL_PREFIX="/opt/trinity" \
|
||||
-DCONFIG_INSTALL_DIR="/etc/trinity" \
|
||||
-DSYSCONF_INSTALL_DIR="/etc/trinity" \
|
||||
-DXDG_MENU_INSTALL_DIR="/etc/xdg/menus" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_VERBOSE_MAKEFILE="ON" \
|
||||
-DCMAKE_SKIP_RPATH="OFF" \
|
||||
-DBUILD_ALL="ON" \
|
||||
-DWITH_ALL_OPTIONS="ON"
|
||||
|
@ -1,20 +0,0 @@
|
||||
all:
|
||||
@/usr/bin/scons -Q
|
||||
|
||||
# it is also possible to use
|
||||
# @/usr/bin/scons -Q -j4
|
||||
|
||||
install:
|
||||
@/usr/bin/scons -Q install
|
||||
|
||||
clean:
|
||||
@/usr/bin/scons -Q -c
|
||||
|
||||
uninstall:
|
||||
@/usr/bin/scons -Q -c install
|
||||
|
||||
dist:
|
||||
@/usr/bin/scons -Q dist
|
||||
|
||||
distclean:
|
||||
@/usr/bin/scons -Q distclean
|
@ -1 +1,22 @@
|
||||
see INSTALL
|
||||
|
||||
kstreamripper - a TDE frontend for streamripper
|
||||
|
||||
|
||||
KStreamRipper is a small frontend for the streamripper command
|
||||
line utility (http://streamripper.sourceforge.net).
|
||||
Streamripper captures internet shoutcast radio streams on your harddisk
|
||||
and splits them up in mp3 files.
|
||||
KStreamRipper helps you with managing/ripping your preferred streams.
|
||||
|
||||
|
||||
|
||||
CONTRIBUTING
|
||||
==============
|
||||
|
||||
If you wish to contribute to KStreamRipper (TDE), you might do so:
|
||||
|
||||
- TDE Gitea Workspace (TGW) collaboration tool.
|
||||
https://mirror.git.trinitydesktop.org/gitea
|
||||
|
||||
- TDE Weblate Translation Workspace (TWTW) collaboration tool.
|
||||
https://mirror.git.trinitydesktop.org/weblate
|
||||
|
@ -1,234 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
## The kde detection is located in kde.py (have a look!)
|
||||
## Delete the comments following as you see it fit
|
||||
|
||||
"""
|
||||
scons files are python scripts, comments begin by a "#" symbol
|
||||
or are enclosed between sequences of triple quotes, so
|
||||
this is a comment :)
|
||||
|
||||
There is a lot of documentation and comments, but you can
|
||||
remove them when you convert your program
|
||||
"""
|
||||
|
||||
"""
|
||||
----------------------------------
|
||||
How to enjoy bksys full and plenty
|
||||
(and forget about the autohell ? :)
|
||||
-----------------------------------
|
||||
|
||||
The program scons is usually launched as "scons"
|
||||
When it is not intalled globally, one can run
|
||||
"python scons.py" instead (ie : to use the local scons
|
||||
that comes with bksys - try ./unpack_local_scons.sh)
|
||||
|
||||
To compile the project, you will then only need to launch
|
||||
scons on the top-level directory, the scripts find and
|
||||
cache the proper environment automatically :
|
||||
-> scons
|
||||
(or python scons.py)
|
||||
|
||||
To clean the project
|
||||
-> scons -c
|
||||
(or python scons.py -c)
|
||||
|
||||
To install the project
|
||||
-> scons install
|
||||
(or python scons.py scons install)
|
||||
|
||||
To uninstall the project
|
||||
-> scons -c install
|
||||
|
||||
To compile while being in a subdirectory
|
||||
-> cd src; scons -u
|
||||
|
||||
To (re)configure the project and give particular arguments, use ie :
|
||||
-> scons configure debug=1
|
||||
-> scons configure prefix=/tmp/ita debug=full extraincludes=/usr/local/include:/tmp/include prefix=/usr/local
|
||||
or -> python scons.py configure debug=1
|
||||
etc ..
|
||||
The variables are saved automatically after the first run
|
||||
(look at kde.cache.py, ..)
|
||||
|
||||
Here is a quick list of options used (look at generic.py and kde.py) :
|
||||
prefix
|
||||
exec_prefix
|
||||
datadir
|
||||
libdir
|
||||
kdeincludes
|
||||
qtincludes
|
||||
tdelibs
|
||||
tqtlibs
|
||||
extraincludes (a list of paths separated by ':')
|
||||
|
||||
"""
|
||||
|
||||
###########################################
|
||||
## Common section, for loading the tools
|
||||
|
||||
## Load the builders in config
|
||||
env = Environment(TARGS=COMMAND_LINE_TARGETS, ARGS=ARGUMENTS, tools=['default', 'generic', 'kde'], toolpath=['./', './admin'])
|
||||
#env = Environment(TARGS=COMMAND_LINE_TARGETS, ARGS=ARGUMENTS, tools=['default', 'generic', 'kde', 'cg'], toolpath=['./'])
|
||||
#env = Environment(TARGS=COMMAND_LINE_TARGETS, ARGS=ARGUMENTS, tools=['default', 'generic', 'kde', 'sound'], toolpath=['./'])
|
||||
#env = Environment(TARGS=COMMAND_LINE_TARGETS, ARGS=ARGUMENTS, tools=['default', 'generic', 'kde', 'libxml'], toolpath=['./'])
|
||||
|
||||
## the configuration should be done by now, quit
|
||||
if 'configure' in COMMAND_LINE_TARGETS:
|
||||
env.Exit(0)
|
||||
|
||||
"""
|
||||
Overview of the module system :
|
||||
|
||||
Each module (kde.py, generic.py, sound.py..) tries to load a stored
|
||||
configuration when run. If the stored configuration does not exist
|
||||
or if 'configure' is given on the command line (scons configure),
|
||||
the module launches the verifications and detectioins and stores
|
||||
the results. Modules also call exit when the detection fail.
|
||||
|
||||
For example, kde.py stores its config into kde.cache.py
|
||||
|
||||
This has several advantages for both developers and users :
|
||||
- Users do not have to run ./configure to compile
|
||||
- The build is insensitive to environment changes
|
||||
- The cache maintains the objects so the config can be changed often
|
||||
- Each module adds its own help via env.Help("message")
|
||||
"""
|
||||
|
||||
## Use the variables available in the environment - unsafe, but moc, meinproc need it :-/
|
||||
import os
|
||||
env.AppendUnique( ENV = os.environ )
|
||||
|
||||
## The target make dist requires the python module shutil which is in 2.3
|
||||
env.EnsurePythonVersion(2, 3)
|
||||
|
||||
## Bksys requires scons 0.96
|
||||
env.EnsureSConsVersion(0, 96)
|
||||
|
||||
"""
|
||||
Explanation of the 'env = Environment...' line :
|
||||
* the command line arguments and targets are stored in env['TARGS'] and env['ARGS'] for use by the tools
|
||||
* the part 'tools=['default', 'generic ..' detect and load the necessary functions for doing the things
|
||||
* the part "toolpath=['./']" tells that the tools can be found in the current directory (generic.py, kde.py ..)
|
||||
"""
|
||||
|
||||
"""
|
||||
To load more configuration modules one should only have to add the appropriate tool
|
||||
ie: to detect alsa and add the proper cflags, ldflags ..
|
||||
a file alsa.py file will be needed, and one should then use :
|
||||
env = Environment(TARGS=COMMAND_LINE_TARGETS, ARGS=ARGUMENTS, tools=['default', 'generic', 'kde', 'alsa'], toolpath=['./'])
|
||||
|
||||
You can also load environments that are targetted to different platforms
|
||||
ie: if os.sys.platform = "darwin":
|
||||
env = Environment(...
|
||||
elsif os.sys.platform = "linux":
|
||||
env = Environment(...
|
||||
|
||||
"""
|
||||
|
||||
## Setup the cache directory - this avoids recompiling the same files over and over again
|
||||
## this is very handy when working with cvs
|
||||
env.CacheDir('cache')
|
||||
|
||||
## Avoid spreading .sconsign files everywhere - keep this line
|
||||
env.SConsignFile('scons_signatures')
|
||||
|
||||
## If you need more libs and they rely on pkg-config
|
||||
## ie: add support for GTK (source: the scons wiki on www.scons.org)
|
||||
# env.ParseConfig('pkg-config --cflags --libs gtk+-2.0')
|
||||
|
||||
"""
|
||||
This tell scons that there are no rcs or sccs files - this trick
|
||||
can speed up things a bit when having lots of #include
|
||||
in the source code and for network file systems
|
||||
"""
|
||||
env.SourceCode(".", None)
|
||||
|
||||
dirs = [ '.', 'src', 'po', 'doc']
|
||||
|
||||
for dir in dirs:
|
||||
env.SourceCode(dir, None)
|
||||
|
||||
## If we had only one program (named kvigor) to build,
|
||||
## we could add before exporting the env (some kde
|
||||
## helpers in kde.py need it) :
|
||||
# env['APPNAME'] = 'kvigor'
|
||||
|
||||
## Use this define if you are using the kde translation scheme (.po files)
|
||||
env.Append( CPPFLAGS = ['-DTQT_NO_TRANSLATION'] )
|
||||
|
||||
## Add this define if you want to use qthreads
|
||||
#env.Append( CPPFLAGS = ['-DTQT_THREAD_SUPPORT', '-D_REENTRANT'] )
|
||||
|
||||
## To use kdDebug(intvalue)<<"some trace"<<endl; you need to define -DDEBUG - it is done
|
||||
## in generic.py automatically when you do scons configure debug=1
|
||||
|
||||
## There are also many other defines :
|
||||
### -D_XOPEN_SOURCE=500 -D_DEFAULT_SOURCE -DTQT_NO_ASCII_CAST -DTQT_NO_STL -DTQT_NO_COMPAT -DTQT_NO_TRANSLATION
|
||||
# where are they documented ? if you know, mail tnagyemail-mail@yahoo@fr please
|
||||
|
||||
## Important : export the environment so that SConscript files can the
|
||||
## configuration and builders in it
|
||||
Export("env")
|
||||
|
||||
|
||||
####################################################
|
||||
## Process the SConscript files to build the targets
|
||||
## the sconscript files are comparable to Makefile.am_s
|
||||
## except that no makefile is generated here :)
|
||||
|
||||
env.SConscript("src/SConscript")
|
||||
env.SConscript("doc/SConscript")
|
||||
env.SConscript("po/SConscript")
|
||||
|
||||
####################################################
|
||||
## Quick helper to distribute the program
|
||||
|
||||
"""
|
||||
'scons dist' creates a tarball named bksys-version.tar.bz2
|
||||
containing the source code - this is handy
|
||||
do not forget to remove the object files by scons -c
|
||||
"""
|
||||
|
||||
### To make a tarball of your sctest
|
||||
if 'dist' in COMMAND_LINE_TARGETS:
|
||||
|
||||
APPNAME = 'sctest'
|
||||
VERSION = os.popen("cat VERSION").read().rstrip()
|
||||
FOLDER = APPNAME+'-'+VERSION
|
||||
ARCHIVE = FOLDER+'.tar.bz2'
|
||||
|
||||
GREEN ="\033[92m"
|
||||
NORMAL ="\033[0m"
|
||||
|
||||
import shutil
|
||||
import glob
|
||||
|
||||
## check if the temporary directory already exists
|
||||
if os.path.isdir(FOLDER):
|
||||
shutil.rmtree(FOLDER)
|
||||
|
||||
## create a temporary directory
|
||||
startdir = os.getcwd()
|
||||
shutil.copytree(startdir, FOLDER)
|
||||
|
||||
## remove the unnecessary files
|
||||
os.popen("find "+FOLDER+" -name \"{arch}\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \".arch-ids\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \".arch-inventory\" | xargs rm -f")
|
||||
os.popen("find "+FOLDER+" -name \"sconsign*\" | xargs rm -f")
|
||||
os.popen("find "+FOLDER+" -name \"*cache*\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \"kdiss*-data\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \"*.pyc\" | xargs rm -f")
|
||||
os.popen("rm -f "+FOLDER+"/config.py*")
|
||||
|
||||
## make the tarball
|
||||
print(GREEN+"Writing archive "+ARCHIVE+NORMAL)
|
||||
os.popen("tar cjf "+ARCHIVE+" "+FOLDER)
|
||||
|
||||
## remove the temporary directory
|
||||
if os.path.isdir(FOLDER):
|
||||
shutil.rmtree(FOLDER)
|
||||
|
||||
env.Default(None)
|
||||
env.Exit(0)
|
||||
|
@ -1,161 +0,0 @@
|
||||
## Thomas Nagy, 2005
|
||||
|
||||
"""
|
||||
Detect and store the most common options
|
||||
* kdecxxflags : debug=1 (-g) or debug=full (-g3, slower)
|
||||
else use the user CXXFLAGS if any, - or -O2 by default
|
||||
* prefix : the installation path
|
||||
* extraincludes : a list of paths separated by ':'
|
||||
ie: scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local
|
||||
"""
|
||||
|
||||
BOLD ="\033[1m"
|
||||
RED ="\033[91m"
|
||||
GREEN ="\033[92m"
|
||||
YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
|
||||
CYAN ="\033[96m"
|
||||
NORMAL ="\033[0m"
|
||||
|
||||
import os
|
||||
|
||||
def exists(env):
|
||||
return true
|
||||
|
||||
def generate(env):
|
||||
env.Help("""
|
||||
"""+BOLD+
|
||||
"""*** Generic options ***
|
||||
-----------------------"""+NORMAL+"""
|
||||
"""+BOLD+"""* debug """+NORMAL+""": debug=1 (-g) or debug=full (-g3, slower) else use environment CXXFLAGS, or -O2 by default
|
||||
"""+BOLD+"""* prefix """+NORMAL+""": the installation path
|
||||
"""+BOLD+"""* extraincludes """+NORMAL+""": a list of paths separated by ':'
|
||||
ie: """+BOLD+"""scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local
|
||||
"""+NORMAL)
|
||||
|
||||
## Bksys requires scons 0.96
|
||||
env.EnsureSConsVersion(0, 96)
|
||||
|
||||
## Global cache directory
|
||||
## Put all project files in it so a rm -rf cache will clean up the config
|
||||
if not 'CACHEDIR' in env:
|
||||
env['CACHEDIR'] = os.getcwd()+'/cache/'
|
||||
if not os.path.isdir(env['CACHEDIR']):
|
||||
os.mkdir(env['CACHEDIR'])
|
||||
|
||||
## SCons cache directory
|
||||
## this avoids recompiling the same files over and over again: very handy when working with cvs
|
||||
env.CacheDir(os.getcwd()+'/cache/objects')
|
||||
|
||||
## Avoid spreading .sconsign files everywhere - keep this line
|
||||
env.SConsignFile(env['CACHEDIR']+'/scons_signatures')
|
||||
|
||||
# Special trick for installing rpms ...
|
||||
env['DESTDIR']=''
|
||||
if 'install' in env['TARGS'] and 'DESTDIR' in os.environ:
|
||||
env['DESTDIR']=os.environ['DESTDIR']+'/'
|
||||
print(CYAN+'** Enabling DESTDIR for the project ** ' + NORMAL + env['DESTDIR'])
|
||||
|
||||
# load the options
|
||||
from SCons.Variables import Variables
|
||||
cachefile=env['CACHEDIR']+'generic.cache.py'
|
||||
opts = Variables(cachefile)
|
||||
opts.AddVariables(
|
||||
( 'KDECCFLAGS', 'C flags' ),
|
||||
( 'KDECXXFLAGS', 'debug level for the project : full or just anything' ),
|
||||
( 'KDELINKFLAGS', 'additional link flags' ),
|
||||
( 'PREFIX', 'prefix for installation' ),
|
||||
( 'EXTRAINCLUDES', 'extra include paths for the project' ),
|
||||
( 'ISCONFIGURED', 'is the project configured' ),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
||||
# use this to avoid an error message 'how to make target configure ?'
|
||||
env.Alias('configure', None)
|
||||
|
||||
import SCons.Util
|
||||
|
||||
# configure the environment if needed
|
||||
if 'configure' in env['TARGS'] or not 'ISCONFIGURED' in env:
|
||||
# be paranoid, unset existing variables
|
||||
if 'KDECXXFLAGS' in env:
|
||||
env.__delitem__('KDECXXFLAGS')
|
||||
if 'KDECCFLAGS' in env:
|
||||
env.__delitem__('KDECCFLAGS')
|
||||
if 'KDELINKFLAGS' in env:
|
||||
env.__delitem__('KDELINKFLAGS')
|
||||
if 'PREFIX' in env:
|
||||
env.__delitem__('PREFIX')
|
||||
if 'EXTRAINCLUDES' in env:
|
||||
env.__delitem__('EXTRAINCLUDES')
|
||||
if 'ISCONFIGURED' in env:
|
||||
env.__delitem__('ISCONFIGURED')
|
||||
|
||||
if env['ARGS'].get('debug', None):
|
||||
debuglevel = env['ARGS'].get('debug', None)
|
||||
print(CYAN+'** Enabling debug for the project **' + NORMAL)
|
||||
if (debuglevel == "full"):
|
||||
env['KDECXXFLAGS'] = ['-DDEBUG', '-g3']
|
||||
else:
|
||||
env['KDECXXFLAGS'] = ['-DDEBUG', '-g']
|
||||
else:
|
||||
if 'CXXFLAGS' in os.environ:
|
||||
# user-defined flags (gentooers will be elighted)
|
||||
env['KDECXXFLAGS'] = SCons.Util.CLVar( os.environ['CXXFLAGS'] )
|
||||
env.Append( KDECXXFLAGS = ['-DNDEBUG', '-DNO_DEBUG'] )
|
||||
else:
|
||||
env.Append(KDECXXFLAGS = ['-O2', '-DNDEBUG', '-DNO_DEBUG'])
|
||||
|
||||
if 'CFLAGS' in os.environ:
|
||||
env['KDECCFLAGS'] = SCons.Util.CLVar( os.environ['CFLAGS'] )
|
||||
|
||||
## FreeBSD settings (contributed by will at freebsd dot org)
|
||||
if os.uname()[0] == "FreeBSD":
|
||||
if 'PTHREAD_LIBS' in os.environ:
|
||||
env.AppendUnique( KDELINKFLAGS = SCons.Util.CLVar( os.environ['PTHREAD_LIBS'] ) )
|
||||
else:
|
||||
syspf = os.popen('/sbin/sysctl kern.osreldate')
|
||||
osreldate = int(syspf.read().split()[1])
|
||||
syspf.close()
|
||||
if osreldate < 500016:
|
||||
env.AppendUnique( KDELINKFLAGS = ['-pthread'])
|
||||
env.AppendUnique( KDECXXFLAGS = ['-D_THREAD_SAFE'])
|
||||
elif osreldate < 502102:
|
||||
env.AppendUnique( KDELINKFLAGS = ['-lc_r'])
|
||||
env.AppendUnique( KDECXXFLAGS = ['-D_THREAD_SAFE'])
|
||||
else:
|
||||
env.AppendUnique( KDELINKFLAGS = ['-pthread'])
|
||||
|
||||
# User-specified prefix
|
||||
if env['ARGS'].get('prefix', None):
|
||||
env['PREFIX'] = env['ARGS'].get('prefix', None)
|
||||
print(CYAN+'** set the installation prefix for the project : ' + env['PREFIX'] +' **'+ NORMAL)
|
||||
elif 'PREFIX' in env:
|
||||
env.__delitem__('PREFIX')
|
||||
|
||||
# User-specified include paths
|
||||
env['EXTRAINCLUDES'] = env['ARGS'].get('extraincludes', None)
|
||||
if env['ARGS'].get('extraincludes', None):
|
||||
print(CYAN+'** set extra include paths for the project : ' + env['EXTRAINCLUDES'] +' **'+ NORMAL)
|
||||
elif 'EXTRAINCLUDES' in env:
|
||||
env.__delitem__('EXTRAINCLUDES')
|
||||
|
||||
env['ISCONFIGURED']=1
|
||||
|
||||
# And finally save the options in the cache
|
||||
opts.Save(cachefile, env)
|
||||
|
||||
if 'KDECXXFLAGS' in env:
|
||||
env.AppendUnique( CPPFLAGS = env['KDECXXFLAGS'] )
|
||||
|
||||
if 'KDECCFLAGS' in env:
|
||||
env.AppendUnique( CCFLAGS = env['KDECCFLAGS'] )
|
||||
|
||||
if 'KDELINKFLAGS' in env:
|
||||
env.AppendUnique( LINKFLAGS = env['KDELINKFLAGS'] )
|
||||
|
||||
if 'EXTRAINCLUDES' in env:
|
||||
incpaths = []
|
||||
for dir in str(env['EXTRAINCLUDES']).split(':'):
|
||||
incpaths.append( dir )
|
||||
env.Append(CPPPATH = incpaths)
|
||||
|
@ -1,736 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
# more or less derived from scons qt.py
|
||||
# this version makes less scans over the data and is thus faster
|
||||
# it is less accurate however (when mocable classes become unmocable)
|
||||
# Thomas Nagy, 2004, 2005 <tnagy2^8@yahoo.fr>
|
||||
|
||||
from time import *
|
||||
import SCons.Util
|
||||
import string
|
||||
|
||||
import os, re
|
||||
|
||||
BOLD ="\033[1m"
|
||||
RED ="\033[91m"
|
||||
GREEN ="\033[92m"
|
||||
YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
|
||||
CYAN ="\033[96m"
|
||||
NORMAL ="\033[0m"
|
||||
|
||||
# Returns the name of the shared object (i.e. libtdeui.so.4)
|
||||
# referenced by a libtool archive (like libtdeui.la)
|
||||
def getSOfromLA(lafile):
|
||||
contents = open(lafile, 'r').read()
|
||||
match = re.search("^dlname='([^']*)'$", contents, re.M)
|
||||
if match:
|
||||
return match.group(1)
|
||||
return None
|
||||
|
||||
def exists(env):
|
||||
return True
|
||||
|
||||
def detect_kde(env):
|
||||
""" Detect the qt and kde environment using tde-config mostly """
|
||||
|
||||
prefix = env['ARGS'].get('prefix', None)
|
||||
execprefix = env['ARGS'].get('execprefix', None)
|
||||
datadir = env['ARGS'].get('datadir', None)
|
||||
libdir = env['ARGS'].get('libdir', None)
|
||||
kdeincludes= env['ARGS'].get('kdeincludes', None)
|
||||
tdelibs = env['ARGS'].get('tdelibs', None)
|
||||
qtincludes = env['ARGS'].get('qtincludes', None)
|
||||
tqtincludes= env['ARGS'].get('tqtincludes', None)
|
||||
qtlibs = env['ARGS'].get('qtlibs', None)
|
||||
tdedir = env['ARGS'].get('tdedir', None)
|
||||
|
||||
## Detect the tde libraries
|
||||
print("Checking for tde-config : ")
|
||||
str="which tde-config 2>/dev/null"
|
||||
if tdedir: str="which %s 2>/dev/null" % (tdedir+'/bin/tde-config')
|
||||
kde_config = os.popen(str).read().strip()
|
||||
if len(kde_config):
|
||||
print(GREEN + 'tde-config was found as ' + kde_config + NORMAL)
|
||||
else:
|
||||
if tdedir: print(RED + 'tde-config was NOT found in the folder given ' + tdedir + NORMAL)
|
||||
else: print(RED + 'tde-config was NOT found in your PATH' + NORMAL)
|
||||
print("Make sure kde is installed properly")
|
||||
print("(missing package tdebase-devel?)")
|
||||
env.Exit(1)
|
||||
if tdedir: env['TDEDIR']=tdedir
|
||||
else: env['TDEDIR'] = os.popen(kde_config+' -prefix').read().strip()
|
||||
|
||||
print("Checking for tde version : ")
|
||||
tde_version = os.popen(kde_config+" --version|grep TDE").read().strip().split()[1]
|
||||
tde_major = tde_version.split('.')[0].lstrip('R')
|
||||
tde_minor = tde_version.split('.')[1]
|
||||
tde_patch = tde_version.split('.')[2]
|
||||
try:
|
||||
env['KDEm1']=int(tde_major)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
env['KDEm2']=int(tde_minor)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
env['KDEm3']=int(tde_patch)
|
||||
except:
|
||||
pass
|
||||
if int(tde_major) != 14:
|
||||
print(RED + tde_version)
|
||||
print(RED + "Your tde version might be too old" + NORMAL)
|
||||
print(RED + "Please make sure TDE is at least R14.0" + NORMAL)
|
||||
else:
|
||||
print(GREEN + tde_version + NORMAL)
|
||||
|
||||
## Detect the qt library
|
||||
print("Checking for the qt library : ")
|
||||
qtdir = os.getenv("QTDIR")
|
||||
if qtdir:
|
||||
print(GREEN + "qt is in " + qtdir + NORMAL)
|
||||
else:
|
||||
libdir = os.popen(kde_config + ' --expandvars --install lib').read().strip()
|
||||
libtdeuiSO = libdir+'/'+getSOfromLA(libdir+'/libtdeui.la')
|
||||
try:
|
||||
m = re.search('(.*)/lib/libqt.*', os.popen('ldd '+libtdeuiSO+' | grep libqt').read().strip().split()[2])
|
||||
except:
|
||||
m = re.search('(.*)/lib/libtqt.*', os.popen('ldd ' + libtdeuiSO + ' | grep libtqt').read().strip().split()[2])
|
||||
pass
|
||||
if m:
|
||||
qtdir = m.group(1)
|
||||
print(YELLOW+"qt was found as " + m.group(1) + NORMAL)
|
||||
else:
|
||||
print(RED+"qt was not found"+NORMAL)
|
||||
print(RED+"Please set QTDIR first (/usr/lib/qt3?)"+NORMAL)
|
||||
env.Exit(1)
|
||||
env['QTDIR'] = qtdir.strip()
|
||||
|
||||
## Find the necessary programs uic-tqt and moc
|
||||
print("Checking for uic-tqt : ")
|
||||
uic = qtdir + "/bin/uic-tqt"
|
||||
if os.path.isfile(uic):
|
||||
print(GREEN+"uic-tqt was found as "+uic+NORMAL)
|
||||
else:
|
||||
uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
print(YELLOW+"uic-tqt was found as "+uic+NORMAL)
|
||||
else:
|
||||
uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
print(YELLOW+"uic-tqt was found as "+uic+NORMAL)
|
||||
else:
|
||||
print(RED+"uic-tqt was not found - set QTDIR put it in your PATH ?"+NORMAL)
|
||||
env.Exit(1)
|
||||
env['QT_UIC'] = uic
|
||||
|
||||
print("Checking for moc : ")
|
||||
moc = qtdir + "/bin/tmoc"
|
||||
if os.path.isfile(moc):
|
||||
print(GREEN+"moc was found as "+moc+NORMAL)
|
||||
else:
|
||||
moc = os.popen("which tmoc 2>/dev/null").read().strip()
|
||||
if len(moc):
|
||||
print(YELLOW+"moc was found as "+moc+NORMAL)
|
||||
elif os.path.isfile("/usr/share/tqt3/bin/tmoc"):
|
||||
moc = "/usr/share/tqt3/bin/tmoc"
|
||||
print(YELLOW+"moc was found as "+moc+NORMAL)
|
||||
elif os.path.isfile("/usr/share/qt3/bin/tmoc"):
|
||||
moc = "/usr/share/qt3/bin/tmoc"
|
||||
print(YELLOW+"moc was found as "+moc+NORMAL)
|
||||
else:
|
||||
print(RED+"moc was not found - set QTDIR or put it in your PATH ?"+NORMAL)
|
||||
env.Exit(1)
|
||||
env['QT_MOC'] = moc
|
||||
|
||||
## check for the tqt includes
|
||||
print("Checking for the tqt includes : ")
|
||||
if tqtincludes and os.path.isfile(tqtincludes + "/tqlayout.h"):
|
||||
# The user told where to look for and it looks valid
|
||||
print(GREEN + "ok " + tqtincludes + NORMAL)
|
||||
else:
|
||||
if os.path.isfile(qtdir + "/include/qlayout.h"):
|
||||
# Automatic detection
|
||||
print(GREEN + "ok " + qtdir + "/include/ " + NORMAL)
|
||||
tqtincludes = qtdir + "/include/"
|
||||
elif os.path.isfile("/usr/include/tqt/tqlayout.h"):
|
||||
# Debian probably
|
||||
print(YELLOW + "the qt headers were found in /usr/include/tqt/ " + NORMAL)
|
||||
tqtincludes = "/usr/include/tqt"
|
||||
elif os.path.isfile("/usr/include/qt4/Qt/qglobal.h"):
|
||||
# Debian probably
|
||||
print(YELLOW + "the qt headers were found in /usr/include/qt4/ " + NORMAL)
|
||||
tqtincludes = "/usr/include/qt4"
|
||||
else:
|
||||
print(RED + "the qt headers were not found" + NORMAL)
|
||||
env.Exit(1)
|
||||
|
||||
## check for the qt includes
|
||||
print("Checking for the qt includes : ")
|
||||
if qtincludes and os.path.isfile(qtincludes + "/ntqglobal.h"):
|
||||
# The user told where to look for and it looks valid
|
||||
print(GREEN + "ok " + qtincludes + NORMAL)
|
||||
else:
|
||||
if os.path.isfile(qtdir + "/include/ntqglobal.h"):
|
||||
# Automatic detection
|
||||
print(GREEN + "ok " + qtdir + "/include/ " + NORMAL)
|
||||
qtincludes = qtdir + "/include/"
|
||||
elif os.path.isfile("/usr/include/tqt3/ntqglobal.h"):
|
||||
# Debian probably
|
||||
print(YELLOW + "the qt headers were found in /usr/include/tqt3/ " + NORMAL)
|
||||
qtincludes = "/usr/include/tqt3"
|
||||
else:
|
||||
print(RED + "the qt headers were not found" + NORMAL)
|
||||
env.Exit(1)
|
||||
|
||||
print("Checking for the tde includes : ")
|
||||
kdeprefix = os.popen(kde_config + " --prefix").read().strip()
|
||||
if not kdeincludes:
|
||||
kdeincludes = kdeprefix+"/include/"
|
||||
if os.path.isfile(kdeincludes + "/klineedit.h"):
|
||||
print(GREEN+"ok "+kdeincludes+NORMAL)
|
||||
else:
|
||||
if os.path.isfile(kdeprefix+"/include/tde/klineedit.h"):
|
||||
# Debian, Fedora probably
|
||||
print(YELLOW+"the kde headers were found in "+kdeprefix+"/include/tde/"+NORMAL)
|
||||
kdeincludes = kdeprefix + "/include/tde/"
|
||||
else:
|
||||
print(RED+"The kde includes were NOT found"+NORMAL)
|
||||
env.Exit(1)
|
||||
|
||||
if prefix:
|
||||
## use the user-specified prefix
|
||||
if not execprefix:
|
||||
execprefix = prefix
|
||||
if not datadir:
|
||||
datadir = prefix+"/share"
|
||||
if not libdir:
|
||||
libdir = execprefix+"/lib"
|
||||
|
||||
subst_vars = lambda x: x.replace('${exec_prefix}',execprefix).replace('${datadir}',datadir).replace('${libdir}',libdir)
|
||||
env['KDEBIN'] = subst_vars(os.popen(kde_config + ' --install exe').read().strip())
|
||||
env['KDEAPPS'] = subst_vars(os.popen(kde_config + ' --install apps').read().strip())
|
||||
env['KDEDATA'] = subst_vars(os.popen(kde_config + ' --install data').read().strip())
|
||||
env['KDEMODULE']= subst_vars(os.popen(kde_config + ' --install module').read().strip())
|
||||
env['KDELOCALE']= subst_vars(os.popen(kde_config + ' --install locale').read().strip())
|
||||
env['KDEDOC'] = subst_vars(os.popen(kde_config + ' --install html').read().strip())
|
||||
env['KDEKCFG'] = subst_vars(os.popen(kde_config + ' --install kcfg').read().strip())
|
||||
env['KDEXDG'] = subst_vars(os.popen(kde_config + ' --install xdgdata-apps').read().strip())
|
||||
env['KDEMENU'] = subst_vars(os.popen(kde_config + ' --install apps').read().strip())
|
||||
env['KDEMIME'] = subst_vars(os.popen(kde_config + ' --install mime').read().strip())
|
||||
env['KDEICONS'] = subst_vars(os.popen(kde_config + ' --install icon').read().strip())
|
||||
env['KDESERV'] = subst_vars(os.popen(kde_config + ' --install services').read().strip())
|
||||
else:
|
||||
# the user has given no prefix, install as a normal kde app
|
||||
env['PREFIX'] = os.popen(kde_config + ' --prefix').read().strip()
|
||||
env['KDEBIN'] = os.popen(kde_config + ' --expandvars --install exe').read().strip()
|
||||
env['KDEAPPS'] = os.popen(kde_config + ' --expandvars --install apps').read().strip()
|
||||
env['KDEDATA'] = os.popen(kde_config + ' --expandvars --install data').read().strip()
|
||||
env['KDEMODULE']= os.popen(kde_config + ' --expandvars --install module').read().strip()
|
||||
env['KDELOCALE']= os.popen(kde_config + ' --expandvars --install locale').read().strip()
|
||||
env['KDEDOC'] = os.popen(kde_config + ' --expandvars --install html').read().strip()
|
||||
env['KDEKCFG'] = os.popen(kde_config + ' --expandvars --install kcfg').read().strip()
|
||||
env['KDEXDG'] = os.popen(kde_config + ' --expandvars --install xdgdata-apps').read().strip()
|
||||
env['KDEMENU'] = os.popen(kde_config + ' --expandvars --install apps').read().strip()
|
||||
env['KDEMIME'] = os.popen(kde_config + ' --expandvars --install mime').read().strip()
|
||||
env['KDEICONS'] = os.popen(kde_config + ' --expandvars --install icon').read().strip()
|
||||
env['KDESERV'] = os.popen(kde_config + ' --expandvars --install services').read().strip()
|
||||
|
||||
env['QTPLUGINS']=os.popen(kde_config + ' --expandvars --install qtplugins').read().strip()
|
||||
|
||||
## kde libs and includes
|
||||
env['KDEINCLUDEPATH']= kdeincludes
|
||||
if not tdelibs:
|
||||
tdelibs = os.popen(kde_config + ' --expandvars --install lib').read().strip()
|
||||
env['KDELIBPATH']= tdelibs
|
||||
|
||||
## qt libs and includes
|
||||
env['QTINCLUDEPATH']= qtincludes
|
||||
env['TQTINCLUDEPATH']= tqtincludes
|
||||
if not qtlibs:
|
||||
qtlibs = qtdir+"/lib"
|
||||
env['QTLIBPATH']= qtlibs
|
||||
|
||||
def mocscan(target, source, env):
|
||||
splitext = SCons.Util.splitext
|
||||
|
||||
q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
|
||||
|
||||
for obj in source:
|
||||
|
||||
if not obj.has_builder():
|
||||
# binary obj file provided
|
||||
continue
|
||||
|
||||
cpp = obj.sources[0]
|
||||
if not splitext(str(cpp))[1] == '.cpp':
|
||||
# not a cplusplus source
|
||||
continue
|
||||
|
||||
# if we have a .ui file, it is automatically handled by Uic
|
||||
uiname = string.split(cpp.abspath, '.cpp')[0] + ".ui"
|
||||
if os.path.isfile(uiname):
|
||||
continue
|
||||
|
||||
hname = splitext(cpp.name)[0] + ".h"
|
||||
h = SCons.Node.FS.find_file(hname, (cpp.get_dir(),) )
|
||||
|
||||
if h:
|
||||
# h file with the Q_OBJECT macro found -> add .moc file
|
||||
mocfile = string.split(cpp.abspath, '.cpp')[0] + ".moc"
|
||||
# trick : check if the moc file already exists (avoid a scan)
|
||||
if os.path.isfile(mocfile):
|
||||
env.Moc(h)
|
||||
elif q_object_search.search(h.get_contents()):
|
||||
# FIXME : strong assumption
|
||||
env.Moc(h)
|
||||
|
||||
return (target, source)
|
||||
|
||||
def generate(env):
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
||||
env.Help("""
|
||||
"""+BOLD+
|
||||
"""*** KDE options ***
|
||||
-------------------"""+NORMAL+"""
|
||||
"""+BOLD+"""* prefix """+NORMAL+""": base install path, ie: /usr/local
|
||||
"""+BOLD+"""* execprefix """+NORMAL+""": install path for binaries, ie: /usr/bin
|
||||
"""+BOLD+"""* datadir """+NORMAL+""": install path for the data, ie: /usr/local/share
|
||||
"""+BOLD+"""* libdir """+NORMAL+""": install path for the libs, ie: /usr/lib
|
||||
"""+BOLD+"""* tdedir """+NORMAL+""": path to TDE directory, ie: /opt/trinity
|
||||
"""+BOLD+"""* kdeincludes"""+NORMAL+""": path to the kde includes (/usr/include/tde on debian, ...)
|
||||
"""+BOLD+"""* qtincludes """+NORMAL+""": same punishment, for qt includes (/usr/include/qt on debian, ...)
|
||||
"""+BOLD+"""* tdelibs """+NORMAL+""": path to the kde libs, for linking the programs
|
||||
"""+BOLD+"""* qtlibs """+NORMAL+""": same punishment, for qt libraries
|
||||
ie: """+BOLD+"""scons configure libdir=/usr/local/lib qtincludes=/usr/include/qt
|
||||
"""+NORMAL)
|
||||
|
||||
CLVar = SCons.Util.CLVar
|
||||
splitext = SCons.Util.splitext
|
||||
Builder = SCons.Builder.Builder
|
||||
|
||||
# Detect the environment - replaces ./configure implicitely
|
||||
# and store the options into a cache
|
||||
from SCons.Variables import Variables
|
||||
cachefile=env['CACHEDIR']+'/kde.cache.py'
|
||||
opts = Variables(cachefile)
|
||||
opts.AddVariables(
|
||||
( 'QTDIR', 'root of qt directory' ),
|
||||
( 'QTLIBPATH', 'path to the qt libraries' ),
|
||||
( 'QTINCLUDEPATH', 'path to the qt includes' ),
|
||||
( 'TQTINCLUDEPATH', 'path to the tqt includes' ),
|
||||
( 'QT_UIC', 'moc directory'),
|
||||
( 'QT_MOC', 'moc executable command'),
|
||||
( 'QTPLUGINS', 'uic executable command'),
|
||||
( 'TDEDIR', 'root of kde directory' ),
|
||||
( 'KDELIBPATH', 'path to the kde libs' ),
|
||||
( 'KDEINCLUDEPATH', 'path to the kde includes' ),
|
||||
|
||||
( 'PREFIX', 'root of the program installation'),
|
||||
|
||||
( 'KDEBIN', 'installation path of the kde binaries'),
|
||||
( 'KDEMODULE', 'installation path of the parts and libs'),
|
||||
( 'KDEAPPS', ''),
|
||||
( 'KDEDATA', 'installation path of the application data'),
|
||||
( 'KDELOCALE', ''),
|
||||
( 'KDEDOC', 'installation path of the application documentation'),
|
||||
( 'KDEKCFG', 'installation path of the .kcfg files'),
|
||||
( 'KDEXDG', 'installation path of the service types'),
|
||||
( 'KDEMENU', ''),
|
||||
( 'KDEMIME', 'installation path of to the mimetypes'),
|
||||
( 'KDEICONS', ''),
|
||||
( 'KDESERV', ''),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
||||
# reconfigure when things are missing
|
||||
if 'configure' in env['TARGS'] or not env.has_key('QTDIR') or not env.has_key('TDEDIR'):
|
||||
detect_kde(env)
|
||||
|
||||
# finally save the configuration
|
||||
opts.Save(cachefile, env)
|
||||
|
||||
## set default variables, one can override them in sconscript files
|
||||
env.Append(CXXFLAGS = ['-I'+env['KDEINCLUDEPATH'], '-I'+env['QTINCLUDEPATH'], '-I'+env['TQTINCLUDEPATH'], '-include', 'tqt.h' ])
|
||||
env.Append(LIBPATH = [env['KDELIBPATH'], env['QTLIBPATH'] ])
|
||||
|
||||
env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
|
||||
|
||||
env['QT_AUTOSCAN'] = 1
|
||||
env['QT_DEBUG'] = 0
|
||||
|
||||
env['QT_UIC_HFLAGS'] = '-L $QTPLUGINS -nounload'
|
||||
env['QT_UIC_CFLAGS'] = '$QT_UIC_HFLAGS -tr tr2i18n'
|
||||
env['QT_LIBS'] = 'tqt'
|
||||
|
||||
env['LIBTOOL_FLAGS'] = '--silent --mode=compile --tag=CXX'
|
||||
|
||||
env['QT_UICIMPLPREFIX'] = ''
|
||||
env['QT_UICIMPLSUFFIX'] = '.cpp'
|
||||
env['QT_MOCHPREFIX'] = ''
|
||||
env['QT_MOCHSUFFIX'] = '.moc'
|
||||
env['KDE_KCFG_IMPLPREFIX'] = ''
|
||||
env['KDE_KCFG_IMPL_HSUFFIX'] = '.h'
|
||||
env['KDE_KCFG_IMPL_CSUFFIX'] = '.cpp'
|
||||
env['KDE_SKEL_IMPL_SUFFIX'] = '.skel'
|
||||
env['MEINPROC'] = 'meinproc'
|
||||
env['MSGFMT'] = 'msgfmt'
|
||||
|
||||
|
||||
###### ui file processing
|
||||
def uicGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('$QT_UIC $QT_UIC_HFLAGS -o '+target[0].path+' '+source[0].path)
|
||||
act.append('rm -f ' +target[1].path)
|
||||
act.append('echo \'#include <tdelocale.h>\' >> '+target[1].path)
|
||||
act.append('echo \'#include <kdialog.h>\' >> '+target[1].path)
|
||||
act.append('$QT_UIC $QT_UIC_CFLAGS -impl '+target[0].path+' -o '+target[1].path+'.tmp '+source[0].path)
|
||||
act.append('cat '+target[1].path+'.tmp >> '+target[1].path)
|
||||
act.append('rm -f '+target[1].path+'.tmp')
|
||||
act.append('echo \'#include "' + target[2].name + '"\' >> '+target[1].path)
|
||||
act.append('moc-tqt $QT_MOC '+target[0].path+' '+target[2].path)
|
||||
return act
|
||||
|
||||
def uicEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
# first target is automatically added by builder (.h file)
|
||||
if len(target) < 2:
|
||||
# second target is .cpp file
|
||||
target.append(adjustixes(bs,
|
||||
env.subst('$QT_UICIMPLPREFIX'),
|
||||
env.subst('$QT_UICIMPLSUFFIX')))
|
||||
if len(target) < 3:
|
||||
# third target is .moc file
|
||||
target.append(adjustixes(bs,
|
||||
env.subst('$QT_MOCHPREFIX'),
|
||||
env.subst('$QT_MOCHSUFFIX')))
|
||||
return target, source
|
||||
|
||||
UIC_BUILDER = Builder(
|
||||
generator = uicGenerator,
|
||||
emitter = uicEmitter,
|
||||
suffix = '.h',
|
||||
src_suffix = '.ui' )
|
||||
|
||||
###### moc file processing
|
||||
env['QT_MOCCOM'] = ('moc-tqt $QT_MOC $SOURCE ${TARGETS[0]}')
|
||||
|
||||
MOC_BUILDER = Builder(
|
||||
action = '$QT_MOCCOM',
|
||||
suffix = '.moc',
|
||||
src_suffix = '.h' )
|
||||
|
||||
MOCCPP_BUILDER = Builder(
|
||||
action = '$QT_MOCCOM',
|
||||
suffix = '_moc.cpp',
|
||||
src_suffix = '.h' )
|
||||
|
||||
###### kcfg file processing
|
||||
def kcfgGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('tdeconfig_compiler -d'+str(source[0].get_dir())+' '+source[1].path+' '+source[0].path)
|
||||
return act
|
||||
|
||||
def kcfgEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
# first target is automatically added by builder (.h file)
|
||||
if len(target) < 2:
|
||||
# second target is .cpp file
|
||||
target.append(adjustixes(bs, env.subst('$KDE_KCFG_IMPLPREFIX'), env.subst('$KDE_KCFG_IMPL_CSUFFIX')))
|
||||
|
||||
if len(source) <2:
|
||||
kcfgfilename = os.popen("cat "+str(source[0])+"|grep File|sed 's/File.*=//i'").read().rstrip()
|
||||
source.append( str(source[0].get_dir())+'/'+kcfgfilename )
|
||||
return target, source
|
||||
|
||||
KCFG_BUILDER = Builder(
|
||||
generator = kcfgGenerator,
|
||||
emitter = kcfgEmitter,
|
||||
suffix = '.h',
|
||||
src_suffix = '.kcfgc' )
|
||||
|
||||
###### dcop processing
|
||||
def dcopGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('dcopidl '+source[0].path+' > '+target[1].path+'|| ( rm -f '+target[1].path+' ; false )')
|
||||
act.append('dcopidl2cpp --c++-suffix cpp --no-signals --no-stub '+target[1].path)
|
||||
return act
|
||||
|
||||
def dcopEmitter(target, source, env):
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
target.append(bs+'.kidl')
|
||||
#target.append(bs+'_skel.cpp')
|
||||
return target, source
|
||||
|
||||
DCOP_BUILDER = Builder(
|
||||
generator = dcopGenerator,
|
||||
emitter = dcopEmitter,
|
||||
suffix = '_skel.cpp',
|
||||
src_suffix = '.h' )
|
||||
|
||||
###### documentation (meinproc) processing
|
||||
MEINPROC_BUILDER = Builder(
|
||||
action = '$MEINPROC --check --cache $TARGET $SOURCE',
|
||||
suffix = '.cache.bz2',
|
||||
src_suffix = '.docbook' )
|
||||
|
||||
###### translation files builder
|
||||
TRANSFILES_BUILDER = Builder(
|
||||
action = '$MSGFMT $SOURCE -o $TARGET',
|
||||
suffix = '.gmo',
|
||||
src_suffix = '.po' )
|
||||
|
||||
###### libtool file builder
|
||||
def laGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('echo "dlname=\''+source[0].name+'\'" > '+target[0].path)
|
||||
act.append('echo "library_names=\''+source[0].name+' '+source[0].name+' '+source[0].name+'\'" >> '+target[0].path)
|
||||
act.append('echo "old_library=\'\'">> '+target[0].path)
|
||||
act.append('echo "dependency_libs=\'\'">> '+target[0].path)
|
||||
act.append('echo "current=0">> '+target[0].path)
|
||||
act.append('echo "age=0">> '+target[0].path)
|
||||
act.append('echo "revision=0">> '+target[0].path)
|
||||
act.append('echo "installed=yes">> '+target[0].path)
|
||||
act.append('echo "shouldnotlink=no">> '+target[0].path)
|
||||
act.append('echo "dlopen=\'\'">> '+target[0].path)
|
||||
act.append('echo "dlpreopen=\'\'">> '+target[0].path)
|
||||
act.append('echo "libdir=\''+env['KDEMODULE']+'\'" >> '+target[0].path)
|
||||
return act
|
||||
|
||||
LA_BUILDER = Builder(
|
||||
generator = laGenerator,
|
||||
suffix = '.la',
|
||||
src_suffix = '.so' )
|
||||
|
||||
##### register the builders
|
||||
env['BUILDERS']['Uic'] = UIC_BUILDER
|
||||
env['BUILDERS']['Moc'] = MOC_BUILDER
|
||||
env['BUILDERS']['Moccpp'] = MOCCPP_BUILDER
|
||||
env['BUILDERS']['Dcop'] = DCOP_BUILDER
|
||||
env['BUILDERS']['Kcfg'] = KCFG_BUILDER
|
||||
env['BUILDERS']['LaFile'] = LA_BUILDER
|
||||
env['BUILDERS']['Meinproc'] = MEINPROC_BUILDER
|
||||
env['BUILDERS']['Transfiles'] = TRANSFILES_BUILDER
|
||||
|
||||
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
|
||||
static_obj.src_builder.append('Uic')
|
||||
shared_obj.src_builder.append('Uic')
|
||||
static_obj.src_builder.append('Kcfg')
|
||||
shared_obj.src_builder.append('Kcfg')
|
||||
static_obj.src_builder.append('LaFile')
|
||||
shared_obj.src_builder.append('LaFile')
|
||||
static_obj.src_builder.append('Meinproc')
|
||||
shared_obj.src_builder.append('Meinproc')
|
||||
static_obj.src_builder.append('Transfiles')
|
||||
shared_obj.src_builder.append('Transfiles')
|
||||
|
||||
## find the files to moc, dcop, and link against kde and qt
|
||||
env.AppendUnique(PROGEMITTER=[mocscan], SHLIBEMITTER=[mocscan], LIBEMITTER =[mocscan])
|
||||
|
||||
###########################################
|
||||
## Handy helpers for building kde programs
|
||||
## You should not have to modify them ..
|
||||
|
||||
#import SCons.Util
|
||||
skel_ext = [".skel", ".SKEL"]
|
||||
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) """
|
||||
|
||||
src=[]
|
||||
ui_files=[]
|
||||
kcfg_files=[]
|
||||
skel_files=[]
|
||||
other_files=[]
|
||||
|
||||
# For each file, check wether it is a dcop file or not, and create the complete list of sources
|
||||
for file in source:
|
||||
bs = SCons.Util.splitext(file)[0]
|
||||
ext = SCons.Util.splitext(file)[1]
|
||||
if ext in skel_ext:
|
||||
lenv.Dcop(bs+'.h')
|
||||
src.append(bs+'_skel.cpp')
|
||||
elif ext == ".moch":
|
||||
lenv.Moccpp(bs+'.h')
|
||||
src.append(bs+'_moc.cpp')
|
||||
else:
|
||||
src.append(file)
|
||||
|
||||
if ext == '.ui':
|
||||
ui_files.append(bs)
|
||||
elif ext == '.kcfgc':
|
||||
kcfg_files.append(bs)
|
||||
elif ext == '.skel':
|
||||
skel_files.append(bs)
|
||||
else:
|
||||
other_files.append(bs)
|
||||
return src
|
||||
|
||||
"""
|
||||
In the future, these functions will contain the code that will dump the
|
||||
configuration for re-use from an IDE
|
||||
"""
|
||||
import glob
|
||||
def KDEinstall(lenv, restype, subdir, files):
|
||||
if not 'install' in env['TARGS']:
|
||||
return
|
||||
basedir=env['DESTDIR']
|
||||
if len(restype)>0:
|
||||
if not lenv.has_key(restype):
|
||||
print(RED+"unknown resource type "+restype+NORMAL)
|
||||
else:
|
||||
basedir += lenv[restype]+'/'
|
||||
#print(file) # <- useful to trace stuff :)
|
||||
install_list = env.Install(basedir+subdir, files)
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def KDEinstallas(lenv, restype, destfile, file):
|
||||
if not 'install' in env['TARGS']:
|
||||
return
|
||||
basedir=env['DESTDIR']
|
||||
if len(restype)>0:
|
||||
if not lenv.has_key(restype):
|
||||
print(RED+"unknown resource type "+restype+NORMAL)
|
||||
else:
|
||||
basedir += lenv[restype]+'/'
|
||||
install_list = env.InstallAs(basedir+destfile, file)
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def KDEprogram(lenv, target, source):
|
||||
""" Makes a kde program
|
||||
The program is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
program_list = lenv.Program(target, src)
|
||||
if not lenv.has_key('NOAUTOINSTALL'):
|
||||
KDEinstall(lenv, 'KDEBIN', '', target)
|
||||
return program_list
|
||||
|
||||
def KDEshlib(lenv, target, source, kdelib=0):
|
||||
""" Makes a shared library for kde (.la file for klibloader)
|
||||
The library is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
library_list = lenv.SharedLibrary(target, src)
|
||||
lafile_list = lenv.LaFile(target, library_list)
|
||||
if not lenv.has_key('NOAUTOINSTALL'):
|
||||
install_dir = 'KDEMODULE'
|
||||
if kdelib==1:
|
||||
install_dir = 'KDELIBPATH'
|
||||
KDEinstall(lenv, install_dir, '', library_list)
|
||||
KDEinstall(lenv, install_dir, '', lafile_list)
|
||||
return library_list
|
||||
|
||||
def KDEstaticlib(lenv, target, source):
|
||||
""" Makes a static library for kde - in practice you should not use static libraries
|
||||
1. they take more memory than shared ones
|
||||
2. makefile.am needed it because of limitations
|
||||
(cannot handle sources in separate folders - takes extra processing) """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
return lenv.StaticLibrary(target, src)
|
||||
# do not install static libraries by default
|
||||
|
||||
def KDEaddflags_cxx(lenv, fl):
|
||||
""" Compilation flags for C++ programs """
|
||||
lenv.AppendUnique(CXXFLAGS = fl)
|
||||
|
||||
def KDEaddflags_c(lenv, fl):
|
||||
""" Compilation flags for C programs """
|
||||
lenv.AppendUnique(CFLAGS = fl)
|
||||
|
||||
def KDEaddflags_link(lenv, fl):
|
||||
""" Add link flags - Use this if KDEaddlibs below is not enough """
|
||||
lenv.AppendUnique(LINKFLAGS = fl)
|
||||
|
||||
def KDEaddlibs(lenv, libs):
|
||||
""" Helper function """
|
||||
lenv.AppendUnique(LIBS = libs)
|
||||
|
||||
def KDEaddpaths_includes(lenv, paths):
|
||||
""" Add new include paths """
|
||||
lenv.AppendUnique(CPPPATH = paths)
|
||||
|
||||
def KDEaddpaths_libs(lenv, paths):
|
||||
""" Add paths to libraries """
|
||||
lenv.AppendUnique(LIBPATH = paths)
|
||||
|
||||
def KDElang(lenv, folder, appname):
|
||||
""" Process translations (.po files) in a po/ dir """
|
||||
transfiles = glob.glob(folder+'/*.po')
|
||||
for lang in transfiles:
|
||||
result = lenv.Transfiles(lang)
|
||||
country = SCons.Util.splitext(result[0].name)[0]
|
||||
KDEinstallas(lenv, 'KDELOCALE', country+'/LC_MESSAGES/'+appname+'.mo', result)
|
||||
|
||||
def KDEicon(lenv, icname):
|
||||
""" Emulates the behaviour of Makefile.am to install icons
|
||||
Contributed by: "Andrey Golovizin" <grooz@gorodok@net> """
|
||||
type_dic = { 'action' : 'actions', 'app' : 'apps', 'device' :
|
||||
'devices', 'filesys' : 'filesystems', 'mime' : 'mimetypes' }
|
||||
dir_dic = {
|
||||
'los' :'locolor/16x16',
|
||||
'lom' :'locolor/32x32',
|
||||
'him' :'hicolor/32x32',
|
||||
'hil' :'hicolor/48x48',
|
||||
'lo16' :'locolor/16x16',
|
||||
'lo22' :'locolor/22x22',
|
||||
'lo32' :'locolor/32x32',
|
||||
'hi16' :'hicolor/16x16',
|
||||
'hi22' :'hicolor/22x22',
|
||||
'hi32' :'hicolor/32x32',
|
||||
'hi48' :'hicolor/48x48',
|
||||
'hi64' :'hicolor/64x64',
|
||||
'hi128':'hicolor/128x128',
|
||||
'hisc' :'hicolor/scalable',
|
||||
'cr16' :'crystalsvg/16x16',
|
||||
'cr22' :'crystalsvg/22x22',
|
||||
'cr32' :'crystalsvg/32x32',
|
||||
'cr48' :'crystalsvg/48x48',
|
||||
'cr64' :'crystalsvg/64x64',
|
||||
'cr128':'crystalsvg/128x128',
|
||||
'crsc' :'crystalsvg/scalable'
|
||||
}
|
||||
|
||||
import glob
|
||||
iconfiles = []
|
||||
for ext in ['png', 'xpm', 'mng', 'svg', 'svgz']:
|
||||
files = glob.glob('*-*-%s.%s' % (icname, ext))
|
||||
iconfiles += files
|
||||
for iconfile in iconfiles:
|
||||
tmp = iconfile.split('-')
|
||||
if len(tmp) != 3:
|
||||
print(RED + 'WARNING: icon filename has unknown format: ' + iconfile + NORMAL)
|
||||
continue
|
||||
[icon_dir, icon_type, icon_filename] = tmp
|
||||
try:
|
||||
destfile = '%s/%s/%s/%s' % (lenv['KDEICONS'], dir_dic[icon_dir], type_dic[icon_type], icon_filename)
|
||||
except KeyError:
|
||||
print(RED + 'WARNING: unknown icon type: ' + iconfile + NORMAL)
|
||||
continue
|
||||
## do not use KDEinstallas here, as parsing from an ide will be necessary
|
||||
if 'install' in env['TARGS']:
|
||||
env.Alias('install', env.InstallAs( env['DESTDIR']+'/'+destfile, iconfile ) )
|
||||
|
||||
# Attach the functions to the environment so that sconscripts can use them
|
||||
from SCons.Script.SConscript import SConsEnvironment
|
||||
SConsEnvironment.KDEprogram = KDEprogram
|
||||
SConsEnvironment.KDEshlib = KDEshlib
|
||||
SConsEnvironment.KDEstaticlib = KDEstaticlib
|
||||
SConsEnvironment.KDEinstall = KDEinstall
|
||||
SConsEnvironment.KDEinstallas = KDEinstallas
|
||||
SConsEnvironment.KDElang = KDElang
|
||||
SConsEnvironment.KDEicon = KDEicon
|
||||
|
||||
SConsEnvironment.KDEaddflags_cxx = KDEaddflags_cxx
|
||||
SConsEnvironment.KDEaddflags_c = KDEaddflags_c
|
||||
SConsEnvironment.KDEaddflags_link = KDEaddflags_link
|
||||
SConsEnvironment.KDEaddlibs = KDEaddlibs
|
||||
SConsEnvironment.KDEaddpaths_includes = KDEaddpaths_includes
|
||||
SConsEnvironment.KDEaddpaths_libs = KDEaddpaths_libs
|
@ -1,83 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
## This script demonstrates to build and install
|
||||
## the documentation of a kde program with scons
|
||||
##
|
||||
## Thomas Nagy, 2005
|
||||
|
||||
## This file can be reused freely for any project (see COPYING)
|
||||
|
||||
## First load the environment set in the top-level SConstruct file
|
||||
Import( 'env' )
|
||||
myenv=env.Clone()
|
||||
|
||||
## The following looks complicated but it is not
|
||||
## We first define a function to install all files as documentation
|
||||
## The documentation is of course lying in subfolders from here
|
||||
## * normal files are installed under KDEDOC/destination
|
||||
## * meinproc files are not installed, but processed into a single
|
||||
## index.cache.bz2 which is installed afterwards
|
||||
|
||||
## This is far more maintainable to have *one* file than
|
||||
## having lots of almost empty SConscript in several folders
|
||||
|
||||
import os
|
||||
import sys
|
||||
import glob
|
||||
import SCons.Util
|
||||
|
||||
## Define this to 1 if you are writing documentation else to 0 :)
|
||||
i_am_a_documentation_writer = 0
|
||||
|
||||
## This function uses env imported above
|
||||
def processfolder(folder, lang, destination=""):
|
||||
# folder is the folder to process
|
||||
# lang is the language
|
||||
# destination is the subdirectory in KDEDOC
|
||||
|
||||
docfiles = glob.glob(folder+"/???*.*") # file files that are at least 4 chars wide :)
|
||||
|
||||
# warn about errors
|
||||
#if len(lang) != 2:
|
||||
# print "error, lang must be a two-letter string, like 'en'"
|
||||
|
||||
# when the destination is not given, use the folder
|
||||
if len(destination) == 0:
|
||||
destination=folder
|
||||
|
||||
docbook_list = []
|
||||
for file in docfiles:
|
||||
|
||||
# do not process folders
|
||||
if not os.path.isfile(file):
|
||||
continue
|
||||
# do not process the cache file
|
||||
if file == 'index.cache.bz2':
|
||||
continue
|
||||
# ignore invalid files (TODO??)
|
||||
if len( SCons.Util.splitext( file ) ) <= 1 :
|
||||
continue
|
||||
|
||||
ext = SCons.Util.splitext( file )[1]
|
||||
|
||||
# docbook files are processed by meinproc
|
||||
if ext == '.docbook':
|
||||
docbook_list.append( file )
|
||||
continue
|
||||
|
||||
myenv.KDEinstall('KDEDOC', lang+'/'+destination, file)
|
||||
|
||||
# Now process the index.docbook files ..
|
||||
if len(docbook_list) == 0:
|
||||
return
|
||||
if not os.path.isfile( folder+'index.docbook' ):
|
||||
print("Error, index.docbook was not found in "+folder+'/index.docbook')
|
||||
return
|
||||
if i_am_a_documentation_writer:
|
||||
for file in docbook_list:
|
||||
myenv.Depends( folder+'index.cache.bz2', file )
|
||||
myenv.Meinproc( folder+'/index.cache.bz2', folder+'/index.docbook' )
|
||||
myenv.KDEinstall( 'KDEDOC', lang+'/'+destination, folder+'/index.cache.bz2' )
|
||||
|
||||
## Use processfolder for each documentation directory
|
||||
processfolder('en/', 'en', 'kstreamripper')
|
||||
|
@ -1,857 +0,0 @@
|
||||
# Made from scons qt.py and (heavily) modified into kde.py
|
||||
# Thomas Nagy, 2004, 2005 <tnagy2^8@yahoo.fr>
|
||||
|
||||
"""
|
||||
Run scons -h to display the associated help, or look below ..
|
||||
"""
|
||||
|
||||
BOLD ="\033[1m"
|
||||
RED ="\033[91m"
|
||||
GREEN ="\033[92m"
|
||||
YELLOW ="\033[1m" #"\033[93m" # unreadable on white backgrounds
|
||||
CYAN ="\033[96m"
|
||||
NORMAL ="\033[0m"
|
||||
|
||||
import os, re
|
||||
|
||||
# Returns the name of the shared object (i.e. libtdeui.so.4)
|
||||
# referenced by a libtool archive (like libtdeui.la)
|
||||
def getSOfromLA(lafile):
|
||||
contents = open(lafile, 'r').read()
|
||||
match = re.search("^dlname='([^']*)'$", contents, re.M)
|
||||
if match:
|
||||
return match.group(1)
|
||||
return None
|
||||
|
||||
def exists(env):
|
||||
return True
|
||||
|
||||
def detect_kde(env):
|
||||
""" Detect the qt and kde environment using tde-config mostly """
|
||||
|
||||
prefix = env['ARGS'].get('prefix', None)
|
||||
execprefix = env['ARGS'].get('execprefix', None)
|
||||
datadir = env['ARGS'].get('datadir', None)
|
||||
libdir = env['ARGS'].get('libdir', None)
|
||||
libsuffix = env['ARGS'].get('libsuffix', '')
|
||||
kdeincludes = env['ARGS'].get('kdeincludes', None)
|
||||
tdelibs = env['ARGS'].get('tdelibs', None)
|
||||
qtincludes = env['ARGS'].get('qtincludes', None)
|
||||
tqtincludes = env['ARGS'].get('tqtincludes', None)
|
||||
tqtlibs = env['ARGS'].get('tqtlibs', None)
|
||||
tdedir = env['ARGS'].get('tdedir', None)
|
||||
|
||||
if libdir:
|
||||
libdir = libdir+libsuffix
|
||||
|
||||
## Detect the tde libraries
|
||||
print "Checking for tde-config : ",
|
||||
str="which tde-config 2>/dev/null"
|
||||
if tdedir: str="which %s 2>/dev/null" % (tdedir+'/bin/tde-config')
|
||||
kde_config = os.popen(str).read().strip()
|
||||
if len(kde_config):
|
||||
print GREEN + 'tde-config was found as ' + kde_config + NORMAL
|
||||
else:
|
||||
if tdedir: print RED + 'tde-config was NOT found in the folder given ' + tdedir + NORMAL
|
||||
else: print RED + 'tde-config was NOT found in your PATH' + NORMAL
|
||||
print "Make sure kde is installed properly"
|
||||
print "(missing package tdebase-devel?)"
|
||||
env.Exit(1)
|
||||
if tdedir: env['TDEDIR']=tdedir
|
||||
else: env['TDEDIR'] = os.popen(kde_config+' -prefix').read().strip()
|
||||
|
||||
print "Checking for tde version : ",
|
||||
tde_version = os.popen(kde_config + " --version|grep TDE").read().strip().split()[1]
|
||||
tde_major = tde_version.split('.')[0].lstrip('R')
|
||||
tde_minor = tde_version.split('.')[1]
|
||||
tde_patch = tde_version.split('.')[2]
|
||||
try:
|
||||
env['KDEm1']=int(tde_major)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
env['KDEm2']=int(tde_minor)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
env['KDEm3']=int(tde_patch)
|
||||
except:
|
||||
pass
|
||||
if int(tde_major) != 14:
|
||||
print RED + tde_version
|
||||
print RED + "Your tde version might be too old" + NORMAL
|
||||
print RED + "Please make sure TDE is at least R14.0" + NORMAL
|
||||
else:
|
||||
print GREEN + tde_version + NORMAL
|
||||
|
||||
## Detect the qt library
|
||||
print "Checking for the qt library : ",
|
||||
qtdir = os.getenv("TQTDIR")
|
||||
if qtdir:
|
||||
print GREEN+"qt is in "+qtdir+NORMAL
|
||||
else:
|
||||
libdir = os.popen(kde_config + ' --expandvars --install lib').read().strip()
|
||||
libtdeuiSO = libdir+'/'+getSOfromLA(libdir+'/libtdeui.la')
|
||||
try:
|
||||
m = re.search('(.*)/lib/libtqt.*', os.popen('ldd ' + libtdeuiSO + ' | grep libtqt').read().strip().split()[2])
|
||||
except:
|
||||
m = re.search('(.*)/lib/libtqt.*', os.popen('ldd ' + libtdeuiSO + ' | grep libtqt').read().strip().split()[2])
|
||||
pass
|
||||
if m:
|
||||
qtdir = m.group(1)
|
||||
print YELLOW+"qt was found as "+m.group(1)+NORMAL
|
||||
else:
|
||||
print RED+"qt was not found"+NORMAL
|
||||
print RED+"Please set TQTDIR first (/usr/lib/qt3?)"+NORMAL
|
||||
env.Exit(1)
|
||||
env['TQTDIR'] = qtdir.strip()
|
||||
|
||||
## Find the necessary programs uic-tqt and moc
|
||||
print "Checking for uic-tqt : ",
|
||||
uic = qtdir + "/bin/uic-tqt"
|
||||
if os.path.isfile(uic):
|
||||
print GREEN+"uic-tqt was found as "+uic+NORMAL
|
||||
else:
|
||||
uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
print YELLOW+"uic-tqt was found as "+uic+NORMAL
|
||||
else:
|
||||
uic = os.popen("which uic-tqt 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
print YELLOW+"uic-tqt was found as "+uic+NORMAL
|
||||
else:
|
||||
print RED+"uic-tqt was not found - set TQTDIR put it in your PATH ?"+NORMAL
|
||||
env.Exit(1)
|
||||
env['QT_UIC'] = uic
|
||||
|
||||
print "Checking for moc : ",
|
||||
moc = qtdir + "/bin/tqmoc"
|
||||
if os.path.isfile(moc):
|
||||
print GREEN + "moc was found as " + moc + NORMAL
|
||||
else:
|
||||
moc = os.popen("which moc 2>/dev/null").read().strip()
|
||||
if len(moc):
|
||||
print YELLOW + "moc was found as " + moc + NORMAL
|
||||
elif os.path.isfile("/usr/share/tqt3/bin/tqmoc"):
|
||||
moc = "/usr/share/tqt3/bin/tqmoc"
|
||||
print YELLOW + "moc was found as " + moc + NORMAL
|
||||
elif os.path.isfile("/usr/share/qt3/bin/tqmoc"):
|
||||
moc = "/usr/share/qt3/bin/tqmoc"
|
||||
print YELLOW + "moc was found as " + moc + NORMAL
|
||||
else:
|
||||
print RED + "moc was not found - set TQTDIR or put it in your PATH ?" + NORMAL
|
||||
env.Exit(1)
|
||||
env['QT_MOC'] = moc
|
||||
|
||||
## check for the tqt includes
|
||||
print "Checking for the tqt includes : ",
|
||||
if tqtincludes and os.path.isfile(tqtincludes + "/tqlayout.h"):
|
||||
# The user told where to look for and it looks valid
|
||||
print GREEN + "ok " + tqtincludes + NORMAL
|
||||
else:
|
||||
if os.path.isfile(qtdir + "/include/qlayout.h"):
|
||||
# Automatic detection
|
||||
print GREEN + "ok " + qtdir + "/include/ " + NORMAL
|
||||
tqtincludes = qtdir + "/include/"
|
||||
elif os.path.isfile("/usr/include/tqt/tqlayout.h"):
|
||||
# Debian probably
|
||||
print YELLOW + "the qt headers were found in /usr/include/tqt/ " + NORMAL
|
||||
tqtincludes = "/usr/include/tqt"
|
||||
elif os.path.isfile("/usr/include/qt4/Qt/qglobal.h"):
|
||||
# Debian probably
|
||||
print YELLOW + "the qt headers were found in /usr/include/qt4/ " + NORMAL
|
||||
tqtincludes = "/usr/include/qt4"
|
||||
else:
|
||||
print RED + "the qt headers were not found" + NORMAL
|
||||
env.Exit(1)
|
||||
|
||||
## check for the qt includes
|
||||
print "Checking for the qt includes : ",
|
||||
if qtincludes and os.path.isfile(qtincludes + "/ntqglobal.h"):
|
||||
# The user told where to look for and it looks valid
|
||||
print GREEN + "ok " + qtincludes + NORMAL
|
||||
else:
|
||||
if os.path.isfile(qtdir + "/include/ntqglobal.h"):
|
||||
# Automatic detection
|
||||
print GREEN + "ok " + qtdir + "/include/ " + NORMAL
|
||||
qtincludes = qtdir + "/include/"
|
||||
elif os.path.isfile("/usr/include/tqt3/ntqglobal.h"):
|
||||
# Debian probably
|
||||
print YELLOW + "the qt headers were found in /usr/include/tqt3/ " + NORMAL
|
||||
qtincludes = "/usr/include/tqt3"
|
||||
else:
|
||||
print RED + "the qt headers were not found" + NORMAL
|
||||
env.Exit(1)
|
||||
|
||||
print "Checking for the tde includes : ",
|
||||
kdeprefix = os.popen(kde_config + " --prefix").read().strip()
|
||||
if not kdeincludes:
|
||||
kdeincludes = kdeprefix+"/include/"
|
||||
if os.path.isfile(kdeincludes + "/klineedit.h"):
|
||||
print GREEN + "ok " + kdeincludes + NORMAL
|
||||
else:
|
||||
if os.path.isfile(kdeprefix+"/include/tde/klineedit.h"):
|
||||
# Debian, Fedora probably
|
||||
print YELLOW + "the kde headers were found in " + kdeprefix + "/include/tde/" + NORMAL
|
||||
kdeincludes = kdeprefix + "/include/tde/"
|
||||
else:
|
||||
print RED + "The kde includes were NOT found" + NORMAL
|
||||
env.Exit(1)
|
||||
|
||||
if prefix:
|
||||
## use the user-specified prefix
|
||||
if not execprefix:
|
||||
execprefix = prefix
|
||||
if not datadir:
|
||||
datadir=prefix+"/share"
|
||||
if not libdir:
|
||||
libdir=execprefix+"/lib"+libsuffix
|
||||
|
||||
subst_vars = lambda x: x.replace('${exec_prefix}', execprefix).replace('${datadir}',datadir).replace('${libdir}', libdir)
|
||||
debian_fix = lambda x: x.replace('/usr/share', '${datadir}')
|
||||
env['KDEBIN'] = subst_vars(os.popen(kde_config + ' --install exe').read().strip())
|
||||
env['KDEAPPS'] = subst_vars(os.popen(kde_config + ' --install apps').read().strip())
|
||||
env['KDEDATA'] = subst_vars(os.popen(kde_config + ' --install data').read().strip())
|
||||
env['KDEMODULE']= subst_vars(os.popen(kde_config + ' --install module').read().strip())
|
||||
env['KDELOCALE']= subst_vars(os.popen(kde_config + ' --install locale').read().strip())
|
||||
env['KDEDOC'] = subst_vars( debian_fix(os.popen(kde_config + ' --install html').read().strip()) )
|
||||
env['KDEKCFG'] = subst_vars(os.popen(kde_config + ' --install kcfg').read().strip())
|
||||
env['KDEXDG'] = subst_vars(os.popen(kde_config + ' --install xdgdata-apps').read().strip())
|
||||
env['KDEXDGDIR']= subst_vars(os.popen(kde_config + ' --install xdgdata-dirs').read().strip())
|
||||
env['KDEMENU'] = subst_vars(os.popen(kde_config + ' --install apps').read().strip())
|
||||
env['KDEMIME'] = subst_vars(os.popen(kde_config + ' --install mime').read().strip())
|
||||
env['KDEICONS'] = subst_vars(os.popen(kde_config + ' --install icon').read().strip())
|
||||
env['KDESERV'] = subst_vars(os.popen(kde_config + ' --install services').read().strip())
|
||||
else:
|
||||
# the user has given no prefix, install as a normal kde app
|
||||
env['PREFIX'] = os.popen(kde_config + ' --prefix').read().strip()
|
||||
env['KDEBIN'] = os.popen(kde_config + ' --expandvars --install exe').read().strip()
|
||||
env['KDEAPPS'] = os.popen(kde_config + ' --expandvars --install apps').read().strip()
|
||||
env['KDEDATA'] = os.popen(kde_config + ' --expandvars --install data').read().strip()
|
||||
env['KDEMODULE']= os.popen(kde_config + ' --expandvars --install module').read().strip()
|
||||
env['KDELOCALE']= os.popen(kde_config + ' --expandvars --install locale').read().strip()
|
||||
env['KDEDOC'] = os.popen(kde_config + ' --expandvars --install html').read().strip()
|
||||
env['KDEKCFG'] = os.popen(kde_config + ' --expandvars --install kcfg').read().strip()
|
||||
env['KDEXDG'] = os.popen(kde_config + ' --expandvars --install xdgdata-apps').read().strip()
|
||||
env['KDEXDGDIR']= os.popen(kde_config + ' --expandvars --install xdgdata-dirs').read().strip()
|
||||
env['KDEMENU'] = os.popen(kde_config + ' --expandvars --install apps').read().strip()
|
||||
env['KDEMIME'] = os.popen(kde_config + ' --expandvars --install mime').read().strip()
|
||||
env['KDEICONS'] = os.popen(kde_config + ' --expandvars --install icon').read().strip()
|
||||
env['KDESERV'] = os.popen(kde_config + ' --expandvars --install services').read().strip()
|
||||
|
||||
env['QTPLUGINS']=os.popen(kde_config + ' --expandvars --install qtplugins').read().strip()
|
||||
|
||||
## kde libs and includes
|
||||
env['KDEINCLUDEPATH']=kdeincludes
|
||||
if not tdelibs:
|
||||
tdelibs=os.popen(kde_config + ' --expandvars --install lib').read().strip()
|
||||
env['KDELIBPATH']=tdelibs
|
||||
|
||||
## qt libs and includes
|
||||
env['QTINCLUDEPATH']=qtincludes
|
||||
env['TQTINCLUDEPATH']=tqtincludes
|
||||
if not tqtlibs:
|
||||
tqtlibs=qtdir+"/lib"
|
||||
env['TQTLIBPATH']=tqtlibs
|
||||
|
||||
def generate(env):
|
||||
""""Set up the qt and kde environment and builders - the moc part is difficult to understand """
|
||||
env.Help("""
|
||||
"""+BOLD+
|
||||
"""*** KDE options ***
|
||||
-------------------"""
|
||||
+NORMAL+"""
|
||||
"""+BOLD+"""* prefix """+NORMAL+""": base install path, ie: /usr/local
|
||||
"""+BOLD+"""* execprefix """+NORMAL+""": install path for binaries, ie: /usr/bin
|
||||
"""+BOLD+"""* datadir """+NORMAL+""": install path for the data, ie: /usr/local/share
|
||||
"""+BOLD+"""* libdir """+NORMAL+""": install path for the libs, ie: /usr/lib
|
||||
"""+BOLD+"""* tdedir """+NORMAL+""": path to TDE directory, ie: /opt/trinity
|
||||
"""+BOLD+"""* libsuffix """+NORMAL+""": suffix of libraries on amd64, ie: 64, 32
|
||||
"""+BOLD+"""* kdeincludes"""+NORMAL+""": path to the kde includes (/usr/include/tde on debian, ...)
|
||||
"""+BOLD+"""* qtincludes """+NORMAL+""": same punishment, for qt includes (/usr/include/qt on debian, ...)
|
||||
"""+BOLD+"""* tdelibs """+NORMAL+""": path to the kde libs, for linking the programs
|
||||
"""+BOLD+"""* tqtlibs """+NORMAL+""": same punishment, for qt libraries
|
||||
ie: """+BOLD+"""scons configure libdir=/usr/local/lib qtincludes=/usr/include/qt
|
||||
"""+NORMAL)
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
||||
import SCons.Util
|
||||
|
||||
ui_extensions = [".ui"]
|
||||
header_extensions = [".h", ".hxx", ".hpp", ".hh"]
|
||||
source_extensions = [".cpp", ".cxx", ".cc"]
|
||||
|
||||
def find_file(filename, paths, node_factory):
|
||||
retval = None
|
||||
for dir in paths:
|
||||
node = node_factory(filename, dir)
|
||||
if node.rexists():
|
||||
return node
|
||||
return None
|
||||
|
||||
class _Metasources:
|
||||
""" Callable class, which works as an emitter for Programs, SharedLibraries
|
||||
and StaticLibraries."""
|
||||
|
||||
def __init__(self, objBuilderName):
|
||||
self.objBuilderName = objBuilderName
|
||||
|
||||
def __call__(self, target, source, env):
|
||||
""" Smart autoscan function. Gets the list of objects for the Program
|
||||
or Lib. Adds objects and builders for the special qt files. """
|
||||
try:
|
||||
if int(env.subst('$QT_AUTOSCAN')) == 0:
|
||||
return target, source
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
try:
|
||||
qtdebug = int(env.subst('$QT_DEBUG'))
|
||||
except ValueError:
|
||||
qtdebug = 0
|
||||
|
||||
# some shortcuts used in the scanner
|
||||
FS = SCons.Node.FS.default_fs
|
||||
splitext = SCons.Util.splitext
|
||||
objBuilder = getattr(env, self.objBuilderName)
|
||||
|
||||
# some regular expressions:
|
||||
# Q_OBJECT detection
|
||||
q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
|
||||
|
||||
# The following is kind of hacky to get builders working properly (FIXME) ??
|
||||
objBuilderEnv = objBuilder.env
|
||||
objBuilder.env = env
|
||||
mocBuilderEnv = env.Moc.env
|
||||
env.Moc.env = env
|
||||
|
||||
# make a deep copy for the result; MocH objects will be appended
|
||||
out_sources = source[:]
|
||||
|
||||
for obj in source:
|
||||
if not obj.has_builder():
|
||||
# binary obj file provided
|
||||
if qtdebug:
|
||||
print "scons: qt: '%s' seems to be a binary. Discarded." % str(obj)
|
||||
continue
|
||||
cpp = obj.sources[0]
|
||||
if not splitext(str(cpp))[1] in source_extensions:
|
||||
if qtdebug:
|
||||
print "scons: qt: '%s' is no cxx file. Discarded." % str(cpp)
|
||||
# c or fortran source
|
||||
continue
|
||||
#cpp_contents = comment.sub('', cpp.get_contents())
|
||||
cpp_contents = cpp.get_contents()
|
||||
|
||||
h = None
|
||||
ui = None
|
||||
|
||||
for ui_ext in ui_extensions:
|
||||
# try to find the ui file in the corresponding source directory
|
||||
uiname = splitext(cpp.name)[0] + ui_ext
|
||||
ui = find_file(uiname, (cpp.get_dir(),), FS.File)
|
||||
if ui:
|
||||
if qtdebug:
|
||||
print "scons: qt: found .ui file of header" #% (str(h), str(cpp))
|
||||
#h_contents = comment.sub('', h.get_contents())
|
||||
break
|
||||
|
||||
# if we have a .ui file, do not continue, it is automatically handled by Uic
|
||||
if ui:
|
||||
continue
|
||||
|
||||
for h_ext in header_extensions:
|
||||
# try to find the header file in the corresponding source
|
||||
# directory
|
||||
hname = splitext(cpp.name)[0] + h_ext
|
||||
h = find_file(hname, (cpp.get_dir(),), FS.File)
|
||||
if h:
|
||||
if qtdebug:
|
||||
print "scons: qt: Scanning '%s' (header of '%s')" % (str(h), str(cpp))
|
||||
#h_contents = comment.sub('', h.get_contents())
|
||||
h_contents = h.get_contents()
|
||||
break
|
||||
|
||||
if not h and qtdebug:
|
||||
print "scons: qt: no header for '%s'." % (str(cpp))
|
||||
if h and q_object_search.search(h_contents):
|
||||
# h file with the Q_OBJECT macro found -> add .moc or _moc.cpp file
|
||||
moc_cpp = None
|
||||
|
||||
if env.has_key('NOMOCSCAN'):
|
||||
moc_cpp = env.Moc(h)
|
||||
else:
|
||||
reg = '\n\s*#include\s*("|<)'+splitext(cpp.name)[0]+'.moc("|>)'
|
||||
meta_object_search = re.compile(reg)
|
||||
if meta_object_search.search(cpp_contents):
|
||||
moc_cpp = env.Moc(h)
|
||||
else:
|
||||
moc_cpp = env.Moccpp(h)
|
||||
moc_o = objBuilder(moc_cpp)
|
||||
out_sources.append(moc_o)
|
||||
if qtdebug:
|
||||
print "scons: qt: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(h), str(moc_cpp[0]))
|
||||
|
||||
if cpp and q_object_search.search(cpp_contents):
|
||||
print "error, bksys cannot handle cpp files with Q_OBJECT classes"
|
||||
print "if you are sure this is a feature worth the effort, "
|
||||
print "report this to the authors tnagyemail-mail yahoo.fr"
|
||||
|
||||
# restore the original env attributes (FIXME)
|
||||
objBuilder.env = objBuilderEnv
|
||||
env.Moc.env = mocBuilderEnv
|
||||
|
||||
return (target, out_sources)
|
||||
|
||||
MetasourcesShared = _Metasources('SharedObject')
|
||||
MetasourcesStatic = _Metasources('StaticObject')
|
||||
|
||||
CLVar = SCons.Util.CLVar
|
||||
splitext = SCons.Util.splitext
|
||||
Builder = SCons.Builder.Builder
|
||||
|
||||
# Detect the environment - replaces ./configure implicitely and store the options into a cache
|
||||
from SCons.Variables import Variables
|
||||
cachefile=env['CACHEDIR']+'kde.cache.py'
|
||||
opts = Variables(cachefile)
|
||||
opts.AddVariables(
|
||||
('PREFIX', 'root of the program installation'),
|
||||
|
||||
('TQTDIR', 'root of qt directory'),
|
||||
('TQTLIBPATH', 'path to the qt libraries'),
|
||||
('QTINCLUDEPATH', 'path to the qt includes'),
|
||||
('TQTINCLUDEPATH', 'path to the tqt includes'),
|
||||
('QT_UIC', 'moc directory'),
|
||||
('QT_MOC', 'moc executable command'),
|
||||
('QTPLUGINS', 'uic executable command'),
|
||||
('TDEDIR', 'root of kde directory'),
|
||||
('KDELIBPATH', 'path to the kde libs'),
|
||||
('KDEINCLUDEPATH', 'path to the kde includes'),
|
||||
|
||||
('KDEBIN', 'installation path of the kde binaries'),
|
||||
('KDEMODULE', 'installation path of the parts and libs'),
|
||||
('KDEAPPS', ''),
|
||||
('KDEDATA', 'installation path of the application data'),
|
||||
('KDELOCALE', ''),
|
||||
('KDEDOC', 'installation path of the application documentation'),
|
||||
('KDEKCFG', 'installation path of the .kcfg files'),
|
||||
('KDEXDG', 'installation path of the service types'),
|
||||
('KDEXDGDIR', 'installation path of the xdg service directories'),
|
||||
('KDEMENU', ''),
|
||||
('KDEMIME', 'installation path of to the mimetypes'),
|
||||
('KDEICONS', ''),
|
||||
('KDEm1', ''),
|
||||
('KDEm2', ''),
|
||||
('KDEm3', ''),
|
||||
('KDESERV', ''),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
||||
# reconfigure when things are missing
|
||||
if 'configure' in env['TARGS'] or not env.has_key('TQTDIR') or not env.has_key('TDEDIR'):
|
||||
detect_kde(env)
|
||||
|
||||
# finally save the configuration to the cache file
|
||||
opts.Save(cachefile, env)
|
||||
|
||||
## set default variables, one can override them in sconscript files
|
||||
env.Append(CXXFLAGS = ['-I'+env['KDEINCLUDEPATH'], '-I'+env['QTINCLUDEPATH'], '-I'+env['TQTINCLUDEPATH'], '-include', 'tqt.h' ])
|
||||
env.Append(LIBPATH = [env['KDELIBPATH'], env['TQTLIBPATH'] ])
|
||||
|
||||
env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
|
||||
|
||||
env['QT_AUTOSCAN'] = 1
|
||||
env['QT_DEBUG'] = 0
|
||||
env['QT_UIC_HFLAGS'] = '-L $QTPLUGINS -nounload'
|
||||
env['QT_UIC_CFLAGS'] = '$QT_UIC_HFLAGS -tr tr2i18n'
|
||||
env['TQT_LIBS'] = 'tqt'
|
||||
env['QT_UICIMPLPREFIX'] = ''
|
||||
env['QT_UICIMPLSUFFIX'] = '.cpp'
|
||||
|
||||
env['QT_MOCHPREFIX'] = ''
|
||||
env['QT_MOCHSUFFIX'] = '.moc'
|
||||
env['KDE_KCFG_IMPLPREFIX'] = ''
|
||||
env['KDE_KCFG_IMPL_HSUFFIX'] = '.h'
|
||||
env['KDE_KCFG_IMPL_CSUFFIX'] = '.cpp'
|
||||
env['KDE_SKEL_IMPL_SUFFIX'] = '.skel'
|
||||
env['MEINPROC'] = 'meinproc'
|
||||
env['MSGFMT'] = 'msgfmt'
|
||||
|
||||
## ui file processing
|
||||
def uicGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('$QT_UIC $QT_UIC_HFLAGS -o '+target[0].path+' '+source[0].path)
|
||||
act.append('rm -f ' +target[1].path)
|
||||
act.append('echo \'#include <tdelocale.h>\' >> '+target[1].path)
|
||||
act.append('echo \'#include <kdialog.h>\' >> '+target[1].path)
|
||||
act.append('$QT_UIC $QT_UIC_CFLAGS -impl '+target[0].path+' -o '+target[1].path+'.tmp '+source[0].path)
|
||||
act.append('cat '+target[1].path+'.tmp >> '+target[1].path)
|
||||
act.append('rm -f '+target[1].path+'.tmp')
|
||||
act.append('echo \'#include "' + target[2].name + '"\' >> '+target[1].path)
|
||||
act.append('moc-tqt $QT_MOC '+target[0].path+' '+target[2].path)
|
||||
return act
|
||||
|
||||
def uicEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
# first target is automatically added by builder (.h file)
|
||||
if len(target) < 2:
|
||||
# second target is .cpp file
|
||||
target.append(adjustixes(bs,
|
||||
env.subst('$QT_UICIMPLPREFIX'),
|
||||
env.subst('$QT_UICIMPLSUFFIX')))
|
||||
if len(target) < 3:
|
||||
# third target is .moc file
|
||||
target.append(adjustixes(bs,
|
||||
env.subst('$QT_MOCHPREFIX'),
|
||||
env.subst('$QT_MOCHSUFFIX')))
|
||||
return target, source
|
||||
|
||||
UIC_BUILDER = Builder(
|
||||
generator = uicGenerator,
|
||||
emitter = uicEmitter,
|
||||
suffix = '.h',
|
||||
src_suffix = '.ui')
|
||||
|
||||
## moc file processing
|
||||
env['QT_MOCCOM'] = ('moc-tqt $QT_MOC $SOURCE ${TARGETS[0]}')
|
||||
|
||||
MOC_BUILDER = Builder(
|
||||
action = '$QT_MOCCOM',
|
||||
suffix = '.moc',
|
||||
src_suffix = '.h')
|
||||
|
||||
MOCCPP_BUILDER = Builder(
|
||||
action = '$QT_MOCCOM',
|
||||
suffix = '_moc.cpp',
|
||||
src_suffix = '.h')
|
||||
|
||||
## kcfg file processing
|
||||
def kcfgGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('tdeconfig_compiler -d'+str(source[0].get_dir())+' '+source[1].path+' '+source[0].path)
|
||||
return act
|
||||
|
||||
def kcfgEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
# .h file is automatically added
|
||||
if len(target) < 2:
|
||||
# add .cpp file
|
||||
target.append(adjustixes(bs, env.subst('$KDE_KCFG_IMPLPREFIX'), env.subst('$KDE_KCFG_IMPL_CSUFFIX')))
|
||||
|
||||
if len(source) <2:
|
||||
if not os.path.isfile(str(source[0])):
|
||||
print RED+'kcfg file given'+str(source[0])+' does not exist !'+NORMAL
|
||||
return target, source
|
||||
kfcgfilename=""
|
||||
kcfgFileDeclRx = re.compile("^[fF]ile\s*=\s*(.+)\s*$")
|
||||
for line in file(str(source[0]), "r").readlines():
|
||||
match = kcfgFileDeclRx.match(line.strip())
|
||||
if match:
|
||||
kcfgfilename = match.group(1)
|
||||
break
|
||||
source.append(str(source[0].get_dir())+'/'+kcfgfilename)
|
||||
return target, source
|
||||
|
||||
KCFG_BUILDER = Builder(
|
||||
generator = kcfgGenerator,
|
||||
emitter = kcfgEmitter,
|
||||
suffix = '.h',
|
||||
src_suffix = '.kcfgc')
|
||||
|
||||
## dcop processing
|
||||
def dcopGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('dcopidl '+source[0].path+' > '+target[1].path+'|| ( rm -f '+target[1].path+' ; false)')
|
||||
act.append('dcopidl2cpp --c++-suffix cpp --no-signals --no-stub '+target[1].path)
|
||||
return act
|
||||
|
||||
def dcopEmitter(target, source, env):
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = os.path.join(str(target[0].get_dir()),bs)
|
||||
target.append(bs+'.kidl')
|
||||
#target.append(bs+'_skel.cpp')
|
||||
return target, source
|
||||
|
||||
DCOP_BUILDER = Builder(
|
||||
generator = dcopGenerator,
|
||||
emitter = dcopEmitter,
|
||||
suffix = '_skel.cpp',
|
||||
src_suffix = '.h')
|
||||
|
||||
## documentation processing
|
||||
MEINPROC_BUILDER = Builder(
|
||||
action = '$MEINPROC --check --cache $TARGET $SOURCE',
|
||||
suffix = '.cache.bz2')
|
||||
|
||||
## translation files builder
|
||||
TRANSFILES_BUILDER = Builder(
|
||||
action = '$MSGFMT $SOURCE -o $TARGET',
|
||||
suffix = '.gmo',
|
||||
src_suffix = '.po')
|
||||
|
||||
## libtool file builder
|
||||
def laGenerator(target, source, env, for_signature):
|
||||
act=[]
|
||||
act.append('echo "dlname=\''+source[0].name+'\'" > '+target[0].path)
|
||||
act.append('echo "library_names=\''+source[0].name+' '+source[0].name+' '+source[0].name+'\'" >> '+target[0].path)
|
||||
act.append('echo "old_library=\'\'">> '+target[0].path)
|
||||
act.append('echo "dependency_libs=\'\'">> '+target[0].path)
|
||||
act.append('echo "current=0">> '+target[0].path)
|
||||
act.append('echo "age=0">> '+target[0].path)
|
||||
act.append('echo "revision=0">> '+target[0].path)
|
||||
act.append('echo "installed=yes">> '+target[0].path)
|
||||
act.append('echo "shouldnotlink=no">> '+target[0].path)
|
||||
act.append('echo "dlopen=\'\'">> '+target[0].path)
|
||||
act.append('echo "dlpreopen=\'\'">> '+target[0].path)
|
||||
act.append('echo "libdir=\''+env['KDEMODULE']+'\'" >> '+target[0].path)
|
||||
env.Depends(target, source)
|
||||
return act
|
||||
LA_BUILDER = Builder(
|
||||
generator = laGenerator,
|
||||
suffix = '.la',
|
||||
src_suffix = env['SHLIBSUFFIX'])
|
||||
|
||||
## register the builders
|
||||
env['BUILDERS']['Uic'] = UIC_BUILDER
|
||||
env['BUILDERS']['Moc'] = MOC_BUILDER
|
||||
env['BUILDERS']['Moccpp'] = MOCCPP_BUILDER
|
||||
env['BUILDERS']['Dcop'] = DCOP_BUILDER
|
||||
env['BUILDERS']['Kcfg'] = KCFG_BUILDER
|
||||
env['BUILDERS']['LaFile'] = LA_BUILDER
|
||||
env['BUILDERS']['Meinproc'] = MEINPROC_BUILDER
|
||||
env['BUILDERS']['Transfiles']= TRANSFILES_BUILDER
|
||||
|
||||
static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
|
||||
static_obj.src_builder.append('Uic')
|
||||
shared_obj.src_builder.append('Uic')
|
||||
static_obj.src_builder.append('Kcfg')
|
||||
shared_obj.src_builder.append('Kcfg')
|
||||
static_obj.src_builder.append('LaFile')
|
||||
shared_obj.src_builder.append('LaFile')
|
||||
static_obj.src_builder.append('Meinproc')
|
||||
shared_obj.src_builder.append('Meinproc')
|
||||
static_obj.src_builder.append('Transfiles')
|
||||
shared_obj.src_builder.append('Transfiles')
|
||||
|
||||
## Find the files to moc, dcop, and link against kde and qt
|
||||
env.AppendUnique(PROGEMITTER = [MetasourcesStatic], SHLIBEMITTER=[MetasourcesShared], LIBEMITTER =[MetasourcesStatic])
|
||||
|
||||
## Handy helpers for building kde programs
|
||||
## You should not have to modify them ..
|
||||
|
||||
#import SCons.Util
|
||||
skel_ext = [".skel", ".SKEL"]
|
||||
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) """
|
||||
|
||||
src=[]
|
||||
ui_files=[]
|
||||
kcfg_files=[]
|
||||
skel_files=[]
|
||||
other_files=[]
|
||||
|
||||
# For each file, check wether it is a dcop file or not, and create the complete list of sources
|
||||
for file in source:
|
||||
bs = SCons.Util.splitext(file)[0]
|
||||
ext = SCons.Util.splitext(file)[1]
|
||||
if ext in skel_ext:
|
||||
lenv.Dcop(bs+'.h')
|
||||
src.append(bs+'_skel.cpp')
|
||||
elif ext == ".moch":
|
||||
lenv.Moccpp(bs+'.h')
|
||||
src.append(bs+'_moc.cpp')
|
||||
else:
|
||||
src.append(file)
|
||||
|
||||
if ext == '.ui':
|
||||
ui_files.append(bs)
|
||||
elif ext == '.kcfgc':
|
||||
kcfg_files.append(bs)
|
||||
elif ext == '.skel':
|
||||
skel_files.append(bs)
|
||||
else:
|
||||
other_files.append(bs)
|
||||
|
||||
# Now check against typical newbie errors
|
||||
for file in ui_files:
|
||||
for ofile in other_files:
|
||||
if ofile == file:
|
||||
print RED+"WARNING: You have included "+file+".ui and another file of the same prefix"+NORMAL
|
||||
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:
|
||||
print RED+"WARNING: You have included "+file+".kcfg and another file of the same prefix"+NORMAL
|
||||
print "Files generated by tdeconfig_compiler (settings.h, settings.cpp) must not be included"
|
||||
return src
|
||||
|
||||
|
||||
"""
|
||||
In the future, these functions will contain the code that will dump the
|
||||
configuration for re-use from an IDE
|
||||
"""
|
||||
import glob
|
||||
def KDEinstall(lenv, restype, subdir, files):
|
||||
if not 'install' in env['TARGS']:
|
||||
return
|
||||
basedir=env['DESTDIR']
|
||||
if len(restype)>0:
|
||||
if not lenv.has_key(restype):
|
||||
print RED+"unknown resource type "+restype+NORMAL
|
||||
else:
|
||||
basedir += lenv[restype]+'/'
|
||||
#print file # <- useful to trace stuff :)
|
||||
install_list = env.Install(basedir+subdir+'/', files)
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def KDEinstallas(lenv, restype, destfile, file):
|
||||
if not 'install' in env['TARGS']:
|
||||
return
|
||||
basedir=env['DESTDIR']
|
||||
if len(restype)>0:
|
||||
if not lenv.has_key(restype):
|
||||
print RED+"unknown resource type "+restype+NORMAL
|
||||
else:
|
||||
basedir += lenv[restype]+'/'
|
||||
install_list = env.InstallAs(basedir+destfile, file)
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def KDEprogram(lenv, target, source):
|
||||
""" Makes a kde program
|
||||
The program is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
program_list = lenv.Program(target, src)
|
||||
if not lenv.has_key('NOAUTOINSTALL'):
|
||||
KDEinstall(lenv, 'KDEBIN', '', target)
|
||||
return program_list
|
||||
|
||||
def KDEshlib(lenv, target, source, kdelib=0, libprefix='lib'):
|
||||
""" Makes a shared library for kde (.la file for klibloader)
|
||||
The library is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
lenv['LIBPREFIX']=libprefix
|
||||
library_list = lenv.SharedLibrary(target, src)
|
||||
lafile_list = lenv.LaFile(target, library_list)
|
||||
if not lenv.has_key('NOAUTOINSTALL'):
|
||||
install_dir = 'KDEMODULE'
|
||||
if kdelib==1:
|
||||
install_dir = 'KDELIBPATH'
|
||||
KDEinstall(lenv, install_dir, '', library_list)
|
||||
KDEinstall(lenv, install_dir, '', lafile_list)
|
||||
return library_list
|
||||
|
||||
def KDEstaticlib(lenv, target, source):
|
||||
""" Makes a static library for kde - in practice you should not use static libraries
|
||||
1. they take more memory than shared ones
|
||||
2. makefile.am needed it because of limitations
|
||||
(cannot handle sources in separate folders - takes extra processing) """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
return lenv.StaticLibrary(target, src)
|
||||
# do not install static libraries by default
|
||||
|
||||
def KDEaddflags_cxx(lenv, fl):
|
||||
""" Compilation flags for C++ programs """
|
||||
lenv.AppendUnique(CXXFLAGS = fl)
|
||||
|
||||
def KDEaddflags_c(lenv, fl):
|
||||
""" Compilation flags for C programs """
|
||||
lenv.AppendUnique(CFLAGS = fl)
|
||||
|
||||
def KDEaddflags_link(lenv, fl):
|
||||
""" Add link flags - Use this if KDEaddlibs below is not enough """
|
||||
lenv.AppendUnique(LINKFLAGS = fl)
|
||||
|
||||
def KDEaddlibs(lenv, libs):
|
||||
""" Helper function """
|
||||
lenv.AppendUnique(LIBS = libs)
|
||||
|
||||
def KDEaddpaths_includes(lenv, paths):
|
||||
""" Add new include paths """
|
||||
lenv.AppendUnique(CPPPATH = paths)
|
||||
|
||||
def KDEaddpaths_libs(lenv, paths):
|
||||
""" Add paths to libraries """
|
||||
lenv.AppendUnique(LIBPATH = paths)
|
||||
|
||||
def KDElang(lenv, folder, appname):
|
||||
""" Process translations (.po files) in a po/ dir """
|
||||
transfiles = glob.glob(folder+'/*.po')
|
||||
for lang in transfiles:
|
||||
result = lenv.Transfiles(lang)
|
||||
country = SCons.Util.splitext(result[0].name)[0]
|
||||
KDEinstallas(lenv, 'KDELOCALE', country+'/LC_MESSAGES/'+appname+'.mo', result)
|
||||
|
||||
def KDEicon(lenv, icname):
|
||||
""" Emulates the behaviour of Makefile.am to install icons
|
||||
Contributed by: "Andrey Golovizin" <grooz@gorodok@net> """
|
||||
type_dic = { 'action' : 'actions', 'app' : 'apps', 'device' :
|
||||
'devices', 'filesys' : 'filesystems', 'mime' : 'mimetypes' }
|
||||
dir_dic = {
|
||||
'los' :'locolor/16x16',
|
||||
'lom' :'locolor/32x32',
|
||||
'him' :'hicolor/32x32',
|
||||
'hil' :'hicolor/48x48',
|
||||
'lo16' :'locolor/16x16',
|
||||
'lo22' :'locolor/22x22',
|
||||
'lo32' :'locolor/32x32',
|
||||
'hi16' :'hicolor/16x16',
|
||||
'hi22' :'hicolor/22x22',
|
||||
'hi32' :'hicolor/32x32',
|
||||
'hi48' :'hicolor/48x48',
|
||||
'hi64' :'hicolor/64x64',
|
||||
'hi128':'hicolor/128x128',
|
||||
'hisc' :'hicolor/scalable',
|
||||
'cr16' :'crystalsvg/16x16',
|
||||
'cr22' :'crystalsvg/22x22',
|
||||
'cr32' :'crystalsvg/32x32',
|
||||
'cr48' :'crystalsvg/48x48',
|
||||
'cr64' :'crystalsvg/64x64',
|
||||
'cr128':'crystalsvg/128x128',
|
||||
'crsc' :'crystalsvg/scalable'
|
||||
}
|
||||
|
||||
iconfiles = []
|
||||
for ext in ['png', 'xpm', 'mng', 'svg', 'svgz']:
|
||||
files = glob.glob('*-*-%s.%s' % (icname, ext))
|
||||
iconfiles += files
|
||||
for iconfile in iconfiles:
|
||||
tmp = iconfile.split('-')
|
||||
if len(tmp)!=3:
|
||||
print RED+'WARNING: icon filename has unknown format: '+iconfile+NORMAL
|
||||
continue
|
||||
[icon_dir, icon_type, icon_filename]=tmp
|
||||
try:
|
||||
destfile = '%s/%s/%s/%s' % (lenv['KDEICONS'], dir_dic[icon_dir], type_dic[icon_type], icon_filename)
|
||||
except KeyError:
|
||||
print RED+'WARNING: unknown icon type: '+iconfile+NORMAL
|
||||
continue
|
||||
## Do not use KDEinstallas here, as parsing from an ide will be necessary
|
||||
if 'install' in env['TARGS']:
|
||||
env.Alias('install', env.InstallAs( env['DESTDIR']+'/'+destfile, iconfile ) )
|
||||
|
||||
# Attach the functions to the environment so that sconscripts can use them
|
||||
from SCons.Script.SConscript import SConsEnvironment
|
||||
SConsEnvironment.KDEprogram = KDEprogram
|
||||
SConsEnvironment.KDEshlib = KDEshlib
|
||||
SConsEnvironment.KDEstaticlib = KDEstaticlib
|
||||
SConsEnvironment.KDEinstall = KDEinstall
|
||||
SConsEnvironment.KDEinstallas = KDEinstallas
|
||||
SConsEnvironment.KDElang = KDElang
|
||||
SConsEnvironment.KDEicon = KDEicon
|
||||
|
||||
SConsEnvironment.KDEaddflags_cxx = KDEaddflags_cxx
|
||||
SConsEnvironment.KDEaddflags_c = KDEaddflags_c
|
||||
SConsEnvironment.KDEaddflags_link = KDEaddflags_link
|
||||
SConsEnvironment.KDEaddlibs = KDEaddlibs
|
||||
SConsEnvironment.KDEaddpaths_includes = KDEaddpaths_includes
|
||||
SConsEnvironment.KDEaddpaths_libs = KDEaddpaths_libs
|
||||
|
@ -1,6 +1,14 @@
|
||||
# build translations if some are already available
|
||||
file( GLOB_RECURSE po_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po )
|
||||
string( REGEX REPLACE "[ \r\n\t]+" ";" _linguas "$ENV{LINGUAS}" )
|
||||
|
||||
file( GLOB _srcs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po )
|
||||
if( _srcs )
|
||||
tde_create_translation( LANG auto OUTPUT_NAME ${PROJECT_NAME} )
|
||||
endif( )
|
||||
foreach( _po ${po_files} )
|
||||
get_filename_component( _lang ${_po} NAME_WE )
|
||||
if( "${_linguas}" MATCHES "^;*$" OR ";${_linguas};" MATCHES ";${_lang};" )
|
||||
if( "${_po}" MATCHES "^([^/]*)/.*" )
|
||||
string( REGEX REPLACE "^([^/]*)/.*" "\\1" _component "${_po}" )
|
||||
else( )
|
||||
set( _component "${PROJECT_NAME}" )
|
||||
endif( )
|
||||
tde_create_translation( FILES ${_po} LANG ${_lang} OUTPUT_NAME ${_component} )
|
||||
endif( )
|
||||
endforeach( )
|
||||
|
@ -1,24 +0,0 @@
|
||||
## This script demonstrates to build and install
|
||||
## a simple kde program having KconfigXT settings
|
||||
## with scons
|
||||
##
|
||||
## Thomas Nagy, 2004, 2005
|
||||
|
||||
## This file can be reused freely for any project (see COPYING)
|
||||
|
||||
|
||||
## First load the environment set in the top-level SConstruct file
|
||||
#Import( "env KDElang" )
|
||||
Import('env')
|
||||
myenv=env.Clone()
|
||||
|
||||
## Make translations for the program "test1" in french (requires fr.po)
|
||||
myenv['APPNAME'] = "kstreamripper"
|
||||
#KDElang( ['fr'], myenv )
|
||||
|
||||
## NOTE1 :
|
||||
# KDElang( ['fr','de','nl','pl'], myenv )
|
||||
|
||||
## NOTE2 :
|
||||
## updating the translation files must be done manually
|
||||
## for the moment, using the messages.sh script
|
@ -1,60 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Inspired by Makefile.common from coolo
|
||||
# this script is used to update the .po files
|
||||
|
||||
# To update the translations, you will need a specific gettext
|
||||
# patched for kde and a lot of patience, tenacity, luck, time ..
|
||||
|
||||
|
||||
# I guess one should only update the .po files when all .cpp files
|
||||
# are generated (after a make or scons)
|
||||
|
||||
# If you have a better way to do this, do not keep that info
|
||||
# for yourself and help me to improve this script, thanks
|
||||
# (tnagyemail-mail tat yahoo d0tt fr)
|
||||
|
||||
SRCDIR=../test1-tdeconfigxt # srcdir is the directory containing the source code
|
||||
TIPSDIR=$SRCDIR # tipsdir is the directory containing the tips
|
||||
|
||||
TDEDIR=`tde-config --prefix`
|
||||
EXTRACTRC=extractrc
|
||||
KDEPOT=`tde-config --prefix`/include/kde.pot
|
||||
XGETTEXT="xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x $KDEPOT "
|
||||
|
||||
## check that kde.pot is available
|
||||
if ! test -e $KDEPOT; then
|
||||
echo "$KDEPOT does not exist, there is something wrong with your installation!"
|
||||
XGETTEXT="xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale "
|
||||
fi
|
||||
|
||||
> rc.cpp
|
||||
|
||||
## extract the strings
|
||||
echo "extracting the strings"
|
||||
|
||||
# process the .ui and .rc files
|
||||
$EXTRACTRC `find $SRCDIR -iname *.rc` >> rc.cpp
|
||||
$EXTRACTRC `find $SRCDIR -iname *.ui` >> rc.cpp
|
||||
echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > $SRCDIR/_translatorinfo.cpp
|
||||
|
||||
# process the tips - $SRCDIR is supposed to be where the tips are living
|
||||
pushd $TIPSDIR; preparetips >tips.cpp; popd
|
||||
|
||||
$XGETTEXT `find $SRCDIR -name "*.cpp"` -o kdissert.pot
|
||||
|
||||
# remove the intermediate files
|
||||
rm -f $TIPSDIR/tips.cpp
|
||||
rm -f rc.cpp
|
||||
rm -f $SRCDIR/_translatorinfo.cpp
|
||||
|
||||
## now merge the .po files ..
|
||||
echo "merging the .po files"
|
||||
|
||||
for i in `ls *.po`; do
|
||||
msgmerge $i kdissert.pot -o $i || exit 1
|
||||
done
|
||||
|
||||
## finished
|
||||
echo "Done"
|
||||
|
Binary file not shown.
@ -1,68 +0,0 @@
|
||||
#! /usr/bin/env python
|
||||
## This script demonstrates how to build and install
|
||||
## a simple kde program having KconfigXT settings
|
||||
## with scons
|
||||
##
|
||||
## Thomas Nagy, 2004, 2005
|
||||
|
||||
## This file can be reused freely for any project (see COPYING)
|
||||
|
||||
############################
|
||||
## load the config
|
||||
|
||||
## Use the environment and the tools set in the top-level
|
||||
## SConstruct file (set with 'Export') - this is very important
|
||||
|
||||
Import( 'env' )
|
||||
myenv=env.Clone()
|
||||
|
||||
#############################
|
||||
## the programs to build
|
||||
|
||||
# The sources for our program - only .ui, .skel and .cpp are accepted
|
||||
kstreamripper_sources = """
|
||||
addnewstreamimpl.cpp
|
||||
addnewstream.ui
|
||||
kstreamripperbase.ui
|
||||
kstreamripper.cpp
|
||||
main.cpp
|
||||
processcontroller.cpp
|
||||
processlistviewitem.cpp
|
||||
""".split()
|
||||
|
||||
# Our main program
|
||||
# KDEprogram add the file to the install targets automatically,
|
||||
# so you do not need to write KDEinstall('KDEBIN', '', test1, myenv)
|
||||
myenv.KDEprogram( "kstreamripper", kstreamripper_sources )
|
||||
|
||||
############################
|
||||
## Customization
|
||||
|
||||
## Additional include paths for compiling the source files
|
||||
## Always add '../' (top-level directory) because moc makes code that needs it
|
||||
myenv.KDEaddpaths_includes( ['./', '../'] )
|
||||
|
||||
## Necessary libraries to link against
|
||||
myenv.KDEaddlibs( ['tqt-mt', 'tqt', 'tdecore', 'tdeio', 'tdeui', 'tdednssd'] )
|
||||
#############################
|
||||
## Data to install
|
||||
|
||||
## The ui.rc file and the tips go into datadir/appname/
|
||||
myenv.KDEinstall( 'KDEDATA', 'kstreamripper', 'kstreamripperui.rc' )
|
||||
|
||||
## The kcfg file is installed in a global kcfg directory
|
||||
#myenv.KDEinstall( 'KDEKCFG', '', 'test1.kcfg' )
|
||||
|
||||
## Warning : there is a difference between the normal destop file used for the menu
|
||||
## and the servicetype desktop file, so they go in different directories
|
||||
## you will find more information in 'test3'
|
||||
myenv.KDEinstall( 'KDEXDG', '', 'kstreamripper.desktop')
|
||||
|
||||
## Use this when you need to install a mimetype file
|
||||
#myenv.KDEinstall( 'KDEMIME', 'application', 'x-test1.desktop' )
|
||||
|
||||
## Installing icons is easy (hi-16-app-test1.png, hi-22-app-test1.png)
|
||||
## do not forget that this is a python script so loops are allowed here :)
|
||||
myenv.KDEicon( 'hi16-app-kstreameripper.png')
|
||||
myenv.KDEicon( 'hi32-app-kstreameripper.png')
|
||||
|
@ -1,61 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
BOLD="\033[1m"
|
||||
RED="\033[91m"
|
||||
GREEN="\033[92m"
|
||||
YELLOW="\033[93m"
|
||||
CYAN="\033[96m"
|
||||
NORMAL="\033[0m"
|
||||
|
||||
#bunzip2 scons-mini.tar.bz2
|
||||
#tar xvf scons-mini.tar
|
||||
|
||||
# if kde is there a recent tar should be too
|
||||
tar xjvf scons-mini.tar.bz2
|
||||
|
||||
cat > Makefile << EOF
|
||||
## Makefile automatically generated by unpack_local_scons.sh
|
||||
|
||||
### To use scons when installed globally use
|
||||
#SCONS=scons
|
||||
### To run the local version instead, define
|
||||
SCONS=./scons
|
||||
|
||||
# scons : compile
|
||||
# scons -c : clean
|
||||
# scons install : install
|
||||
# scons -c install : uninstall and clean
|
||||
|
||||
# default target : use scons to build the programs
|
||||
all:
|
||||
\$(SCONS) -Q
|
||||
|
||||
### There are several possibilities to help debugging :
|
||||
# scons --debug=explain, scons --debug=tree ..
|
||||
#
|
||||
### To optimize the runtime, use
|
||||
# scons --max-drift=1 --implicit-deps-unchanged
|
||||
debug:
|
||||
\$(SCONS) -Q --debug=tree
|
||||
|
||||
clean:
|
||||
\$(SCONS) -c
|
||||
|
||||
install:
|
||||
\$(SCONS) install
|
||||
|
||||
uninstall:
|
||||
\$(SCONS) -c install
|
||||
|
||||
## this target creates a tarball of the project
|
||||
dist:
|
||||
\$(SCONS) dist
|
||||
EOF
|
||||
|
||||
|
||||
echo ""
|
||||
echo -e $GREEN"A minimum scons distribution has been unpacked right here"
|
||||
echo -e $GREEN"you can now run : "$NORMAL
|
||||
echo -e $BOLD"./scons"$NORMAL
|
||||
echo -e $BOLD"./scons install$NORMAL (as root probably)"
|
||||
|
Loading…
Reference in new issue