155 lines
5.3 KiB
Python
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()
|