vcpkg/ports/crashpad/portfile.cmake

156 lines
5.9 KiB
CMake
Raw Normal View History

vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_git(
OUT_SOURCE_PATH SOURCE_PATH
URL https://chromium.googlesource.com/crashpad/crashpad
[crashpad] update to the latest version 2024-04-11 (#38484) <!-- If your PR fixes issues, please note that here by adding "Fixes #NNNNNN." for each fixed issue on separate lines. --> <!-- If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/. --> - [x] Changes comply with the [maintainer guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md). - [ ] <s>SHA512s are updated for each updated download.</s> - [ ] <s>The "supports" clause reflects platforms that may be fixed by this new version.</s> - [ ] <s>Any fixed [CI baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt) entries are removed from that file.</s> - [x] Any patches that are no longer applied are deleted from the port's directory. - [x] The version database is fixed by rerunning `./vcpkg x-add-version --all` and committing the result. - [x] Only one version is added to each modified port's versions file. <!-- If this PR adds a new port, please uncomment and fill out this checklist: - [ ] Changes comply with the [maintainer guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md). - [ ] The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines. - [ ] Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all `find_package` calls are REQUIRED, are satisfied by `vcpkg.json`'s declared dependencies, or disabled with [CMAKE_DISABLE_FIND_PACKAGE_Xxx](https://cmake.org/cmake/help/latest/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html). - [ ] The versioning scheme in `vcpkg.json` matches what upstream says. - [ ] The license declaration in `vcpkg.json` matches what upstream says. - [ ] The installed as the "copyright" file matches what upstream says. - [ ] The source code of the component installed comes from an authoritative source. - [ ] The generated "usage text" is accurate. See [adding-usage](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/examples/adding-usage.md) for context. - [ ] The version database is fixed by rerunning `./vcpkg x-add-version --all` and committing the result. - [ ] Only one version is in the new port's versions file. - [ ] Only one version is added to each modified port's versions file. END OF NEW PORT CHECKLIST (delete this line) -->
2024-05-09 02:42:54 +08:00
REF 7e0af1d4d45b526f01677e74a56f4a951b70517d
PATCHES
fix-linux.patch
)
vcpkg_find_acquire_program(PYTHON3)
vcpkg_replace_string("${SOURCE_PATH}/.gn" "script_executable = \"python3\"" "script_executable = \"${PYTHON3}\"")
# mini_chromium contains the toolchains and build configuration
if(NOT EXISTS "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/BUILD.gn")
vcpkg_from_git(OUT_SOURCE_PATH mini_chromium
URL "https://chromium.googlesource.com/chromium/mini_chromium"
REF dce72d97d1c2e9beb5e206c6a05a702269794ca3
PATCHES
fix-std-20.patch
ndk-toolchain.diff
)
file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium")
file(RENAME "${mini_chromium}" "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium")
endif()
if(NOT EXISTS "${SOURCE_PATH}/third_party/lss/lss/BUILD.gn" AND (VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_LINUX))
vcpkg_from_git(OUT_SOURCE_PATH lss
URL https://chromium.googlesource.com/linux-syscall-support
REF 9719c1e1e676814c456b55f5f070eabad6709d31
)
file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/lss/lss")
file(RENAME "${lss}" "${SOURCE_PATH}/third_party/lss/lss")
endif()
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 "target_cpu=\"${VCPKG_TARGET_ARCHITECTURE}\"")
set(OPTIONS_DBG "is_debug=true")
set(OPTIONS_REL "")
if(VCPKG_TARGET_IS_ANDROID)
vcpkg_cmake_get_vars(cmake_vars_file)
include("${cmake_vars_file}")
string(APPEND OPTIONS " target_os=\"android\" android_ndk_root=\"${VCPKG_DETECTED_CMAKE_ANDROID_NDK}\"")
elseif(VCPKG_TARGET_IS_LINUX)
string(APPEND OPTIONS " target_os=\"linux\"")
elseif(VCPKG_TARGET_IS_OSX)
string(APPEND OPTIONS " target_os=\"mac\"")
elseif(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
string(APPEND OPTIONS " target_os=\"win\"")
# Load toolchains
vcpkg_cmake_get_vars(cmake_vars_file)
include("${cmake_vars_file}")
set(OPTIONS_DBG "${OPTIONS_DBG} \
extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_DEBUG}\" \
extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_DEBUG}\" \
extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}\" \
extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_DEBUG}\"")
set(OPTIONS_REL "${OPTIONS_REL} \
extra_cflags_c=\"${VCPKG_COMBINED_C_FLAGS_RELEASE}\" \
extra_cflags_cc=\"${VCPKG_COMBINED_CXX_FLAGS_RELEASE}\" \
extra_ldflags=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}\" \
extra_arflags=\"${VCPKG_COMBINED_STATIC_LINKER_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_gn_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS "${OPTIONS}"
OPTIONS_DEBUG "${OPTIONS_DBG}"
OPTIONS_RELEASE "${OPTIONS_REL}"
)
vcpkg_gn_install(
SOURCE_PATH "${SOURCE_PATH}"
TARGETS client client:common 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")
file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/gen/build/chromeos_buildflags.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}/build")
file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/gen/build/chromeos_buildflags.h.flags" DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}/build")
if(VCPKG_TARGET_IS_OSX)
file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib")
file(COPY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/obj/util/libmig_output.a" DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
endif()
vcpkg_copy_tools(
TOOL_NAMES crashpad_handler
SEARCH_DIR "${CURRENT_PACKAGES_DIR}/tools")
# 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)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/build/config")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/${PORT}/util/mach/__pycache__")
vcpkg_copy_pdbs()
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")