From 252d7f75b1bda59bc3fd02798ed7f86726704fab Mon Sep 17 00:00:00 2001 From: Thomas A Date: Thu, 24 Aug 2023 21:54:14 -0700 Subject: [PATCH 1/3] Add Basic Checks For Clang Compiler --- CMakeLists.txt | 5 ++++ cmake/clang_version_check.cmake | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 cmake/clang_version_check.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 7daacf079..86424af6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ enable_language(ASM) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "core") set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +include(clang_version_check) include(InstallSymlink) include(MacroEnsureOutOfSourceBuild) include(dsym) @@ -63,6 +64,10 @@ include(xcproj) include(architecture) include(create_symlink) +set(CLANG_RECOMMENDED_MINIMUM_VERSION 11) +clang_version_check(${CMAKE_C_COMPILER} c ${CLANG_RECOMMENDED_MINIMUM_VERSION}) +clang_version_check(${CMAKE_CXX_COMPILER} cpp ${CLANG_RECOMMENDED_MINIMUM_VERSION}) + MACRO_ENSURE_OUT_OF_SOURCE_BUILD() set(DARLING_TOP_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/cmake/clang_version_check.cmake b/cmake/clang_version_check.cmake new file mode 100644 index 000000000..3534384c2 --- /dev/null +++ b/cmake/clang_version_check.cmake @@ -0,0 +1,42 @@ +set(MANUALLY_SET_COMPILER_ERROR_MESSAGE +"If you already have a supported version of clang installed, you may need to \ +manually set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER. Refer to the Darling docs \ +for more details." +) + +macro(clang_version_check compiler source_type clang_minimum_version) + if (compiler STREQUAL "") + message(FATAL_ERROR "Unable to find a compatible compiler") + endif (compiler STREQUAL "") + + file(WRITE "${CMAKE_BINARY_DIR}/clang_major.${source_type}" "#include \n" + "#if !__clang__\n" "#error \"Not running on a clang compiler!\"\n" "#endif\n" "int main() { printf(\"%d\", __clang_major__); }") + execute_process(COMMAND "${compiler}" "${CMAKE_BINARY_DIR}/clang_major.${source_type}" "-o" "clang_${source_type}_major" + RESULT_VARIABLE BUILD_CLANG_TEST_RESULT + OUTPUT_VARIABLE BUILD_CLANG_TEST_OUTPUT + COMMAND_ECHO NONE + ) + + if (BUILD_CLANG_TEST_RESULT) + message(FATAL_ERROR + "Failed to build ${CMAKE_BINARY_DIR}/clang_major.${source_type}\n" + "This could indicate that `${compiler}` is either not a clang compiler, " + "or the path does not exist. ${MANUALLY_SET_COMPILER_ERROR_MESSAGE}") + endif (BUILD_CLANG_TEST_RESULT) + + execute_process(COMMAND "${CMAKE_BINARY_DIR}/clang_${source_type}_major" + RESULT_VARIABLE CLANG_MAJOR_VERSION_RESULT + OUTPUT_VARIABLE CLANG_MAJOR_VERSION_OUTPUT + ) + + if (CLANG_MAJOR_VERSION_RESULT) + # This should normally never fail... + message(FATAL_ERROR "Failed to check clang major version") + endif (CLANG_MAJOR_VERSION_RESULT) + + if ("${CLANG_MAJOR_VERSION_OUTPUT}" LESS ${clang_minimum_version}) + message(FATAL_ERROR + "Your clang version (${CLANG_MAJOR_VERSION_OUTPUT}) is below the recommend supported version (${clang_minimum_version})\n" + "${MANUALLY_SET_COMPILER_ERROR_MESSAGE}") + endif ("${CLANG_MAJOR_VERSION_OUTPUT}" LESS ${clang_minimum_version}) +endmacro() -- 2.51.2 From 8f43828a46224dbdf47b9350fb2bcdf990672f02 Mon Sep 17 00:00:00 2001 From: Thomas A Date: Fri, 25 Aug 2023 13:12:16 -0700 Subject: [PATCH 2/3] Fix Linking Errors --- src/frameworks/ShazamKit/CMakeLists.txt | 1 + src/private-frameworks/ShazamInsights/CMakeLists.txt | 1 + src/private-frameworks/ShazamKitUI/CMakeLists.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/src/frameworks/ShazamKit/CMakeLists.txt b/src/frameworks/ShazamKit/CMakeLists.txt index f425da841..8395fa363 100644 --- a/src/frameworks/ShazamKit/CMakeLists.txt +++ b/src/frameworks/ShazamKit/CMakeLists.txt @@ -102,4 +102,5 @@ add_framework(ShazamKit system objc Foundation + UniformTypeIdentifiers ) diff --git a/src/private-frameworks/ShazamInsights/CMakeLists.txt b/src/private-frameworks/ShazamInsights/CMakeLists.txt index 0fe113da1..2981d99c1 100644 --- a/src/private-frameworks/ShazamInsights/CMakeLists.txt +++ b/src/private-frameworks/ShazamInsights/CMakeLists.txt @@ -59,4 +59,5 @@ add_framework(ShazamInsights system objc Foundation + CoreLocation ) \ No newline at end of file diff --git a/src/private-frameworks/ShazamKitUI/CMakeLists.txt b/src/private-frameworks/ShazamKitUI/CMakeLists.txt index fc2550038..bd3d02023 100644 --- a/src/private-frameworks/ShazamKitUI/CMakeLists.txt +++ b/src/private-frameworks/ShazamKitUI/CMakeLists.txt @@ -48,4 +48,5 @@ add_framework(ShazamKitUI system objc Foundation + ShazamKit ) \ No newline at end of file -- 2.51.2 From a60a0920c5203aa795d0512542ef62cd3d325368 Mon Sep 17 00:00:00 2001 From: Thomas A Date: Fri, 25 Aug 2023 13:12:28 -0700 Subject: [PATCH 3/3] Update Submodules --- src/external/foundation | 2 +- src/external/xnu | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/external/foundation b/src/external/foundation index 40b07da58..216448718 160000 --- a/src/external/foundation +++ b/src/external/foundation @@ -1 +1 @@ -Subproject commit 40b07da5840e61f21f05aa8cfc8ffadc1679cf33 +Subproject commit 216448718054deaea39ec3d57b891939ca9c824e diff --git a/src/external/xnu b/src/external/xnu index 6d94d59c2..e4a0b762d 160000 --- a/src/external/xnu +++ b/src/external/xnu @@ -1 +1 @@ -Subproject commit 6d94d59c21eb18d0230a62fcef6a58f98cc46113 +Subproject commit e4a0b762d0c9e935575a886ec0a349a770582063 -- 2.51.2