summaryrefslogtreecommitdiff
path: root/buildfile
blob: 36f963ebbc8a5dc233cf59c035005612cb0c8159 (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
./: vcpkg/ manifest

vcpkg/
{
  ./: toolsrc/

  toolsrc/
  {
    ./: vcpkg/exe{vcpkg} file{VERSION.txt}

    # Note that we need the explicit fsdir{} because our distribution won't
    # have this (empty) directory.
    #
    vcpkg/exe{vcpkg}: cxx{src/vcpkg/**     +src/vcpkg}   \
                      hxx{include/vcpkg/** +include/pch} \
                      fsdir{vcpkg/}

    cxx.poptions =+ "-I$src_base/include" -DDISABLE_METRICS=1 \
-DVCPKG_VERSION="+$version.revision-build2"

    # Currently upstream is full of warnings, so disable for now.
    #
    if ($cxx.class == 'gcc')
      cxx.coptions += -Wno-all -Wno-extra

    # For some standard libraries std::filesystem is in a separate library.
    #
    if ($cxx.stdlib == 'libstdc++')
      cxx.libs += -lstdc++fs
    elif ($cxx.stdlib == 'libc++')
      cxx.libs += -lc++experimental

    if ($cxx.target.class == 'windows')
      cxx.libs += bcrypt.lib
  }

  # The goal here is to distribute pretty much the entire vcpkg repository so
  # that the resulting package can be used in the same way as a repository
  # clone (which is the "standard" way of using vcpkg).
  #
  ./: docs/file{**}                 \
      ports/file{**}                \
      scripts/file{** -bootstrap.*} \
      triplets/file{**}             \
      file{.vcpkg-root}             \
      doc{LICENSE.txt CHANGELOG.md README.md}
}

# Standard install doesn't make much sense with the way vcpkg works so we are
# going to repurpose it to create a "vcpkg build root" (which should contain
# all the ports, script, etc). In other words, you should be able to do:
#
# b install config.install.root=/tmp/vcpkg
# vcpkg install --vcpkg-root /tmp/vcpkg libfoo
#
manifest@./: install = root/

vcpkg/
{
  # Only install what we explicitly list.
  #
  file{*}: install = false

  file{.vcpkg-root}@./: install = root/

  ports/file{*}: install         = root/ports/
  ports/file{*}: install.subdirs = true

  scripts/file{*}: install         = root/scripts/
  scripts/file{*}: install.subdirs = true

  triplets/file{*}: install         = root/triplets/
  triplets/file{*}: install.subdirs = true
}