From 9f3c03b7e28d06d2053f99485a4e0bba58e55865 Mon Sep 17 00:00:00 2001 From: Danny Piper Date: Tue, 23 Apr 2024 16:16:33 +0100 Subject: [PATCH 1/2] feat: added "Darwin" and "arm64" to build scripts --- cmake/DetermineTargetArch.cmake | 4 ++- cmake/k4aCompilerFlags.cmake | 2 +- extern/libsoundio/CMakeLists.txt | 2 +- extern/libusb/CMakeLists.txt | 62 +++++++++++++++++++------------- src/dynlib/CMakeLists.txt | 2 +- src/rwlock/CMakeLists.txt | 2 +- 6 files changed, 45 insertions(+), 29 deletions(-) diff --git a/cmake/DetermineTargetArch.cmake b/cmake/DetermineTargetArch.cmake index 7eaf56c3d..c45c54fb8 100644 --- a/cmake/DetermineTargetArch.cmake +++ b/cmake/DetermineTargetArch.cmake @@ -11,7 +11,7 @@ function(determine_target_arch OUTPUT_VARIABLE) else() message(FATAL_ERROR "Unrecognized architecture ${MSVC_C_ARCHITECTURE_ID} from ${CMAKE_C_COMPILER}") endif() - elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang") if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") set(CMD_ARGS "-target" "${CMAKE_C_COMPILER_TARGET}" "-dumpmachine") else() @@ -36,6 +36,8 @@ function(determine_target_arch OUTPUT_VARIABLE) if("${ARCH}" STREQUAL "x86_64") # Do nothing + elseif("${ARCH}" STREQUAL "arm64") + # Do nothing elseif("${ARCH}" STREQUAL "aarch64") set(ARCH "arm64") elseif("${ARCH}" STREQUAL "i686") diff --git a/cmake/k4aCompilerFlags.cmake b/cmake/k4aCompilerFlags.cmake index e938c9078..d1a1f942e 100644 --- a/cmake/k4aCompilerFlags.cmake +++ b/cmake/k4aCompilerFlags.cmake @@ -5,7 +5,7 @@ if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "${CMAKE_CXX_COMPILER_ID}")) message(FATAL_ERROR "C compiler (${CMAKE_C_COMPILER_ID}) does not match C++ compiler (${CMAKE_CXX_COMPILER_ID})") endif() -if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang") set(CLANG_ALL_WARNINGS "-Weverything") list(APPEND CLANG_ALL_WARNINGS "-Wno-missing-field-initializers") # Allow c structs without all fields initialized list(APPEND CLANG_ALL_WARNINGS "-Wno-reserved-id-macro") # Needed for azure-c-shared-utility which defines new macros that start with "_" diff --git a/extern/libsoundio/CMakeLists.txt b/extern/libsoundio/CMakeLists.txt index e354c864f..6ed5b4c91 100644 --- a/extern/libsoundio/CMakeLists.txt +++ b/extern/libsoundio/CMakeLists.txt @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") endif() add_library(libsoundio::libsoundio ALIAS libsoundio_static) -elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") +elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") find_library(LIBSOUNDIO_LIB soundio) add_library(libsoundio::libsoundio SHARED IMPORTED GLOBAL) set_property(TARGET libsoundio::libsoundio PROPERTY IMPORTED_LOCATION ${LIBSOUNDIO_LIB}) diff --git a/extern/libusb/CMakeLists.txt b/extern/libusb/CMakeLists.txt index ce34bb22e..4e50468a6 100644 --- a/extern/libusb/CMakeLists.txt +++ b/extern/libusb/CMakeLists.txt @@ -1,5 +1,12 @@ -add_library(LibUSB - STATIC +if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") + add_library(LibUSB INTERFACE IMPORTED GLOBAL) + target_include_directories(LibUSB INTERFACE "/opt/homebrew/include/libusb-1.0") + target_link_libraries(LibUSB INTERFACE "/opt/homebrew/lib/libusb-1.0.dylib") + add_library(LibUSB::LibUSB ALIAS LibUSB) + +else() + add_library( + LibUSB STATIC "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/core.c" "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/descriptor.c" "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/hotplug.c" @@ -7,41 +14,48 @@ add_library(LibUSB "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/strerror.c" "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/sync.c") -target_include_directories(LibUSB PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/libusb) -target_include_directories(LibUSB PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os) + target_include_directories(LibUSB + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/libusb) + target_include_directories(LibUSB + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os) -add_library(LibUSB::LibUSB ALIAS LibUSB) + add_library(LibUSB::LibUSB ALIAS LibUSB) -if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") + if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") target_compile_options(LibUSB PUBLIC "-Wno-zero-length-array") -endif() + endif() + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") + target_sources( + LibUSB + PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/poll_windows.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/threads_windows.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_nt_common.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_usbdk.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_winusb.c") -if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") - target_sources(LibUSB PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/poll_windows.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/threads_windows.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_nt_common.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_usbdk.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/windows_winusb.c") + target_include_directories(LibUSB + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/msvc) - target_include_directories(LibUSB PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/msvc) - - target_compile_definitions(LibUSB PRIVATE "_LIB" "_CRT_SECURE_NO_WARNINGS" "WINVER=0x0501" "_WIN32_WINNT=0x0501") + target_compile_definitions( + LibUSB PRIVATE "_LIB" "_CRT_SECURE_NO_WARNINGS" "WINVER=0x0501" + "_WIN32_WINNT=0x0501") target_compile_options(LibUSB PRIVATE "/source-charset:utf-8") -elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") - target_sources(LibUSB PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/poll_posix.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/threads_posix.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/linux_usbfs.c" - "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/linux_udev.c") + elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + target_sources( + LibUSB + PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/poll_posix.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/threads_posix.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/linux_usbfs.c" + "${CMAKE_CURRENT_SOURCE_DIR}/src/libusb/os/linux_udev.c") target_include_directories(LibUSB PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/) target_link_libraries(LibUSB PUBLIC "udev") -else() + else() message(FATAL_ERROR "Unknown CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") + endif() endif() diff --git a/src/dynlib/CMakeLists.txt b/src/dynlib/CMakeLists.txt index 6c7a18c19..02a636c1f 100644 --- a/src/dynlib/CMakeLists.txt +++ b/src/dynlib/CMakeLists.txt @@ -5,7 +5,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") set(DYNLIB_SRCS dynlib_windows.c) set(DYNLIB_DEPENDENCIES pathcch.lib) -elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") set(DYNLIB_SRCS dynlib_linux.c) else() message(FATAL_ERROR "Unknown system: ${CMAKE_SYSTEM_NAME}") diff --git a/src/rwlock/CMakeLists.txt b/src/rwlock/CMakeLists.txt index dc5d77ed1..95990097a 100644 --- a/src/rwlock/CMakeLists.txt +++ b/src/rwlock/CMakeLists.txt @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") +if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") add_library(k4a_rwlock STATIC rwlock_linux.c ) From 59047d3ca78fddde8b3844a50aa3fbb22d7e1f6f Mon Sep 17 00:00:00 2001 From: Danny Piper Date: Tue, 23 Apr 2024 18:33:47 +0100 Subject: [PATCH 2/2] fix: linux build regression --- extern/libsoundio/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/libsoundio/CMakeLists.txt b/extern/libsoundio/CMakeLists.txt index 6ed5b4c91..1cf23c748 100644 --- a/extern/libsoundio/CMakeLists.txt +++ b/extern/libsoundio/CMakeLists.txt @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows") endif() add_library(libsoundio::libsoundio ALIAS libsoundio_static) -elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") find_library(LIBSOUNDIO_LIB soundio) add_library(libsoundio::libsoundio SHARED IMPORTED GLOBAL) set_property(TARGET libsoundio::libsoundio PROPERTY IMPORTED_LOCATION ${LIBSOUNDIO_LIB})