Skip to content

Commit

Permalink
IGC: configure 100%, build 93%, sigh, getting there
Browse files Browse the repository at this point in the history
  • Loading branch information
th0ma7 committed Aug 21, 2024
1 parent c4cc2a6 commit c2180f2
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 38 deletions.
96 changes: 61 additions & 35 deletions cross/intel-graphics-compiler/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PKG_NAME = intel-graphics-compiler
PKG_VERS = 1.0.17384.9
#PKG_VERS = 1.0.17224.10
#PKG_VERS = 1.0.16900.23
PKG_VERS = 1.0.17384.11
#PKG_VERS = 1.0.17193.16
#PKG_VERS = 1.0.15468.40
PKG_EXT = tar.gz
PKG_DIST_NAME = igc-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://github.com/intel/intel-graphics-compiler/archive
Expand All @@ -17,13 +17,13 @@ BUILD_DEPENDS += cross/intel-opencl-clang-140.src
BUILD_DEPENDS += cross/llvm-project-140.src
#BUILD_DEPENDS += cross/llvm-140.src cross/clang-140.src cross/lld-140.src cross/libunwind-140.src
DEPENDS += cross/intel-level-zero
DEPENDS += cross/SPIRV-Tools

HOMEPAGE = https://github.com/oneapi-src/level-zero
COMMENT = This project is part of the larger oneAPI project and contains copies of the Level Zero Specification API C/C++ header files, Level Zero Loader, Level Zero Validation Layer and Level Zero Tracing Layer
LICENSE = MIT

POST_EXTRACT_TARGET = igc_post_extract_target
CMAKE_USE_NINJA = 0

# Default version of LLVM used by IGC
IGC_LLVM_MAJ = 14
Expand All @@ -43,18 +43,18 @@ CMAKE_DIR = $(WORK_DIR)/igc
# Indicates whether the LLVM Interpreter will be
# linked with the Foreign Function Interface library
# (libffi) in order to enable calling external functions.
DEPENDS += cross/libffi
CMAKE_ARGS += -DLLVM_ENABLE_FFI=ON
#DEPENDS += cross/libffi
#CMAKE_ARGS += -DLLVM_ENABLE_FFI=ON

DEPENDS += cross/ncursesw
CMAKE_ARGS += -DLLVM_ENABLE_TERMINFO=ON
#DEPENDS += cross/ncursesw
#CMAKE_ARGS += -DLLVM_ENABLE_TERMINFO=ON

DEPENDS += cross/libxml2
CMAKE_ARGS += -DLLVM_ENABLE_LIBXML2=ON
#DEPENDS += cross/libxml2
#CMAKE_ARGS += -DLLVM_ENABLE_LIBXML2=ON

# Enable building with zlib to support compression/uncompression
DEPENDS += cross/zlib
CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON
#DEPENDS += cross/zlib
#CMAKE_ARGS += -DLLVM_ENABLE_ZLIB=ON

# Assertions are internal checks to help find bugs.
# They typically slow down LLVM and Clang when enabled
Expand All @@ -73,9 +73,6 @@ CMAKE_ARGS += -DBUILD_SHARED_LIBS=OFF
CMAKE_ARGS += -DLLVM_INCLUDE_BENCHMARKS=OFF
CMAKE_ARGS += -DLLVM_INCLUDE_TESTS=OFF

# Required in conjunction with -DIGC_OPTION__USE_PREINSTALLED_SPIRV_HEADERS='ON'
CMAKE_ARGS += -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$(WORK_DIR)/SPIRV-Headers

# [intel-opencl-clang-140]
CMAKE_ARGS += -DAPPLY_PATCHES='OFF'

Expand All @@ -88,52 +85,81 @@ CMAKE_ARGS += -DFOUND_VCS=$(CMAKE_BUILD_DIR)/IGC/llvm-deps-$(IGC_LLVM_VER)/build
# IGC specific
CMAKE_ARGS += -DIGC_OPTION__ARCHITECTURE_TARGET='Linux64'
CMAKE_ARGS += -DIGC_OPTION__ARCHITECTURE_HOST='Linux64'
#CMAKE_ARGS += -DINSTALL_GENX_IR='ON'

# [clang]
CMAKE_ARGS += -DIGC_OPTION__CLANG_MODE='Source'
CMAKE_ARGS += -DIGC_OPTION__CLANG_SOURCES_DIR:PATH=$(WORK_DIR)/llvm-project/clang
# Has no effect when using llvm-project sources
#CMAKE_ARGS += -DIGC_OPTION__CLANG_SOURCES_DIR:PATH=$(WORK_DIR)/llvm-project/clang
CMAKE_ARGS += -DCCLANG_FROM_SYSTEM='OFF'

# [lld]
CMAKE_ARGS += -DIGC_OPTION__LLD_MODE='Source'
CMAKE_ARGS += -DIGC_OPTION__lld_SOURCES_DIR:PATH=$(WORK_DIR)/llvm-project/lld
# Has no effect when using llvm-project sources
#CMAKE_ARGS += -DIGC_OPTION__lld_SOURCES_DIR:PATH=$(WORK_DIR)/llvm-project/lld

# [llvm]
CMAKE_ARGS += -DIGC_OPTION__LLVM_MODE='Source'
CMAKE_ARGS += -DIGC_OPTION__LLVM_STOCK_SOURCES=ON
CMAKE_ARGS += -DIGC_OPTION__LLVM_SOURCES_DIR=$(WORK_DIR)/llvm-project
CMAKE_ARGS += -DIGC_OPTION__LLVM_PREFERRED_VERSION='$(IGC_LLVM_VER)'

# [libunwind]
# Required to copy libunwind/include/mach-o/compact_unwind_encoding.h
CMAKE_ARGS += -DDEFAULT_IGC_LLVM_SOURCES_DIR=$(WORK_DIR)/llvm-project
# Required in conjunction with -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR
CMAKE_ARGS += -DIGC_OPTION__USE_PREINSTALLED_SPIRV_HEADERS='ON'
CMAKE_ARGS += -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR='ON'
CMAKE_ARGS += -DCCLANG_FROM_SYSTEM='OFF'
CMAKE_ARGS += -DINSTALL_GENX_IR='ON'

# [SPIRV-Tools]
# cannot be built in-tree: SPIRV-Tools requires C++17 or later, but is configured for C++14
CMAKE_ARGS += -DIGC_OPTION__SPIRV_TOOLS_MODE='Prebuilds'
# [SPIRV-Headers]
# Requires conjunction of both to be detected:
# -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR
# -DIGC_OPTION__USE_PREINSTALLED_SPIRV_HEADERS='ON'
# Although using local SPIRV-Headers resilts in:
# fatal error: spirv/unified1/spirv.hpp: No such file or directory
#CMAKE_ARGS += -DIGC_OPTION__USE_PREINSTALLED_SPIRV_HEADERS='ON'
#CMAKE_ARGS += -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=$(WORK_DIR)/SPIRV-Headers

# [SPIRV-LLVM-Translator -> llvm-spirv]
CMAKE_ARGS += -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR='OFF'
# Leave in auto-configure as otherwise fails
#CMAKE_ARGS += -DIGC_OPTION__SPIRV_TRANSLATOR_MODE='Source'
#CMAKE_ARGS += -DIGC_OPTION__SPIRV_TRANSLATOR_SOURCE_DIR=$(WORK_DIR)/SPIRV-LLVM-Translator

# [SPIRV-Tools]
# cannot be built in-tree: SPIRV-Tools requires C++17 or later, but is configured for C++14
DEPENDS += cross/SPIRV-Tools
CMAKE_ARGS += -DIGC_OPTION__SPIRV_TOOLS_MODE='Prebuilds'

# [intel-vc-intrinsics]
# Leaving source directory in auto-configure mode du to CMake Warning:
# Manually-specified variables were not used by the project: IGC_OPTION__VC_INTRINSICS_SOURCES_DIR
CMAKE_ARGS += -DIGC_OPTION__VC_INTRINSICS_MODE='Source'
#CMAKE_ARGS += -DIGC_OPTION__VC_INTRINSICS_SOURCES_DIR=$(WORK_DIR)/vc-intrinsics

CMAKE_ARGS += -DCMAKE_POLICY_DEFAULT_CMP0079='NEW'
#CMAKE_ARGS += -DCMAKE_POLICY_DEFAULT_CMP0079='NEW'

# Seems to go further, up to 95%
ADDITIONAL_CPPFLAGS += -I$(WORK_DIR)/SPIRV-LLVM-Translator/include
ADDITIONAL_CPPFLAGS += -Wno-error=restrict
ADDITIONAL_CPPFLAGS += -Wno-error=deprecated-declarations

ADDITIONAL_CXXFLAGS += -I$(WORK_DIR)/SPIRV-LLVM-Translator/include
ADDITIONAL_CXXFLAGS += -Wno-error=restrict
ADDITIONAL_CXXFLAGS += -Wno-error=deprecated-declarations
#ADDITIONAL_CXXFLAGS += -I$(WORK_DIR)/SPIRV-LLVM-Translator/include
#ADDITIONAL_CXXFLAGS += -Wno-error=restrict
#ADDITIONAL_CXXFLAGS += -Wno-error=deprecated-declarations

# Fails to access in NATIVE/bin due to parallel compiling
# llvm-tblgen provided thru native/llvm-9.0 instead
BUILD_DEPENDS += native/llvm-9.0
CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-9.0/work-native/install/usr/local/bin/llvm-tblgen)
# Fails to access in NATIVE/bin/llvm-tblgen possibly due to parallel compiling
# Provided thru native/llvm-14.0 instead
BUILD_DEPENDS += native/llvm-14.0-build
CMAKE_ARGS += -DLLVM_TABLEGEN=$(abspath $(PWD)/../../native/llvm-14.0-build/work-native/install/usr/local/bin/llvm-tblgen)
CMAKE_ARGS += -DCLANG_TABLEGEN=$(abspath $(PWD)/../../native/llvm-14.0-build/work-native/install/usr/local/bin/clang-tblgen)
#CMAKE_ARGS += -DCMAKE_POLICY_DEFAULT_CMP0116='OLD'
#CMAKE_ARGS += -DCMAKE_POLICY_DEFAULT_CMP0116='NEW'

include ../../mk/spksrc.cross-cmake.mk

# Requires access to build-time NATIVE tools
ENV += PATH=$(CMAKE_BUILD_DIR)/IGC/llvm-deps-$(IGC_LLVM_VER)/build/src/NATIVE/bin:$$PATH
# Requires access to build-time
# NATIVE tools: IGC/llvm-deps-$(IGC_LLVM_VER)/build/src/NATIVE/bin
# llvm-tblgen, clang-tool, llvm-link thru native/llvm-14.0
# CMCLTranslatorTool (during build time): IGC/Release/CMCLTranslatorTool
ENV += PATH=$(CMAKE_BUILD_DIR)/IGC/llvm-deps-$(IGC_LLVM_VER)/build/src/NATIVE/bin:$(CMAKE_BUILD_DIR)/IGC/Release:$(abspath $(PWD)/../../native/llvm-14.0-build/work-native/install/usr/local/bin):$$PATH

igc_link_external_project:
@cd $(WORK_DIR)/llvm-project/llvm/projects && ln -sf ../../../opencl-clang opencl-clang
Expand Down
6 changes: 3 additions & 3 deletions cross/intel-graphics-compiler/digests
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
igc-1.0.17384.9.tar.gz SHA1 517352f13ae918b2a173f07d617acde30022c279
igc-1.0.17384.9.tar.gz SHA256 98f7a05514363a19fd311e9d2fc52a043f2992ac994197fba049acd02ac0c561
igc-1.0.17384.9.tar.gz MD5 deaca22f66ad74dfdc8b208b296a1f21
igc-1.0.17384.11.tar.gz SHA1 f019af3ee797e5546e44569d03f9b2800265099b
igc-1.0.17384.11.tar.gz SHA256 d560600e6a7c6a43b86abc3d8e9fd5e3a2110cc4818e09a9511965a86cd2f959
igc-1.0.17384.11.tar.gz MD5 028bf66dbf35c1d71ffca58d45d04406

0 comments on commit c2180f2

Please sign in to comment.