diff --git a/cmake-fix.patch b/cmake-fix.patch new file mode 100644 index 0000000..7106684 --- /dev/null +++ b/cmake-fix.patch @@ -0,0 +1,45 @@ +diff --git a/cmake/LLVM.cmake b/cmake/LLVM.cmake +index 11472060a6..0e570f5a21 100644 +--- a/cmake/LLVM.cmake ++++ b/cmake/LLVM.cmake +@@ -335,7 +335,6 @@ + "${PROG_NAME}${CMAKE_EXECUTABLE_SUFFIX}" + HINTS "${LLVM_BINDIR}" "${LLVM_CONFIG_LOCATION}" + DOC "${DOCSTRING}" +- NO_DEFAULT_PATH + NO_CMAKE_PATH + NO_CMAKE_ENVIRONMENT_PATH + ) +@@ -346,7 +345,12 @@ + endif() + endmacro() + +-find_program_or_die(CLANG "clang" "clang binary") ++if(DEFINED CMAKE_C_COMPILER) # TODO: this assumes we are using clang ++ set(CLANG "${CMAKE_C_COMPILER}") ++ message(STATUS "Using clang: ${CLANG}") ++else() ++ find_program_or_die(CLANG "clang" "clang binary") ++endif() + execute_process(COMMAND "${CLANG}" "--version" OUTPUT_VARIABLE LLVM_CLANG_VERSION RESULT_VARIABLE CLANG_RES) + find_program_or_die(CLANGXX "clang++" "clang++ binary") + execute_process(COMMAND "${CLANGXX}" "--version" OUTPUT_VARIABLE LLVM_CLANGXX_VERSION RESULT_VARIABLE CLANGXX_RES) +@@ -925,9 +929,15 @@ + + ##################################################################### + +-execute_process(COMMAND "${CLANG}" "--print-resource-dir" OUTPUT_VARIABLE RESOURCE_DIR) +-string(STRIP "${RESOURCE_DIR}" RESOURCE_DIR) +-set(CLANG_RESOURCE_DIR "${RESOURCE_DIR}" CACHE INTERNAL "Clang resource dir") ++if (NOT DEFINED CLANG_RESOURCE_DIR) ++ execute_process(COMMAND "${CLANG}" "--print-resource-dir" OUTPUT_VARIABLE RESOURCE_DIR) ++ string(STRIP "${RESOURCE_DIR}" RESOURCE_DIR) ++ set(CLANG_RESOURCE_DIR "${RESOURCE_DIR}" CACHE INTERNAL "Clang resource dir") ++endif() ++ ++set(CLANG_OPENCL_HEADERS "${CLANG_RESOURCE_DIR}/include/opencl-c.h" ++ "${CLANG_RESOURCE_DIR}/include/opencl-c-base.h") ++message(STATUS "clang OpenCL Headers: ${CLANG_OPENCL_HEADERS}") + + ########################################################## + diff --git a/default.nix b/default.nix index c3c133f..7ca3aca 100644 --- a/default.nix +++ b/default.nix @@ -45,6 +45,8 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: { version = "nightly"; inherit src; + patches = [ ./cmake-fix.patch ]; + cmakeFlags = [ # TODO: all these are broken when cross compiling. Upstream has refactored # all the cmake infra for cross compilation, but it's not in a release yet