aboutsummaryrefslogtreecommitdiff
path: root/build2/cc/target.cxx
blob: 89b9391464463e10fb67bb3b5689c737a6f23ffe (plain)
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
93
94
95
96
97
98
99
100
101
// file      : build2/cc/target.cxx -*- C++ -*-
// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
// license   : MIT; see accompanying LICENSE file

#include <build2/cc/target.hxx>

#include <libbuild2/context.hxx>

using namespace std;

namespace build2
{
  namespace cc
  {
    const target_type cc::static_type
    {
      "cc",
      &file::static_type,
      nullptr,
      nullptr,
      nullptr,
      nullptr,
      nullptr,
      &target_search,
      false
    };

    extern const char h_ext_def[] = "h";

    const target_type h::static_type
    {
      "h",
      &cc::static_type,
      &target_factory<h>,
      nullptr, /* fixed_extension */
      &target_extension_var<h_ext_def>,
      &target_pattern_var<h_ext_def>,
      nullptr,
      &file_search,
      false
    };

    extern const char c_ext_def[] = "c";

    const target_type c::static_type
    {
      "c",
      &cc::static_type,
      &target_factory<c>,
      nullptr, /* fixed_extension */
      &target_extension_var<c_ext_def>,
      &target_pattern_var<c_ext_def>,
      nullptr,
      &file_search,
      false
    };

    const target_type pc::static_type
    {
      "pc",
      &file::static_type,
      nullptr,
      nullptr,
      nullptr,
      nullptr,
      nullptr,
      &target_search,
      false
    };

    extern const char pca_ext[] = "static.pc"; // VC14 rejects constexpr.

    const target_type pca::static_type
    {
      "pca",
      &pc::static_type,
      &target_factory<pca>,
      &target_extension_fix<pca_ext>,
      nullptr, /* default_extension */
      &target_pattern_fix<pca_ext>,
      &target_print_0_ext_verb, // Fixed extension, no use printing.
      &file_search,
      false
    };

    extern const char pcs_ext[] = "shared.pc"; // VC14 rejects constexpr.

    const target_type pcs::static_type
    {
      "pcs",
      &pc::static_type,
      &target_factory<pcs>,
      &target_extension_fix<pcs_ext>,
      nullptr, /* default_extension */
      &target_pattern_fix<pcs_ext>,
      &target_print_0_ext_verb, // Fixed extension, no use printing.
      &file_search,
      false
    };
  }
}