13
0
livetrax/libs/taglib/wscript

155 lines
5.3 KiB
Python

#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
import glob
import os
# Version of this package (even if built as a child)
LIBTAGLIB_VERSION = '0.0.0'
# Library version (UNIX style major, minor, micro)
# major increment <=> incompatible changes
# minor increment <=> compatible changes (additions)
# micro increment <=> no interface changes
LIBTAGLIB_LIB_VERSION = '0.0.0'
# Variables for 'waf dist'
APPNAME = 'libtaglib'
VERSION = LIBTAGLIB_VERSION
# Mandatory variables
top = '.'
out = 'build'
def options(opt):
autowaf.set_options(opt)
def configure(conf):
if conf.is_defined('USE_EXTERNAL_LIBS'):
autowaf.check_pkg(conf, 'taglib', uselib_store='TAGLIB', atleast_version="1.4", mandatory=True)
else:
conf.load('compiler_cxx')
autowaf.configure(conf)
def build(bld):
if bld.is_defined('USE_EXTERNAL_LIBS'):
return
# the story: taglib distributes its headers all over the place then copies them
# into place during an install. but we're not planning to do an install. so this
# doesn't work when code does #include <taglib/foo.h>.
#
# one approach is to store symlinks in the repository. but this breaks on windows
# where symlink support and git are not very well developed (if at all)
#
# the approach here is to copy the header files as part of the build step, if necessary
headers = [
'./ape/apefooter.h',
'./ape/apeitem.h',
'./ape/apetag.h',
'./mpeg/id3v2/frames/attachedpictureframe.h',
'./mpeg/id3v2/frames/commentsframe.h',
'./flac/flacfile.h',
'./flac/flacproperties.h',
'./mpeg/id3v2/frames/generalencapsulatedobjectframe.h',
'./mpeg/id3v1/id3v1genres.h',
'./mpeg/id3v1/id3v1tag.h',
'./mpeg/id3v2/id3v2extendedheader.h',
'./mpeg/id3v2/id3v2footer.h',
'./mpeg/id3v2/id3v2framefactory.h',
'./mpeg/id3v2/id3v2frame.h',
'./mpeg/id3v2/id3v2header.h',
'./mpeg/id3v2/id3v2synchdata.h',
'./mpeg/id3v2/id3v2tag.h',
'./mpc/mpcfile.h',
'./mpc/mpcproperties.h',
'./mpeg/mpegfile.h',
'./mpeg/mpegheader.h',
'./mpeg/mpegproperties.h',
'./ogg/oggfile.h',
'./ogg/flac/oggflacfile.h',
'./ogg/oggpage.h',
'./ogg/oggpageheader.h',
'./mpeg/id3v2/frames/relativevolumeframe.h',
'./ogg/speex/speexfile.h',
'./ogg/speex/speexproperties.h',
'./toolkit/taglib.h',
'./toolkit/tbytevector.h',
'./toolkit/tbytevectorlist.h',
'./toolkit/tdebug.h',
'./mpeg/id3v2/frames/textidentificationframe.h',
'./toolkit/tfile.h',
'./toolkit/tlist.h',
'toolkit/tlist.tcc',
'./toolkit/tmap.h',
'toolkit/tmap.tcc',
'./trueaudio/trueaudiofile.h',
'./trueaudio/trueaudioproperties.h',
'./toolkit/tstring.h',
'./toolkit/tstringlist.h',
'./toolkit/unicode.h',
'./mpeg/id3v2/frames/uniquefileidentifierframe.h',
'./mpeg/id3v2/frames/unknownframe.h',
'./mpeg/id3v2/frames/unsynchronizedlyricsframe.h',
'./mpeg/id3v2/frames/urllinkframe.h',
'./ogg/vorbis/vorbisfile.h',
'./ogg/vorbis/vorbisproperties.h',
'./wavpack/wavpackfile.h',
'./wavpack/wavpackproperties.h',
'./mpeg/xingheader.h',
'./ogg/xiphcomment.h',
]
for h in headers:
tgt = bld.path.get_bld().make_node (os.path.join ('taglib', os.path.basename (h)))
if not os.path.exists (tgt.bldpath()):
bld (rule = autowaf.copyfile,
source = bld.path.make_node (os.path.join ('taglib', h)),
target = tgt)
# Library
obj = bld(features = 'cxx cxxshlib')
sources = bld.path.ant_glob('taglib/*.cpp')
sources += bld.path.ant_glob('taglib/flac/*.cpp')
sources += bld.path.ant_glob('taglib/mpc/*.cpp')
sources += bld.path.ant_glob('taglib/mpeg/*.cpp')
sources += bld.path.ant_glob('taglib/mpeg/id3v1/*.cpp')
sources += bld.path.ant_glob('taglib/mpeg/id3v2/*.cpp')
sources += bld.path.ant_glob('taglib/mpeg/id3v2/frames/*.cpp')
sources += bld.path.ant_glob('taglib/ogg/*.cpp')
sources += bld.path.ant_glob('taglib/ogg/vorbis/*.cpp')
sources += bld.path.ant_glob('taglib/ogg/speex/*.cpp')
sources += bld.path.ant_glob('taglib/ogg/flac/*.cpp')
sources += bld.path.ant_glob('taglib/trueaudio/*.cpp')
sources += bld.path.ant_glob('taglib/wavpack/*.cpp')
sources += bld.path.ant_glob('taglib/ape/*.cpp')
sources += bld.path.ant_glob('taglib/toolkit/*.cpp')
obj.source = sources
include_dirs = '''
taglib
taglib/toolkit
taglib/flac
taglib/ape
taglib/mpc
taglib/mpeg
taglib/mpeg/id3v1
taglib/mpeg/id3v2
taglib/wavpack
taglib/trueaudio
taglib/ogg
taglib/ogg/vorbis
taglib/ogg/speex
taglib/ogg/flac
'''.split()
obj.export_includes = ['.', 'taglib' ]
obj.includes = include_dirs
obj.defines = ['MAKE_TAGLIB_LIB']
obj.name = 'libtaglib'
obj.target = 'taglib'
obj.vnum = LIBTAGLIB_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
def shutdown():
autowaf.shutdown()