예제 #1
0
파일: build.py 프로젝트: nussbrot/ronin
          executor=GccLink(),
          inputs_from=['compile'],
          output='money',
          run_output=2 if ctx.build.run else 0)

    if ctx.build.test:
        tests_path = join_path(project.get_output_path('binary'), 'tests')

        # Link library
        Phase(project=project,
              name='link_library',
              executor=GccLink(),
              inputs_from=['compile'],
              output_path=tests_path,
              output='money')
        project.phases['link_library'].executor.create_shared_library()

        # Tests
        Phase(project=project,
              name='tests',
              executor=GccBuild(),
              inputs=glob('tests/**/*.c'),
              inputs_from=['link_library'],
              extensions=[Package('check')],
              output_path=tests_path,
              output='tests',
              run_output=1)
        project.phases['tests'].executor.enable_threads()  # required by Check

    cli(project)
예제 #2
0
파일: build.py 프로젝트: nussbrot/ronin
#
# The gcc executors all support cross-compilation via "platform=", which could be the name of the
# platform variant ("linux64", etc.). But you can also use a project, as in this case.
#
# To test various builds, try "--variant linux64", "--variant linux32", "--variant win64",
# "--variant win32" in the command line. The project will configure itself according to the selected
# variant.
#
# Note that on Linux and MacOS you can run the Windows builds using WINE.
#

from ronin.cli import cli
from ronin.contexts import new_context
from ronin.gcc import GccBuild
from ronin.phases import Phase
from ronin.projects import Project
from ronin.utils.paths import glob

with new_context() as ctx:

    project = Project('gcc Cross-compilation Example')

    Phase(project=project,
          name='build',
          executor=GccBuild(platform=project),
          inputs=glob('src/**/*.c'),
          output='size',
          run_output=1 if ctx.build.run else 0)

    cli(project)
예제 #3
0
# project, which would guarantee each project its own ".ninja_deps" file.
#

from ronin.cli import cli
from ronin.contexts import new_context
from ronin.gcc import GccBuild
from ronin.extensions import OutputsExtension
from ronin.phases import Phase
from ronin.projects import Project
from ronin.utils.paths import glob, input_path

with new_context() as ctx:

    # Library
    library = Project('gcc Multi-Project Example: Library', file_name='library')
    executor = GccBuild()
    executor.create_shared_library()
    executor.pic()
    Phase(project=library,
          name='build',
          executor=executor,
          inputs=glob('src/foo/**/*.c'),
          output='foo')
    
    # Main
    main = Project('Multi-Project Example: Main', file_name='main')
    executor = GccBuild()
    executor.add_include_path(input_path('src/foo'))
    executor.linker_rpath_origin() # to load the .so file from executable's directory
    Phase(project=main,
          name='build',
예제 #4
0
파일: build.py 프로젝트: nussbrot/ronin
#

from ronin.cli import cli
from ronin.contexts import new_context
from ronin.gcc import GccBuild
from ronin.phases import Phase
from ronin.pkg_config import Package
from ronin.projects import Project
from ronin.qt import QtMetaObjectCompile
from ronin.utils.paths import glob

with new_context() as ctx:

    project = Project('g++ Qt Hello World')

    Phase(project=project,
          name='meta',
          executor=QtMetaObjectCompile(),
          inputs=glob('src/**/*.h'))

    Phase(project=project,
          name='build',
          executor=GccBuild('g++'),
          inputs=glob('src/**/*.cpp'),
          inputs_from=['meta'],
          extensions=[Package('QtGui')],
          output='hello',
          run_output=1 if ctx.build.run else 0)

    cli(project)