Metadata-Version: 1.1
Name: waftools
Version: 0.4.7
Summary: Handy tools for the WAF meta build environment
Home-page: https://bitbucket.org/Moo7/waftools
Author: Michel Mooij
Author-email: michel.mooij7@gmail.com
License: MIT
Download-URL: https://bitbucket.org/Moo7/waftools/downloads/waftools-0.4.7.tar.gz
Description: Summary
        -------
        This package contains a collection of tools for the waf_ build environment
        intended for both native- as well cross compilation of C/C++ based projects.
        
        
        Description
        -----------
        The waf_ framework provides a meta build system allowing users to create
        concrete build systems. Out of the box it provides support for building and 
        installation of programs for a myriad of programming languages (C, C++, Java, 
        Python, Fortran, Lua, ...), when needed new functions (e.g. source code 
        checking) can be added to a concrete build solution using waf_ *tools* 
        which can be imported and used in *wscript* build files. See the 
        wafbook_ for a detailed description of the waf_ meta build system structure
        and usage.
        
        The *waftools* package provides a collection of C/C++ *tools* which, once 
        installed, can be imported and used from any *wscript* build file on your 
        system. Following provides a non-exhausting list of functions provided by this 
        package:
        
        - Cross compile using several C/C++ cross compiler toolchains
        - C/C++ export to makefiles (e.g. **make**, **cmake**)
        - C/C++ export to IDE's (e.g. **Code::Blocks**, **Eclipse**, **Visual Studio**)
        - C/C++ source code checking using **cppcheck** (including *html* reports)
        - Clean and format C/C++ source code using **GNU** **indent**
        - Create installers using **NSIS**
        - Create C/C++ documentation using **DoxyGen**
        - List dependencies between build tasks
        
        
        Installation
        ------------
        The package can be installed using pip::
        
            pip install -I waftools
        
        or by cloning the repository and using distutils::
        
            cd ~
            git clone https://bitbucket.org/Moo7/waftools.git waftools
            cd waftools
            python setup.py sdist install
        
        Contained within the *waftools* package is a special install script which can be used to 
        install the waf build system itself::
        
            wafinstall [--version=version] [--tools=compat15]
        
        
        Usage
        -----
        The code snippet below provides an example of how a complete build environment
        can be created allowing you to build, not only for the host system, but also 
        for one or more target platforms using a C/C++ cross compiler::
        
            #!/usr/bin/env python
            # -*- encoding: utf-8 -*-
        
            import os, waftools
            from waftools import ccenv
        
            top = '.'
            out = 'build'
            ini = os.path.abspath('ccenv.ini').replace('\\', '/')
        
            VERSION = '0.0.1'
            APPNAME = 'example'
        
            def options(opt):
                opt.load('ccenv', tooldir=waftools.location)
        
            def configure(conf):
                conf.load('ccenv')
        
            def build(bld):
                ccenv.build(bld, trees=['components'])
        
            for var in ccenv.variants(ini):
                for ctx in ccenv.contexts():
                    name = ctx.__name__.replace('Context','').lower()
                    class _t(ctx):
                        __doc__ = "%ss '%s'" % (name, var)
                        cmd = name + '_' + var
                        variant = var
        
        When loading and configuring the *ccenv* tool, as shown in the example above, all 
        required C/C++ tools for each build environment variant (i.e. native or cross-
        compile) will be loaded and configured as well; e.g. compilers, makefile-, cmake-, 
        eclipse-, codeblocks- and msdev exporters, cppcheck source code checking, doxygen 
        documentation creation will be available for each build variant. Additional (ccross)
        compile build environments can be specified in a seperate .INI file (named ccenv.ini 
        in the example above) using following syntax::
        
            [arm]
            prefix = arm-linux-gnueabihf
        
            [msvc]
            c = msvc
            cxx = msvc
        
        The section name, *arm* in the example above, specifies the name of the compile
        build environment variant. The prefix combined with compiler type (c,cxx) will be 
        used in order to create the concrete names of the cross compile toolchain 
        binaries::
        
            AR  = arm-linux-gnueabihf-ar
            CC  = arm-linux-gnueabihf-gcc
            CXX = arm-linux-gnueabihf-g++
        
        Concrete build scripts (i.e. wscript files) for components can be placed somewhere 
        within the *components* sub-directory. Any top level wscript file of a tree (being 
        *components* in this example) will be detected and incorporated within the build 
        environment. Any wscript files below those top level script files will have to be 
        included using the *bld.recurse('../somepath')* command from the top level script 
        of that tree.
        
        
        Support
        -------
        Defects and/or feature requests can be reported at::
            https://bitbucket.org/Moo7/waftools/issues
        
        
        .. note::
            the complete package documentation can be found at: 
            http://pythonhosted.org/waftools/
        
        
        .. _waf: https://code.google.com/p/waf/
        .. _wafbook: http://docs.waf.googlecode.com/git/book_18/single.html
        
        
        
        History
        -------
        Following lists the changes per released version.
        
        **v0.4.7**, 2014-12-31:
        
        - *ccenv*; new module, replacement of ccross and gnucc modules
        - *ccross*, gnucc; marked as deprecated, use ccenv instead
        - *general*; dropped default support for batched_cc,unity, still too experimental
        - issue6_; added check for presence of C and C++ compilers in eclipse module  
        
        
        **v0.4.6**, 2014-12-30:
        
        - issue13_; improved package installation
        - *general*; added description for test script
        - *general*; updated setup script for Fedora
        
        
        **v0.4.5**, 2014-12-07:
        
        - *cppcheck*; fixed crash when used in conf.check(); i.e. there are no bld.options
        
        
        **v0.4.4**, 2014-12-07:
        
        - *cppcheck*; fixed static title and header in top index page
        - *cppcheck*; show highlighted source code for each file
        
        
        **v0.4.3**, 2014-12-05:
        
        - *makefile*, *cmake*, *msdev*; use additional system includes (bld.env.INCLUDES)
        - *msdev*; treat bld.objects() as stlib.
        
        
        **v0.4.2**, 2014-11-30:
        
        - issue12_; *makefile*, treat bld.objects() as stlib.
        - *makefile*; improved detection and handling of nested libraries.
        - issue11_; *cmake*, treat bld.objects() as stlib.
        
        
        **v0.4.1**, 2014-11-23:
        
        - *ccross*; added support for msvc
        - *ccross*; use gcc as default host compiler, use --cchost to use default platform compiler
        - *ccross*; added option for specifying compiler postfix in ccross.ini file
        - *cppcheck*; reimplemented using JinJa2
        
        **v0.4.0**, 2014-11-17:
        
        - *waftools*; moved get_deps() and get_targets() to module *deps*
        
        **v0.3.9**, 2014-11-16:
        
        - *waftools*; return unique list of deps in *waftools.get_deps()*
        - *eclipse*; [bug fix] use general compiler flags and includes
        - *eclipse*; [bug fix] export *bld.objects()* as static library
        - *cmake*; [bug fix] export *bld.objects()* as static library
        
        
        **v0.3.8**, 2014-11-13:
        
        - issue9_; add *-pthread* option by default in gnucc and use it for export(*eclipse*, *makefiles*, *codeblocks*)
        - *eclipse*; [bug fix] added shared system libs
        - *eclipse*; added *eclipse_skipme* task generator option
        - *codeblocks*; added *codeblocks_skipme* task generator option
        - *cmake*; added *cmake_skipme* task generator option
        - *msdev*; added *msdev_skipme* task generator option
        - *codeblocks*, *cmake*; only export projects for selected targets (e.g. --targets=a,b,)
        
        
        **v0.3.7**, 2014-11-12:
        
        - *general*; added package dependency to *chardet*
        - *ccross*; fix when using multiple cross compilers
        - *cppcheck*; detect character encoding when parsing on source failed.
        
        
        **v0.3.6**, 2014-11-10:
        
        - *waftools*; added generic *waftools.recurse(ctx,trees=[])* function
        - issue8_; check if options (e.g. *env*) exist in cross.ini file
        - *ccross*; use normal compiler, linker and archvier if no prefix has been specified in ccross.ini
        - *eclipse*; added generation of launchers
        
        **v0.3.5**, 2014-11-09:
        
        - *ccross*; specify configuration file (cross.ini) using command line argument
        - *ccross*; added support for defining environment variables in 'cross.ini'
        - *wafinstall*; allways create 'extras' directory (required for 'compiler_c' tool)
        
        
        **v0.3.4**, 2014-11-06:
        
        - *msdev*, *makefile*; only export projects for selected targets (e.g. --targets=a,b,)
        - *wafinstall*; by default do not install files from waflib/Tools/extras (i.e. --tools=None), add missing __init__.py file to waflib/Tools/extras.
        
        
        **v0.3.3**, 2014-11-04:
        
        - *wafinstall*; corrected detection of compression of the waf archive (gz or bz2)
        - *makefile*; several fixes and improvements:
        
        	- handle cflags in task generator being specified as string
        	- added support for read_shlib()
        	- only build C/C++ tasks
        	- use correct makefile, build directory and libpaths for variants (cross-compile)
        	
        - *eclipse*; several fixes and improvements:
        
        	- added support for library task generators exporting headers only (i.e. no source)
        	- added missing external libraries in project; use 'lib' from task generator, added support for read_shlib(), a.k.a. *fake_lib*
        
        
        **v0.3.2**, 2014-11-03:
        
        - issue5_; fixed detection of (cross)compilers in *ccross* module when using waf-1.8.x
        
        
        **v0.3.1**, 2014-10-30:
        
        - issue4_; added missing package files ('msdev.sln' and 'doxy.config')
        - *wafinstall*; improved/revised *waf* install script (beta)
        
        
        **v0.3.0**, 2014-10-23:
        
        - *wafinstall*; added install script, can be used to install the *waf* build system
        
        
        **v0.2.0**, 2014-10-15:
        
        - *general*; added support for waf-1.8.x, several fixes for environment variables being changed to type(list)
        - *ccross*; use new *unity* and *batched_cc* tools from waf-1.8.x when available
        
        
        **v0.1.8**, 2014-10-11:
        
        - *general*; updated package trove classifiers in setup.py
        - *indent*; new module uses GNU indent in order to clean-up and format C/C++ source code
        - *documentation*; improved detailed description of modules
        
        
        **v0.1.7**, 2014-10-06:
        
        - *makefile*, *codeblocks*, *eclipse*; added support for multiple build environments (cross-compile)
        - *codeblocks*; added support for multiple build environments (cross-compile)
        - *eclipse*; changed export, now only export settings defined within the environment
        
        
        **v0.1.6**, 2014-09-03:
        
        - *makefile*; corrected creation of relative source paths and fixed a problem when using underscores in directory or task names
        - *cppcheck*; fixed broken hyperlinks when using firefox web browser
        
        
        **v0.1.5**, 2014-08-24:
        
        - *general*; corrected download url in setup.py
        - *general*; always use *tgz* format for released packages
        - *gnucc*; new module containing GNU C/C++ compiler specific configuration settings
        - *examples*; updated build scripts in 'playground'
        
        
        **v0.1.4**, 2014-08-18:
        
        - *depends*, *tree*; renamed *depends* module into *tree*
        - *documenation*; added *tree* to package description
        - *waftools*; added 'location' variable (i.e. 'waftools.location')
        - *msdev*, *eclipse*, *cmake*, *codeblocks*, *make*; improved export speed
        - issue2_, issue3_; improved installation path of package data files (e.g. msdev.sln) 
        - *msdev*, *cmake*, *codeblocks*; fixed export on Windows
        
        
        **v0.1.3**, 2014-07-21:
        
        - *license*; changed license to MIT
        - *documentation*; updated and improved detailed description of modules
        - *msdev*, *eclipse*, *cmake*, *codeblocks*, *make*; improved export function
        - *eclipse*; improved export when using MinGW on Windows
        
        
        **v0.1.2**, 2014-07-01:
        
        - *eclipse*; improved export when *includes* and *use* tgen arguments are specified as string intead of list
        - *codeblocks*; use LIBPATH and INCLUDES dependencies, added pthread linker option
        - *depend*; new module that allows users to get an overview of dependencies between tasks
        - *doxygen*; new module that allows users to create C/C++ source documentation
        
        
        **v0.1.1**, 2014-05-10:
        
        - *codeblocks*; added extra check when parsing dependencies (*use*)
        - *msdev*; added extra check when parsing dependencies (*use*)
        - *eclipse*; added extra check when parsing dependencies (*use*)
        - *cppcheck*; added extra check on C/C++ sources containing non human readable characters
        
        
        **v0.1.0**, 2014-04-08:
        
        - *msdev*; added export function of C/C++ tasks to Visual Studio projects.
        
        
        **v0.0.9**, 2014-04-01:
        
        - initial release.
        
        
        .. _issue2: https://bitbucket.org/Moo7/waftools/issue/2/exception-when-exporting-to-msdev
        .. _issue3: https://bitbucket.org/Moo7/waftools/issue/3/exception-when-exporting-to-msdev
        .. _issue4: https://bitbucket.org/Moo7/waftools/issue/4/msdevsln-not-included-in-the-latest
        .. _issue5: https://bitbucket.org/Moo7/waftools/issue/5/detecting-cross-compiler-fails
        .. _issue6: https://bitbucket.org/Moo7/waftools/issue/6/eclipse-tools-fail-when-not-using-c
        .. _issue8: https://bitbucket.org/Moo7/waftools/issue/8/module-crosspy-fails-in-v035
        .. _issue9: https://bitbucket.org/Moo7/waftools/issue/9/eclipse-missing-pthread
        .. _issue11: https://bitbucket.org/Moo7/waftools/issue/11/cmake-export-fails-when-using-bldobjects
        .. _issue12: https://bitbucket.org/Moo7/waftools/issue/12/makefile-export-fails-when-using
        .. _issue13: https://bitbucket.org/Moo7/waftools/issue/13/package-version-045-install-fails-on
        
        
Keywords: waf,c,c++,cppcheck,codeblocks,eclipse,make,cmake,msdev,doxygen,GNU indent
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows :: Windows 7
Classifier: Operating System :: Microsoft :: Windows :: Windows Vista
Classifier: Operating System :: Microsoft :: Windows :: Windows XP
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: C
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Topic :: Utilities
