mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2025-01-08 20:46:59 +03:00
93 lines
3.0 KiB
Plaintext
93 lines
3.0 KiB
Plaintext
# Copyright (c) 2010 Vladimir Prus.
|
|
#
|
|
# 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 zlib library
|
|
#
|
|
# After 'using zlib', the following targets are available:
|
|
#
|
|
# /zlib//zlib -- The zlib library
|
|
|
|
|
|
# In addition to direct purpose of supporting zlib, this module also
|
|
# serves as canonical example of how third-party condiguration works
|
|
# in Boost.Build. The operation is as follows
|
|
#
|
|
# - For each 'using zlib : condition ... : ...' we create a target alternative
|
|
# for zlib, with the specified condition.
|
|
# - There's one target alternative for 'zlib' with no specific condition
|
|
# properties.
|
|
#
|
|
# Two invocations of 'using zlib' with the same condition but different
|
|
# properties are not permitted, e.g.:
|
|
#
|
|
# using zlib : condition <target-os>windows : include foo ;
|
|
# using zlib : condition <target-os>windows : include bar ;
|
|
#
|
|
# is in error. One exception is for empty condition, 'using' without any
|
|
# parameters is overridable. That is:
|
|
#
|
|
# using zlib ;
|
|
# using zlib : include foo ;
|
|
#
|
|
# Is OK then the first 'using' is ignored. Likewise if the order of the statements
|
|
# is reversed.
|
|
#
|
|
# When 'zlib' target is built, a target alternative is selected as usual for
|
|
# Boost.Build. The selected alternative is a custom target class, which:
|
|
#
|
|
# - calls ac.find-include-path to find header path. If explicit path is provided
|
|
# in 'using', only that path is checked, and if no header is found there, error
|
|
# is emitted. Otherwise, we check a directory specified using ZLIB_INCLUDE
|
|
# environment variable, and failing that, in standard directories.
|
|
# [TODO: document sysroot handling]
|
|
# - calls ac.find-library to find the library, in an identical fashion.
|
|
#
|
|
|
|
import project ;
|
|
import ac ;
|
|
import errors ;
|
|
import "class" : new ;
|
|
import targets ;
|
|
|
|
project.initialize $(__name__) ;
|
|
project = [ project.current ] ;
|
|
project zlib ;
|
|
|
|
header = zlib.h ;
|
|
names = z zlib zll zdll ;
|
|
|
|
.default-alternative = [ new ac-library zlib : $(project) ] ;
|
|
$(.default-alternative).set-header $(header) ;
|
|
$(.default-alternative).set-default-names $(names) ;
|
|
targets.main-target-alternative $(.default-alternative) ;
|
|
|
|
rule init ( * : * )
|
|
{
|
|
if ! $(condition)
|
|
{
|
|
# Special case the no-condition case so that 'using' without parameters
|
|
# can mix with more specific 'using'.
|
|
$(.default-alternative).reconfigure $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
|
|
}
|
|
else
|
|
{
|
|
# FIXME: consider if we should allow overriding definitions for a given
|
|
# condition -- e.g. project-config.jam might want to override whatever is
|
|
# in user-config.jam.
|
|
local mt = [ new ac-library zlib : $(project)
|
|
: $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
|
|
$(mt).set-header $(header) ;
|
|
$(mt).set-default-names $(names) ;
|
|
targets.main-target-alternative $(mt) ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|