aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/serf/portfile.cmake
blob: b8bb2443ce14eff5a89f40dfd0f0e50710e65060 (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
vcpkg_download_distfile(ARCHIVE
    URLS "https://dlcdn.apache.org/serf/serf-${VERSION}.tar.bz2"
    FILENAME "serf-${VERSION}.tar.bz2"
    SHA512 19165274d35c694935cda33f99ef92a7663a5d9c540fb7fd6792aa0efe39941b2fa87ff8b61afd060c6676baec634fd33dc2e9d34ecbee45ed99dfaed077802c
)

vcpkg_extract_source_archive(
    SOURCE_PATH
    ARCHIVE "${ARCHIVE}"
    PATCHES
      serf-fix-expat.patch
      serf-use-debug-libs.patch
)

# Note: custom architecture is not supported on Unix.
if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
  set(SCONS_ARCH "TARGET_ARCH=x86_64")
elseif(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
  set(SCONS_ARCH "TARGET_ARCH=x86")
else()
  set(SCONS_ARCH "")
endif()

if(EXISTS "${CURRENT_INSTALLED_DIR}/bin/libapr-1.dll")
  set(APR_STATIC "no")
else()
  set(APR_STATIC "yes")
endif()

vcpkg_find_acquire_program(SCONS)

message(STATUS "Building ${TARGET_TRIPLET}-rel")

if(VCPKG_TARGET_IS_WINDOWS)
  SET(apr_opts
    "APR=${CURRENT_INSTALLED_DIR}"
    "APU=${CURRENT_INSTALLED_DIR}"
    "APR_STATIC=${APR_STATIC}"
  )
else()
  SET(apr_opts
    "APR=${CURRENT_INSTALLED_DIR}/tools/apr/bin/apr-1-config"
    "APU=${CURRENT_INSTALLED_DIR}/tools/apr-util/bin/apu-1-config"
  )
endif()

vcpkg_execute_build_process(
  COMMAND ${SCONS}
      "SOURCE_LAYOUT=no"
      "PREFIX=${CURRENT_PACKAGES_DIR}"
      "LIBDIR=${CURRENT_PACKAGES_DIR}/lib"
      "OPENSSL=${CURRENT_INSTALLED_DIR}"
      "ZLIB=${CURRENT_INSTALLED_DIR}"
      ${apr_opts}
      "${SCONS_ARCH}"
      "DEBUG=no"
      "install-lib" "install-inc" "install-pc"
  WORKING_DIRECTORY "${SOURCE_PATH}"
  LOGNAME "scons-rel"
)

# Fixup installed files.
if(VCPKG_TARGET_IS_WINDOWS)
  if("${VCPKG_LIBRARY_LINKAGE}" STREQUAL "dynamic" AND VCPKG_TARGET_IS_WINDOWS)
    file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin")
    file(RENAME
      "${CURRENT_PACKAGES_DIR}/lib/libserf-1.dll"
      "${CURRENT_PACKAGES_DIR}/bin/libserf-1.dll"
    )
    file(RENAME
      "${CURRENT_PACKAGES_DIR}/lib/libserf-1.pdb"
      "${CURRENT_PACKAGES_DIR}/bin/libserf-1.pdb"
    )
  else()
    file(REMOVE
      "${CURRENT_PACKAGES_DIR}/lib/libserf-1.dll"
      "${CURRENT_PACKAGES_DIR}/lib/libserf-1.pdb"
      "${CURRENT_PACKAGES_DIR}/lib/libserf-1.lib"
    )
  endif()
  file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/libserf-1.exp")
endif()

if(NOT VCPKG_BUILD_TYPE)
  message(STATUS "Building ${TARGET_TRIPLET}-dbg")

  if(VCPKG_TARGET_IS_WINDOWS)
    SET(apr_opts
      "APR=${CURRENT_INSTALLED_DIR}/debug"
      "APU=${CURRENT_INSTALLED_DIR}/debug"
      "APR_STATIC=${APR_STATIC}"
    )
  else()
    SET(apr_opts
      "APR=${CURRENT_INSTALLED_DIR}/tools/apr/debug/bin/apr-1-config"
      "APU=${CURRENT_INSTALLED_DIR}/tools/apr-util/debug/bin/apu-1-config"
    )
  endif()

  vcpkg_execute_build_process(
      COMMAND ${SCONS}
          "SOURCE_LAYOUT=no"
          "PREFIX=${CURRENT_PACKAGES_DIR}/debug"
          "LIBDIR=${CURRENT_PACKAGES_DIR}/debug/lib"
          "OPENSSL=${CURRENT_INSTALLED_DIR}"
          "ZLIB=${CURRENT_INSTALLED_DIR}"
          ${apr_opts}
          "${SCONS_ARCH}"
          "DEBUG=yes"
          "install-lib" "install-pc"
      WORKING_DIRECTORY "${SOURCE_PATH}"
      LOGNAME "scons-dbg"
  )

  # Fixup installed files.
  if(VCPKG_TARGET_IS_WINDOWS)
    if("${VCPKG_LIBRARY_LINKAGE}" STREQUAL "dynamic")
      file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin")
      file(RENAME
        "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.dll"
        "${CURRENT_PACKAGES_DIR}/debug/bin/libserf-1.dll"
      )
      file(RENAME
        "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.pdb"
        "${CURRENT_PACKAGES_DIR}/debug/bin/libserf-1.pdb"
      )
    else()
      file(REMOVE
        "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.dll"
        "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.pdb"
        "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.lib"
      )
    endif()
    file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/lib/libserf-1.exp")
  endif()
endif()

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
vcpkg_fixup_pkgconfig()