// file : build/file -*- C++ -*- // copyright : Copyright (c) 2014-2015 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BUILD_FILE #define BUILD_FILE #include <build/path> #include <build/name> #include <build/variable> // list_value namespace build { class scope; class location; bool is_src_root (const dir_path&); bool is_out_root (const dir_path&); void source (const path& buildfile, scope& root, scope& base); // As above but first check if this buildfile has already been // sourced for the base scope. // void source_once (const path& buildfile, scope& root, scope& base); // As above but checks against the specified scope rather than base. // void source_once (const path& buildfile, scope& root, scope& base, scope& once); // Create project's root scope. Only set the src_root variable if the // passed src_root value is not empty. // scope& create_root (const dir_path& out_root, const dir_path& src_root); // Bootstrap the project's root scope, the out part. // void bootstrap_out (scope& root); // Bootstrap the project's root scope, the src part. Return true if // we loaded anything. // bool bootstrap_src (scope& root); // Create and bootstrap outer root scopes, if any. Loading is // done by load_root_pre() below. // void create_bootstrap_outer (scope& root); // Create and bootstrap inner root scopes between root and base, // if any. Return the innermost created root scope or root if // none were created. Loading is done by load_root_pre() below. // scope& create_bootstrap_inner (scope& root, const dir_path& out_base); // Load project's root[-pre].build unless already loaded. Also // make sure all outer root scopes are loaded prior to loading // this root scope. // void load_root_pre (scope& root); list_value import (scope& base, const name&, const location&); } #include <build/file.ixx> #endif // BUILD_FILE