rtems-docs/wscript

139 lines
3.5 KiB
Python

#
# RTEMS Project Documentation
#
import sys
import os.path
import waflib
#
# Set Python's system path to `common` from the top level so the
# conf.py modules in subdirectories can be found. See xml_catalogue in
# common/waf.py.
#
sys.path.append(os.path.abspath('common'))
from common import waf as docs_waf
from common import version
#
# Branch version
#
rtems_major_version = '5'
#
# The documents to build.
#
build_all = ['user',
'c-user',
'bsp-howto',
'posix-users',
'posix-compliance',
'eng',
'filesystem',
'networking',
'shell',
'cpu-supplement',
'develenv',
'eclipse']
building = build_all
def options(opt):
docs_waf.cmd_options(opt)
def configure(conf):
conf.find_program('git')
for b in building:
conf.recurse(b)
conf.env['BUILD_FROM_TOP'] = 'yes'
def catalogue(ctx):
docs_waf.xml_catalogue(ctx, building)
def coverpage_js(ctx):
js = None
xml = None
for f in ctx.inputs:
if f.abspath().endswith('.js'):
with open(f.abspath()) as i:
js = i.read()
elif f.abspath().endswith('.xml'):
with open(f.abspath()) as i:
xml = i.read()
xml = xml.replace('\n', ' \\\n');
with open(ctx.outputs[0].abspath(), 'w') as o:
o.write(js.replace('@CATALOGUE', xml))
def index_html(ctx):
html = ''
year = ctx.env.DATE.split()[2]
for f in ctx.inputs:
if f.abspath().endswith('.html'):
with open(f.abspath()) as i:
html += i.read()
with open(ctx.outputs[0].abspath(), 'w') as o:
html = html.replace('@COPYRIGHT_YEAR@', year)
html = html.replace('@VER_DATE@', ctx.env.DATE)
o.write(html)
def build(ctx):
#
# Get the version.
#
ver_version, ver_date, ver_released = version.get(ctx, rtems_major_version)
ctx.env.DATE = ver_date
ctx.env.RELEASE = ver_version + ' (' + ver_date + ')'
ctx.env.VERSION = ver_version
ctx.env.RTEMS_MAJOR = version.major()
ctx.env.RTEMS_MINOR = version.minor()
ctx.env.RTEMS_REVISION = version.revision()
ctx.to_log('Build: %s%s' % (ctx.env.RELEASE, os.linesep))
#
#
# Generate any PlantUML images if enabled.
#
ctx.recurse('images')
ctx.add_group('images')
for b in building:
ctx.recurse(b)
#
# Build the catalogue, coverpage.js, index.html and install.
#
ctx(rule = catalogue,
target = 'catalogue.xml',
source = ['wscript', 'common/waf.py'] + ['%s/conf.py' % x for x in building])
ctx.install_files('${PREFIX}', 'catalogue.xml')
ctx(rule = coverpage_js,
target = 'coverpage.js',
source = ['wscript', 'catalogue.xml', 'common/coverpage/coverpage.js'])
ctx.install_as('${PREFIX}/coverpage.js', 'coverpage.js')
ctx(rule = index_html,
target = 'coverpage.html',
source = ['wscript', 'common/coverpage/coverpage.html'])
ctx.install_as('${PREFIX}/index.html', 'coverpage.html')
#
# Install the static content.
#
static_dir = ctx.path.find_dir('common/coverpage/static')
ctx.install_files('${PREFIX}/static',
static_dir.ant_glob('**'),
cwd = static_dir,
relative_trick = True)
def install(ctx):
for b in building:
ctx.recurse(b)
def cmd_spell(ctx):
for b in building:
ctx.recurse(b)
def cmd_linkcheck(ctx):
for b in building:
ctx.recurse(b)