// file : libbuild2/install/utility.hxx -*- C++ -*- // copyright : Copyright (c) 2014-2019 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef LIBBUILD2_INSTALL_UTILITY_HXX #define LIBBUILD2_INSTALL_UTILITY_HXX #include #include #include #include #include namespace build2 { namespace install { // Set install path, mode for a target type. // inline void install_path (scope& s, const target_type& tt, dir_path d) { auto r ( s.target_vars[tt]["*"].insert ( s.ctx.var_pool.rw (s).insert ("install"))); if (r.second) // Already set by the user? r.first.get () = path_cast (move (d)); } template inline void install_path (scope& s, dir_path d) { return install_path (s, T::static_type, move (d)); } inline void install_mode (scope& s, const target_type& tt, string m) { auto r ( s.target_vars[tt]["*"].insert ( s.ctx.var_pool.rw (s).insert ("install.mode"))); if (r.second) // Already set by the user? r.first.get () = move (m); } template inline void install_mode (scope& s, string m) { return install_mode (s, T::static_type, move (m)); } // Resolve relative installation directory path (e.g., include/libfoo) to // its absolute directory path (e.g., /usr/include/libfoo). If the // resolution encountered an unknown directory, issue diagnostics and fail // unless fail_unknown is false, in which case return empty directory. // // Note: implemented in rule.cxx. // LIBBUILD2_SYMEXPORT dir_path resolve_dir (const target&, dir_path, bool fail_unknown = true); LIBBUILD2_SYMEXPORT dir_path resolve_dir (const scope&, dir_path, bool fail_unknown = true); // Resolve file installation path returning empty path if not installable. // LIBBUILD2_SYMEXPORT path resolve_file (const file&); // rule.cxx } } #endif // LIBBUILD2_INSTALL_UTILITY_HXX