summaryrefslogtreecommitdiff
path: root/jam-files/boost-build/tools/package.py
diff options
context:
space:
mode:
authorChris Dyer <cdyer@cs.cmu.edu>2012-10-11 14:06:32 -0400
committerChris Dyer <cdyer@cs.cmu.edu>2012-10-11 14:06:32 -0400
commit9339c80d465545aec5a6dccfef7c83ca715bf11f (patch)
tree64c56d558331edad1db3832018c80e799551c39a /jam-files/boost-build/tools/package.py
parent438dac41810b7c69fa10203ac5130d20efa2da9f (diff)
parentafd7da3b2338661657ad0c4e9eec681e014d37bf (diff)
Merge branch 'master' of https://github.com/redpony/cdec
Diffstat (limited to 'jam-files/boost-build/tools/package.py')
-rw-r--r--jam-files/boost-build/tools/package.py168
1 files changed, 0 insertions, 168 deletions
diff --git a/jam-files/boost-build/tools/package.py b/jam-files/boost-build/tools/package.py
deleted file mode 100644
index aa081b4f..00000000
--- a/jam-files/boost-build/tools/package.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# Status: ported
-# Base revision: 64488
-#
-# Copyright (c) 2005, 2010 Vladimir Prus.
-# Copyright 2006 Rene Rivera.
-#
-# Use, modification and distribution is subject to the Boost Software
-# License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-# http://www.boost.org/LICENSE_1_0.txt)
-
-# Provides mechanism for installing whole packages into a specific directory
-# structure. This is opposed to the 'install' rule, that installs a number of
-# targets to a single directory, and does not care about directory structure at
-# all.
-
-# Example usage:
-#
-# package.install boost : <properties>
-# : <binaries>
-# : <libraries>
-# : <headers>
-# ;
-#
-# This will install binaries, libraries and headers to the 'proper' location,
-# given by command line options --prefix, --exec-prefix, --bindir, --libdir and
-# --includedir.
-#
-# The rule is just a convenient wrapper, avoiding the need to define several
-# 'install' targets.
-#
-# The only install-related feature is <install-source-root>. It will apply to
-# headers only and if present, paths of headers relatively to source root will
-# be retained after installing. If it is not specified, then "." is assumed, so
-# relative paths in headers are always preserved.
-
-import b2.build.feature as feature
-import b2.build.property as property
-import b2.util.option as option
-import b2.tools.stage as stage
-
-from b2.build.alias import alias
-
-from b2.manager import get_manager
-
-from b2.util import bjam_signature
-from b2.util.utility import ungrist
-
-
-import os
-
-feature.feature("install-default-prefix", [], ["free", "incidental"])
-
-@bjam_signature((["name", "package_name", "?"], ["requirements", "*"],
- ["binaries", "*"], ["libraries", "*"], ["headers", "*"]))
-def install(name, package_name=None, requirements=[], binaries=[], libraries=[], headers=[]):
-
- requirements = requirements[:]
- binaries = binaries[:]
- libraries
-
- if not package_name:
- package_name = name
-
- if option.get("prefix"):
- # If --prefix is explicitly specified on the command line,
- # then we need wipe away any settings of libdir/includir that
- # is specified via options in config files.
- option.set("bindir", None)
- option.set("libdir", None)
- option.set("includedir", None)
-
- # If <install-source-root> is not specified, all headers are installed to
- # prefix/include, no matter what their relative path is. Sometimes that is
- # what is needed.
- install_source_root = property.select('install-source-root', requirements)
- if install_source_root:
- requirements = property.change(requirements, 'install-source-root', None)
-
- install_header_subdir = property.select('install-header-subdir', requirements)
- if install_header_subdir:
- install_header_subdir = ungrist(install_header_subdir[0])
- requirements = property.change(requirements, 'install-header-subdir', None)
-
- # First, figure out all locations. Use the default if no prefix option
- # given.
- prefix = get_prefix(name, requirements)
-
- # Architecture dependent files.
- exec_locate = option.get("exec-prefix", prefix)
-
- # Binaries.
- bin_locate = option.get("bindir", os.path.join(prefix, "bin"))
-
- # Object code libraries.
- lib_locate = option.get("libdir", os.path.join(prefix, "lib"))
-
- # Source header files.
- include_locate = option.get("includedir", os.path.join(prefix, "include"))
-
- stage.install(name + "-bin", binaries, requirements + ["<location>" + bin_locate])
-
- alias(name + "-lib", [name + "-lib-shared", name + "-lib-static"])
-
- # Since the install location of shared libraries differs on universe
- # and cygwin, use target alternatives to make different targets.
- # We should have used indirection conditioanl requirements, but it's
- # awkward to pass bin-locate and lib-locate from there to another rule.
- alias(name + "-lib-shared", [name + "-lib-shared-universe"])
- alias(name + "-lib-shared", [name + "-lib-shared-cygwin"], ["<target-os>cygwin"])
-
- # For shared libraries, we install both explicitly specified one and the
- # shared libraries that the installed executables depend on.
- stage.install(name + "-lib-shared-universe", binaries + libraries,
- requirements + ["<location>" + lib_locate, "<install-dependencies>on",
- "<install-type>SHARED_LIB"])
- stage.install(name + "-lib-shared-cygwin", binaries + libraries,
- requirements + ["<location>" + bin_locate, "<install-dependencies>on",
- "<install-type>SHARED_LIB"])
-
- # For static libraries, we do not care about executable dependencies, since
- # static libraries are already incorporated into them.
- stage.install(name + "-lib-static", libraries, requirements +
- ["<location>" + lib_locate, "<install-dependencies>on", "<install-type>STATIC_LIB"])
- stage.install(name + "-headers", headers, requirements \
- + ["<location>" + os.path.join(include_locate, s) for s in install_header_subdir]
- + install_source_root)
-
- alias(name, [name + "-bin", name + "-lib", name + "-headers"])
-
- pt = get_manager().projects().current()
-
- for subname in ["bin", "lib", "headers", "lib-shared", "lib-static", "lib-shared-universe", "lib-shared-cygwin"]:
- pt.mark_targets_as_explicit([name + "-" + subname])
-
-@bjam_signature((["target_name"], ["package_name"], ["data", "*"], ["requirements", "*"]))
-def install_data(target_name, package_name, data, requirements):
- if not package_name:
- package_name = target_name
-
- if option.get("prefix"):
- # If --prefix is explicitly specified on the command line,
- # then we need wipe away any settings of datarootdir
- option.set("datarootdir", None)
-
- prefix = get_prefix(package_name, requirements)
- datadir = option.get("datarootdir", os.path.join(prefix, "share"))
-
- stage.install(target_name, data,
- requirements + ["<location>" + os.path.join(datadir, package_name)])
-
- get_manager().projects().current().mark_targets_as_explicit([target_name])
-
-def get_prefix(package_name, requirements):
-
- specified = property.select("install-default-prefix", requirements)
- if specified:
- specified = ungrist(specified[0])
- prefix = option.get("prefix", specified)
- requirements = property.change(requirements, "install-default-prefix", None)
- # Or some likely defaults if neither is given.
- if not prefix:
- if os.name == "nt":
- prefix = "C:\\" + package_name
- elif os.name == "posix":
- prefix = "/usr/local"
-
- return prefix
-