From 2f64036565f8335e144c365879a6690ce242d689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Mon, 3 Jul 2017 19:27:13 +0200 Subject: [PATCH] Add lzma.jam file. Just a quick hack to allow to implement LZMA compressor and decompressor in iostreams (see also trac ticket 7534). Probably needs to be refined at some point by someone who knows what they are doing, but it seems to work in principle. --- src/tools/lzma.jam | 105 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/tools/lzma.jam diff --git a/src/tools/lzma.jam b/src/tools/lzma.jam new file mode 100644 index 000000000..a98ba80c0 --- /dev/null +++ b/src/tools/lzma.jam @@ -0,0 +1,105 @@ +# Copyright (c) 2010 Vladimir Prus. +# Copyright (c) 2013 Steven Watanabe +# +# 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) + +# Supports the lzma library +# +# After 'using lzma', the following targets are available: +# +# /lzma//lzam -- The lzma library + +import project ; +import ac ; +import errors ; +import "class" : new ; +import targets ; +import path ; +import modules ; +import errors ; +import indirect ; +import property ; +import property-set ; + +header = lzma.h ; +names = lzma ; + +library-id = 0 ; + +if --debug-configuration in [ modules.peek : ARGV ] +{ + .debug = true ; +} + +rule init ( + version ? + # (currently ignored) + + : options * + # A list of the options to use + + : requirements * + # The requirements for the target + + : is-default ? + # Default configurations are only used when + # not yet configured. + ) +{ + local caller = [ project.current ] ; + + if ! $(.initialized) + { + .initialized = true ; + + project.initialize $(__name__) ; + .project = [ project.current ] ; + project lzma ; + } + + local library-path = [ property.select : $(options) ] ; + library-path = $(library-path:G=) ; + local include-path = [ property.select : $(options) ] ; + include-path = $(include-path:G=) ; + local library-name = [ property.select : $(options) ] ; + library-name = $(library-name:G=) ; + + condition = [ property-set.create $(requirements) ] ; + condition = [ property-set.create [ $(condition).base ] ] ; + + if $(.configured.$(condition)) + { + if $(is-default) + { + if $(.debug) + { + ECHO "notice: [lzma] lzma is already configured" ; + } + } + else + { + errors.user-error "lzma is already configured" ; + } + return ; + } + else + { + if $(.debug) + { + ECHO "notice: [lzma] Using pre-installed library" ; + if $(condition) + { + ECHO "notice: [lzma] Condition" [ $(condition).raw ] ; + } + } + + local mt = [ new ac-library lzma : $(.project) : $(condition) : + $(include-path) : $(library-path) : $(library-name) ] ; + $(mt).set-header $(header) ; + $(mt).set-default-names $(names) ; + targets.main-target-alternative $(mt) ; + } + .configured.$(condition) = true ; +}