# Copyright (c) 2021 Huawei Device Co., Ltd. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. import("//build/ohos.gni") LIBUSB_DIR = rebase_path("//third_party/libusb") exec_script("install.sh", [ "${LIBUSB_DIR}" ]) SRC_PATH = rebase_path("//third_party/libusb/libusb-1.0.26") common_source = [ "${SRC_PATH}/libusb/core.c", "${SRC_PATH}/libusb/descriptor.c", "${SRC_PATH}/libusb/hotplug.c", "${SRC_PATH}/libusb/io.c", "${SRC_PATH}/libusb/sync.c", "${SRC_PATH}/libusb/strerror.c", ] # Configuration for libusb itself. config("libusb_config") { include_dirs = [ "${SRC_PATH}/libusb", "${SRC_PATH}/libusb/os", ] cflags = [ "-U__ANDROID__", "-UUSE_UDEV", "-Wno-#warnings", "-Wno-error=sign-compare", "-Wno-error=switch", "-Wno-error=pragma-pack", ] if (is_linux || is_ohos) { include_dirs += [ "${LIBUSB_DIR}/linux" ] cflags += [ "-DPLATFORM_POSIX" ] } else if (is_mingw || is_win) { cflags += [ "-Werror", "-Wno-unused-function", "-Wno-unused-parameter", "-DPLATFORM_WINDOWS", ] include_dirs += [ "${LIBUSB_DIR}/windows" ] } else if (is_mac) { cflags += [ "-Wno-unused-parameter", "-Wno-deprecated-declarations", "-DPLATFORM_POSIX", ] include_dirs += [ "${LIBUSB_DIR}/darwin" ] frameworks = [ "CoreFoundation.framework", "IOKit.framework", "Security.framework", ] libs = [ "objc" ] } } ohos_source_set("libusb_source") { configs = [ ":libusb_config" ] sources = common_source if (is_mac) { sources += [ "${SRC_PATH}/libusb/os/darwin_usb.c", "${SRC_PATH}/libusb/os/events_posix.c", "${SRC_PATH}/libusb/os/threads_posix.c", ] } else if (is_mingw || is_win) { sources += [ "${SRC_PATH}/libusb/os/events_windows.c", "${SRC_PATH}/libusb/os/threads_windows.c", "${SRC_PATH}/libusb/os/windows_common.c", "${SRC_PATH}/libusb/os/windows_usbdk.c", "${SRC_PATH}/libusb/os/windows_winusb.c", ] } else if (is_linux || is_ohos) { sources += [ "${SRC_PATH}/libusb/os/events_posix.c", "${SRC_PATH}/libusb/os/linux_netlink.c", "${SRC_PATH}/libusb/os/linux_usbfs.c", "${SRC_PATH}/libusb/os/threads_posix.c", ] } } config("libusb_public_config") { include_dirs = [ "${SRC_PATH}" ] } ohos_shared_library("libusb") { deps = [ ":libusb_source" ] public_configs = [ ":libusb_public_config" ] output_name = "libusb_shared" }