Blame view

3rdparty/boost_1_81_0/libs/json/build/Jamfile 2.42 KB
73ef4ff3   Hu Chunming   提交三方库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  #
  # Copyright (c) 2019 Vinnie Falco (vinnie dot falco at gmail dot com)
  # Copyright (c) 2021 Dmitry Arkhipov (grisumbras@gmail.com)
  #
  # Distributed under the Boost Software License, Version 1.0. (See accompanying
  # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  #
  # Official repository: https://github.com/boostorg/json
  #
  
  import modules ;
  import ../../config/checks/config ;
  
  # These make sure we only build on compatible C++11 or later toolchains.
  obj cxx11_basic_alignas : ../check/basic_alignas.cpp ;
  explicit cxx11_basic_alignas ;
  
  rule requires ( tests + )
  {
      local result ;
      for test in $(tests)
      {
          local name = $(test:D=) ;
          local m = $(test:D) ;
          if $(m)
          {
              m = [ modules.binding $(m) ] ;
              m = $(m:D)// ;
          }
          m ?= "" ;
  
          result += [ check-target-builds $(m)$(name) $(name)
              : : <build>no <conditional>@warn-if-requested
          ] ;
      }
      return $(result) ;
  }
  
  .warned = ;
  rule warn-if-requested ( properties * )
  {
      if ! $(.warned)
      {
          .warned = true ;
          local args = [ modules.peek : ARGV ] ;
          local var = [ modules.peek project-config : libraries ] ;
          if json in [ MATCH ^--with-(json) : $(args) $(var) ]
          {
              echo "warning:" Boost.Json was explicitly requested, but will not
                  be built, because it requires C++11. ;
              echo "note:" To enable C++11 support, use the 'cxxstd=11' command line
                  argument. ;
          }
      }
  }
  
  project boost/json
      : requirements
        [ requires
          config/cxx11_constexpr
          config/cxx11_decltype
          config/cxx11_hdr_tuple
          config/cxx11_template_aliases
          config/cxx11_variadic_templates
          # We only require limited alignas support,
          # so we have to use a custom check
          cxx11_basic_alignas
        ]
        <link>shared:<define>BOOST_JSON_DYN_LINK=1
        <link>static:<define>BOOST_JSON_STATIC_LINK=1
        <define>BOOST_JSON_SOURCE
      : usage-requirements
        <link>shared:<define>BOOST_JSON_DYN_LINK=1
        <link>static:<define>BOOST_JSON_STATIC_LINK=1
      : source-location ../src
      ;
  
  alias json_sources
     : src.cpp
     : usage-requirements
       <library>/boost//container/<warnings-as-errors>off
     ;
  
  explicit json_sources ;
  
  lib boost_json
     : json_sources
     : usage-requirements
       <library>/boost//container/<warnings-as-errors>off
     ;
  
  boost-install boost_json ;