#!/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 . # # 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 = "cp ${SRC} ${TGT}", 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()