blob: 30026d5c151a0abb6e5a480d8a9144b6129290a9 (
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
|
vcpkg_fail_port_install(
ON_ARCH "x86" "arm" "arm64"
ON_TARGET "UWP" "LINUX")
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_git(
OUT_SOURCE_PATH SOURCE_PATH
URL https://chromium.googlesource.com/crashpad/crashpad
REF 9a31d3f8e9815774026a753a1ff6155347cd549f
)
function(checkout_in_path PATH URL REF)
if(EXISTS "${PATH}")
return()
endif()
vcpkg_from_git(
OUT_SOURCE_PATH DEP_SOURCE_PATH
URL "${URL}"
REF "${REF}"
)
file(RENAME "${DEP_SOURCE_PATH}" "${PATH}")
file(REMOVE_RECURSE "${DEP_SOURCE_PATH}")
endfunction()
# mini_chromium contains the toolchains and build configuration
checkout_in_path(
"${SOURCE_PATH}/third_party/mini_chromium/mini_chromium"
"https://chromium.googlesource.com/chromium/mini_chromium"
"c426ff98e1d9e9d59777fe8b883a5c0ceeca9ca3"
)
function(replace_gn_dependency INPUT_FILE OUTPUT_FILE LIBRARY_NAMES)
unset(_LIBRARY_DEB CACHE)
find_library(_LIBRARY_DEB NAMES ${LIBRARY_NAMES}
PATHS "${CURRENT_INSTALLED_DIR}/debug/lib"
NO_DEFAULT_PATH)
if(_LIBRARY_DEB MATCHES "-NOTFOUND")
message(FATAL_ERROR "Could not find debug library with names: ${LIBRARY_NAMES}")
endif()
unset(_LIBRARY_REL CACHE)
find_library(_LIBRARY_REL NAMES ${LIBRARY_NAMES}
PATHS "${CURRENT_INSTALLED_DIR}/lib"
NO_DEFAULT_PATH)
if(_LIBRARY_REL MATCHES "-NOTFOUND")
message(FATAL_ERROR "Could not find library with names: ${LIBRARY_NAMES}")
endif()
set(_INCLUDE_DIR "${CURRENT_INSTALLED_DIR}/include")
file(REMOVE "${OUTPUT_FILE}")
configure_file("${INPUT_FILE}" "${OUTPUT_FILE}" @ONLY)
endfunction()
replace_gn_dependency(
"${CMAKE_CURRENT_LIST_DIR}/zlib.gn"
"${SOURCE_PATH}/third_party/zlib/BUILD.gn"
"z;zlib;zlibd"
)
set(OPTIONS_DBG "is_debug=true")
set(OPTIONS_REL "")
if(CMAKE_HOST_WIN32)
# Load toolchains
if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
endif()
include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
foreach(_VAR CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS
CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE)
string(STRIP "${${_VAR}}" ${_VAR})
endforeach()
set(OPTIONS_DBG "${OPTIONS_DBG} \
extra_cflags_c=\"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}\" \
extra_cflags_cc=\"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}\"")
set(OPTIONS_REL "${OPTIONS_REL} \
extra_cflags_c=\"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}\" \
extra_cflags_cc=\"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}\"")
set(DISABLE_WHOLE_PROGRAM_OPTIMIZATION "\
extra_cflags=\"/GL-\" \
extra_ldflags=\"/LTCG:OFF\" \
extra_arflags=\"/LTCG:OFF\"")
set(OPTIONS_DBG "${OPTIONS_DBG} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}")
set(OPTIONS_REL "${OPTIONS_REL} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}")
endif()
vcpkg_configure_gn(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS_DEBUG "${OPTIONS_DBG}"
OPTIONS_RELEASE "${OPTIONS_REL}"
)
vcpkg_install_gn(
SOURCE_PATH "${SOURCE_PATH}"
TARGETS client util third_party/mini_chromium/mini_chromium/base handler:crashpad_handler
)
message(STATUS "Installing headers...")
set(PACKAGES_INCLUDE_DIR "${CURRENT_PACKAGES_DIR}/include/${PORT}")
function(install_headers DIR)
file(COPY "${DIR}" DESTINATION "${PACKAGES_INCLUDE_DIR}" FILES_MATCHING PATTERN "*.h")
endfunction()
install_headers("${SOURCE_PATH}/client")
install_headers("${SOURCE_PATH}/util")
install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base")
install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build")
# remove empty directories
file(REMOVE_RECURSE
"${PACKAGES_INCLUDE_DIR}/util/net/testdata"
"${PACKAGES_INCLUDE_DIR}/build/ios")
configure_file("${CMAKE_CURRENT_LIST_DIR}/crashpadConfig.cmake.in"
"${CURRENT_PACKAGES_DIR}/share/${PORT}/crashpadConfig.cmake" @ONLY)
vcpkg_copy_pdbs()
file(INSTALL "${SOURCE_PATH}/LICENSE"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}"
RENAME copyright)
|