summaryrefslogblamecommitdiffstats
path: root/wscript
blob: 5f8464d7521a9c5fa64e6b55f18e92d8797ad3f6 (plain) (tree)
1
2
3
4
5
6
7
8
9



                             


              
             
 






                                                                      

                                  




                         
 


                         
                    
                      

                           
                                
                   
                          
                          
                     


                              






                             
                            

                       

                                      
                   
                                         
 













                                                  










                                                       
 
               
     
                      
     
                                                                               



                                                             

     
     




                                              

                      

     
                                                                
     

                                 
                                                                                     
                                                   

                                
                                                                               
                                                            



                                                                


                                 
                                                             



                                                



                      







                       
#
# 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.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)