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)
# # 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)
# 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',
# 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)