mirror of
https://github.com/ROCm/ROCm.git
synced 2026-01-08 22:28:06 -05:00
Point to TheRock 7.9 branch and remove manifest
This commit is contained in:
@@ -26,16 +26,10 @@ source software compilers, debuggers, and libraries. ROCm is fully integrated in
|
||||
|
||||
## Getting and Building ROCm from Source
|
||||
|
||||
Please use [TheRock](https://github.com/ROCm/TheRock) build system to build ROCm from source.
|
||||
Please use [TheRock](https://github.com/ROCm/TheRock/tree/release/therock-7.9) build system to build ROCm from source.
|
||||
|
||||
## ROCm documentation
|
||||
|
||||
This repository contains the [manifest file](https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md)
|
||||
for ROCm releases, changelogs, and release information.
|
||||
|
||||
The `default.xml` file contains information for all repositories and the associated commit used to build
|
||||
the current ROCm release; `default.xml` uses the [Manifest Format repository](https://gerrit.googlesource.com/git-repo/).
|
||||
|
||||
Source code for our documentation is located in the `/docs` folder of most ROCm repositories. The
|
||||
`develop` branch of our repositories contains content for the next ROCm release.
|
||||
|
||||
|
||||
67
default.xml
67
default.xml
@@ -1,67 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-7.0.2"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="aqlprofile" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="hip" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<project name="spirv-llvm-translator" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<!-- The following components have been migrated to rocm-libraries:
|
||||
hipBLAS-common hipBLAS hipBLASLt hipCUB
|
||||
hipFFT hipRAND hipSPARSE hipSPARSELt
|
||||
MIOpen rocBLAS rocFFT rocPRIM rocRAND
|
||||
rocSPARSE rocThrust Tensile -->
|
||||
<project groups="mathlibs" name="rocm-libraries" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocSHMEM" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,37 +0,0 @@
|
||||
# Overview for ROCm.mk
|
||||
|
||||
This Makefile builds the various projects that makes up ROCm in the correct order.
|
||||
It is expected to be run in an environment with the tooling set up. An easy way
|
||||
to do this is to use Docker.
|
||||
|
||||
## Targets
|
||||
|
||||
* all (default)
|
||||
* rocm-dev (a subset of all)
|
||||
* clean
|
||||
* list_components
|
||||
* help
|
||||
* T_foo
|
||||
* C_foo
|
||||
|
||||
## Makefile Variables
|
||||
|
||||
* PEVAL set to 1 to enable some Makefile debugging code.
|
||||
* RELEASE\_FLAG set to "" to avoid passing "-r" to builds, effect is package defined.
|
||||
* NOBUILD="foo bar" to avoid adding foo and bar into the dependencies of top level targets. They still may be
|
||||
built if they are needed as dependencies of other top level targets.
|
||||
* toplevel
|
||||
|
||||
## Makefile assumptions
|
||||
|
||||
### Requirements for package "foo"
|
||||
|
||||
#### program build\_foo.sh
|
||||
|
||||
* Should take option "-c" to clean
|
||||
* Should take option "-r" to do a normal "RelWithDeb" build
|
||||
|
||||
### For package "foo" we define some targets
|
||||
|
||||
* T\_foo - The main build target, calls "build\_foo.sh -r"
|
||||
* C\_foo - Clean target, calls "build_foo.sh -c"
|
||||
@@ -1,310 +0,0 @@
|
||||
# Traditional first make target
|
||||
all:
|
||||
|
||||
# Use bash as a shell
|
||||
# On Ubuntu sh is 'dash'
|
||||
SHELL:=bash
|
||||
|
||||
# Allow RELEASE_FLAG to be overwritten
|
||||
RELEASE_FLAG?=-r
|
||||
|
||||
# Set SANITIZER_FLAG for sanitizer
|
||||
ASAN_DEP:=
|
||||
ifeq (${ENABLE_ADDRESS_SANITIZER},true)
|
||||
ASAN_DEP=lightning
|
||||
SANITIZER_FLAG=--address_sanitizer
|
||||
endif
|
||||
|
||||
# Set STATIC_FLAG for static builds
|
||||
ifeq (${ENABLE_STATIC_BUILDS},true)
|
||||
STATIC_FLAG=-s
|
||||
endif
|
||||
|
||||
export INFRA_REPO:=ROCm/tools/rocm-build
|
||||
|
||||
# # commannds to be run at makefile read time
|
||||
# # should only output $$OUT_DIR to stdout
|
||||
# # In an ideal world this would be another target
|
||||
# define INITBUILD
|
||||
# source ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1;
|
||||
# [ -w "$${ROCM_INSTALL_PATH}" ] || sudo mkdir -p -m 775 "$${ROCM_INSTALL_PATH}" ;
|
||||
# sudo chown "$$(id -u):$$(id -g)" "$${ROCM_INSTALL_PATH}" "/home/$$(id -un)" ;
|
||||
# mkdir -p ${HOME}/.ccache ;
|
||||
# echo $${OUT_DIR} ;
|
||||
# endef
|
||||
|
||||
OUT_DIR:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${OUT_DIR})
|
||||
ROCM_INSTALL_PATH:=$(shell . ${INFRA_REPO}/envsetup.sh >/dev/null 2>&1 ; echo $${ROCM_INSTALL_PATH})
|
||||
|
||||
$(info OUT_DIR=${OUT_DIR})
|
||||
$(info ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH})
|
||||
|
||||
# define SILENT to be empty to see the runner invocation
|
||||
SILENT?= @
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Internal stuff. Could be put in a different file to hide it.
|
||||
# Internal macros, they need to be defined before being used.
|
||||
|
||||
# The internal "eval" allows parts of the Makefile to be generated.
|
||||
# Whilst it is possible to dump the effective Makefile, it can be
|
||||
# hard to see where parts come from. Set up the "peval" macro which
|
||||
# optionally prints out the generated makefile snippet and evaluate it.
|
||||
# Use "make PEVAL=1 all" to see the things being evaluated.
|
||||
ifeq (,${PEVAL})
|
||||
define peval =
|
||||
$(eval $1)
|
||||
endef
|
||||
else
|
||||
define peval =
|
||||
$(eval $(info $1)$1)
|
||||
endef
|
||||
endif
|
||||
|
||||
# macro to add dependencies. Saves having to put all the OUT_DIR/logs in
|
||||
# The outer strip is to work around a gnu make 4.1 and earlier bug
|
||||
# It should not be needed.
|
||||
define adddep =
|
||||
$(strip $(call peval,components+= $(1) $(2))
|
||||
$(call peval,$(1)_DEPS += $(2))
|
||||
$(foreach comp,$(strip $2),$(call peval,${OUT_DIR}/logs/${1}.txt: ${OUT_DIR}/logs/${comp}.txt))
|
||||
)
|
||||
endef
|
||||
# End of internal stuff that is needed at the start of the file
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
# Dependencies. These can be updated. Anything that is mentioned in
|
||||
# either the args to the adddep macro will be added to components. as
|
||||
# an example there is no need for the adddep of lightning, as it
|
||||
# depends on nothing and at least one other component includes it.
|
||||
|
||||
# Syntax. Up to the first comma everything is fixed. The "call" is a
|
||||
# keyword to gnu make. The "adddep" is the name of the variable containing
|
||||
# the macro.
|
||||
# The second comma delimited argument is the target.
|
||||
# The third comma delimited arg is the thing that the target depends on.
|
||||
# It is a space seperated list with zero or more elements.
|
||||
|
||||
$(call adddep,amd_smi_lib,${ASAN_DEP})
|
||||
$(call adddep,aqlprofile,${ASAN_DEP} rocr)
|
||||
$(call adddep,comgr,lightning devicelibs)
|
||||
$(call adddep,dbgapi,rocr comgr)
|
||||
$(call adddep,devicelibs,lightning)
|
||||
$(call adddep,hip_on_rocclr,${ASAN_DEP} rocr comgr hipcc rocprofiler-register)
|
||||
$(call adddep,hipcc,)
|
||||
$(call adddep,hipify_clang,hip_on_rocclr lightning)
|
||||
$(call adddep,lightning,)
|
||||
$(call adddep,opencl_on_rocclr,${ASAN_DEP} rocr comgr)
|
||||
$(call adddep,openmp_extras,lightning devicelibs rocr)
|
||||
$(call adddep,rocm_bandwidth_test,${ASAN_DEP} rocr)
|
||||
$(call adddep,rocm_smi_lib,${ASAN_DEP})
|
||||
$(call adddep,rocm-cmake,${ASAN_DEP})
|
||||
$(call adddep,rocm-core,${ASAN_DEP})
|
||||
$(call adddep,rocm-gdb,dbgapi)
|
||||
$(call adddep,rocminfo,${ASAN_DEP} rocr)
|
||||
$(call adddep,rocprofiler-register,${ASAN_DEP})
|
||||
$(call adddep,rocprofiler-sdk,${ASAN_DEP} rocr aqlprofile opencl_on_rocclr hip_on_rocclr comgr rccl rocdecode)
|
||||
$(call adddep,rocprofiler-systems,${ASAN_DEP} hipcc rocr hip_on_rocclr rocm_smi_lib rocprofiler roctracer rocprofiler-sdk)
|
||||
$(call adddep,rocprofiler,${ASAN_DEP} rocr roctracer aqlprofile opencl_on_rocclr hip_on_rocclr comgr)
|
||||
$(call adddep,rocprofiler-compute,${ASAN_DEP})
|
||||
$(call adddep,rocr,${ASAN_DEP} lightning rocm_smi_lib devicelibs rocprofiler-register)
|
||||
$(call adddep,rocr_debug_agent,${ASAN_DEP} hip_on_rocclr rocr dbgapi)
|
||||
$(call adddep,rocrsamples,lightning devicelibs rocr )
|
||||
$(call adddep,roctracer,${ASAN_DEP} rocr hip_on_rocclr)
|
||||
|
||||
|
||||
# rocm-dev points to all possible last finish components of Stage1 build.
|
||||
rocm-dev-components :=amd_smi_lib aqlprofile comgr dbgapi devicelibs hip_on_rocclr hipcc hipify_clang \
|
||||
lightning rocprofiler-compute opencl_on_rocclr openmp_extras rocm_bandwidth_test rocm_smi_lib \
|
||||
rocm-cmake rocm-core rocm-gdb rocminfo rocprofiler-register rocprofiler-sdk rocprofiler-systems \
|
||||
rocprofiler rocr rocr_debug_agent rocrsamples roctracer
|
||||
$(call adddep,rocm-dev,$(filter-out ${NOBUILD},${rocm-dev-components}))
|
||||
|
||||
$(call adddep,amdmigraphx,hip_on_rocclr half rocblas miopen-hip lightning hipcc hiptensor)
|
||||
$(call adddep,composable_kernel,lightning hipcc hip_on_rocclr rocm-cmake)
|
||||
$(call adddep,half,rocm-cmake)
|
||||
$(call adddep,hipblas-common,lightning)
|
||||
$(call adddep,hipblas,hip_on_rocclr rocblas rocsolver lightning hipcc)
|
||||
$(call adddep,hipblaslt,hip_on_rocclr openmp_extras lightning hipcc hipblas-common roctracer)
|
||||
$(call adddep,hipcub,hip_on_rocclr rocprim lightning hipcc)
|
||||
$(call adddep,hipfft,hip_on_rocclr openmp_extras rocfft rocrand hiprand lightning hipcc)
|
||||
$(call adddep,hipfort,rocblas hipblas rocsparse hipsparse rocfft hipfft rocrand hiprand rocsolver hipsolver lightning hipcc)
|
||||
$(call adddep,hiprand,hip_on_rocclr rocrand lightning hipcc)
|
||||
$(call adddep,hipsolver,hip_on_rocclr rocblas rocsolver rocsparse lightning hipcc hipsparse)
|
||||
$(call adddep,hipsparse,hip_on_rocclr rocsparse lightning hipcc)
|
||||
$(call adddep,hipsparselt,hip_on_rocclr hipsparse lightning hipcc openmp_extras)
|
||||
$(call adddep,hiptensor,hip_on_rocclr composable_kernel lightning hipcc)
|
||||
$(call adddep,miopen-deps,lightning hipcc)
|
||||
$(call adddep,miopen-hip,rocm-core composable_kernel half hip_on_rocclr miopen-deps hipblas hipblaslt rocrand roctracer lightning hipcc)
|
||||
$(call adddep,mivisionx,amdmigraphx miopen-hip rpp lightning hipcc)
|
||||
$(call adddep,rccl,rocm-core hip_on_rocclr rocr lightning hipcc rocm_smi_lib hipify_clang)
|
||||
$(call adddep,rdc,amd_smi_lib rocprofiler-sdk rocm_smi_lib rocprofiler rocmvalidationsuite)
|
||||
$(call adddep,rocalution,rocblas rocsparse rocrand lightning hipcc)
|
||||
$(call adddep,rocblas,rocminfo hip_on_rocclr openmp_extras lightning hipcc hipblaslt)
|
||||
$(call adddep,rocal,mivisionx)
|
||||
$(call adddep,rocdecode,hip_on_rocclr lightning hipcc)
|
||||
$(call adddep,rocfft,hip_on_rocclr rocrand hiprand lightning hipcc openmp_extras)
|
||||
$(call adddep,rocjpeg,hip_on_rocclr lightning hipcc)
|
||||
$(call adddep,rocmvalidationsuite,hip_on_rocclr rocr hipblas hiprand hipblaslt rocm-core lightning hipcc rocm_smi_lib)
|
||||
$(call adddep,rocprim,hip_on_rocclr lightning hipcc)
|
||||
$(call adddep,rocrand,hip_on_rocclr lightning hipcc)
|
||||
$(call adddep,rocshmem,rccl )
|
||||
$(call adddep,rocsolver,hip_on_rocclr rocblas rocsparse rocprim lightning hipcc)
|
||||
$(call adddep,rocsparse,hip_on_rocclr rocprim lightning hipcc)
|
||||
$(call adddep,rocthrust,hip_on_rocclr rocprim lightning hipcc)
|
||||
$(call adddep,rocwmma,hip_on_rocclr rocblas lightning hipcc rocm-cmake rocm_smi_lib)
|
||||
$(call adddep,rpp,half lightning hipcc openmp_extras)
|
||||
$(call adddep,transferbench,hip_on_rocclr lightning hipcc)
|
||||
ifneq ($(filter rocm-dev upload-rocm-dev, ${MAKECMDGOALS}),)
|
||||
components = $(rocm-dev-components)
|
||||
endif
|
||||
$(call adddep,rocm,$(filter-out ${NOBUILD} rocm,${components}))
|
||||
|
||||
ifeq ($(DISTRO_NAME),rhel)
|
||||
WHL_GEN :=
|
||||
endif
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# The rest of the file is internal
|
||||
# Do not pass jobserver params if -n build
|
||||
ifneq (,$(findstring n,${MAKEFLAGS}))
|
||||
RMAKE:=
|
||||
else
|
||||
RMAKE := +
|
||||
endif
|
||||
|
||||
|
||||
# disable the builtin rules
|
||||
.SUFFIXES:
|
||||
|
||||
# Linear
|
||||
# include moredeps
|
||||
|
||||
# A macro to define a toplevel target, add it to the 'all' target
|
||||
# Make it depend on the generated log. Generate the log of the build.
|
||||
|
||||
# See if the macro is already defined, if so don't touch it.
|
||||
# As GNU make allows more than one makefile to be specified with "-f"
|
||||
# one could put an alternative definition of "toplevel" in a different
|
||||
# file or even the environment, and use the data in this file for other
|
||||
# purposes. Uses might include generating output in "dot" format for
|
||||
# showing the dependency graph, or having a wrapper script to run programs
|
||||
# to generate code quality tools.
|
||||
ifeq (${toplevel},)
|
||||
# { Start of test to see if toplevel is defined
|
||||
define toplevel =
|
||||
|
||||
# The "target" make, this builds the package if it is out of date
|
||||
T_$1: ${OUT_DIR}/logs/$1.txt FRC
|
||||
: $1 built
|
||||
|
||||
# The "upload" for $1, it uploads the packages for $1 to the central storage
|
||||
U_$1: T_$1 FRC
|
||||
source $${INFRA_REPO}/envsetup.sh && $${INFRA_REPO}/upload_packages.sh "$1"
|
||||
: $1 uploaded
|
||||
|
||||
# The "clean" for $1, it just marks the target as not existing so it will be built
|
||||
# in the future.
|
||||
C_$1: FRC
|
||||
rm -f ${OUT_DIR}/logs/$1.txt ${OUT_DIR}/logs/$1.repackaged
|
||||
|
||||
# parallel build
|
||||
${OUT_DIR}/logs/$1.txt: | ${OUT_DIR}/logs
|
||||
ifneq ($(wildcard ${OUT_DIR}/logs/$1.repackaged),) # {
|
||||
@echo Skipping build of $1 as it has already been repackaged
|
||||
cat $${@:.txt=.repackaged} > $$@
|
||||
rm -f $${@:.txt=.repackaged}
|
||||
else # } {
|
||||
@echo $1 started due to $$? | sed "s:${OUT_DIR}/logs/::g"
|
||||
# Build in a subshell so we get the time output
|
||||
# Pass in jobserver info using the RMAKE variable
|
||||
# Allow project specific flags e..g. ROCMBUILD_lightning.
|
||||
${RMAKE}${SILENT}( if set -x && source $${INFRA_REPO}/envsetup.sh && \
|
||||
rm -f $${@:$1.txt=1.Errors.$1.txt} $$@ $${@:.txt=.repackaged} && \
|
||||
$${INFRA_REPO}/runner $1 $${RELEASE_FLAG} $${SANITIZER_FLAG} $${STATIC_FLAG} ${ROCMBUILD_$1}; \
|
||||
then mv $${@:$1.txt=2.Inprogress.$1.txt} $$@ ; \
|
||||
else mv $${@:$1.txt=2.Inprogress.$1.txt} $${@:$1.txt=1.Errors.$1.txt} ;\
|
||||
echo Error in $1 >&2 ; exit 1 ;\
|
||||
fi ) > $${@:$1.txt=2.Inprogress.$1.txt} 2>&1
|
||||
endif # }
|
||||
|
||||
# end of toplevel macro
|
||||
endef
|
||||
# } End of test to see if toplevel is defined
|
||||
endif
|
||||
|
||||
components:=$(sort $(components))
|
||||
|
||||
# Create all the T_xxxx and C_xxxx targets
|
||||
$(call peval,$(foreach dep,$(strip ${components}),$(call toplevel,${dep})))
|
||||
|
||||
# Add all the T_xxxx targets to "all" except those listed in NOBUILD
|
||||
# Note this does not prohibit them from being built, it just means that
|
||||
# a build of "all" will not force them to be built directly
|
||||
# example command
|
||||
# make -f jenkins-utils/scripts/Stage1.mk -j60
|
||||
|
||||
##help all: Build everything
|
||||
all: $(addprefix T_,$(filter-out ${NOBUILD},${components}))
|
||||
@echo All ROCm components built
|
||||
# Do not document this target
|
||||
upload: $(addprefix U_,$(filter-out ${NOBUILD},${components}))
|
||||
@echo All ROCm components built and uploaded
|
||||
|
||||
upload-rocm-dev: $(addprefix U_,$(filter-out ${NOBUILD},${components}))
|
||||
@echo All rocm-dev components built and uploaded
|
||||
|
||||
##help rocm-dev: Build a subset of ROCm
|
||||
rocm-dev: $(addprefix T_,$(filter-out ${NOBUILD},${components}))
|
||||
@echo rocm-dev built
|
||||
|
||||
ifeq ($(DISTRO_NAME),almalinux)
|
||||
@sudo chmod -R 777 "/home/builder"
|
||||
endif
|
||||
|
||||
# This code is broken. It stops us exiting a container and
|
||||
# starting a new one and continueing the build. The attempt
|
||||
# is to have run-once code.
|
||||
${OUT_DIR}/logs:
|
||||
sudo mkdir -p -m 775 "${ROCM_INSTALL_PATH}" && \
|
||||
sudo chown -R "$(shell id -u):$(shell id -g)" "/opt"
|
||||
sudo chown "$(shell id -u):$(shell id -g)" "/home/$(shell id -un)"
|
||||
mkdir -p "${@}"
|
||||
mkdir -p ${HOME}/.ccache
|
||||
|
||||
##help clean: remove the output directory and recreate it
|
||||
clean:
|
||||
[ -n "${OUT_DIR}" ] && rm -rf "${OUT_DIR}"
|
||||
# mkdir -p ${OUT_DIR}/logs
|
||||
|
||||
.SECONDARY: ${components:%=${OUT_DIR}/logs/%}
|
||||
|
||||
.PHONY: all clean repack help list_components
|
||||
|
||||
# get_all_deps: Recursively get all dependencies for a given component.
|
||||
# Usage: $(call get_all_deps,component_name,)
|
||||
# - component_name: The name of the component to get dependencies for.
|
||||
# - The second parameter is an internal parameter used to track already
|
||||
# processed components to avoid circular dependencies.
|
||||
define get_all_deps
|
||||
$(if $(filter $(1),$(2)),,\
|
||||
$(sort $(1) $(foreach d,$($(1)_DEPS),$(call get_all_deps,$d,$(1) $(2))))
|
||||
)
|
||||
endef
|
||||
|
||||
##help deps_<component>: output the dependencies for <component>
|
||||
deps_%:
|
||||
@echo "=== Dependencies for [$*] ==="
|
||||
@echo "$(filter-out $*,$(call get_all_deps,$*,))"
|
||||
|
||||
##help list_components: output the list of components
|
||||
##help : Hint make list_components | paste - - - | column -t
|
||||
list_components:
|
||||
@echo "${components}" | sed 'y/ /\n/'
|
||||
|
||||
##help help: show this text
|
||||
help:
|
||||
@sed -n 's/^##help //p' ${MAKEFILE_LIST} | \
|
||||
if type -t column > /dev/null ; then column -s: -t ; else cat ; fi
|
||||
|
||||
FRC:
|
||||
@@ -1,146 +0,0 @@
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Removes all amd_smi build artifacts"
|
||||
echo " -r, --release Build non-debug version amd_smi (default is debug)"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -w, --wheel Creates python wheel package of amd-smi.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -h, --help Prints this help"
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
PROJ_NAME="amdsmi"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
TARGET="build"
|
||||
PACKAGE_LIB=$(getLibPath)
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
AMDSMI_BUILD_DIR=$(getBuildPath $PROJ_NAME)
|
||||
AMDSMI_PACKAGE_DEB_DIR="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
AMDSMI_PACKAGE_RPM_DIR="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
AMDSMI_BUILD_TYPE="debug"
|
||||
BUILD_TYPE="Debug"
|
||||
|
||||
MAKETARGET="deb"
|
||||
MAKEARG="$DASH_JAY O=$AMDSMI_BUILD_DIR"
|
||||
AMDSMI_MAKE_OPTS="$DASH_JAY O=$AMDSMI_BUILD_DIR -C $AMDSMI_BUILD_DIR"
|
||||
AMDSMI_PKG_NAME="amd-smi-lib"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
ADDRESS_SANITIZER=true ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_amdsmi() {
|
||||
rm -rf "$AMDSMI_BUILD_DIR"
|
||||
rm -rf "$AMDSMI_PACKAGE_DEB_DIR"
|
||||
rm -rf "$AMDSMI_PACKAGE_RPM_DIR"
|
||||
rm -rf "$PACKAGE_ROOT/amd_smi"
|
||||
rm -rf "$PACKAGE_INCLUDE/amd_smi"
|
||||
rm -f $PACKAGE_LIB/libamd_smi.*
|
||||
return 0
|
||||
}
|
||||
|
||||
build_amdsmi() {
|
||||
echo "Building AMDSMI"
|
||||
echo "AMDSMI_BUILD_DIR: ${AMDSMI_BUILD_DIR}"
|
||||
if [ ! -d "$AMDSMI_BUILD_DIR" ]; then
|
||||
mkdir -p $AMDSMI_BUILD_DIR
|
||||
pushd $AMDSMI_BUILD_DIR
|
||||
print_lib_type $SHARED_LIBS
|
||||
cmake \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_common_cmake_params) \
|
||||
$(rocm_cmake_params) \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DAMD_SMI_PACKAGE="${AMDSMI_PKG_NAME}" \
|
||||
-DCPACK_PACKAGE_VERSION_MAJOR="1" \
|
||||
-DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \
|
||||
-DCPACK_PACKAGE_VERSION_PATCH="0" \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DBUILD_TESTS=ON \
|
||||
"$AMD_SMI_LIB_ROOT"
|
||||
popd
|
||||
fi
|
||||
|
||||
echo "Making amd_smi package:"
|
||||
cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS
|
||||
cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS install
|
||||
cmake --build "$AMDSMI_BUILD_DIR" -- $AMDSMI_MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_DEB_DIR" $AMDSMI_BUILD_DIR/*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$AMDSMI_PACKAGE_RPM_DIR" $AMDSMI_BUILD_DIR/*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${AMDSMI_PACKAGE_DEB_DIR};;
|
||||
("rpm")
|
||||
echo ${AMDSMI_PACKAGE_RPM_DIR};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_amdsmi ;;
|
||||
(build) build_amdsmi; build_wheel "$AMDSMI_BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
exit 0
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src AMDMIGraphX
|
||||
|
||||
build_amdmigraphx() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
if ! command -v rbuild &> /dev/null; then
|
||||
pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz
|
||||
fi
|
||||
|
||||
# Remove CK
|
||||
xargs -d '\n' -a ${OUT_DIR}/ck.files rm -- || true
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
mkdir -p ${BUILD_DIR} && rm -rf ${BUILD_DIR}/* && mkdir -p ${HOME}/amdmigraphx && rm -rf ${HOME}/amdmigraphx/*
|
||||
rbuild package -d "${HOME}/amdmigraphx" -B "${BUILD_DIR}" \
|
||||
--cxx="$(set_build_variables __CLANG++__)" \
|
||||
--cc="$(set_build_variables __CLANG__)" \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH" \
|
||||
-DCMAKE_INSTALL_RPATH=""
|
||||
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
cd $BUILD_DIR && cmake --build . -- install -j${PROC}
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_amdmigraphx() {
|
||||
echo "Cleaning AMDMIGraphX build directory: ${BUILD_DIR} ${DEPS_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$DEPS_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_amdmigraphx; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_amdmigraphx ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,152 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore.
|
||||
No effect of the param on this build"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
API_NAME="hsa-amd-aqlprofile"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PROJ_NAME="$API_NAME"
|
||||
TARGET="build"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKETARGET="deb"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
VALID_STR=$(getopt -o hcro:p: --long help,clean,release,clean,outdir:,package: -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="Release"
|
||||
shift
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
copy_pkg_files_to_rocm() {
|
||||
local comp_folder=$1
|
||||
local comp_pkg_name=$2
|
||||
|
||||
cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2
|
||||
if [ "${PKGTYPE}" = 'deb' ]; then
|
||||
dpkg-deb -x ${comp_pkg_name}_*.deb pkg/
|
||||
else
|
||||
mkdir pkg && pushd pkg/ || exit 2
|
||||
if [[ "${comp_pkg_name}" != *-dev* ]]; then
|
||||
rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv
|
||||
else
|
||||
rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv
|
||||
fi
|
||||
popd || exit 2
|
||||
fi
|
||||
ls ./pkg -alt
|
||||
sudo cp -r ./pkg/*/rocm*/* "${ROCM_PATH}" || exit 2
|
||||
rm -rf pkg/
|
||||
}
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME package"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Downloading $PROJ_NAME" package
|
||||
if [ "$DISTRO_NAME" = ubuntu ]; then
|
||||
mkdir -p "$PACKAGE_DEB"
|
||||
local rocm_ver=${ROCM_VERSION}
|
||||
if [ ${ROCM_VERSION##*.} = 0 ]; then
|
||||
rocm_ver=${ROCM_VERSION%.*}
|
||||
fi
|
||||
local url="https://repo.radeon.com/rocm/apt/${rocm_ver}/pool/main/h/${API_NAME}/"
|
||||
local package
|
||||
package=$(curl -s "$url" | grep -Po 'href="\K[^"]*' | grep "${DISTRO_RELEASE}" | head -n 1)
|
||||
|
||||
if [ -z "$package" ]; then
|
||||
echo "No package found for Ubuntu version $DISTRO_RELEASE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
wget -t3 -P "$PACKAGE_DEB" "${url}${package}"
|
||||
copy_pkg_files_to_rocm ${API_NAME} ${API_NAME}
|
||||
else
|
||||
echo "$DISTRO_ID is not supported..."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "Installing $PROJ_NAME" package
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo ${PACKAGE_DEB}
|
||||
;;
|
||||
"rpm")
|
||||
echo ${PACKAGE_RPM}
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case "$TARGET" in
|
||||
clean) clean ;;
|
||||
build) build ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,136 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Removes all clang-ocl build artifacts"
|
||||
echo " -r, --release Build non-debug version clang-ocl (default is debug)"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -s, --static Supports static CI by accepting this param & not bailing out. No effect of the param though"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
TARGET="build"
|
||||
CLANG_OCL_DEST="$(getBinPath)"
|
||||
CLANG_OCL_SRC_ROOT="$CLANG_OCL_ROOT"
|
||||
CLANG_OCL_BUILD_DIR="$(getBuildPath clang-ocl)"
|
||||
|
||||
MAKEARG="$DASH_JAY"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_UTILS="$(getUtilsPath)"
|
||||
CLANG_OCL_PACKAGE_DEB="$PACKAGE_ROOT/deb/clang-ocl"
|
||||
CLANG_OCL_PACKAGE_RPM="$PACKAGE_ROOT/rpm/clang-ocl"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
VALID_STR=`getopt -o hcraso:g: --long help,clean,release,clean,static,address_sanitizer,outdir:,gpu_list: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
MAKEARG="$MAKEARG BUILD_TYPE=rel" ; BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-g | --gpu_list )
|
||||
GPU_LIST=$2; shift 2 ;;
|
||||
--) shift; break;;
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_clang-ocl() {
|
||||
echo "Removing clang-ocl"
|
||||
rm -rf $CLANG_OCL_DEST/clang-ocl
|
||||
rm -rf $CLANG_OCL_BUILD_DIR
|
||||
rm -rf $CLANG_OCL_PACKAGE_DEB
|
||||
rm -rf $CLANG_OCL_PACKAGE_RPM
|
||||
}
|
||||
|
||||
build_clang-ocl() {
|
||||
if [ ! -d "$CLANG_OCL_BUILD_DIR" ]; then
|
||||
mkdir -p $CLANG_OCL_BUILD_DIR
|
||||
pushd $CLANG_OCL_BUILD_DIR
|
||||
|
||||
if [ -e $PACKAGE_ROOT/lib/bitcode/opencl.amdgcn.bc ]; then
|
||||
BC_DIR="$ROCM_INSTALL_PATH/lib"
|
||||
else
|
||||
BC_DIR="$ROCM_INSTALL_PATH/amdgcn/bitcode"
|
||||
fi
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DDISABLE_CHECKS="ON" \
|
||||
-DCLANG_BIN="$ROCM_INSTALL_PATH/llvm/bin" \
|
||||
-DBITCODE_DIR="$BC_DIR" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCPACK_SET_DESTDIR="OFF" \
|
||||
$CLANG_OCL_SRC_ROOT
|
||||
|
||||
echo "Making clang-ocl:"
|
||||
cmake --build . -- $MAKEARG
|
||||
cmake --build . -- $MAKEARG install
|
||||
cmake --build . -- $MAKEARG package
|
||||
popd
|
||||
fi
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_DEB" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$CLANG_OCL_PACKAGE_RPM" $CLANG_OCL_BUILD_DIR/rocm-clang-ocl*.rpm
|
||||
}
|
||||
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${CLANG_OCL_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${CLANG_OCL_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_clang-ocl ;;
|
||||
(build) build_clang-ocl ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
exit 0
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of comgr. It needs to be used along with -r option"
|
||||
echo " -l, --link_llvm_static Link to LLVM statically. Default is to dynamically link to LLVM; requires that LLVM dylibs are created."
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME=amd_comgr
|
||||
PROJ_NAME=$API_NAME
|
||||
LIB_NAME=lib${API_NAME}
|
||||
TARGET=build
|
||||
MAKETARGET=deb
|
||||
PACKAGE_ROOT=$(getPackageRoot)
|
||||
PACKAGE_LIB=$(getLibPath)
|
||||
PACKAGE_INCLUDE=$(getIncludePath)
|
||||
BUILD_DIR=$(getBuildPath $API_NAME)
|
||||
PACKAGE_DEB=$PACKAGE_ROOT/deb/$PROJ_NAME
|
||||
PACKAGE_RPM=$PACKAGE_ROOT/rpm/$PROJ_NAME
|
||||
PACKAGE_PREFIX=$ROCM_INSTALL_PATH
|
||||
BUILD_TYPE=Debug
|
||||
MAKE_OPTS="$DASH_JAY CTEST_OUTPUT_ON_FAILURE=1 -C $BUILD_DIR"
|
||||
VERBOSE_OPTS="AMD_COMGR_EMIT_VERBOSE_LOGS=1 AMD_COMGR_REDIRECT_LOGS=stdout"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
MAKETARGET="deb"
|
||||
|
||||
# link to LLVM dynamicaly. Default is to link to llvm dynamically.
|
||||
# temporarily set this default to OFF until we resolve Issues
|
||||
LINK_LLVM_DYLIB="OFF"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswlo:p: --long help,clean,release,address_sanitizer,static,wheel,link_llvm_static,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-l | --link_llvm_static)
|
||||
LINK_LLVM_DYLIB="OFF"; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
|
||||
rm -rf $BUILD_DIR
|
||||
rm -rf $PACKAGE_DEB
|
||||
rm -rf $PACKAGE_RPM
|
||||
rm -rf $PACKAGE_ROOT/${PROJ_NAME}
|
||||
rm -rf $PACKAGE_LIB/${LIB_NAME}*
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
if [ "$SHARED_LIBS" == "OFF" ]
|
||||
then
|
||||
echo " Building Archive "
|
||||
else
|
||||
echo " Building Shared Object "
|
||||
fi
|
||||
|
||||
# Remove CTEST var once SWDEV-381396 is fixed
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_hip=TRUE \
|
||||
-DCMAKE_CTEST_ARGUMENTS="--exclude-regex;multithread_test" \
|
||||
-DLLVM_LINK_LLVM_DYLIB=$LINK_LLVM_DYLIB \
|
||||
-DLLVM_ENABLE_LIBCXX=$LINK_LLVM_DYLIB \
|
||||
$COMGR_ROOT
|
||||
|
||||
popd
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS $VERBOSE_OPTS test
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS install
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS package
|
||||
|
||||
mkdir -p $PACKAGE_LIB
|
||||
cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/comgr*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/comgr*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,96 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
# Temporarily disable Address Sanitizer
|
||||
ENABLE_ADDRESS_SANITIZER=false
|
||||
|
||||
set_component_src composable_kernel
|
||||
disable_debug_package_generation
|
||||
# Set the GPU_ARCH_LIST to the supported GPUs needed after https://github.com/ROCm/composable_kernel/pull/1536/
|
||||
GPU_ARCH_LIST="gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
||||
|
||||
build_miopen_ck() {
|
||||
echo "Start Building Composable Kernel"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
GPU_ARCH_LIST="gfx908:xnack+;gfx90a:xnack+;gfx942:xnack+"
|
||||
else
|
||||
unset_asan_env_vars
|
||||
set_address_sanitizer_off
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
GPU_ARCH_LIST="gfx942"
|
||||
ack_and_skip_static
|
||||
fi
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GPU_ARCH_LIST to that value
|
||||
# This needs to be removed when CK aligns with other component and uses -DAMDGPU_TARGET or _DGPO_TARGET
|
||||
# then we can use set_gpu_arch from compure_helper.sh and get rid of all if clauses
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
GPU_ARCH_LIST="$ENABLE_GPU_ARCH"
|
||||
fi
|
||||
# Latest CK requiring Python 3.8 as the minimum.
|
||||
# Point CMake to that explicit location and adjust LD_LIBRARY_PATH.
|
||||
PYTHON_VERSION_WORKAROUND=''
|
||||
echo "DISTRO_ID: ${DISTRO_ID}"
|
||||
if [ "$DISTRO_ID" = "rhel-8.8" ] || [ "$DISTRO_NAME" == "sles" ] || [ "$DISTRO_ID" = "debian-10" ]; then
|
||||
EXTRA_PYTHON_PATH=/opt/Python-3.8.13
|
||||
PYTHON_VERSION_WORKAROUND="-DCK_USE_ALTERNATIVE_PYTHON=${EXTRA_PYTHON_PATH}/bin/python3.8"
|
||||
# For the python interpreter we need to export LD_LIBRARY_PATH.
|
||||
export LD_LIBRARY_PATH=${EXTRA_PYTHON_PATH}/lib:$LD_LIBRARY_PATH
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
mkdir "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
-DBUILD_DEV=OFF \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
${PYTHON_VERSION_WORKAROUND} \
|
||||
-DCPACK_GENERATOR="${PKGTYPE^^}" \
|
||||
-DCMAKE_CXX_COMPILER=$(set_build_variables __CLANG++__) \
|
||||
-DCMAKE_C_COMPILER=$(set_build_variables __CLANG__) \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DGPU_ARCHS="${GPU_ARCH_LIST}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build . -- -j${PROC} package
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
}
|
||||
|
||||
# Use the function to unset the LDFLAGS and CXXFLAGS
|
||||
# specifically set for ASAN
|
||||
unset_asan_env_vars() {
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
export ADDRESS_SANITIZER="OFF"
|
||||
export LD_LIBRARY_PATH=""
|
||||
export ASAN_OPTIONS=""
|
||||
}
|
||||
|
||||
set_address_sanitizer_off() {
|
||||
export CFLAGS=""
|
||||
export CXXFLAGS=""
|
||||
export LDFLAGS=""
|
||||
}
|
||||
|
||||
clean_miopen_ck() {
|
||||
echo "Cleaning MIOpen-CK build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_miopen_ck; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_miopen_ck ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,170 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "${BASH_SOURCE%/*}/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE[0]}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " --enable-assertions Enable assertions"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -w, --wheel Creates python wheel package of dbgapi.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -M, --skip_man_pages Do not build the 'docs' target"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME=rocm-dbgapi
|
||||
AMD_DBGAPI_NAME=amd-dbgapi
|
||||
MAKEINSTALL_MANIFEST=makeinstall_manifest.txt
|
||||
PROJ_NAME=$API_NAME
|
||||
LIB_NAME=lib${API_NAME}.so
|
||||
TARGET=build
|
||||
MAKETARGET=deb
|
||||
PACKAGE_ROOT=$(getPackageRoot)
|
||||
PACKAGE_LIB=$(getLibPath)
|
||||
PACKAGE_INCLUDE=$(getIncludePath)
|
||||
BUILD_DIR=$(getBuildPath $API_NAME)
|
||||
PACKAGE_DEB=$(getPackageRoot)/deb/$PROJ_NAME
|
||||
PACKAGE_RPM=$(getPackageRoot)/rpm/$PROJ_NAME
|
||||
#PACKAGE_PREFIX=$ROCM_INSTALL_PATH
|
||||
BUILD_TYPE=Debug
|
||||
MAKE_OPTS=($DASH_JAY -C "$BUILD_DIR") # Note that DASH_JAY might have a space after the -j
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
DODOCSBUILD=true
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraswo:p:M --long help,clean,release,enable-assertions,static,wheel,address_sanitizer,outdir:,package:skip_man_pages -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ;;
|
||||
(-r | --release)
|
||||
ENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"Off"} ;
|
||||
BUILD_TYPE="RelWithDebInfo" ;;
|
||||
( --enable-assertions)
|
||||
ENABLE_ASSERTIONS="On" ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;;
|
||||
(-M | --skip_man_pages) DODOCSBUILD=false;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 1;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
shift
|
||||
|
||||
done
|
||||
|
||||
check_conflicting_options $CLEAN_OR_OUT "$PKGTYPE" "$MAKETARGET"
|
||||
if [ "$RET_CONFLICT" -ge 30 ]; then
|
||||
print_vars "$API_NAME" "$TARGET" "$BUILD_TYPE" "$SHARED_LIBS" "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET"
|
||||
exit "$RET_CONFLICT"
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
if [ -e "$BUILD_DIR/$MAKEINSTALL_MANIFEST" ] ; then
|
||||
xargs rm -f < "$BUILD_DIR/$MAKEINSTALL_MANIFEST"
|
||||
fi
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "${PACKAGE_ROOT:?}/${PROJ_NAME}"
|
||||
rm -rf "${PACKAGE_LIB:?}/${LIB_NAME}"*
|
||||
rm -rf "${PACKAGE_LIB:?}/cmake/${AMD_DBGAPI_NAME}"
|
||||
rm -rf "${PACKAGE_INCLUDE:?}/${AMD_DBGAPI_NAME}"
|
||||
}
|
||||
|
||||
build() {
|
||||
if [ ! -e "$ROCM_DBGAPI_ROOT/CMakeLists.txt" ]
|
||||
then
|
||||
echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi" >&2
|
||||
echo " No $ROCM_DBGAPI_ROOT/CMakeLists.txt file, skipping rocm-dbgapi"
|
||||
exit 0 # THis is not an error
|
||||
fi
|
||||
echo "Building $PROJ_NAME"
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR" || exit 99
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-"On"} \
|
||||
"$ROCM_DBGAPI_ROOT"
|
||||
|
||||
popd || exit 99
|
||||
cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}"
|
||||
"$DODOCSBUILD" && cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" doc
|
||||
cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" install
|
||||
#install_manifest.txt is created by make install and make package with same name unless
|
||||
#component packaging is enabled. To avoid overwriting by make package,move the manifest file
|
||||
#to a different name and can be used for build clean up
|
||||
mv "$BUILD_DIR/install_manifest.txt" "$BUILD_DIR/$MAKEINSTALL_MANIFEST"
|
||||
cmake --build "$BUILD_DIR" -- "${MAKE_OPTS[@]}" package
|
||||
|
||||
mkdir -p "$PACKAGE_LIB"
|
||||
# handle the library being in more than one place to avoid breaking the build.
|
||||
(
|
||||
shopt -s nullglob
|
||||
cp -R "$BUILD_DIR/lib/${LIB_NAME}"* "$BUILD_DIR/${LIB_NAME}"* "$PACKAGE_LIB"
|
||||
)
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME";;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,152 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Build a release version of the package"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of devicelibs.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
PROJ_NAME="devicelibs"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_BIN="$(getBinPath)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
BUILD_PATH="$(getBuildPath $PROJ_NAME)"
|
||||
INSTALL_PATH="$(getPackageRoot)"
|
||||
LIGHTNING_BUILD_PATH="$(getBuildPath lightning)"
|
||||
DEB_PATH="$(getDebPath devicelibs)"
|
||||
RPM_PATH="$(getRpmPath devicelibs)"
|
||||
AMDGCN_LIB_PATH="$PACKAGE_ROOT/amdgcn/bitcode/"
|
||||
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
MAKETARGET="deb"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo: --long help,clean,release,static,wheel,address_sanitizer,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
ASAN_CMAKE_PARAMS="true"
|
||||
ack_and_ignore_asan ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_devicelibs() {
|
||||
# Delete cmake output directory
|
||||
rm -rf "$BUILD_PATH"
|
||||
# Delete the *.bc files from the PACKAGE_LIB directory
|
||||
rm -f $PACKAGE_LIB/hc*.bc
|
||||
rm -f $PACKAGE_LIB/irif*.bc
|
||||
rm -f $PACKAGE_LIB/ockl*.bc
|
||||
rm -f $PACKAGE_LIB/oclc*.bc
|
||||
rm -f $PACKAGE_LIB/ocml*.bc
|
||||
rm -f $PACKAGE_LIB/opencl*.bc
|
||||
rm -f $PACKAGE_LIB/openmp*.bc
|
||||
rm -rf $PACKAGE_ROOT/amdgcn
|
||||
# Delete any packages generated
|
||||
rm -rf "$DEB_PATH"
|
||||
rm -rf "$RPM_PATH"
|
||||
}
|
||||
|
||||
build_devicelibs() {
|
||||
mkdir -p "$BUILD_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
|
||||
local clangResourceDir="$($LIGHTNING_BUILD_PATH/bin/clang -print-resource-dir)"
|
||||
local clangResourceVer=${clangResourceDir#*lib/clang/}
|
||||
local bitcodeInstallLoc="lib/llvm/lib/clang/${clangResourceVer}/lib"
|
||||
|
||||
export LLVM_BUILD="$LIGHTNING_BUILD_PATH"
|
||||
if [ ! -e Makefile ]; then
|
||||
cmake $(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
${GEN_NINJA} \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_NEW="$bitcodeInstallLoc/amdgcn" \
|
||||
-DROCM_DEVICE_LIBS_BITCODE_INSTALL_LOC_OLD="amdgcn" \
|
||||
"$DEVICELIBS_ROOT"
|
||||
|
||||
echo "CMake complete"
|
||||
fi
|
||||
|
||||
echo "Building device-libs"
|
||||
cmake --build . -- $MAKEOPTS
|
||||
cmake --build . -- $MAKEOPTS install
|
||||
popd
|
||||
}
|
||||
|
||||
package_devicelibs() {
|
||||
mkdir -p "$DEB_PATH"
|
||||
mkdir -p "$RPM_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
cpack
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
case $TARGET in
|
||||
(clean) clean_devicelibs ;;
|
||||
(build) build_devicelibs; package_devicelibs; build_wheel "$BUILD_PATH" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,55 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src half
|
||||
|
||||
build_half() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# ASAN packaging is not required for HALF, since its header only package
|
||||
# Setting the asan_cmake_params to false will disable ASAN packaging
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
fi
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}\
|
||||
-DCPACK_SET_DESTDIR="OFF" \
|
||||
-DCPACK_RPM_PACKAGE_RELOCATABLE="ON" \
|
||||
-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_half() {
|
||||
echo "Cleaning half build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_half; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_half ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,339 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of hip-on-rocclr.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -t, --offload-arch=<arch> Specify arch for catch tests ex: --offload-arch=gfx1030 --offload-arch=gfx1100"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
PROJ_NAME="hip-on-rocclr"
|
||||
BUILD_PATH="$(getBuildPath $PROJ_NAME)"
|
||||
|
||||
TARGET="build"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_SRC="$(getSrcPath)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
PREFIX_PATH="$PACKAGE_ROOT"
|
||||
CORE_BUILD_DIR="$(getBuildPath hsa-core)"
|
||||
ROCclr_BUILD_DIR="$(getBuildPath rocclr)"
|
||||
HIPCC_BUILD_DIR="$(getBuildPath hipcc)"
|
||||
CATCH_BUILD_DIR="$(getBuildPath catch)"
|
||||
CATCH_SRC="$HIP_CATCH_TESTS_ROOT/catch"
|
||||
SAMPLES_SRC="$HIP_CATCH_TESTS_ROOT/samples"
|
||||
SAMPLES_BUILD_DIR="$(getBuildPath samples)"
|
||||
if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then
|
||||
echo "Using catch source from hip project" >&2
|
||||
CATCH_SRC="$HIP_ON_ROCclr_ROOT/tests/catch"
|
||||
fi
|
||||
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
OFFLOAD_ARCH=()
|
||||
|
||||
DEFAULT_OFFLOAD_ARCH=(gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1031 gfx1033 gfx1034 gfx1035 gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1200 gfx1201)
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswt:o: --long help,clean,release,address_sanitizer,static,wheel,offload-arch=:,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-t | --offload-arch=)
|
||||
OFFLOAD_ARCH+=( "$2" ); ((CLEAN_OR_OUT|=2)); shift 2 ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
if [ ${#OFFLOAD_ARCH[@]} = 0 ] ; then
|
||||
OFFLOAD_ARCH=( "${DEFAULT_OFFLOAD_ARCH[@]}" )
|
||||
else
|
||||
echo "Using user defined offload archs ${OFFLOAD_ARCH[@]} for catch tests";
|
||||
fi
|
||||
printf -v OFFLOAD_ARCH_STR -- '--offload-arch=%q ' "${OFFLOAD_ARCH[@]}"
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
|
||||
clean_hip_on_rocclr() {
|
||||
# Delete cmake output directory
|
||||
rm -rf "$BUILD_PATH"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$OUT_DIR/hip"
|
||||
}
|
||||
|
||||
build_hip_on_rocclr() {
|
||||
# TODO This if condition is a temporary workaround so that mainline builds dont error out
|
||||
# until build migrated from hipamd to clr repo
|
||||
if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then
|
||||
# We are in a branch that has migrated to clr repo
|
||||
_HIP_CMAKELIST_DIR="$CLR_ROOT"
|
||||
_HIP_CMAKELIST_OPT="-DCLR_BUILD_HIP=ON -DCLR_BUILD_OCL=OFF"
|
||||
if [ -e "$HIPOTHER_ROOT/hipnv" ]; then
|
||||
# We are in a branch that has hipnv headers migrated
|
||||
_HIP_CMAKELIST_OPT="$_HIP_CMAKELIST_OPT -DHIPNV_DIR=$HIPOTHER_ROOT/hipnv"
|
||||
fi
|
||||
elif [ ! -e "$HIPAMD_ROOT/CMakeLists.txt" ]; then
|
||||
# We seem to have hit a branch in which both the old and the new repo don't exist
|
||||
echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr" >&2
|
||||
echo "No $HIPAMD_ROOT/CMakeLists.txt file, skipping hip on rocclr"
|
||||
exit 0 # This is not an error
|
||||
else
|
||||
# We are in a branch that has not yet migrated to clr repo yet
|
||||
_HIP_CMAKELIST_DIR="$HIPAMD_ROOT"
|
||||
_HIP_CMAKELIST_OPT=""
|
||||
fi
|
||||
|
||||
echo "$_HIP_CMAKELIST_DIR"
|
||||
mkdir -p "$BUILD_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
|
||||
# FIXME: Remove -DROCclr_DIR/LIBROCclr_STATIC_DIR
|
||||
if [ ! -e Makefile ]; then
|
||||
echo "Building HIP-On-ROCclr CMake environment"
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
cmake $(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DHIP_COMPILER=clang \
|
||||
-DHIP_PLATFORM=amd \
|
||||
-DHIP_COMMON_DIR="$HIP_ON_ROCclr_ROOT" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_HIP_ARCHITECTURES=OFF \
|
||||
-DHSA_PATH="$ROCM_INSTALL_PATH" \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=TRUE \
|
||||
-DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DROCM_PATH="$ROCM_INSTALL_PATH" \
|
||||
-DHIPCC_BIN_DIR="$HIPCC_BUILD_DIR" \
|
||||
-DHIP_CATCH_TEST=1 \
|
||||
$_HIP_CMAKELIST_OPT \
|
||||
"$_HIP_CMAKELIST_DIR"
|
||||
|
||||
echo "CMake complete"
|
||||
fi
|
||||
|
||||
echo "Build and Install HIP"
|
||||
cmake --build . -- $MAKEOPTS install "VERBOSE=1"
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
build_catch_tests() {
|
||||
WORKSPACE=`pwd`
|
||||
echo "Build catch2 tests independently"
|
||||
if [ ! -e "$CATCH_SRC/CMakeLists.txt" ]; then
|
||||
echo "catch source not found: $CATCH_SRC" >&2
|
||||
exit
|
||||
fi
|
||||
# build catch
|
||||
rm -rf "$CATCH_BUILD_DIR"
|
||||
mkdir -p "$CATCH_BUILD_DIR"
|
||||
pushd "$CATCH_BUILD_DIR"
|
||||
# use the newly built hip as HIP for catch
|
||||
export HIP_PATH="$ROCM_INSTALL_PATH"
|
||||
export ROCM_PATH="$ROCM_INSTALL_PATH"
|
||||
# Note: The rocm_common_cmake_params will provide CMAKE_EXE_LINKER_FLAGS_INIT
|
||||
# for binaries located in /opt/rocm/bin
|
||||
# hip-catch binaries are located in each test folder under /opt/rocm/share/hip/catch_test/
|
||||
# Append the EXE LINKER flags with ROCm library path
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DHIP_PLATFORM=amd \
|
||||
-DROCM_PATH="$ROCM_INSTALL_PATH" \
|
||||
-DOFFLOAD_ARCH_STR="$OFFLOAD_ARCH_STR" \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCPACK_RPM_DEBUGINFO_PACKAGE=FALSE \
|
||||
-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=FALSE \
|
||||
-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_EXE_RPATH:$ROCM_INSTALL_PATH/lib:/opt/rocm/lib \
|
||||
-DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
"$CATCH_SRC"
|
||||
|
||||
|
||||
make $MAKEOPTS build_tests
|
||||
echo "Packaging catch tests"
|
||||
make $MAKEOPTS package_test
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
package_samples() {
|
||||
# TODO: To be removed once the issue related to ASAN builds are fixed
|
||||
if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then
|
||||
echo "Disable the packaging of HIP samples" >&2
|
||||
return
|
||||
fi
|
||||
WORKSPACE=`pwd`
|
||||
if [ ! -e "$SAMPLES_SRC/CMakeLists.txt" ]; then
|
||||
echo "HIP samples source not found at: $SAMPLES_SRC" >&2
|
||||
echo "Using samples package from hip project: $BUILD_PATH" >&2
|
||||
# TODO: change to return failure after hip-tests samples change is available in mainline
|
||||
return
|
||||
fi
|
||||
# package samples
|
||||
rm -rf "$SAMPLES_BUILD_DIR"
|
||||
mkdir -p "$SAMPLES_BUILD_DIR"
|
||||
pushd "$SAMPLES_BUILD_DIR"
|
||||
# The cmake path is different for asan and non-asan builds.
|
||||
# Fetch after getting build type. Default will be non-asan build
|
||||
local CMAKE_PATH="$(getCmakePath)"
|
||||
# use the newly built hip as HIP for samples
|
||||
export HIP_PATH="$ROCM_INSTALL_PATH"
|
||||
export ROCM_PATH="$ROCM_INSTALL_PATH"
|
||||
cmake \
|
||||
-DROCM_PATH="$ROCM_INSTALL_PATH" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_MODULE_PATH="$CMAKE_PATH/hip" \
|
||||
-DCPACK_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
"$SAMPLES_SRC"
|
||||
echo "Packaging hip samples from hip-tests project"
|
||||
make $MAKEOPTS package_samples
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
clean_hip_tests(){
|
||||
rm -rf "$CATCH_BUILD_DIR"
|
||||
rm -rf "$PACKAGE_SRC/hip-on-rocclr"
|
||||
rm -rf "$PACKAGE_SRC/hipamd"
|
||||
rm -rf "$PACKAGE_SRC/rocclr"
|
||||
rm -rf "$PACKAGE_SRC/opencl-on-rocclr"
|
||||
rm -rf "$PACKAGE_SRC/clr"
|
||||
rm -rf "$PACKAGE_SRC/hip-tests"
|
||||
rm -rf "$PACKAGE_SRC/hipother"
|
||||
}
|
||||
copy_hip_tests() {
|
||||
clean_hip_tests
|
||||
|
||||
echo "Copy HIP & ROCclr Source and tests"
|
||||
|
||||
mkdir -p "$PACKAGE_SRC/hip-on-rocclr"
|
||||
echo "Copying hip-on-rocclr"
|
||||
progressCopy "$HIP_ON_ROCclr_ROOT" "$PACKAGE_SRC/hip-on-rocclr"
|
||||
|
||||
if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then
|
||||
mkdir -p "$PACKAGE_SRC/clr"
|
||||
echo "Copying clr"
|
||||
progressCopy "$CLR_ROOT" "$PACKAGE_SRC/clr"
|
||||
else
|
||||
mkdir -p "$PACKAGE_SRC/hipamd"
|
||||
mkdir -p "$PACKAGE_SRC/rocclr"
|
||||
mkdir -p "$PACKAGE_SRC/opencl-on-rocclr"
|
||||
echo "Copying hipamd"
|
||||
progressCopy "$HIPAMD_ROOT" "$PACKAGE_SRC/hipamd"
|
||||
echo "Copying rocclr"
|
||||
progressCopy "$ROCclr_ROOT" "$PACKAGE_SRC/rocclr"
|
||||
echo "Copying opencl-on-rocclr"
|
||||
progressCopy "$OPENCL_ON_ROCclr_ROOT" "$PACKAGE_SRC/opencl-on-rocclr"
|
||||
fi
|
||||
|
||||
if [ -e "$HIPOTHER_ROOT/hipnv" ]; then
|
||||
mkdir -p "$PACKAGE_SRC/hipother"
|
||||
echo "Copying hipother"
|
||||
progressCopy "$HIPOTHER_ROOT" "$PACKAGE_SRC/hipother"
|
||||
fi
|
||||
|
||||
mkdir -p "$PACKAGE_SRC/hip-tests"
|
||||
echo "Copying hip-tests"
|
||||
progressCopy "$HIP_CATCH_TESTS_ROOT" "$PACKAGE_SRC/hip-tests"
|
||||
}
|
||||
|
||||
package_hip_on_rocclr()
|
||||
{
|
||||
echo "Packagin HIP-on-ROCclr"
|
||||
pushd "$BUILD_PATH"
|
||||
cmake --build . -- $MAKEOPTS package
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_hip_on_rocclr
|
||||
clean_hip_tests
|
||||
;;
|
||||
(build)
|
||||
build_hip_on_rocclr
|
||||
build_catch_tests
|
||||
package_hip_on_rocclr
|
||||
package_samples
|
||||
build_wheel "$BUILD_PATH" "$PROJ_NAME"
|
||||
copy_hip_tests
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipBLAS-common
|
||||
|
||||
build_hipblas-common() {
|
||||
echo "Start build"
|
||||
|
||||
CXX=$(set_build_variables __C_++__)
|
||||
cd $COMPONENT_SRC
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
"$COMPONENT_SRC"
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipblas-common() {
|
||||
echo "Cleaning hipBLAS-common build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipblas-common; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipblas-common ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,79 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipBLAS
|
||||
|
||||
build_hipblas() {
|
||||
echo "Start build"
|
||||
|
||||
CXX=$(set_build_variables __G_++__)
|
||||
CXX_FLAG=
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
CXX=$(set_build_variables __AMD_CLANG_++__)
|
||||
CXX_FLAG=$(set_build_variables __CMAKE_CXX_PARAMS__)
|
||||
fi
|
||||
|
||||
CLIENTS_SAMPLES="ON"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# fixme: remove CLIENTS_SAMPLES=OFF once SWDEV-417076 is fixed
|
||||
CLIENTS_SAMPLES="OFF"
|
||||
fi
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
echo "FC compiler: $FC"
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
rebuild_lapack
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DUSE_CUDA=OFF \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DBUILD_CLIENTS_SAMPLES="${CLIENTS_SAMPLES}" \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
${CXX_FLAG} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipblas() {
|
||||
echo "Cleaning hipBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipblas; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipblas ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,82 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipBLASLt
|
||||
|
||||
#not enabling the debug files by defalut
|
||||
disable_debug_package_generation
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
set_gpu_arch "$ENABLE_GPU_ARCH"
|
||||
else
|
||||
# gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942
|
||||
set_gpu_arch "all"
|
||||
fi
|
||||
|
||||
build_hipblaslt() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
# hipblaslt requiring Python 3.12.
|
||||
# Point CMake to that explicit location and adjust LD_LIBRARY_PATH.
|
||||
if [ "$DISTRO_ID" = "rhel-8.8" ] || [ "$DISTRO_NAME" == "sles" ] || \
|
||||
[ "$DISTRO_ID" = "rhel-9.1" ] || [ "$DISTRO_ID" = "almalinux-8.10" ] || \
|
||||
[ "$DISTRO_ID" = "debian-10" ]; then
|
||||
EXTRA_PYTHON_PATH=/opt/Python-3.12.7
|
||||
EXTRA_CMAKE_OPTIONS="-DPython_ROOT=/opt/Python-3.12.7"
|
||||
export LD_LIBRARY_PATH=${EXTRA_PYTHON_PATH}/lib
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DTensile_LOGIC= \
|
||||
-DTensile_CODE_OBJECT_VERSION=default \
|
||||
-DTensile_CPU_THREADS=$((PROC / 4)) \
|
||||
-DTensile_LIBRARY_FORMAT=msgpack \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DLINK_BLIS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
${EXTRA_CMAKE_OPTIONS} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipblaslt() {
|
||||
echo "Cleaning hipBLASLt build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipblaslt; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipblaslt ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,143 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -w, --wheel Creates python wheel package of hipcc.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -r, --release Makes a release build"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
## Build environment variables
|
||||
API_NAME=hipcc
|
||||
PROJ_NAME=$API_NAME
|
||||
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
BUILD_DIR=$(getBuildPath $API_NAME)
|
||||
PACKAGE_DEB=$(getPackageRoot)/deb/$PROJ_NAME
|
||||
PACKAGE_RPM=$(getPackageRoot)/rpm/$PROJ_NAME
|
||||
PACKAGE_SRC="$(getSrcPath)"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,address_sanitizer,static,outdir,wheel:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-a | --address_sanitizer)
|
||||
ack_and_ignore_asan ;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 1 ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ;;
|
||||
(-h | --help)
|
||||
printUsage ; exit 0 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo "Invalid option [$1]" >&2; printUsage; exit 1 ;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
clean() {
|
||||
echo "Cleaning hipcc"
|
||||
rm -rf $BUILD_DIR
|
||||
|
||||
echo "Cleaning up hipcc DEB and RPM packages"
|
||||
rm -rf $PACKAGE_DEB
|
||||
rm -rf $PACKAGE_RPM
|
||||
}
|
||||
|
||||
copy_hipcc_sources() {
|
||||
echo "Clean up hipcc build folder"
|
||||
rm -rf "$PACKAGE_SRC/hipcc"
|
||||
echo "Copy hipcc sources"
|
||||
mkdir -p "$PACKAGE_SRC/hipcc"
|
||||
progressCopy "$HIPCC_ROOT" "$PACKAGE_SRC/hipcc"
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Build hipcc binary"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
pushd "$BUILD_DIR"
|
||||
if ! [ -e "$HIPCC_ROOT/CMakeLists.txt" ] ; then
|
||||
|
||||
echo "No source for hipcc, exiting. this is not an error" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cmake \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DHIPCC_BACKWARD_COMPATIBILITY=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \
|
||||
$HIPCC_ROOT
|
||||
popd
|
||||
|
||||
cmake --build "$BUILD_DIR" -- $MAKEOPTS
|
||||
|
||||
echo "Installing and Packaging hipcc"
|
||||
cmake --build "$BUILD_DIR" -- $MAKEOPTS install
|
||||
cmake --build "$BUILD_DIR" -- $MAKEOPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $BUILD_DIR/hipcc*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $BUILD_DIR/hipcc*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1 ;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean
|
||||
;;
|
||||
(build)
|
||||
build
|
||||
build_wheel "$BUILD_DIR" "$PROJ_NAME"
|
||||
copy_hipcc_sources
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,60 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipCUB
|
||||
|
||||
build_hipcub() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# ASAN packaging is not required for HIPCUB, since its header only package
|
||||
# Setting the asan_cmake_params to false will disable ASAN packaging
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
-Drocprim_DIR="${ROCM_PATH}/rocprim" \
|
||||
-DBUILD_TEST=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipcub() {
|
||||
echo "Cleaning hipCUB build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipcub; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipcub ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipFFT
|
||||
|
||||
build_hipfft() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
"$(set_build_variables __CMAKE_CXX_PARAMS__)" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=TRUE \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-L \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipfft() {
|
||||
echo "Cleaning hipFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipfft; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipfft ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,62 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipfort
|
||||
|
||||
build_hipfort() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
cmake \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}\
|
||||
-DHIPFORT_INSTALL_DIR="${ROCM_PATH}" \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_PATH}/llvm;${ROCM_PATH}" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCPACK_SET_DESTDIR="OFF" \
|
||||
-DCPACK_RPM_PACKAGE_RELOCATABLE="ON" \
|
||||
-DHIPFORT_COMPILER="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/flang" \
|
||||
-DCMAKE_Fortran_FLAGS="-Mfree" \
|
||||
-DHIPFORT_COMPILER_FLAGS="-cpp" \
|
||||
-DCMAKE_Fortran_FLAGS_DEBUG="" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DROCM_SYMLINK_LIBS=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \
|
||||
-DHIPFORT_AR="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ar" \
|
||||
-DHIPFORT_RANLIB="${ROCM_PATH}/${ROCM_LLVMDIR}/bin/llvm-ranlib" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipfort() {
|
||||
echo "Cleaning hipFORT build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipfort; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipfort ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,211 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -r, --release Make a release build"
|
||||
echo " -n, --skip_hipify_tests Skip hipify-clang testing"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -i, --clang_headers Install clang headers"
|
||||
echo " -w, --wheel Creates python wheel package of hipify-clang.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Build Environmental Variables
|
||||
PROJ_NAME="hipify"
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
HIPIFY_CLANG_BUILD_DIR="$(getBuildPath $HIPIFY_ROOT)"
|
||||
BUILD_TYPE="Debug"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
HIPIFY_CLANG_HASH=""
|
||||
LIGHTNING_PATH="$ROCM_INSTALL_PATH/llvm"
|
||||
LIGHTNING_BUILD_PATH="$PACKAGE_ROOT/build/lightning"
|
||||
RUN_HIPIFY_TESTS=false
|
||||
CUDA_DEFAULT_VERSION="12.3.2"
|
||||
CUDNN_DEFAULT_VERSION="9.2.0"
|
||||
GCC_MIN_VERSION="9.2"
|
||||
ADDRESS_SANITIZER=false
|
||||
INSTALL_CLANG_HEADERS="OFF"
|
||||
DEB_PATH="$(getDebPath hipify)"
|
||||
RPM_PATH="$(getRpmPath hipify)"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcrnawsio: --long help,clean,release,skip_hipify_tests,wheel,static,address_sanitizer,clang_headers,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-n | --skip_hipify_tests)
|
||||
RUN_HIPIFY_TESTS=false; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
ADDRESS_SANITIZER=true ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-i | --clang_headers)
|
||||
INSTALL_CLANG_HEADERS="ON" ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_hipify() {
|
||||
echo "Cleaning hipify-clang"
|
||||
rm -rf "$HIPIFY_CLANG_BUILD_DIR"
|
||||
rm -rf "$DEB_PATH"
|
||||
rm -rf "$RPM_PATH"
|
||||
}
|
||||
|
||||
package_hipify() {
|
||||
# set-up dirs
|
||||
if [ "$PACKAGEEXT" = "deb" ]; then
|
||||
rm -rf "$DEB_PATH"
|
||||
mkdir -p "$DEB_PATH"
|
||||
fi
|
||||
|
||||
if [ "$PACKAGEEXT" = "rpm" ]; then
|
||||
rm -rf "$RPM_PATH"
|
||||
mkdir -p "$RPM_PATH"
|
||||
fi
|
||||
|
||||
# make the pkg
|
||||
pushd "$HIPIFY_CLANG_BUILD_DIR"
|
||||
make $MAKEOPTS package_hipify-clang
|
||||
popd
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$DEB_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RPM_PATH" $HIPIFY_CLANG_BUILD_DIR/hipify*.rpm
|
||||
}
|
||||
|
||||
build_hipify() {
|
||||
echo "Building hipify-clang binaries"
|
||||
mkdir -p "$HIPIFY_CLANG_BUILD_DIR"
|
||||
|
||||
pushd "$HIPIFY_CLANG_BUILD_DIR"
|
||||
|
||||
# Check the installed GCC version
|
||||
INSTALLED_GCC_VERSION=$(gcc --version | head -n 1 | sed -E 's/[^0-9]*([0-9]+\.[0-9]+).*/\1/')
|
||||
if echo "$INSTALLED_GCC_VERSION $GCC_MIN_VERSION" | awk '{exit !($1 < $2)}'; then
|
||||
RUN_HIPIFY_TESTS=false
|
||||
echo "Minimum required GCC version: $GCC_MIN_VERSION"
|
||||
echo "Installed GCC version $INSTALLED_GCC_VERSION does not meet the minimum GCC version requirement."
|
||||
echo "Skipping hipify tests"
|
||||
fi
|
||||
|
||||
if $ADDRESS_SANITIZER ; then
|
||||
echo "Skipping hipify tests becasue of Address Sanitizer"
|
||||
RUN_HIPIFY_TESTS=false
|
||||
fi
|
||||
|
||||
if $RUN_HIPIFY_TESTS ; then
|
||||
# TODO: Add option for user defined cuda version?
|
||||
CUDA_VERSION="${CUDA_DEFAULT_VERSION}"
|
||||
CUDNN_VERSION="${CUDNN_DEFAULT_VERSION}"
|
||||
|
||||
if [[ "$DISTRO_ID" == "rhel-8"* || "$DISTRO_NAME" == "sles" || "$DISTRO_ID" == "debian-10" ]]; then
|
||||
EXTRA_PYTHON_PATH=/opt/Python-3.8.13
|
||||
export LD_LIBRARY_PATH=${EXTRA_PYTHON_PATH}/lib:$LD_LIBRARY_PATH
|
||||
fi
|
||||
|
||||
echo "Copy FileCheck into ROCM_INSTALL_PATH"
|
||||
cp "$LIGHTNING_BUILD_PATH/bin/FileCheck" "$LIGHTNING_PATH/bin/FileCheck"
|
||||
fi
|
||||
|
||||
cmake \
|
||||
-DHIPIFY_CLANG_TESTS="$RUN_HIPIFY_TESTS" \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=$ROCM_INSTALL_PATH \
|
||||
-DCMAKE_PREFIX_PATH="$LIGHTNING_PATH" \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DHIPIFY_INSTALL_CLANG_HEADERS="$INSTALL_CLANG_HEADERS" \
|
||||
-DCUDA_TOOLKIT_ROOT_DIR="/usr/local/cuda-${CUDA_DEFAULT_VERSION}" \
|
||||
-DCUDA_DNN_ROOT_DIR="/usr/local/cuDNN/${CUDNN_DEFAULT_VERSION}" \
|
||||
-DCUDA_CUB_ROOT_DIR="/usr/local/cuda-${CUDA_DEFAULT_VERSION}" \
|
||||
-DLLVM_EXTERNAL_LIT="${LIGHTNING_BUILD_PATH}/bin/llvm-lit" \
|
||||
$HIPIFY_ROOT
|
||||
|
||||
if $RUN_HIPIFY_TESTS ; then
|
||||
echo "Running hipify tests"
|
||||
cmake --build . -- $MAKEOPTS test-hipify
|
||||
fi
|
||||
|
||||
cmake --build . -- $MAKEOPTS install
|
||||
popd
|
||||
|
||||
pushd "$HIPIFY_ROOT"
|
||||
HIPIFY_CLANG_HASH=`git describe --dirty --long --match [0-9]* --always`
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_hipify
|
||||
;;
|
||||
(build)
|
||||
build_hipify
|
||||
package_hipify
|
||||
build_wheel "$HIPIFY_CLANG_BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,89 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipRAND
|
||||
|
||||
while [ "$1" != "" ];
|
||||
do
|
||||
case $1 in
|
||||
-o | --outdir )
|
||||
shift 1; PKGTYPE=$1 ; TARGET="outdir" ;;
|
||||
-c | --clean )
|
||||
TARGET="clean" ;;
|
||||
*)
|
||||
break ;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
build_hiprand() {
|
||||
echo "Start build"
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
remote_name=$(git remote show | head -n 1)
|
||||
[ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin
|
||||
git submodule update --init --force
|
||||
|
||||
mkdir "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DBUILD_TEST=ON \
|
||||
-DBUILD_BENCHMARK=ON \
|
||||
-DBUILD_CRUSH_TEST=ON \
|
||||
-DDEPENDENCIES_FORCE_DOWNLOAD=ON \
|
||||
-DHIP_COMPILER=clang \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
}
|
||||
|
||||
clean_hiprand() {
|
||||
echo "Cleaning hipRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
build) build_hiprand; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hiprand ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,76 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipSOLVER
|
||||
|
||||
build_hipsolver() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
CXX_FLAG=$(set_build_variables __CMAKE_CXX_PARAMS__)
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
CXX=$(set_build_variables __AMD_CLANG_++__)
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
echo "FC compiler: $FC"
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
rebuild_lapack
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
-DUSE_CUDA=OFF \
|
||||
-DCMAKE_CXX_COMPILER=${CXX} \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
${CXX_FLAG} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipsolver() {
|
||||
echo "Cleaning hipSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipsolver; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipsolver ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,75 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
PATH=${ROCM_PATH}/bin:$PATH
|
||||
set_component_src hipSPARSE
|
||||
|
||||
build_hipsparse() {
|
||||
echo "Start build"
|
||||
|
||||
CXX=$(set_build_variables __G_++__)
|
||||
CXX_FLAG=
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
CXX=$(set_build_variables __CXX__)
|
||||
CXX_FLAG=$(set_build_variables __CMAKE_CXX_PARAMS__)
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DUSE_CUDA=OFF \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
${CXX_FLAG} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hipsparse() {
|
||||
echo "Cleaning hipSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipsparse; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipsparse ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,120 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipSPARSELt
|
||||
|
||||
disable_debug_package_generation
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
set_gpu_arch "$ENABLE_GPU_ARCH"
|
||||
else
|
||||
# gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942
|
||||
set_gpu_arch "all"
|
||||
fi
|
||||
while [ "$1" != "" ];
|
||||
do
|
||||
case $1 in
|
||||
-o | --outdir )
|
||||
shift 1; PKGTYPE=$1 ; TARGET="outdir" ;;
|
||||
-c | --clean )
|
||||
TARGET="clean" ;;
|
||||
*)
|
||||
break ;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
create_blis_link()
|
||||
{
|
||||
#find the pre-installed blis library and create the link under $BUILD_DIR/deps/blis
|
||||
BLIS_REF_ROOT="$BUILD_DIR/deps/blis"
|
||||
mkdir -p "$BLIS_REF_ROOT"/include
|
||||
if [[ -e "/opt/AMD/aocl/aocl-linux-gcc-4.2.0/gcc/lib_ILP64/libblis-mt.a" ]]; then
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.2.0/gcc/include_ILP64 ${BLIS_REF_ROOT}/include/blis
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.2.0/gcc/lib_ILP64 ${BLIS_REF_ROOT}/lib
|
||||
elif [[ -e "/opt/AMD/aocl/aocl-linux-gcc-4.1.0/gcc/lib_ILP64/libblis-mt.a" ]]; then
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.1.0/gcc/include_ILP64 ${BLIS_REF_ROOT}/include/blis
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.1.0/gcc/lib_ILP64 ${BLIS_REF_ROOT}/lib
|
||||
elif [[ -e "/opt/AMD/aocl/aocl-linux-gcc-4.0.0/gcc/lib_ILP64/libblis-mt.a" ]]; then
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.0.0/gcc/include_ILP64 ${BLIS_REF_ROOT}/include/blis
|
||||
ln -sf /opt/AMD/aocl/aocl-linux-gcc-4.0.0/gcc/lib_ILP64 ${BLIS_REF_ROOT}/lib
|
||||
elif [[ -e "/usr/local/lib/libblis.a" ]]; then
|
||||
ln -sf /usr/local/include/blis ${BLIS_REF_ROOT}/include/blis
|
||||
ln -sf /usr/local/lib ${BLIS_REF_ROOT}/lib
|
||||
else
|
||||
echo "error: BLIS lib not found."
|
||||
fi
|
||||
}
|
||||
|
||||
build_hipsparselt() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
create_blis_link
|
||||
EXTRA_CMAKE_OPTIONS="-DLINK_BLIS=ON -DBUILD_DIR=${BUILD_DIR}"
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX=$(set_build_variables __CXX__) \
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DTensile_LOGIC= \
|
||||
-DTensile_CODE_OBJECT_VERSION=default \
|
||||
-DTensile_CPU_THREADS= \
|
||||
-DTensile_LIBRARY_FORMAT=msgpack \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
${EXTRA_CMAKE_OPTIONS} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
$SCCACHE_BIN -s || echo "Unable to display sccache stats"
|
||||
}
|
||||
|
||||
clean_hipsparselt() {
|
||||
echo "Cleaning hipSPARSELt build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
build) build_hipsparselt; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hipsparselt ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src hipTensor
|
||||
disable_debug_package_generation
|
||||
|
||||
build_hiptensor() {
|
||||
echo "Start build hipTensor"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd "$COMPONENT_SRC"
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
-B "${BUILD_DIR}" \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
"$(set_build_variables __CMAKE_CC_PARAMS__)" \
|
||||
"$(set_build_variables __CMAKE_CXX_PARAMS__)" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_hiptensor() {
|
||||
echo "Cleaning hipTensor build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_hiptensor; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_hiptensor ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,151 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of hsa. It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
PROJ_NAME="rocr"
|
||||
TARGET="build"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_SRC="$(getSrcPath)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
PACKAGE_BIN="$(getBinPath)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$PROJ_NAME"
|
||||
MAKEARG=""
|
||||
CORE_BUILD_DIR="$(getBuildPath hsa-core)"
|
||||
ROCR_DEV_BUILD_DIR="$(getBuildPath hsa-rocr-dev)"
|
||||
PREFIX_PATH="$PACKAGE_ROOT"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
unset HIP_DEVICE_LIB_PATH
|
||||
unset ROCM_PATH
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo: --long help,clean,release,static,wheel,address_sanitizer,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_hsa() {
|
||||
echo "Cleaning HSA"
|
||||
|
||||
rm -rf "$CORE_BUILD_DIR"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -f "$PACKAGE_ROOT"/lib/libhsa-runtime*
|
||||
rm -rf "$PACKAGE_ROOT/lib/cmake/hsa-runtime64"
|
||||
rm -rf "$PACKAGE_ROOT/include/hsa"
|
||||
rm -rf "$PACKAGE_ROOT/share/doc/hsa-runtime64"
|
||||
# Remove when switching to flat directory layout.
|
||||
rm -rf "$PACKAGE_ROOT/hsa"
|
||||
}
|
||||
|
||||
|
||||
build_hsa_core() {
|
||||
echo "Build HSA"
|
||||
local coreMakeOpts="$DASH_JAY -C $CORE_BUILD_DIR"
|
||||
|
||||
echo "$HSA_CORE_ROOT"
|
||||
|
||||
if [ ! -d "$CORE_BUILD_DIR" ]; then
|
||||
mkdir -p "$CORE_BUILD_DIR"
|
||||
pushd "$CORE_BUILD_DIR"
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
cmake $(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
"$HSA_CORE_ROOT"
|
||||
popd
|
||||
fi
|
||||
time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts
|
||||
time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts install
|
||||
time cmake --build "$CORE_BUILD_DIR" -- $coreMakeOpts package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" $CORE_BUILD_DIR/hsa-rocr*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" $CORE_BUILD_DIR/hsa-rocr*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_hsa
|
||||
;;
|
||||
(build)
|
||||
build_hsa_core
|
||||
build_wheel "$CORE_BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,73 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src MIOpen
|
||||
|
||||
build_miopen_mlir() {
|
||||
echo "Building rocMLIR"
|
||||
mlir_commit="$1"
|
||||
if [ -z "$mlir_commit" ]; then
|
||||
echo "rocMLIR entry was not found in requirements.txt"
|
||||
return
|
||||
fi
|
||||
mkdir -p /var/tmp/rocMLIR && cd /var/tmp/rocMLIR
|
||||
wget -nv "https://www.github.com/ROCmSoftwarePlatform/rocMLIR/archive/${mlir_commit}.tar.gz"
|
||||
tar -xzf "${mlir_commit}.tar.gz"
|
||||
cd "rocMLIR-${mlir_commit}"
|
||||
mkdir build && cd build
|
||||
cmake \
|
||||
-G Ninja \
|
||||
-DCMAKE_C_COMPILER="$(set_build_variables __CLANG__)" \
|
||||
-DCMAKE_CXX_COMPILER="$(set_build_variables __CLANG++__)" \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_PATH};${HOME}/miopen-deps" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_PATH" \
|
||||
-DBUILD_FAT_LIBROCKCOMPILER=1 \
|
||||
..
|
||||
cmake --build . -- librockCompiler -j${PROC}
|
||||
cmake --build . -- install
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
|
||||
echo "Finished building rocMLIR"
|
||||
}
|
||||
|
||||
clean_miopen_mlir() {
|
||||
echo "Cleaning rocMLIR"
|
||||
rm -rf /var/tmp/rocMLIR
|
||||
}
|
||||
|
||||
build_miopen_deps() {
|
||||
echo "Start build"
|
||||
cd "$COMPONENT_SRC"
|
||||
|
||||
# Commenting the rocMLIR & composable_kernel from requirements.txt
|
||||
sed -i '/ROCm\/rocMLIR@\|ROCm\/composable_kernel@/s/^/#/' requirements.txt
|
||||
# Extract MLIR commit from requirements.txt
|
||||
MLIR_COMMIT="$(awk '/rocMLIR/ {split($1, s, "@"); print s[2]}' requirements.txt)"
|
||||
|
||||
|
||||
pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz
|
||||
PATH="${PATH}:${ROCM_PATH}:${HOME}/.local/bin" rbuild prepare -d "$HOME/miopen-deps" --cxx="$(set_build_variables __CLANG++__)" --cc "$(set_build_variables __CLANG__)"
|
||||
build_miopen_mlir "$MLIR_COMMIT"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_miopen_deps() {
|
||||
echo "Cleaning MIOpen-Deps build directory: ${BUILD_DIR}"
|
||||
rm -rf "$BUILD_DIR"
|
||||
clean_miopen_mlir
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_miopen_deps ;;
|
||||
outdir) ;;
|
||||
clean) clean_miopen_deps ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,71 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src MIOpen
|
||||
|
||||
PACKAGE_DIR=${PACKAGE_DIR%\/*}/miopen-hip
|
||||
DEB_PATH=$PACKAGE_DIR
|
||||
RPM_PATH=$PACKAGE_DIR
|
||||
|
||||
disable_debug_package_generation
|
||||
|
||||
build_miopen_hip() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
git config --global --add safe.directory "$COMPONENT_SRC"
|
||||
checkout_lfs
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
mkdir "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DMIOPEN_BACKEND=HIP \
|
||||
-DMIOPEN_OFFLINE_COMPILER_PATHS_V2=1 \
|
||||
-DCMAKE_CXX_COMPILER=$(set_build_variables __CLANG++__) \
|
||||
-DCMAKE_C_COMPILER=$(set_build_variables __CLANG__) \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/hip;${HOME}/miopen-deps" \
|
||||
-DHIP_OC_COMPILER="${ROCM_PATH}/bin/clang-ocl" \
|
||||
-DMIOPEN_TEST_DISCRETE=OFF \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf $BUILD_DIR/_CPack_Packages/ && find $BUILD_DIR -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_miopen_hip() {
|
||||
echo "Cleaning MIOpen-HIP build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
checkout_lfs() {
|
||||
git lfs install --local --force
|
||||
git lfs pull --exclude=
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_miopen_hip; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_miopen_hip ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,70 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src MIVisionX
|
||||
BUILD_DEV=ON
|
||||
|
||||
build_mivisionx() {
|
||||
|
||||
if [ "$DISTRO_ID" = "mariner-2.0" ] || [ "$DISTRO_ID" = "azurelinux-3.0" ] ; then
|
||||
echo "Not building mivisionx for ${DISTRO_ID}. Exiting..."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
CXX=$(set_build_variables __AMD_CLANG_++__)
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# Setting BUILD_DEV to OFF. This will prevent the installation of
|
||||
# header files, other files in share,libexec folder. ASAN pkg doesn't need this
|
||||
BUILD_DEV=OFF
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DROCM_PATH="$ROCM_PATH" \
|
||||
-DBUILD_DEV=$BUILD_DEV \
|
||||
-DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \
|
||||
-DROCM_DEP_ROCMCORE=ON \
|
||||
-DROCAL_PYTHON=OFF \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cpack -G ${PKGTYPE^^}
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_mivisionx() {
|
||||
echo "Cleaning MIVisionX build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_mivisionx; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_mivisionx ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,149 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -w, --wheel Creates python wheel package of omniperf.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="omniperf"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
# PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraso:p:w --long help,clean,release,static,address_sanitizer,outdir:,package:,wheel -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2" ; shift 2 ;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
--) shift; break;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET"
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars "$API_NAME" "$TARGET" "$BUILD_TYPE" "$SHARED_LIBS" "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET"
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME:?}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME:?}"*
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
if [ "$DISTRO_ID" = centos-7 ]; then
|
||||
echo "Skip make and uploading packages for Omniperf on Centos7 distro, due to python dependency"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR" || exit
|
||||
|
||||
echo "ROCm CMake Params: $(rocm_cmake_params)"
|
||||
echo "ROCm Common CMake Params: $(rocm_common_cmake_params)"
|
||||
|
||||
#install python deps
|
||||
#python3 -m pip install -t ${BUILD_DIR}/python-libs -r ${OMNIPERF_ROOT}/requirements.txt
|
||||
print_lib_type $SHARED_LIBS
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCHECK_PYTHON_DEPS=NO \
|
||||
-DPYTHON_DEPS=${BUILD_DIR}/python-libs \
|
||||
-DMOD_INSTALL_PATH=${BUILD_DIR}/modulefiles \
|
||||
"$OMNIPERF_ROOT"
|
||||
fi
|
||||
make $MAKE_OPTS
|
||||
make $MAKE_OPTS install
|
||||
make $MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo "${PACKAGE_DEB}";;
|
||||
("rpm")
|
||||
echo "${PACKAGE_RPM}";;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,243 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -w, --wheel Creates python wheel package of omnitrace.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="omnitrace"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
# PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME"
|
||||
# PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="-j 8"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
ASAN=0
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraso:p:w --long help,clean,release,address_sanitizer,static,outdir:,package:,wheel -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo"
|
||||
shift
|
||||
;;
|
||||
-a | --address_sanitizer)
|
||||
ack_and_ignore_asan
|
||||
# set_asan_env_vars
|
||||
# set_address_sanitizer_on
|
||||
|
||||
ASAN=1
|
||||
shift
|
||||
;;
|
||||
-s | --static)
|
||||
SHARED_LIBS="OFF"
|
||||
shift
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
# OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2"
|
||||
shift 2
|
||||
;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME:?}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME:?}"*
|
||||
}
|
||||
|
||||
build_omnitrace() {
|
||||
echo "Building $PROJ_NAME"
|
||||
if [ "$DISTRO_ID" = "mariner-2.0" ] || [ "$DISTRO_ID" = "ubuntu-24.04" ] || [ "$DISTRO_ID" = "azurelinux-3.0" ]; then
|
||||
echo "Skip make and uploading packages for Omnitrace on \"${DISTRO_ID}\" distro"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $ASAN == 1 ]; then
|
||||
echo "Skip make and uploading packages for Omnitrace on ASAN build"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
echo "Created build directory: $BUILD_DIR"
|
||||
fi
|
||||
|
||||
cd $OMNITRACE_ROOT || exit
|
||||
|
||||
echo "Current submodule status"
|
||||
git submodule status
|
||||
echo "Cached (old) submodule status"
|
||||
git submodule status --cached
|
||||
cat .git/config
|
||||
|
||||
echo "Updating submodules"
|
||||
git submodule init
|
||||
# copy the new URL to your local config
|
||||
git submodule sync --recursive
|
||||
# force update the submodule from the new URL
|
||||
git submodule update --init --recursive --force
|
||||
|
||||
echo "Updated submodule status"
|
||||
git submodule status
|
||||
cat .git/config
|
||||
|
||||
echo "Build directory: $BUILD_DIR"
|
||||
pushd "$BUILD_DIR" || exit
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
ELFUTIL_URL="https://compute-artifactory.amd.com/artifactory/rocm-generic-local/dev-tools/omnitrace/elfutils-0.188.tar.bz2"
|
||||
BINUTIL_URL="https://compute-artifactory.amd.com/artifactory/rocm-generic-local/dev-tools/omnitrace/binutils-2.40.tar.gz"
|
||||
|
||||
echo "ROCm CMake Params: $(rocm_cmake_params)"
|
||||
echo "ROCm Common CMake Params: $(rocm_common_cmake_params)"
|
||||
echo "ELFUTIL_URL=$ELFUTIL_URL, BINUTIL_URL=$BINUTIL_URL"
|
||||
|
||||
if [ $ASAN == 1 ]; then
|
||||
echo "Address Sanitizer path"
|
||||
|
||||
# Commenting out the below cmake command as it is not working as expected
|
||||
# LD_LIBRARY_PATH=$ROCM_INSTALL_PATH/lib/asan:$LD_LIBRARY_PATH
|
||||
# cmake \
|
||||
# $(rocm_cmake_params) \
|
||||
# $(rocm_common_cmake_params) \
|
||||
# -DOMNITRACE_BUILD_{LIBUNWIND,DYNINST}=ON \
|
||||
# -DDYNINST_BUILD_{TBB,BOOST,ELFUTILS,LIBIBERTY}=ON \
|
||||
# -DAMDDeviceLibs_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/AMDDeviceLibs" \
|
||||
# -Dhip_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip" \
|
||||
# -Dhip-lang_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip-lang" \
|
||||
# -Damd_comgr_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/amd_comgr" \
|
||||
# -Dhsa-runtime64_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsa-runtime64" \
|
||||
# -Dhsakmt_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsakmt" \
|
||||
# -DROCM_PATH="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -Drocprofiler_ROOT_DIR="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCMAKE_HIP_COMPILER_ROCM_ROOT="${ROCM_INSTALL_PATH}" \
|
||||
# -DCMAKE_PREFIX_PATH="${ROCM_INSTALL_PATH};${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCMAKE_LIBRARY_PATH="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=OFF \
|
||||
# "$OMNITRACE_ROOT"
|
||||
|
||||
else
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DOMNITRACE_BUILD_{LIBUNWIND,DYNINST}=ON \
|
||||
-DDYNINST_BUILD_{TBB,BOOST,ELFUTILS,LIBIBERTY}=ON \
|
||||
-DElfUtils_DOWNLOAD_URL="$ELFUTIL_URL" \
|
||||
-D{DYNINST,TIMEMORY}_BINUTILS_DOWNLOAD_URL="$BINUTIL_URL" \
|
||||
"$OMNITRACE_ROOT"
|
||||
fi
|
||||
|
||||
|
||||
popd || exit
|
||||
|
||||
echo "Make Options: $MAKE_OPTS"
|
||||
cmake --build "$BUILD_DIR" --target all -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target install -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target package -- $MAKE_OPTS
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo "${PACKAGE_DEB}"
|
||||
;;
|
||||
"rpm")
|
||||
echo "${PACKAGE_RPM}"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
clean) clean ;;
|
||||
build) build_omnitrace; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,128 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
PROJ_NAME=opencl-cts
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
BUILD_TYPE="Debug"
|
||||
OPENCL_ICD_LOADER_BUILD_DIR="$(getBuildPath)/OpenCL-ICD-Loader"
|
||||
OPENCL_CTS_BUILD_DIR="$(getBuildPath)/OpenCL-CTS"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
MAKETARGET="deb"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -w, --wheel Creates python wheel package of opencl-cts.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -o, --outdir Print path of output directory containing packages"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
return 0
|
||||
}
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $TARGET $BUILD_TYPE $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_opencl_cts() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$OPENCL_CTS_BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/opencl-cts"
|
||||
}
|
||||
|
||||
build_opencl_cts() {
|
||||
echo "Building $PROJ_NAME"
|
||||
mkdir -p "$OPENCL_CTS_BUILD_DIR"
|
||||
pushd "$OPENCL_CTS_BUILD_DIR"
|
||||
if [ ! -e Makefile ]; then
|
||||
cmake \
|
||||
-S "$OPENCL_CTS_ROOT" \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCL_INCLUDE_DIR="$OPENCL_HEADERS_ROOT" \
|
||||
-DCL_LIB_DIR="$OPENCL_ICD_LOADER_BUILD_DIR" \
|
||||
-DOPENCL_LIBRARIES="-lOpenCL -lpthread" \
|
||||
-DGL_IS_SUPPORTED="ON"
|
||||
fi
|
||||
cmake --build . -- $MAKEOPTS
|
||||
popd
|
||||
}
|
||||
|
||||
package_opencl_cts() {
|
||||
echo "Packaging $PROJ_NAME"
|
||||
pushd "$OPENCL_CTS_BUILD_DIR"
|
||||
cmake --build . -- package
|
||||
mkdir -p $PACKAGE_DEB
|
||||
mkdir -p $PACKAGE_RPM
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswlo:p: --long help,clean,release,static,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-c | --clean )
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release )
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-h | --help )
|
||||
printUsage ; exit 0 ;;
|
||||
(-a | --address_sanitizer)
|
||||
ack_and_ignore_asan ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
(-s | --static)
|
||||
echo "-s parameter accepted but ignored" ; shift ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
done
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_opencl_cts ;;
|
||||
(build) build_opencl_cts ; package_opencl_cts; build_wheel "$OPENCL_ICD_LOADER_BUILD_DIR" "$PROJ_NAME";;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,144 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
PROJ_NAME="OpenCL-ICD-Loader"
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
BUILD_TYPE="Debug"
|
||||
OPENCL_ICD_LOADER_BUILD_DIR="$(getBuildPath ${PROJ_NAME})"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/${PROJ_NAME,,}"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/${PROJ_NAME,,}"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
MAKETARGET="deb"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -w, --wheel Creates python wheel package of opencl-icd-loader.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -o, --outdir Print path of output directory containing packages"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
return 0
|
||||
}
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $TARGET $BUILD_TYPE $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_opencl_icd_loader() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$OPENCL_ICD_LOADER_BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/opencl-icd-loader"
|
||||
}
|
||||
|
||||
build_opencl_icd_loader() {
|
||||
echo "Building $PROJ_NAME"
|
||||
if [ ! -e "$OPENCL_ICD_LOADER_ROOT/CMakeLists.txt" ]
|
||||
then
|
||||
echo "No $OPENCL_ICD_LOADER_ROOT/CMakeLists.txt file, skipping opencl icd loader" >&2
|
||||
echo "No $OPENCL_ICD_LOADER_ROOT/CMakeLists.txt file, skipping opencl icd loader"
|
||||
exit 0 # This is not an error
|
||||
fi
|
||||
|
||||
mkdir -p "$OPENCL_ICD_LOADER_BUILD_DIR"
|
||||
pushd "$OPENCL_ICD_LOADER_BUILD_DIR"
|
||||
if [ ! -e Makefile ]; then
|
||||
cmake \
|
||||
-S "$OPENCL_ICD_LOADER_ROOT" \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DENABLE_OPENCL_LAYERS="OFF" \
|
||||
-DOPENCL_ICD_LOADER_HEADERS_DIR="$OPENCL_HEADERS_ROOT"
|
||||
fi
|
||||
cmake --build . -- $MAKEOPTS
|
||||
echo "Installing opencl-icd-loader"
|
||||
cmake --build . -- $MAKEOPTS install
|
||||
popd
|
||||
}
|
||||
|
||||
package_opencl_icd_loader() {
|
||||
echo "Packaging $PROJ_NAME"
|
||||
pushd "$OPENCL_ICD_LOADER_BUILD_DIR"
|
||||
cmake --build . -- package
|
||||
mkdir -p $PACKAGE_DEB
|
||||
mkdir -p $PACKAGE_RPM
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswlo:p: --long help,clean,release,wheel,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-c | --clean )
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release )
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-h | --help )
|
||||
printUsage ; exit 0 ;;
|
||||
(-a | --address_sanitizer)
|
||||
ack_and_ignore_asan ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
(-s | --static)
|
||||
echo "-s parameter accepted but ignored" ; shift ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
done
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_opencl_icd_loader
|
||||
;;
|
||||
(build)
|
||||
build_opencl_icd_loader
|
||||
package_opencl_icd_loader
|
||||
build_wheel "$OPENCL_ICD_LOADER_BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,176 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -w, --wheel Creates python wheel package of opencl.
|
||||
It needs to be used along with -r option"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
PROJ_NAME="opencl-on-rocclr"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
BUILD_PATH="$(getBuildPath $PROJ_NAME)"
|
||||
TARGET="build"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
CORE_BUILD_DIR="$(getBuildPath hsa-core)"
|
||||
ROCclr_BUILD_DIR="$(getBuildPath rocclr)"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcrawso: --long help,clean,release,static,wheel,address_sanitizer,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_opencl_on_rocclr() {
|
||||
# Delete cmake output directory
|
||||
rm -rf "$BUILD_PATH"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/bin/clinfo"
|
||||
rm -rf "$PACKAGE_ROOT/lib/libOpenCL.so*"
|
||||
rm -rf "$PACKAGE_ROOT/lib/libamdocl64.so"
|
||||
rm -rf "$PACKAGE_ROOT/lib/libcltrace.so"
|
||||
}
|
||||
|
||||
build_opencl_on_rocclr() {
|
||||
# TODO This if condition is a temporary workaround so that mainline builds dont error out
|
||||
# until build migrated from opencl to clr repo
|
||||
if [ -e "$CLR_ROOT/CMakeLists.txt" ]; then
|
||||
# We are in a branch that has migrated to clr repo
|
||||
_OCL_CMAKELIST_DIR="$CLR_ROOT"
|
||||
_OCL_CMAKELIST_OPT="-DCLR_BUILD_HIP=OFF -DCLR_BUILD_OCL=ON"
|
||||
elif [ ! -e "$OPENCL_ON_ROCclr_ROOT/CMakeLists.txt" ]; then
|
||||
# We seem to have hit a branch in which both the old and the new repo don't exist
|
||||
echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr" >&2
|
||||
echo "No $OPENCL_ON_ROCclr_ROOT/CMakeLists.txt file, skipping opencl on rocclr"
|
||||
exit 0 # This is not an error
|
||||
else
|
||||
# We are in a branch that has not yet migrated to clr repo yet
|
||||
_OCL_CMAKELIST_DIR="$OPENCL_ON_ROCclr_ROOT"
|
||||
_OCL_CMAKELIST_OPT=""
|
||||
fi
|
||||
|
||||
echo "$_OCL_CMAKELIST_DIR"
|
||||
mkdir -p "$BUILD_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
|
||||
# FIXME: Remove -DROCclr_DIR/LIBROCclr_STATIC_DIR
|
||||
if [ ! -e Makefile ]; then
|
||||
echo "Building OpenCL-On-ROCclr CMake environment"
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DUSE_COMGR_LIBRARY=ON \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DLINK_COMGR_STATIC="no" \
|
||||
-DBUILD_TESTS=ON \
|
||||
$_OCL_CMAKELIST_OPT \
|
||||
"$_OCL_CMAKELIST_DIR"
|
||||
|
||||
echo "CMake complete"
|
||||
fi
|
||||
|
||||
echo "Building OpenCL-On-ROCclr"
|
||||
cmake --build . -- $MAKEOPTS
|
||||
|
||||
echo "Installing OpenCL-On-ROCclr"
|
||||
cmake --build . -- $MAKEOPTS install
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
package_opencl_on_rocclr() {
|
||||
echo "Packaging OpenCL-On-ROCclr"
|
||||
pushd "$BUILD_PATH"
|
||||
cmake --build . -- package
|
||||
mkdir -p $PACKAGE_DEB
|
||||
mkdir -p $PACKAGE_RPM
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" *.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" *.rpm
|
||||
popd
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_opencl_on_rocclr
|
||||
;;
|
||||
(build)
|
||||
build_opencl_on_rocclr
|
||||
package_opencl_on_rocclr
|
||||
build_wheel "$BUILD_PATH" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,852 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ${BASH_SOURCE%/*}/compute_utils.sh
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -w, --wheel Creates python wheel package of openmp-extras.
|
||||
It needs to be used along with -r option"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param for configuring package deps"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
PROJ_NAME="openmp-extras"
|
||||
packageMajorVersion="18.63"
|
||||
packageMinorVersion="0"
|
||||
packageVersion="${packageMajorVersion}.${packageMinorVersion}.${ROCM_LIBPATCH_VERSION}"
|
||||
BUILD_PATH="$(getBuildPath $PROJ_NAME)"
|
||||
DEB_PATH="$(getDebPath $PROJ_NAME)"
|
||||
RPM_PATH="$(getRpmPath $PROJ_NAME)"
|
||||
TARGET="build"
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
STATIC_PKG_DEPS="OFF"
|
||||
|
||||
# Should only need to update this variable when moving
|
||||
# to the new ROCM_INSTALL_PATH.
|
||||
export INSTALL_PREFIX=${ROCM_INSTALL_PATH}
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,address_sanitizer,static,outdir,wheel:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
-c | --clean )
|
||||
TARGET="clean" ;;
|
||||
-p | --package )
|
||||
TARGET="package" ;;
|
||||
-r | --release )
|
||||
;;
|
||||
-a | --address_sanitizer )
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# The path will be appended to cmake prefix path for asan builds
|
||||
# Required for finding cmake config files for asan builds
|
||||
export ROCM_CMAKECONFIG_PATH="$INSTALL_PREFIX/lib/asan/cmake"
|
||||
export VERBOSE=1
|
||||
# openmp debug build of ompd uses python build, which defaults to gcc
|
||||
export LDSHARED="$INSTALL_PREFIX/lib/llvm/bin/clang -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2"
|
||||
# SANITIZER is used in openmp-debug build scripts so that the asan C/CXX Flags are not overwritten
|
||||
export SANITIZER=1 ;;
|
||||
-o | --outdir )
|
||||
shift 1; PKGTYPE=$1 ; TARGET="outdir" ;;
|
||||
-w | --wheel )
|
||||
WHEEL_PACKAGE=true ;;
|
||||
-s | --static )
|
||||
export STATIC_PKG_DEPS="ON" ;;
|
||||
-h | --help )
|
||||
printUsage ; exit 0 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
*)
|
||||
MAKEARG=$@ ; break ;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
|
||||
clean_openmp_extras() {
|
||||
# Delete cmake output and install directory
|
||||
rm -rf "$BUILD_PATH"
|
||||
rm -rf "$INSTALL_PREFIX/openmp-extras"
|
||||
}
|
||||
|
||||
toStdoutStderr(){
|
||||
printf '%s\n' "$@" >&2
|
||||
printf '%s\n' "$@"
|
||||
}
|
||||
|
||||
clean_examples(){
|
||||
rm -f "$1"/*.sh
|
||||
rm -f "$1"/fortran/*.sh
|
||||
rm -f "$1"/openmp/*.sh
|
||||
}
|
||||
|
||||
build_openmp_extras() {
|
||||
mkdir -p "$BUILD_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
echo "Building openmp-extras"
|
||||
echo BUILD_PATH: $BUILD_PATH
|
||||
echo "INSTALL_PREFIX:$INSTALL_PREFIX"
|
||||
export AOMP_STANDALONE_BUILD=0
|
||||
# FIXME: Check the build scripts to see if support for DEVEL package
|
||||
# is on. This can be removed once the old packaging logic is gone. This
|
||||
# may return a non-zero, so for now do not error out the script.
|
||||
set +e
|
||||
checkDevel=$(grep "ENABLE_DEVEL_PACKAGE=ON" $AOMP_REPOS/aomp/bin/build_openmp.sh)
|
||||
set -e
|
||||
if [ "$checkDevel" == "" ]; then
|
||||
export AOMP=$INSTALL_PREFIX/lib/llvm
|
||||
else
|
||||
export DEVEL_PACKAGE="devel/"
|
||||
export AOMP=$INSTALL_PREFIX/openmp-extras
|
||||
fi
|
||||
export BUILD_AOMP=$BUILD_PATH
|
||||
|
||||
# EPSDB does not build hsa, we need to pick it up from ROCm install location.
|
||||
if [ "$EPSDB" == "1" ]; then
|
||||
export ROCM_DIR=$ROCM_INSTALL_PATH
|
||||
else
|
||||
export ROCM_DIR=$INSTALL_PREFIX
|
||||
fi
|
||||
|
||||
if [ -d "$ROCM_DIR" ]; then
|
||||
echo "--------------------------"
|
||||
echo "ROCM_DIR:"
|
||||
echo "----------"
|
||||
ls $ROCM_DIR
|
||||
echo "--------------------------"
|
||||
fi
|
||||
if [ -d "$ROCM_DIR"/include ]; then
|
||||
echo "ROCM_DIR/include:"
|
||||
echo "----------"
|
||||
ls $ROCM_DIR/include
|
||||
echo "--------------------------"
|
||||
fi
|
||||
if [ -d "$ROCM_DIR"/include/hsa ]; then
|
||||
echo "ROCM_DIR/include/hsa:"
|
||||
echo "----------"
|
||||
ls $ROCM_DIR/include/hsa
|
||||
echo "--------------------------"
|
||||
fi
|
||||
|
||||
export AOMP_JENKINS_BUILD_LIST="extras openmp pgmath flang flang_runtime"
|
||||
echo "BEGIN Build of openmp-extras"
|
||||
"$AOMP_REPOS"/aomp/bin/build_aomp.sh $MAKEARG
|
||||
|
||||
# Create symlinks for omp headers. Stage 2 components need these.
|
||||
local llvm_ver=`$INSTALL_PREFIX/lib/llvm/bin/clang --print-resource-dir | sed 's^/llvm/lib/clang/^ ^' | awk '{print $2}'`
|
||||
if [ ! -e $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp.h ] ; then
|
||||
if [ ! -h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp.h ] ; then
|
||||
ln -s ../../../../include/omp.h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp.h
|
||||
fi
|
||||
fi
|
||||
if [ ! -e $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/ompt.h ] ; then
|
||||
if [ ! -h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/ompt.h ] ; then
|
||||
ln -s ../../../../include/ompt.h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/ompt.h
|
||||
fi
|
||||
fi
|
||||
if [ ! -e $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp-tools.h ] ; then
|
||||
if [ ! -h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp-tools.h ] ; then
|
||||
ln -s ../../../../include/omp-tools.h $ROCM_INSTALL_PATH/lib/llvm/lib/clang/$llvm_ver/include/omp-tools.h
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
}
|
||||
|
||||
package_openmp_extras_deb() {
|
||||
# Debian packaging
|
||||
local packageName=$1
|
||||
local packageDeb="$packageDir/deb"
|
||||
local packageArch="amd64"
|
||||
local packageMaintainer="Openmp Extras Support <openmp-extras.support@amd.com>"
|
||||
local packageSummary="OpenMP Extras provides openmp and flang libraries."
|
||||
local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 17 and is used for offloading to Radeon GPUs."
|
||||
local debDependencies="rocm-llvm, rocm-device-libs, rocm-core"
|
||||
local debRecommends="gcc, g++"
|
||||
local controlFile="$packageDeb/openmp-extras/DEBIAN/control"
|
||||
|
||||
if [ "$packageName" == "openmp-extras-runtime" ]; then
|
||||
packageType="runtime"
|
||||
if [ "$STATIC_PKG_DEPS" == "OFF" ]; then
|
||||
debDependencies="rocm-core, hsa-rocr"
|
||||
else
|
||||
echo "static package dependency configuration for runtime" ;
|
||||
debDependencies="rocm-core, hsa-rocr-static-dev"
|
||||
fi
|
||||
else
|
||||
local debProvides="openmp-extras"
|
||||
local debConflicts="openmp-extras"
|
||||
local debReplaces="openmp-extras"
|
||||
packageType="devel"
|
||||
if [ "$STATIC_PKG_DEPS" == "OFF" ]; then
|
||||
debDependencies="$debDependencies, openmp-extras-runtime, hsa-rocr-dev"
|
||||
else
|
||||
echo "Enabled static package dependency configuration for dev" ;
|
||||
debDependencies="$debDependencies, openmp-extras-runtime, hsa-rocr-static-dev"
|
||||
fi
|
||||
fi
|
||||
# copyPath = /opt/rocm
|
||||
# installPath = /opt/rocm/lib/llvm
|
||||
# FIXME: openmp-extras/devel logic can be removed once the new packaging lands
|
||||
# New packaging uses installed_files.txt the openmp-extras/devel
|
||||
# directory will no longer exist.
|
||||
if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then
|
||||
if [ "$packageType" == "runtime" ]; then
|
||||
# Cleanup previous packages
|
||||
rm -rf "$packageDir"
|
||||
rm -rf "$DEB_PATH"
|
||||
mkdir -p "$DEB_PATH"
|
||||
mkdir -p $packageDeb/openmp-extras
|
||||
# Licensing
|
||||
# Copy licenses into share/doc/openmp-extras
|
||||
mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras
|
||||
cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2
|
||||
cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit
|
||||
cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang
|
||||
else
|
||||
rm -rf $packageDeb/openmp-extras/*
|
||||
mkdir -p $packageDeb/openmp-extras$copyPath/bin
|
||||
if [ -d "$installPath"/lib-debug/src ]; then
|
||||
cp -r --parents "$installPath"/lib-debug/src $packageDeb/openmp-extras
|
||||
else
|
||||
cp -r --parents "$ompdSrcDir" $packageDeb/openmp-extras
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
if [ "$packageType" == "runtime" ]; then
|
||||
# Cleanup previous packages
|
||||
rm -rf "$packageDir"
|
||||
rm -rf "$DEB_PATH"
|
||||
mkdir -p "$DEB_PATH"
|
||||
mkdir -p $packageDeb/openmp-extras$installPath
|
||||
mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include
|
||||
# Licensing
|
||||
# Copy licenses into share/doc/openmp-extras
|
||||
mkdir -p $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras
|
||||
cp -r $AOMP_REPOS/aomp/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.apache2
|
||||
cp -r $AOMP_REPOS/aomp-extras/LICENSE $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.mit
|
||||
cp -r $AOMP_REPOS/flang/LICENSE.txt $packageDeb/openmp-extras$copyPath/share/doc/openmp-extras/LICENSE.flang
|
||||
else
|
||||
# Clean packageDeb for devel build
|
||||
rm -rf $packageDeb/openmp-extras$installPath/*
|
||||
rm -rf $packageDeb/openmp-extras/bin
|
||||
rm -rf $packageDeb/openmp-extras$copyPath/share
|
||||
echo mkdir -p $packageDeb/openmp-extras$copyPath/bin
|
||||
mkdir -p $packageDeb/openmp-extras$copyPath/bin
|
||||
mkdir -p $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname $controlFile)"
|
||||
|
||||
# Copy openmp-extras files, bin will turn into llvm/bin
|
||||
if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras/devel ]; then
|
||||
if [ "$packageType" == "runtime" ]; then
|
||||
cat "$BUILD_PATH"/build/installed_files.txt | grep -P '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras
|
||||
# libgomp and libiomp5 are not on the install_manifest.txt and need
|
||||
# to be manually copied. Waiting on trunk patch to flow into amd-staging
|
||||
# to ensure these symlinks are in the manifest.
|
||||
cp -d --parents "$installPath/lib/libgomp.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib/libiomp5.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib-debug/libgomp.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib-debug/libiomp5.so" "$packageDeb"/openmp-extras
|
||||
else
|
||||
cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras
|
||||
fi
|
||||
else
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
cp -r "$AOMP"/"$packageType"/* "$packageDeb"/openmp-extras"$installPath"
|
||||
fi
|
||||
|
||||
# Copy examples
|
||||
if [ "$packageType" == "devel" ]; then
|
||||
mkdir -p "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
echo cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
cp -r "$AOMP_REPOS"/aomp/examples/fortran "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
cp -r "$AOMP_REPOS"/aomp/examples/openmp "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
cp -r "$AOMP_REPOS"/aomp/examples/tools "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
if [ -e "$AOMP_REPOS/aomp/examples/Makefile.help" ]; then
|
||||
cp "$AOMP_REPOS"/aomp/examples/Makefile* "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
fi
|
||||
clean_examples "$packageDeb"/openmp-extras"$copyPath"/share/openmp-extras/examples
|
||||
fi
|
||||
|
||||
if [ "$packageType" == "devel" ]; then
|
||||
# Create symbolic links for openmp header files
|
||||
ln -s ../../../../include/omp.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp.h
|
||||
ln -s ../../../../include/ompt.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/ompt.h
|
||||
ln -s ../../../../include/omp-tools.h $packageDeb/openmp-extras$installPath/lib/clang/$llvm_ver/include/omp-tools.h
|
||||
# Only create symlinks if file exists
|
||||
if [ ! -h "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc ] && [ -e "$packageDeb"/openmp-extras"$installPath"/bin/aompcc ]; then
|
||||
ln -s ../lib/llvm/bin/aompcc "$packageDeb"/openmp-extras"$copyPath"/bin/aompcc
|
||||
fi
|
||||
if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mymcpu ]; then
|
||||
ln -s ../lib/llvm/bin/mymcpu "$packageDeb"/openmp-extras"$copyPath"/bin/mymcpu
|
||||
fi
|
||||
if [ -e "$packageDeb"/openmp-extras"$installPath"/bin/mygpu ]; then
|
||||
ln -s ../lib/llvm/bin/mygpu "$packageDeb"/openmp-extras"$copyPath"/bin/mygpu
|
||||
fi
|
||||
fi
|
||||
|
||||
# Inspect
|
||||
ls -l "$packageDeb"/openmp-extras"$installPath"
|
||||
if [ "$packageType" == "devel" ]; then
|
||||
ls -l "$packageDeb"/openmp-extras"$installPath"/bin
|
||||
ls -l "$packageDeb"/openmp-extras"$copyPath"/bin
|
||||
fi
|
||||
|
||||
# Create control file
|
||||
{
|
||||
echo "Package: $packageName"
|
||||
echo "Architecture: $packageArch"
|
||||
echo "Section: devel"
|
||||
echo "Priority: optional"
|
||||
echo "Maintainer: $packageMaintainer"
|
||||
echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}"
|
||||
echo "Depends: $debDependencies"
|
||||
echo "Recommends: $debRecommends"
|
||||
if [ "$packageType" == "devel" ]; then
|
||||
echo "Provides: $debProvides"
|
||||
echo "Conflicts: $debConflicts"
|
||||
echo "Replaces: $debReplaces"
|
||||
fi
|
||||
echo "Description: $packageSummary"
|
||||
echo " $packageSummaryLong"
|
||||
} > $controlFile
|
||||
fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \
|
||||
"$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb"
|
||||
}
|
||||
|
||||
# ASAN debian package
|
||||
package_openmp_extras_asan_deb() {
|
||||
# Debian packaging
|
||||
local packageName=$1
|
||||
local packageDeb="$packageDir/deb"
|
||||
local packageArch="amd64"
|
||||
local packageMaintainer="Openmp Extras Support <openmp-extras.support@amd.com>"
|
||||
local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries."
|
||||
local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 17 and is used for offloading to Radeon GPUs."
|
||||
local debDependencies="hsa-rocr-asan, rocm-core-asan"
|
||||
local debRecommends="gcc, g++"
|
||||
local controlFile="$packageDeb/openmp-extras/DEBIAN/control"
|
||||
local asanLibDir="runtime"
|
||||
|
||||
rm -rf "$packageDir"
|
||||
rm -rf "$DEB_PATH"
|
||||
mkdir -p "$DEB_PATH"
|
||||
# Licensing
|
||||
# Copy licenses into share/doc/openmp-extras-asan
|
||||
local licenseDir="$packageDeb/openmp-extras$copyPath/share/doc/openmp-extras-asan"
|
||||
mkdir -p $licenseDir
|
||||
cp -r $AOMP_REPOS/aomp/LICENSE $licenseDir/LICENSE.apache2
|
||||
cp -r $AOMP_REPOS/aomp-extras/LICENSE $licenseDir/LICENSE.mit
|
||||
cp -r $AOMP_REPOS/flang/LICENSE.txt $licenseDir/LICENSE.flang
|
||||
|
||||
mkdir -p "$(dirname $controlFile)"
|
||||
if [ -f "$BUILD_PATH"/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then
|
||||
cat "$BUILD_PATH"/build/installed_files.txt | grep -P 'asan' | cut -d":" -f2 | cut -d" " -f2 | xargs -I {} cp -d --parents {} "$packageDeb"/openmp-extras
|
||||
# libgomp and libiomp5 are not on the install_manifest.txt and need
|
||||
# to be manually copied. Waiting on trunk patch to flow into amd-staging
|
||||
# to ensure these symlinks are in the manifest.
|
||||
cp -d --parents "$installPath/lib/asan/libgomp.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib/asan/libiomp5.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib-debug/asan/libgomp.so" "$packageDeb"/openmp-extras
|
||||
cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" "$packageDeb"/openmp-extras
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
else
|
||||
mkdir -p $packageDeb/openmp-extras$installPath/lib/asan
|
||||
mkdir -p $packageDeb/openmp-extras$installPath/lib-debug/asan
|
||||
# runtime folder have asan libraries. Copy to asan folder for packaging
|
||||
cp -r "$AOMP"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/
|
||||
cp -r "$AOMP"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/
|
||||
cp -r "$AOMP"/"$asanLibDir"/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/
|
||||
cp -r "$AOMP"/"$asanLibDir"/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/
|
||||
cp -r "$AOMP"/devel/lib/asan/* "$packageDeb"/openmp-extras"$installPath"/lib/asan/
|
||||
cp -r "$AOMP"/devel/lib-debug/asan/* "$packageDeb"/openmp-extras"$installPath"/lib-debug/asan/
|
||||
fi
|
||||
|
||||
# Create control file
|
||||
{
|
||||
echo "Package: $packageName"
|
||||
echo "Architecture: $packageArch"
|
||||
echo "Section: devel"
|
||||
echo "Priority: optional"
|
||||
echo "Maintainer: $packageMaintainer"
|
||||
echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}"
|
||||
echo "Depends: $debDependencies"
|
||||
echo "Recommends: $debRecommends"
|
||||
echo "Description: $packageSummary"
|
||||
echo " $packageSummaryLong"
|
||||
} > $controlFile
|
||||
fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \
|
||||
"$DEB_PATH/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb"
|
||||
}
|
||||
|
||||
|
||||
package_openmp_extras_rpm() {
|
||||
# RPM packaging
|
||||
local packageName=$1
|
||||
local packageRpm="$packageDir/rpm"
|
||||
local specFile="$packageDir/$packageName.spec"
|
||||
local packageSummary="OpenMP Extras provides openmp and flang libraries."
|
||||
local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 17 and is used for offloading to Radeon GPUs."
|
||||
local rpmRequires="rocm-llvm, rocm-device-libs, rocm-core"
|
||||
if [ "$packageName" == "openmp-extras-runtime" ]; then
|
||||
packageType="runtime"
|
||||
if [ "$STATIC_PKG_DEPS" == "OFF" ]; then
|
||||
rpmRequires="rocm-core, hsa-rocr"
|
||||
else
|
||||
rpmRequires="rocm-core, hsa-rocr-static-devel"
|
||||
fi
|
||||
else
|
||||
local rpmProvides="openmp-extras"
|
||||
local rpmObsoletes="openmp-extras"
|
||||
packageType="devel"
|
||||
if [ "$STATIC_PKG_DEPS" == "OFF" ]; then
|
||||
rpmRequires="$rpmRequires, openmp-extras-runtime, hsa-rocr-devel"
|
||||
else
|
||||
rpmRequires="$rpmRequires, openmp-extras-runtime, hsa-rocr-static-devel"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Cleanup previous packages
|
||||
if [ "$packageType" == "runtime" ]; then
|
||||
rm -rf "$packageDir"
|
||||
rm -rf "$RPM_PATH"
|
||||
mkdir -p "$RPM_PATH"
|
||||
fi
|
||||
echo RPM_PATH: $RPM_PATH
|
||||
echo mkdir -p $(dirname $specFile)
|
||||
mkdir -p "$(dirname $specFile)"
|
||||
|
||||
{
|
||||
# FIXME: Remove all conditions for empty packageType when
|
||||
# devel and runtime packaging changes land in mainline.
|
||||
echo "%define is_runtime %( if [ $packageType == runtime ]; then echo "1" ; else echo "0"; fi )"
|
||||
echo "%define is_devel %( if [ $packageType == devel ]; then echo "1" ; else echo "0"; fi )"
|
||||
|
||||
echo "Name: $packageName"
|
||||
echo "Version: $packageVersion"
|
||||
echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}"
|
||||
echo "Summary: $packageSummary"
|
||||
echo "Group: System Environment/Libraries"
|
||||
echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions"
|
||||
echo "Vendor: Advanced Micro Devices, Inc."
|
||||
echo "Prefix: $INSTALL_PREFIX"
|
||||
echo "Requires: $rpmRequires"
|
||||
echo "%if %is_devel"
|
||||
echo "Provides: $rpmProvides"
|
||||
echo "Obsoletes: $rpmObsoletes"
|
||||
echo "%endif"
|
||||
echo "%define debug_package %{nil}"
|
||||
# Redefining __os_install_post to remove stripping
|
||||
echo "%define __os_install_post %{nil}"
|
||||
echo "%description"
|
||||
echo "$packageSummaryLong"
|
||||
|
||||
echo "%prep"
|
||||
echo "%setup -T -D -c -n $packageName"
|
||||
echo "%build"
|
||||
|
||||
echo "%install"
|
||||
echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then"
|
||||
echo " %if %is_runtime"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT/openmp-extras"
|
||||
echo " %else"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include"
|
||||
echo " %endif"
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
echo "else"
|
||||
echo " %if %is_runtime"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$installPath"
|
||||
echo " %else"
|
||||
echo " rm -rf \$RPM_BUILD_ROOT/openmp-extras$installPath/*"
|
||||
echo " echo mkdir -p \$RPM_BUILD_ROOT$copyPath/bin"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/bin"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/clang/$llvm_ver/include"
|
||||
echo " %endif"
|
||||
echo "fi"
|
||||
|
||||
# Copy openmp-extras files, bin will turn into llvm/bin
|
||||
echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d $INSTALL_PREFIX/openmp-extras/devel ]; then"
|
||||
echo " %if %is_runtime"
|
||||
echo " cat $BUILD_PATH/build/installed_files.txt | grep -P '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT"
|
||||
# libgomp and libiomp5 are not on the install_manifest.txt and need
|
||||
# to be manually copied. Waiting on trunk patch to flow into amd-staging
|
||||
# to ensure these symlinks are in the manifest.
|
||||
echo " cp -d --parents "$installPath/lib/libgomp.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib/libiomp5.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib-debug/libgomp.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib-debug/libiomp5.so" \$RPM_BUILD_ROOT"
|
||||
echo " %endif"
|
||||
echo "%if %is_devel"
|
||||
echo " cat "$BUILD_PATH"/build/installed_files.txt | grep -Pv '\.so|\.a' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT"
|
||||
echo "%endif"
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
echo "else"
|
||||
echo " cp -r $AOMP/$packageType/* \$RPM_BUILD_ROOT$installPath"
|
||||
# Devel does not have examples in the llvm dir
|
||||
echo " %if %is_devel"
|
||||
echo " rm -rf \$RPM_BUILD_ROOT$installPath/share"
|
||||
echo " %endif"
|
||||
echo "fi"
|
||||
|
||||
# Create symbolic links from /opt/rocm/bin to /opt/rocm/lib/llvm/bin utilities
|
||||
#echo "ls \$RPM_BUILD_ROOT$installPath"
|
||||
echo "%if %is_devel"
|
||||
echo " if [ ! -h \$RPM_BUILD_ROOT$copyPath/bin/aompcc ] && [ -e \$RPM_BUILD_ROOT$installPath/bin/aompcc ]; then"
|
||||
echo " ln -s ../lib/llvm/bin/aompcc \$RPM_BUILD_ROOT$copyPath/bin/aompcc"
|
||||
echo " fi"
|
||||
echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mymcpu ]; then"
|
||||
echo " ln -s ../lib/llvm/bin/mymcpu \$RPM_BUILD_ROOT$copyPath/bin/mymcpu"
|
||||
echo " fi"
|
||||
echo " if [ -e \$RPM_BUILD_ROOT$installPath/bin/mygpu ]; then"
|
||||
echo " ln -s ../lib/llvm/bin/mygpu \$RPM_BUILD_ROOT$copyPath/bin/mygpu"
|
||||
echo " fi"
|
||||
echo " ls \$RPM_BUILD_ROOT$copyPath"
|
||||
|
||||
# Create symbolic links for openmp header files
|
||||
echo " ln -s ../../../../include/omp.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp.h"
|
||||
echo " ln -s ../../../../include/ompt.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/ompt.h"
|
||||
echo " ln -s ../../../../include/omp-tools.h \$RPM_BUILD_ROOT/$installPath/lib/clang/$llvm_ver/include/omp-tools.h"
|
||||
echo "%endif"
|
||||
echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list'
|
||||
# Copy examples
|
||||
|
||||
echo "%if %is_runtime"
|
||||
# Licensing
|
||||
# Copy licenses into share/doc/openmp-extras
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras"
|
||||
echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.apache2"
|
||||
echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.mit"
|
||||
echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras/LICENSE.flang"
|
||||
echo "%else"
|
||||
# Copy devel examples to share/openmp-extras/examples
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples"
|
||||
echo " cp -r $AOMP_REPOS/aomp/examples/fortran \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples"
|
||||
echo " cp -r $AOMP_REPOS/aomp/examples/openmp \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples"
|
||||
echo " cp -r $AOMP_REPOS/aomp/examples/tools \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples"
|
||||
if [ -e "$AOMP_REPOS/aomp/examples/Makefile.help" ]; then
|
||||
echo " cp $AOMP_REPOS/aomp/examples/Makefile* \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples"
|
||||
fi
|
||||
clean_examples \$RPM_BUILD_ROOT$copyPath/share/openmp-extras/examples
|
||||
echo "%endif"
|
||||
echo "%clean"
|
||||
echo "rm -rf \$RPM_BUILD_ROOT"
|
||||
|
||||
echo "%files -f files.list"
|
||||
echo "%if %is_runtime"
|
||||
echo " $copyPath/share/doc/openmp-extras"
|
||||
echo "%else"
|
||||
echo " $copyPath/share/openmp-extras"
|
||||
echo "%endif"
|
||||
echo "%defattr(-,root,root,-)"
|
||||
# Note: In some OS like SLES, during upgrade rocm-core is getting upgraded first and followed by other packages
|
||||
# rocm-core cannot delete rocm-ver folder, since it contains files of other packages that are yet to be upgraded
|
||||
# To remove rocm-ver folder after upgrade the spec file of other packages should contain the rocm-ver directory
|
||||
# Otherwise after upgrade empty old rocm-ver folder will be left out.
|
||||
# If empty remove /opt/rocm-ver folder and its subdirectories created by
|
||||
# openmp-extras runtime and devel package
|
||||
echo "%if %is_runtime || %is_devel"
|
||||
echo " $copyPath"
|
||||
echo "%endif"
|
||||
|
||||
} > $specFile
|
||||
rpmbuild --define "_topdir $packageRpm" -ba $specFile
|
||||
mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH
|
||||
}
|
||||
|
||||
# ASAN RPM packaging
|
||||
package_openmp_extras_asan_rpm() {
|
||||
# RPM packaging
|
||||
local packageName=$1
|
||||
local packageRpm="$packageDir/rpm"
|
||||
local specFile="$packageDir/$packageName.spec"
|
||||
local packageSummary="AddressSanitizer OpenMP Extras provides instrumented openmp and flang libraries."
|
||||
local packageSummaryLong="openmp-extras $packageVersion is based on LLVM 17 and is used for offloading to Radeon GPUs."
|
||||
local rpmRequires="hsa-rocr-asan, rocm-core-asan"
|
||||
# After build,runtime folder will have ASAN libaries.
|
||||
local asanLibDir="runtime"
|
||||
|
||||
# Cleanup previous packages
|
||||
rm -rf "$packageDir"
|
||||
rm -rf "$RPM_PATH"
|
||||
mkdir -p "$RPM_PATH"
|
||||
echo RPM_PATH: $RPM_PATH
|
||||
echo mkdir -p $(dirname $specFile)
|
||||
mkdir -p "$(dirname $specFile)"
|
||||
|
||||
{
|
||||
echo "Name: $packageName"
|
||||
echo "Version: $packageVersion"
|
||||
echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}"
|
||||
echo "Summary: $packageSummary"
|
||||
echo "Group: System Environment/Libraries"
|
||||
echo "License: MIT and ASL 2.0 and ASL 2.0 with exceptions"
|
||||
echo "Vendor: Advanced Micro Devices, Inc."
|
||||
echo "Requires: $rpmRequires"
|
||||
# Redefining __os_install_post to prevent binary stripping
|
||||
echo "%define __os_install_post %{nil}"
|
||||
echo "%description"
|
||||
echo "%undefine _debugsource_packages"
|
||||
echo "$packageSummaryLong"
|
||||
|
||||
echo "%prep"
|
||||
echo "%setup -T -D -c -n $packageName"
|
||||
echo "%build"
|
||||
|
||||
echo "%install"
|
||||
echo "if [ -f $BUILD_PATH/build/installed_files.txt ] && [ ! -d "$INSTALL_PREFIX"/openmp-extras ]; then"
|
||||
echo " cat $BUILD_PATH/build/installed_files.txt | grep -P 'asan' | cut -d':' -f2 | cut -d' ' -f2 | xargs -I {} cp -d --parents {} \$RPM_BUILD_ROOT"
|
||||
# libgomp and libiomp5 are not on the install_manifest.txt and need
|
||||
# to be manually copied. Waiting on trunk patch to flow into amd-staging
|
||||
# to ensure these symlinks are in the manifest.
|
||||
echo " cp -d --parents "$installPath/lib/asan/libgomp.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib/asan/libiomp5.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib-debug/asan/libgomp.so" \$RPM_BUILD_ROOT"
|
||||
echo " cp -d --parents "$installPath/lib-debug/asan/libiomp5.so" \$RPM_BUILD_ROOT"
|
||||
# FIXME: Old packaging method, can delete once new packaging lands.
|
||||
echo "else"
|
||||
# Copy openmp-extras ASAN libraries to ASAN folders
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib/asan"
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$installPath/lib-debug/asan"
|
||||
echo " cp -r $AOMP/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan"
|
||||
echo " cp -r $AOMP/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan"
|
||||
echo " cp -r $AOMP/$asanLibDir/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan"
|
||||
echo " cp -r $AOMP/$asanLibDir/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan"
|
||||
echo " cp -r $AOMP/devel/lib/asan/* \$RPM_BUILD_ROOT$installPath/lib/asan"
|
||||
echo " cp -r $AOMP/devel/lib-debug/asan/* \$RPM_BUILD_ROOT$installPath/lib-debug/asan"
|
||||
echo "fi"
|
||||
|
||||
# Create symbolic links from /opt/rocm/bin to /opt/rocm/lib/llvm/bin utilities
|
||||
echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list'
|
||||
|
||||
# Licensing
|
||||
# Copy licenses into share/doc/openmp-extras
|
||||
echo " mkdir -p \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan"
|
||||
echo " cp -r $AOMP_REPOS/aomp/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.apache2"
|
||||
echo " cp -r $AOMP_REPOS/aomp-extras/LICENSE \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.mit"
|
||||
echo " cp -r $AOMP_REPOS/flang/LICENSE.txt \$RPM_BUILD_ROOT$copyPath/share/doc/openmp-extras-asan/LICENSE.flang"
|
||||
echo "%clean"
|
||||
echo "rm -rf \$RPM_BUILD_ROOT"
|
||||
|
||||
echo "%files -f files.list"
|
||||
echo " $copyPath/share/doc/openmp-extras-asan"
|
||||
echo "%defattr(-,root,root,-)"
|
||||
# Note: In some OS like SLES, during upgrade rocm-core is getting upgraded first and followed by other packages
|
||||
# rocm-core cannot delete rocm-ver folder, since it contains files of other packages that are yet to be upgraded
|
||||
# To remove rocm-ver folder after upgrade the spec file of other packages should contain the rocm-ver directory
|
||||
# Otherwise after upgrade empty old rocm-ver folder will be left out.
|
||||
# If empty remove /opt/rocm-ver folder and its subdirectories created by
|
||||
# openmp-extras runtime and devel package
|
||||
echo " $copyPath"
|
||||
|
||||
} > $specFile
|
||||
rpmbuild --define "_topdir $packageRpm" -ba $specFile
|
||||
mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH
|
||||
}
|
||||
|
||||
package_openmp_extras() {
|
||||
local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=)
|
||||
local installPath="$ROCM_INSTALL_PATH/lib/llvm"
|
||||
local copyPath="$ROCM_INSTALL_PATH"
|
||||
local packageDir="$BUILD_PATH/package"
|
||||
local llvm_ver=`$INSTALL_PREFIX/lib/llvm/bin/clang --print-resource-dir | sed 's^/llvm/lib/clang/^ ^' | awk '{print $2}'`
|
||||
local debNames="openmp-extras-runtime openmp-extras-dev"
|
||||
local rpmNames="openmp-extras-runtime openmp-extras-devel"
|
||||
ompdSrcDir="$INSTALL_PREFIX/lib/llvm/share/gdb/python/ompd/src"
|
||||
if [ "$SANITIZER" == "1" ]; then
|
||||
local asanPkgName="openmp-extras-asan"
|
||||
if [[ $DISTRO_NAME =~ "Ubuntu" ]] || [[ $DISTRO_NAME =~ "Debian" ]]; then
|
||||
echo "Warning: Assuming DEBs"
|
||||
package_openmp_extras_asan_deb $asanPkgName
|
||||
else
|
||||
echo "Warning: Assuming RPMs"
|
||||
package_openmp_extras_asan_rpm $asanPkgName
|
||||
fi
|
||||
# For ASAN build, create only ASAN package
|
||||
# Devel and runtime pkg should be created from non-asan build. So return the execution
|
||||
return 0
|
||||
fi
|
||||
# Only build deb in Ubuntu environment
|
||||
if [[ $DISTRO_NAME =~ "Ubuntu" ]] || [[ $DISTRO_NAME =~ "Debian" ]]; then
|
||||
echo "Warning: Assuming DEBs"
|
||||
for name in $debNames; do
|
||||
package_openmp_extras_deb $name
|
||||
done
|
||||
# Only build RPM in CENTOS/SLES environment
|
||||
else
|
||||
echo "Warning: Assuming RPMs"
|
||||
for name in $rpmNames; do
|
||||
package_openmp_extras_rpm $name
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
package_tests_deb(){
|
||||
# Openmp-extras debian test packaging
|
||||
local packageDir="$BUILD_PATH/package"
|
||||
local packageDeb="$packageDir/deb"
|
||||
local packageArch="amd64"
|
||||
local packageMaintainer="Openmp Extras Support <openmp-extras.support@amd.com>"
|
||||
local packageSummary="Tests for openmp-extras."
|
||||
local packageSummaryLong="Tests for openmp-extras $packageMajorVersion-$packageMinorVersion is based on LLVM 17 and is used for offloading to Radeon GPUs."
|
||||
local debDependencies="openmp-extras-dev, rocm-core"
|
||||
local debRecommends=""
|
||||
local controlFile="$packageDeb/openmp-extras/DEBIAN/control"
|
||||
local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests"
|
||||
local packageName="openmp-extras-tests"
|
||||
|
||||
# Cleanup previous packages
|
||||
rm -rf "$packageDir"
|
||||
|
||||
mkdir -p $packageDeb/openmp-extras"$installPath"
|
||||
if [ -e $(dirname $controlFile) ]; then
|
||||
rm $(dirname $controlFile)
|
||||
fi
|
||||
mkdir -p "$(dirname $controlFile)"
|
||||
# Copy openmp-extras files
|
||||
cp -r "$AOMP_REPOS/aomp/." "$packageDeb/openmp-extras/$installPath"
|
||||
rm -rf "$packageDeb"/openmp-extras"$installPath"/.git "$packageDeb"/openmp-extras"$installPath"/.github
|
||||
# Copy FileCheck
|
||||
if [ -f "$OUT_DIR"/build/lightning/bin/FileCheck ]; then
|
||||
cp "$OUT_DIR/build/lightning/bin/FileCheck" "$packageDeb/openmp-extras/$installPath/bin"
|
||||
fi
|
||||
|
||||
# Create control file
|
||||
{
|
||||
echo "Package: $packageName"
|
||||
echo "Architecture: $packageArch"
|
||||
echo "Section: devel"
|
||||
echo "Priority: optional"
|
||||
echo "Maintainer: $packageMaintainer"
|
||||
echo "Version: $packageVersion-${CPACK_DEBIAN_PACKAGE_RELEASE}"
|
||||
echo "Depends: $debDependencies"
|
||||
echo "Recommends: $debRecommends"
|
||||
echo "Description: $packageSummary"
|
||||
echo " $packageSummaryLong"
|
||||
} > $controlFile
|
||||
fakeroot dpkg-deb -Zgzip --build $packageDeb/openmp-extras \
|
||||
"${DEB_PATH}/${packageName}_${packageVersion}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${packageArch}.deb"
|
||||
}
|
||||
|
||||
package_tests_rpm(){
|
||||
# RPM packaging
|
||||
AOMP_STANDALONE_BUILD=1 $AOMP_REPOS/aomp/bin/build_fixups.sh
|
||||
local copyPath="$ROCM_INSTALL_PATH"
|
||||
local packageDir="$BUILD_PATH/package"
|
||||
local packageRpm="$packageDir/rpm"
|
||||
local installPath="$ROCM_INSTALL_PATH/share/openmp-extras/tests"
|
||||
local packageName="openmp-extras-tests"
|
||||
local rpmRequires="openmp-extras-devel, rocm-core"
|
||||
local specFile="$packageDir/$packageName.spec"
|
||||
local packageSummary="Tests for openmp-extras."
|
||||
local packageSummaryLong="Tests for openmp-extras $packageVersion is based on LLVM 18 and is used for offloading to Radeon GPUs."
|
||||
|
||||
# Cleanup previous packages
|
||||
rm -rf "$packageDir"
|
||||
mkdir -p "$packageRpm/openmp-extras/$installPath"
|
||||
{
|
||||
echo "AutoReqProv: no"
|
||||
echo "Name: $packageName"
|
||||
echo "Version: $packageVersion"
|
||||
echo "Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}"
|
||||
echo "Summary: $packageSummary"
|
||||
echo "Group: System Environment/Libraries"
|
||||
echo "License: Advanced Micro Devices, Inc."
|
||||
echo "Vendor: Advanced Micro Devices, Inc."
|
||||
echo "Prefix: $INSTALL_PREFIX"
|
||||
echo "Requires: $rpmRequires"
|
||||
echo "%define debug_package %{nil}"
|
||||
# Redefining __os_install_post to remove stripping
|
||||
echo "%define __os_install_post %{nil}"
|
||||
echo "%description"
|
||||
echo "$packageSummaryLong"
|
||||
|
||||
echo "%prep"
|
||||
echo "%setup -T -D -c -n $packageName"
|
||||
echo "%build"
|
||||
|
||||
echo "%install"
|
||||
echo "mkdir -p \$RPM_BUILD_ROOT$installPath"
|
||||
echo "cp -R $AOMP_REPOS/aomp/. \$RPM_BUILD_ROOT$installPath"
|
||||
echo "rm -rf \$RPM_BUILD_ROOT$installPath/.git \$RPM_BUILD_ROOT$installPath/.github"
|
||||
echo "if [ -f $OUT_DIR/build/lightning/bin/FileCheck ]; then"
|
||||
echo " cp $OUT_DIR/build/lightning/bin/FileCheck \$RPM_BUILD_ROOT$installPath/bin"
|
||||
echo "fi"
|
||||
echo 'find $RPM_BUILD_ROOT \! -type d | sed "s|$RPM_BUILD_ROOT||"> files.list'
|
||||
|
||||
echo "%clean"
|
||||
echo "rm -rf \$RPM_BUILD_ROOT"
|
||||
|
||||
echo "%files -f files.list"
|
||||
echo "$installPath"
|
||||
echo "%defattr(-,root,root,-)"
|
||||
|
||||
echo "%postun"
|
||||
echo "rm -rf $installPath"
|
||||
} > $specFile
|
||||
rpmbuild --define "_topdir $packageRpm" -ba $specFile
|
||||
mv $packageRpm/RPMS/x86_64/*.rpm $RPM_PATH
|
||||
}
|
||||
|
||||
package_tests() {
|
||||
local DISTRO_NAME=$(cat /etc/os-release | grep -e ^NAME=)
|
||||
# Only build deb in Ubuntu environment
|
||||
if [[ $DISTRO_NAME =~ "Ubuntu" ]]; then
|
||||
package_tests_deb
|
||||
# Only build RPM in CENTOS/SLES environment
|
||||
else
|
||||
package_tests_rpm
|
||||
fi
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_openmp_extras
|
||||
;;
|
||||
(build)
|
||||
build_openmp_extras
|
||||
package_openmp_extras
|
||||
package_tests
|
||||
build_wheel "$BUILD_PATH" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,62 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rccl
|
||||
|
||||
build_rccl() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
mkdir -p $ROCM_PATH/.info/
|
||||
echo $ROCM_VERSION | tee $ROCM_PATH/.info/version
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CC=${ROCM_PATH}/bin/amdclang \
|
||||
CXX=$(set_build_variables __CXX__) \
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DHIP_COMPILER=clang \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_PATH};${ROCM_PATH}/share/rocm/cmake/" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DCPACK_GENERATOR="${PKGTYPE^^}" \
|
||||
-DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-DBUILD_TESTS=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rccl() {
|
||||
echo "Cleaning rccl build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rccl; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rccl ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,144 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
### Set up RPATH for RDC to simplify finding RDC libraries. Please note that
|
||||
### ROCm has a setup_env.sh script which already populates these variables.
|
||||
### These variables are then used inside compute_utils.sh.
|
||||
###
|
||||
### We need to append additional paths to these variables BEFORE sourcing
|
||||
### compute_utils.sh
|
||||
|
||||
# lib/rdc/librdc_rocp.so needs lib/librdc_bootstrap.so
|
||||
# this also covers the ASAN usecase
|
||||
ROCM_LIB_RPATH=$ROCM_LIB_RPATH:'$ORIGIN/..'
|
||||
# grpc
|
||||
ROCM_LIB_RPATH=$ROCM_LIB_RPATH:'$ORIGIN/rdc/grpc/lib'
|
||||
ROCM_LIB_RPATH=$ROCM_LIB_RPATH:'$ORIGIN/grpc/lib'
|
||||
# help RDC executables find RDC libraries
|
||||
# lib/librdc_bootstrap.so.0 and grpc
|
||||
ROCM_EXE_RPATH=$ROCM_EXE_RPATH:'$ORIGIN/../lib/rdc/grpc/lib'
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
ROCM_EXE_RPATH="$ROCM_ASAN_EXE_RPATH:$ROCM_EXE_RPATH"
|
||||
fi
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rdc
|
||||
|
||||
# RDC
|
||||
# BUILD ARGUMENTS
|
||||
BUILD_DOCS="no"
|
||||
GRPC_PROTOC_ROOT="${BUILD_DIR}/grpc"
|
||||
GRPC_SEARCH_ROOT="/usr/grpc"
|
||||
GRPC_DESIRED_VERSION="1.67.1" # do not include 'v'
|
||||
# lib/librocm_smi64.so and lib/libamd_smi.so
|
||||
|
||||
# check if exact version of gRPC is installed
|
||||
find_grpc() {
|
||||
grep -s -F "$GRPC_DESIRED_VERSION" ${GRPC_SEARCH_ROOT}/*/cmake/grpc/gRPCConfigVersion.cmake &&
|
||||
GRPC_PROTOC_ROOT=$GRPC_SEARCH_ROOT
|
||||
}
|
||||
|
||||
build_rdc() {
|
||||
if ! find_grpc; then
|
||||
echo "ERROR: GRPC SEARCH FAILED!"
|
||||
echo "You are expected to have gRPC [${GRPC_DESIRED_VERSION}] in [${GRPC_SEARCH_ROOT}]"
|
||||
# Compiling gRPC as part of the RDC build takes too long and times out the build job
|
||||
return 1
|
||||
fi
|
||||
echo "gRPC [${GRPC_DESIRED_VERSION}] found!"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
CXX=$(set_build_variables __C_++__)
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# NOTE: Temp fix for ASAN failures SWDEV-515858
|
||||
export ASAN_OPTIONS="detect_leaks=0:new_delete_type_mismatch=0"
|
||||
fi
|
||||
|
||||
echo "Building RDC"
|
||||
echo "RDC_BUILD_DIR: ${RDC_BUILD_DIR}"
|
||||
echo "GRPC_PROTOC_ROOT: ${GRPC_PROTOC_ROOT}"
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
# NOTE: Temp workaround for libasan not being first in the library list.
|
||||
# libasan not being first causes ADDRESS_SANITIZER builds to fail.
|
||||
# This value is set by set_asan_env_vars. Which is only called when -a arg is passed.
|
||||
export LD_PRELOAD="$ASAN_LIB_PATH"
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
init_rocm_common_cmake_params
|
||||
if [ ! -d "$BUILD_DIR/rdc_libs" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
cmake \
|
||||
-DGRPC_ROOT="$GRPC_PROTOC_ROOT" \
|
||||
-DGRPC_DESIRED_VERSION="$GRPC_DESIRED_VERSION" \
|
||||
-DCMAKE_MODULE_PATH="$COMPONENT_SRC/cmake_modules" \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DCPACK_GENERATOR="${PKGTYPE^^}" \
|
||||
-DROCM_DIR=$ROCM_PATH \
|
||||
-DCPACK_PACKAGE_VERSION_MAJOR="1" \
|
||||
-DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \
|
||||
-DCPACK_PACKAGE_VERSION_PATCH="0" \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DBUILD_TESTS=ON \
|
||||
-DBUILD_PROFILER=ON \
|
||||
-DBUILD_RVS=ON \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=TRUE \
|
||||
"$COMPONENT_SRC"
|
||||
popd
|
||||
fi
|
||||
echo "Making rdc package:"
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
# NOTE: Must disable LD_PRELOAD hack before packaging!
|
||||
# cmake fails with cryptic error on RHEL:
|
||||
#
|
||||
# AddressSanitizer:DEADLYSIGNAL
|
||||
# ==17083==ERROR: AddressSanitizer: stack-overflow on address ...
|
||||
#
|
||||
# The issue is likely in python3.6 cpack scripts
|
||||
unset LD_PRELOAD
|
||||
fi
|
||||
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
if [ "$BUILD_DOCS" = "yes" ]; then
|
||||
echo "Building Docs"
|
||||
cmake --build "$BUILD_DIR" -- doc
|
||||
pushd "$BUILD_DIR"/latex
|
||||
cmake --build . --
|
||||
mv refman.pdf "$ROCM_PATH/rdc/RDC_Manual.pdf"
|
||||
popd
|
||||
fi
|
||||
}
|
||||
|
||||
clean_rdc() {
|
||||
echo "Cleaning RDC build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
return 0
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
disable_debug_package_generation
|
||||
|
||||
case $TARGET in
|
||||
clean) clean_rdc ;;
|
||||
build) build_rdc ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,83 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocAL
|
||||
|
||||
build_rocal() {
|
||||
|
||||
if [ "$DISTRO_ID" = "mariner-2.0" ] || [ "$DISTRO_ID" = "azurelinux-3.0" ] ; then
|
||||
echo "Not building rocal for ${DISTRO_ID}. Exiting..."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
# Enable ASAN
|
||||
# Temporarily disable ASAN for rocal - SWDEV-471302
|
||||
#if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
# set_asan_env_vars
|
||||
# set_address_sanitizer_on
|
||||
#fi
|
||||
pushd /tmp
|
||||
|
||||
# PyBind11
|
||||
rm -rf pybind11
|
||||
git clone -b v2.11.1 https://github.com/pybind/pybind11
|
||||
cd pybind11 && mkdir build && cd build
|
||||
cmake -DDOWNLOAD_CATCH=ON -DDOWNLOAD_EIGEN=ON ../
|
||||
make -j$(nproc) && sudo make install
|
||||
cd ../..
|
||||
|
||||
# Turbo JPEG
|
||||
rm -rf libjpeg-turbo
|
||||
git clone -b 3.0.2 https://github.com/libjpeg-turbo/libjpeg-turbo.git
|
||||
cd libjpeg-turbo && mkdir build && cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib -DWITH_JPEG8=TRUE ..
|
||||
make -j$(nproc) && sudo make install
|
||||
cd ../..
|
||||
|
||||
# RapidJSON
|
||||
rm -rf rapidjson
|
||||
git clone https://github.com/Tencent/rapidjson.git
|
||||
cd rapidjson && mkdir build && cd build
|
||||
cmake .. && make -j$(nproc) && sudo make install
|
||||
popd
|
||||
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
|
||||
# python3 ../rocAL-setup.py
|
||||
|
||||
if [[ "${DISTRO_ID}" == almalinux-8* ]]; then
|
||||
cmake -DPYTHON_VERSION_SUGGESTED=3.8 -DAMDRPP_PATH=$ROCM_PATH ${COMPONENT_SRC}
|
||||
else
|
||||
cmake -DAMDRPP_PATH=$ROCM_PATH ${COMPONENT_SRC}
|
||||
fi
|
||||
make -j8
|
||||
cmake --build . --target PyPackageInstall
|
||||
make package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocal() {
|
||||
echo "Cleaning rocAL build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocal; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocal ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,65 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
PATH=${ROCM_PATH}/bin:$PATH
|
||||
set_component_src rocALUTION
|
||||
|
||||
build_rocalution() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
CXX=$(set_build_variables __G_++__)
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
cmake \
|
||||
-DSUPPORT_HIP=ON \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocalution() {
|
||||
echo "Cleaning rocALUTION build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocalution; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocalution ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,91 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocBLAS
|
||||
DEPS_DIR=${HOME}/rocblas
|
||||
|
||||
stage2_command_args "$@"
|
||||
disable_debug_package_generation
|
||||
|
||||
build_rocblas() {
|
||||
echo "Start build"
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
#Removed GPU ARCHS from here as it will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
# Temporary workaround for rocBLAS to build with ASAN as suggested in #SWDEV-314505
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
export ASAN_OPTIONS="detect_leaks=0:verify_asan_link_order=0"
|
||||
# updating GPU_ARCHS for ASAN build to supported gpu arch only SWDEV-479178
|
||||
#GPU_ARCHS="gfx90a:xnack+;gfx942:xnack+" #This will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
fi
|
||||
LAZY_LOADING=ON
|
||||
SEPARATE_ARCHES=ON
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
CXX=$(set_build_variables __AMD_CLANG_++__)
|
||||
mkdir -p $DEPS_DIR && cp -r /usr/blis $DEPS_DIR
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value. This will override any of the case values above
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
#setting gfx arch as part of rocm_common_cmake_params
|
||||
set_gpu_arch "${ENABLE_GPU_ARCH}"
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
-DCMAKE_TOOLCHAIN_FILE=toolchain-linux.cmake \
|
||||
-DBUILD_DIR="${BUILD_DIR}" \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DROCM_DIR="${ROCM_PATH}" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DLINK_BLIS=ON \
|
||||
-DTensile_CODE_OBJECT_VERSION=default \
|
||||
-DTensile_LOGIC=asm_full \
|
||||
-DTensile_SEPARATE_ARCHITECTURES="${SEPARATE_ARCHES}" \
|
||||
-DTensile_LAZY_LIBRARY_LOADING="${LAZY_LOADING}" \
|
||||
-DTensile_LIBRARY_FORMAT=msgpack \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-DTENSILE_VENV_UPGRADE_PIP=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && rm -rf ./library/src/build_tmp && find -name '*.o' -delete
|
||||
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocblas() {
|
||||
echo "Cleaning rocBLAS build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocblas; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocblas ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,140 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
#// Currently, roccler does not supports .so but, this change makes this script future
|
||||
# ready & We shall not have to change anything at that time. Also its not doing deviating
|
||||
# from the current functionalities currently as well
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
MAKEOPTS="$DASH_JAY"
|
||||
|
||||
BUILD_PATH="$(getBuildPath rocclr)"
|
||||
|
||||
TARGET="build"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/rocclr"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/rocclr"
|
||||
CORE_BUILD_DIR="$(getBuildPath hsa-core)"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraso: --long help,clean,release,static,address_sanitizer,outdir: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_rocclr() {
|
||||
# Delete cmake output directory
|
||||
rm -rf "$BUILD_PATH"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
}
|
||||
|
||||
build_rocclr() {
|
||||
# rocclr is now a part of clr repo.
|
||||
# also it does not need to be built independently when build shared libs.
|
||||
# might be needed when building static libs. so leave it place for static libs.
|
||||
if [ "$SHARED_LIBS" = "ON" ]; then
|
||||
echo "rocclr not a standalone repo. skipping build" >&2
|
||||
echo "rocclr not a standalone repo. skipping build"
|
||||
exit 0 # This is not an error
|
||||
fi
|
||||
|
||||
if [ ! -e "$CLR_ROOT/CMakeLists.txt" ]; then
|
||||
# We are in a branch that has migrated to clr repo
|
||||
_ROCclr_CMAKELIST_DIR="$CLR_ROOT"
|
||||
elif [ ! -e "$ROCclr_ROOT/CMakeLists.txt" ]; then
|
||||
# We seem to have hit a branch in which both the old and new repo don't exist
|
||||
echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr" >&2
|
||||
echo "No $ROCclr_ROOT/CMakeLists.txt file, skipping rocclr"
|
||||
exit 0 # This is not an error
|
||||
else
|
||||
# We are in a branch that has not yet migrated to clr repo
|
||||
_ROCclr_CMAKELIST_DIR="$ROCclr_ROOT"
|
||||
fi
|
||||
echo "$_ROCclr_CMAKELIST_DIR"
|
||||
mkdir -p "$BUILD_PATH"
|
||||
pushd "$BUILD_PATH"
|
||||
print_lib_type $SHARED_LIBS
|
||||
if [ ! -e Makefile ]; then
|
||||
echo "Building ROCclr CMake environment"
|
||||
|
||||
cmake -DUSE_COMGR_LIBRARY=ON \
|
||||
$(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DLLVM_INCLUDES="$LLVM_ROOT/include" \
|
||||
$(rocm_common_cmake_params) \
|
||||
"$_ROCclr_CMAKELIST_DIR"
|
||||
|
||||
echo "CMake complete"
|
||||
fi
|
||||
|
||||
echo "Building ROCclr"
|
||||
cmake --build . -- $MAKEOPTS "VERBOSE=1"
|
||||
|
||||
popd
|
||||
}
|
||||
|
||||
# When use -o option, the code should directly exit.
|
||||
# The rest part of the code will not execute.
|
||||
# Otherwise, it will cause an error of the caller code.
|
||||
case $TARGET in
|
||||
(clean) clean_rocclr ;;
|
||||
(build) build_rocclr ;;
|
||||
(outdir) exit ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,56 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
set_component_src rocDecode
|
||||
BUILD_DEV=ON
|
||||
build_rocdecode() {
|
||||
if [ "$DISTRO_ID" = "centos-7" ] || \
|
||||
[ "$DISTRO_ID" = "mariner-2.0" ] || \
|
||||
[ "$DISTRO_ID" = "azurelinux-3.0" ] || \
|
||||
[ "$DISTRO_ID" = "debian-10" ]; then
|
||||
echo "Not building rocDecode for ${DISTRO_ID}. Exiting..."
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
# for i in {1..5}; do
|
||||
# python3 ../rocDecode-setup.py --developer OFF && break || {
|
||||
# echo "Attempt $i failed! Retrying in $((i * 30)) seconds..."
|
||||
# sleep $((i * 30))
|
||||
# }
|
||||
# done
|
||||
# python3 ${COMPONENT_SRC}/rocDecode-setup.py --developer OFF
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DROCM_DEP_ROCMCORE=ON \
|
||||
-DROCDECODE_ENABLE_ROCPROFILER_REGISTER=ON \
|
||||
"${COMPONENT_SRC}"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
clean_rocdecode() {
|
||||
echo "Cleaning rocDecode build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
stage2_command_args "$@"
|
||||
case $TARGET in
|
||||
build) build_rocdecode; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocdecode ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,63 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
PATH=${ROCM_PATH}/bin:$PATH
|
||||
set_component_src rocFFT
|
||||
|
||||
build_rocfft() {
|
||||
echo "Start Build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
#Removed GPU ARCHS from here as it will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
|
||||
# Work around for HIP sources with C++ suffix, and force CXXFLAGS for both
|
||||
# HIP and C++ compiles
|
||||
CXX=$(set_build_variables __HIP_CC__) \
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DUSE_HIP_CLANG=ON \
|
||||
-DHIP_COMPILER=clang \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_RIDER=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocfft() {
|
||||
echo "Cleaning rocFFT build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocfft; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocfft ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,42 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
set_component_src rocJPEG
|
||||
BUILD_DEV=ON
|
||||
build_rocjpeg() {
|
||||
if [ "$DISTRO_ID" = "centos-7" ] || [ "$DISTRO_ID" = "sles-15.4" ] || [ "$DISTRO_ID" = "azurelinux-3.0" ] || [ "$DISTRO_ID" = "debian-10" ]; then
|
||||
echo "Not building rocJPEG for ${DISTRO_ID}. Exiting..."
|
||||
return 0
|
||||
fi
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
# python3 ../rocJPEG-setup.py
|
||||
|
||||
cmake -DROCM_DEP_ROCMCORE=ON -DROCJPEG_ENABLE_ROCPROFILER_REGISTER=ON "$COMPONENT_SRC"
|
||||
make -j8
|
||||
make install
|
||||
make package
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cpack -G ${PKGTYPE^^}
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
clean_rocjpeg() {
|
||||
echo "Cleaning rocJPEG build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
stage2_command_args "$@"
|
||||
case $TARGET in
|
||||
build) build_rocjpeg ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocjpeg ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,137 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Build a release version of the package"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of rocm-cmake.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## ROCm cmake build (using Makefile) environment variables
|
||||
PROJ_NAME="rocm-cmake"
|
||||
TARGET="build"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
|
||||
## ROCm cmake build (using CMake) environment variables
|
||||
ROCM_CMAKE_BUILD_DIR="$(getBuildPath $PROJ_NAME)"
|
||||
ROCM_CMAKE_PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
ROCM_CMAKE_PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
ROCM_CMAKE_BUILD_TYPE="debug"
|
||||
BUILD_TYPE="Debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
MAKETARGET="deb"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
ack_and_ignore_asan ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_rocm_cmake() {
|
||||
rm -rf $ROCM_CMAKE_BUILD_DIR
|
||||
rm -rf $ROCM_CMAKE_PACKAGE_DEB
|
||||
rm -rf $ROCM_CMAKE_PACKAGE_RPM
|
||||
}
|
||||
|
||||
build_rocm_cmake() {
|
||||
echo "Building ROCm cmake"
|
||||
|
||||
if [ ! -d "$ROCM_CMAKE_BUILD_DIR" ]; then
|
||||
mkdir -p "$ROCM_CMAKE_BUILD_DIR"
|
||||
pushd "$ROCM_CMAKE_BUILD_DIR"
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DCPACK_SET_DESTDIR="OFF" \
|
||||
-DROCM_DISABLE_LDCONFIG=ON \
|
||||
$ROCM_CMAKE_ROOT
|
||||
cmake --build . -- install
|
||||
cmake --build . -- package
|
||||
popd
|
||||
fi
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_DEB" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CMAKE_PACKAGE_RPM" $ROCM_CMAKE_BUILD_DIR/rocm-cmake*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${ROCM_CMAKE_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${ROCM_CMAKE_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_rocm_cmake
|
||||
;;
|
||||
(build)
|
||||
build_rocm_cmake
|
||||
build_wheel "$ROCM_CMAKE_BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,144 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of rocm-core.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## ROCm build (using CMake) environment variables
|
||||
PROJ_NAME="rocm-core"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
ROCM_CORE_BUILD_DIR="$(getBuildPath rocm_core)"
|
||||
ROCM_CORE_PACKAGE_DEB="$(getPackageRoot)/deb/$PROJ_NAME"
|
||||
ROCM_CORE_PACKAGE_RPM="$(getPackageRoot)/rpm/$PROJ_NAME"
|
||||
ROCM_CORE_MAKE_OPTS="$DASH_JAY -C $ROCM_CORE_BUILD_DIR"
|
||||
BUILD_TYPE="Debug"
|
||||
TARGET="build"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
ADDRESS_SANITIZER=false
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,address_sanitizer,outdir,wheel:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
ADDRESS_SANITIZER=true ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package )
|
||||
MAKETARGET=$2 ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_rocm_core() {
|
||||
rm -rf "$ROCM_CORE_BUILD_DIR"
|
||||
rm -rf "$ROCM_CORE_PACKAGE_DEB"
|
||||
rm -rf "$ROCM_CORE_PACKAGE_RPM"
|
||||
}
|
||||
|
||||
build_rocm_core() {
|
||||
echo "Building rocm-core "
|
||||
|
||||
if [ ! -d "$ROCM_CORE_BUILD_DIR" ]; then
|
||||
mkdir -p "$ROCM_CORE_BUILD_DIR"
|
||||
fi
|
||||
pushd "$ROCM_CORE_BUILD_DIR"
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DCPACK_DEBIAN_PACKAGE_RELEASE=$CPACK_DEBIAN_PACKAGE_RELEASE \
|
||||
-DCPACK_RPM_PACKAGE_RELEASE=$CPACK_RPM_PACKAGE_RELEASE \
|
||||
-DROCM_VERSION="$ROCM_VERSION" \
|
||||
-DBUILD_ID="$BUILD_ID" \
|
||||
$ROCM_CORE_ROOT
|
||||
|
||||
make && make install && make package
|
||||
popd
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_DEB" $ROCM_CORE_BUILD_DIR/rocm*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_CORE_PACKAGE_RPM" $ROCM_CORE_BUILD_DIR/rocm*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${ROCM_CORE_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${ROCM_CORE_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean)
|
||||
clean_rocm_core
|
||||
;;
|
||||
(build)
|
||||
build_rocm_core
|
||||
build_wheel "$ROCM_CORE_BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
(outdir)
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
stage2_command_args "$@"
|
||||
build_rocm-dev(){
|
||||
$(dirname "${BASH_SOURCE[0]}")/build_rocm.sh -d
|
||||
mv ${OUT_DIR}/${PKGTYPE}/meta ${OUT_DIR}/${PKGTYPE}/rocm-dev
|
||||
}
|
||||
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocm-dev ;;
|
||||
outdir) echo "${OUT_DIR}/${PKGTYPE}/rocm-dev" ;;
|
||||
clean) rm -rf ${OUT_DIR}/${PKGTYPE}/rocm-dev ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,597 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "${BASH_SOURCE%/*}/compute_utils.sh" || return
|
||||
# Can't use -R or -r in here
|
||||
remove_make_r_flags
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -w, --wheel Creates python wheel package of rocm-gdb.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
toStdoutStderr(){
|
||||
printf '%s\n' "$@" >&2
|
||||
printf '%s\n' "$@"
|
||||
}
|
||||
|
||||
linkFiles(){
|
||||
# Attempt to use hard links first for speed and save disk,
|
||||
# if that fails do a copy
|
||||
cp -lfR "$1" "$2" || cp -fR "$1" "$2"
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
PROJ_NAME=rocm-gdb
|
||||
TARGET=build
|
||||
MAKETARGET=deb # Not currently used
|
||||
BUILD_DIR=$(getBuildPath $PROJ_NAME) # e.g. out/ubuntu.16.04/16.04/build/rocm-gdb
|
||||
PACKAGE_DEB=$(getPackageRoot)/deb/$PROJ_NAME # e.g. out/ubuntu.16.04/16.04/deb
|
||||
PACKAGE_RPM=$(getPackageRoot)/rpm/$PROJ_NAME # e.g. out/ubuntu.16.04/16.04/rpm
|
||||
MAKE_OPTS="$DASH_JAY" # e.g. -j 56
|
||||
BUG_URL="https://github.com/ROCm-Developer-Tools/ROCgdb/issues"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags"
|
||||
LIB_AMD_PYTHON="amdpythonlib.so" #lib name which replaces required python lib
|
||||
LIB_AMD_PYTHON_DIR_PATH=${ROCM_INSTALL_PATH}/lib
|
||||
|
||||
|
||||
# A curated list of things to keep. It would be safer to have a list
|
||||
# of things to remove, as failing to remove something is usually much
|
||||
# less harmful than removeing too much.
|
||||
|
||||
tokeep=(
|
||||
main${ROCM_INSTALL_PATH}/bin/rocgdb
|
||||
main${ROCM_INSTALL_PATH}/bin/roccoremerge
|
||||
main${ROCM_INSTALL_PATH}/share/rocgdb/python/gdb/.*
|
||||
main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/amd64-linux.xml
|
||||
main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/gdb-syscalls.dtd
|
||||
main${ROCM_INSTALL_PATH}/share/rocgdb/syscalls/i386-linux.xml
|
||||
main${ROCM_INSTALL_PATH}/share/doc/rocgdb/NOTICES.txt
|
||||
main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocannotate.pdf
|
||||
main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocgdb.pdf
|
||||
main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocrefcard.pdf
|
||||
main${ROCM_INSTALL_PATH}/share/doc/rocgdb/rocstabs.pdf
|
||||
main${ROCM_INSTALL_PATH}/share/info/rocgdb/dir
|
||||
main${ROCM_INSTALL_PATH}/share/info/rocgdb/annotate.info
|
||||
main${ROCM_INSTALL_PATH}/share/info/rocgdb/gdb.info
|
||||
main${ROCM_INSTALL_PATH}/share/info/rocgdb/stabs.info
|
||||
main${ROCM_INSTALL_PATH}/share/man/man1/rocgdb.1
|
||||
main${ROCM_INSTALL_PATH}/share/man/man1/roccoremerge.1
|
||||
main${ROCM_INSTALL_PATH}/share/man/man5/rocgdbinit.5
|
||||
main${ROCM_INSTALL_PATH}/share/html/rocannotate/.*
|
||||
main${ROCM_INSTALL_PATH}/share/html/rocgdb/.*
|
||||
main${ROCM_INSTALL_PATH}/share/html/rocstabs/.*
|
||||
)
|
||||
|
||||
keep_wanted_files(){
|
||||
(
|
||||
cd "$BUILD_DIR/package/"
|
||||
# generate the keep pattern as one name per line
|
||||
printf -v keeppattern '%s\n' "${tokeep[@]}"
|
||||
find main/opt -type f | grep -xv "$keeppattern" | xargs -r rm
|
||||
# prune empty directories
|
||||
find main/opt -type d -empty -delete
|
||||
)
|
||||
return 0
|
||||
}
|
||||
|
||||
# Move to a function so that both package_deb and package_rpm can call
|
||||
# and remove the depenency of package_rpm_tests on package_deb.
|
||||
# Copy the required files to create a stand-alone testsuite.
|
||||
copy_testsuite_files() {
|
||||
(
|
||||
dest="$BUILD_DIR/package/tests${ROCM_INSTALL_PATH}/test/gdb/"
|
||||
cd "$ROCM_GDB_ROOT"
|
||||
find \
|
||||
config.guess \
|
||||
config.sub \
|
||||
contrib/dg-extract-results.py \
|
||||
contrib/dg-extract-results.sh \
|
||||
gdb/contrib \
|
||||
gdb/disable-implicit-rules.mk \
|
||||
gdb/features \
|
||||
gdb/silent-rules.mk \
|
||||
gdb/testsuite \
|
||||
include/dwarf2.def \
|
||||
include/dwarf2.h \
|
||||
install-sh \
|
||||
-print0 | cpio -pdu0 "$dest"
|
||||
)
|
||||
}
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
|
||||
rm -rf $BUILD_DIR
|
||||
rm -rf $PACKAGE_DEB
|
||||
rm -rf $PACKAGE_RPM
|
||||
}
|
||||
|
||||
# set the lexically bound variable VERSION to the current version
|
||||
# A passed parameter gives the default
|
||||
# Note that this might need to be stripped further as it might have
|
||||
# things like "-git" which is not acceptable as a version to rpm.
|
||||
get_version(){
|
||||
VERSION=$(sed -n 's/^.*char version[^"]*"\([^"]*\)".*;.*/\1/p' $BUILD_DIR/gdb/version.c || : )
|
||||
VERSION=${VERSION:-$1}
|
||||
}
|
||||
|
||||
package_deb(){
|
||||
# Package main binary.
|
||||
# TODO package documentation when we build some.
|
||||
mkdir -p "$BUILD_DIR/package/main/DEBIAN"
|
||||
# Extract version from build
|
||||
local VERSION
|
||||
get_version unknown
|
||||
# add upgrade related version sub-field
|
||||
VERSION="${VERSION}.${ROCM_LIBPATCH_VERSION}"
|
||||
|
||||
#create postinstall and prerm
|
||||
grep -v '^# ' > "$BUILD_DIR/package/main/DEBIAN/postinst" <<EOF
|
||||
#!/bin/sh
|
||||
|
||||
# Post-installation script commands
|
||||
echo "Running post-installation script..."
|
||||
mkdir -p $LIB_AMD_PYTHON_DIR_PATH
|
||||
# Choosing the lowest version of the libpython3 installed.
|
||||
PYTHON_LIB_INSTALLED=\$(find /lib/ -name 'libpython3*.so' | head -n 1)
|
||||
echo "Installing rocm-gdb with [\$PYTHON_LIB_INSTALLED]."
|
||||
ln -s \$PYTHON_LIB_INSTALLED $LIB_AMD_PYTHON_DIR_PATH/$LIB_AMD_PYTHON
|
||||
echo "post-installation done."
|
||||
EOF
|
||||
|
||||
|
||||
grep -v '^# ' > "$BUILD_DIR/package/main/DEBIAN/prerm" <<EOF
|
||||
#!/bin/sh
|
||||
|
||||
# Pre-uninstallation script commands
|
||||
echo "Running pre-uninstallation script..."
|
||||
rm -f $LIB_AMD_PYTHON_DIR_PATH/$LIB_AMD_PYTHON
|
||||
if [ -L "$LIB_AMD_PYTHON_DIR_PATH/$LIB_AMD_PYTHON" ] ; then
|
||||
echo " some rocm-gdb requisite libs could not be removed"
|
||||
else
|
||||
echo " all requisite libs removed successfully "
|
||||
fi
|
||||
echo "pre-uninstallation done."
|
||||
EOF
|
||||
|
||||
chmod +x $BUILD_DIR/package/main/DEBIAN/prerm
|
||||
chmod +x $BUILD_DIR/package/main/DEBIAN/postinst
|
||||
|
||||
# Create control file, with variable substitution.
|
||||
# Lines with # at the start are removed, to allow for comments
|
||||
mkdir "$BUILD_DIR/debian"
|
||||
grep -v '^# ' > "$BUILD_DIR/debian/control" <<EOF
|
||||
# Required fields
|
||||
Version: ${VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}
|
||||
Package: ${PROJ_NAME}
|
||||
Source: ${PROJ_NAME}-src
|
||||
Maintainer: ROCm Debugger Support <rocm-gdb.support@amd.com>
|
||||
Description: ROCgdb
|
||||
This is ROCgdb, the AMD ROCm source-level debugger for Linux,
|
||||
based on GDB, the GNU source-level debugger.
|
||||
# Optional fields
|
||||
Section: utils
|
||||
Architecture: amd64
|
||||
Essential: no
|
||||
Priority: optional
|
||||
Depends: \${shlibs:Depends}, rocm-dbgapi, rocm-core, python3-dev
|
||||
EOF
|
||||
|
||||
# Use dpkg-shlibdeps to list shlib dependencies, the result is placed
|
||||
# in $BUILD_DIR/debian/substvars.
|
||||
(
|
||||
cd "$BUILD_DIR"
|
||||
if [[ $ASAN_BUILD == "yes" ]]
|
||||
then
|
||||
LD_LIBRARY_PATH=${ROCM_INSTALL_PATH}/lib/asan:$LD_LIBRARY_PATH
|
||||
fi
|
||||
dpkg-shlibdeps --ignore-missing-info -e "$BUILD_DIR/package/main/${ROCM_INSTALL_PATH}/bin/rocgdb"
|
||||
)
|
||||
|
||||
# Generate the final DEBIAN/control, and substitute the shlibs:Depends.
|
||||
# This is a bit unorthodox as we are only using bits and pieces of the
|
||||
# dpkg tools.
|
||||
(
|
||||
SHLIB_DEPS=$(grep "^shlibs:Depends" "$BUILD_DIR/debian/substvars" | \
|
||||
sed -e "s/shlibs:Depends=//")
|
||||
sed -E \
|
||||
-e "/^#/d" \
|
||||
-e "/^Source:/d" \
|
||||
-e "s/\\$\{shlibs:Depends\}/$SHLIB_DEPS/" \
|
||||
< debian/control > "$BUILD_DIR/package/main/DEBIAN/control"
|
||||
)
|
||||
|
||||
mkdir -p "$OUT_DIR/deb/$PROJ_NAME"
|
||||
fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/main" "$OUT_DIR/deb/$PROJ_NAME"
|
||||
|
||||
# Package the tests so they can be run on a test slave
|
||||
mkdir -p "$BUILD_DIR/package/tests/DEBIAN"
|
||||
mkdir -p "$BUILD_DIR/package/tests/${ROCM_INSTALL_PATH}/test/gdb"
|
||||
# Create control file, with variable substitution.
|
||||
# Lines with # at the start are removed, to allow for comments
|
||||
grep -v '^# ' > "$BUILD_DIR/package/tests/DEBIAN/control" <<EOF
|
||||
# Required fields
|
||||
Version: ${VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}
|
||||
Package: ${PROJ_NAME}-tests
|
||||
Maintainer: ROCm Debugger Support <rocm-gdb.support@amd.com>
|
||||
Description: ROCgdb tests
|
||||
Test Suite for ROCgdb
|
||||
# Optional fields
|
||||
Section: utils
|
||||
Architecture: amd64
|
||||
Essential: no
|
||||
Priority: optional
|
||||
# rocm-core as policy says everything to depend on rocm-core
|
||||
Depends: ${PROJ_NAME} (=${VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}), dejagnu, rocm-core, make
|
||||
EOF
|
||||
|
||||
copy_testsuite_files
|
||||
fakeroot dpkg-deb -Zgzip --build "$BUILD_DIR/package/tests" "$OUT_DIR/deb/$PROJ_NAME"
|
||||
}
|
||||
|
||||
package_rpm(){
|
||||
# TODO, use this to package the tests as well. In the mean time hard code the package
|
||||
set -- rocm-gdb
|
||||
local packageDir="$BUILD_DIR/package_rpm/$1" # e.g. out/ubuntu-16.04/16.04/build/rocm-gdb/package_rpm/main
|
||||
local specFile="$packageDir/$1.spec" # The generated spec file
|
||||
local packageRpm="$packageDir/rpm" # The RPM infrastructure
|
||||
# Extract version from build. If more than one line matches then
|
||||
# expect failures. Solution is to find which version is the wanted one.
|
||||
local VERSION
|
||||
get_version 0.0.0
|
||||
# add upgrade related version sub-field
|
||||
VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION}
|
||||
|
||||
# get the __os_install_post macro, edit it to remove the python bytecode generation
|
||||
# rpm --showrc shows the default macros with priority level (-14) in this case
|
||||
# so remove everything before this macro, everything after it, remove the offending line,
|
||||
# and make it available as the ospost variable to insert into spec file
|
||||
local ospost="$(echo '%define __os_install_post \'
|
||||
rpm --showrc | sed '1,/^-14: __os_install_post/d;
|
||||
/^-14:/,$d;/^%{nil}/!s/$/ \\/;
|
||||
/brp-python-bytecompile/d')"
|
||||
|
||||
echo "specFile: $specFile"
|
||||
echo "packageRpm: $packageRpm"
|
||||
|
||||
mkdir -p "$packageDir"
|
||||
|
||||
# Create the spec file.
|
||||
# Allow comments in the generation of the specfile, may be overkill.
|
||||
grep -v '^## ' <<- EOF > $specFile
|
||||
## Set up where this stuff goes
|
||||
%define _topdir $packageRpm
|
||||
%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${CPACK_RPM_PACKAGE_RELEASE}%{?dist}.%%{ARCH}.rpm
|
||||
## The __os_install_post macro on centos creates .pyc and .pyo objects
|
||||
## by calling brp-python-bytecompile
|
||||
## This then creates an issue as the script doesn't package these files
|
||||
## override it
|
||||
$ospost
|
||||
##
|
||||
Name: ${PROJ_NAME}
|
||||
Group: Development/Tools/Debuggers
|
||||
Summary: ROCm source-level debugger for Linux
|
||||
## rpm requires the version to be dot separated numbers
|
||||
Version: ${VERSION//-/_}
|
||||
Release: ${CPACK_RPM_PACKAGE_RELEASE}%{?dist}
|
||||
License: GPL
|
||||
Prefix: ${ROCM_INSTALL_PATH}
|
||||
Requires: rocm-core, rocm-dbgapi
|
||||
|
||||
%description
|
||||
This is ROCgdb, the ROCm source-level debugger for Linux, based on
|
||||
GDB, the GNU source-level debugger.
|
||||
|
||||
The ROCgdb documentation is available at:
|
||||
https://github.com/RadeonOpenCompute/ROCm
|
||||
|
||||
## these things are commented out as they are not needed, but are
|
||||
## left in for documentation.
|
||||
# %prep
|
||||
# : Should not need to do anything in prep
|
||||
# %build
|
||||
# : Should not need to do anything in build as make does that
|
||||
# %clean
|
||||
# : Should not need to do anything in clean
|
||||
## This is the meat. Get a copy of the files from where we built them
|
||||
## into the local RPM_BUILD_ROOT and left the defaults take over. Need
|
||||
## to quote the dollar signs as we want rpm to expand them when it is
|
||||
## run, rather than the shell when we build the spec file.
|
||||
%install
|
||||
rm -rf \$RPM_BUILD_ROOT
|
||||
mkdir -p \$RPM_BUILD_ROOT
|
||||
# Get a copy of the built tree.
|
||||
cp -ar $BUILD_DIR/package/main/opt \$RPM_BUILD_ROOT/opt
|
||||
## The file section is generated by walking the tree.
|
||||
%files
|
||||
EOF
|
||||
# Now generate the files
|
||||
find $BUILD_DIR/package/main/opt -type d | sed "s:$BUILD_DIR/package/main:%dir :" >> $specFile
|
||||
find $BUILD_DIR/package/main/opt ! -type d | sed "s:$BUILD_DIR/package/main::" >> $specFile
|
||||
|
||||
rpmbuild --define "_topdir $packageRpm" -ba $specFile
|
||||
# Now copy it to final location
|
||||
mkdir -p "$PACKAGE_RPM" # e.g. out/ubuntu-16.04/16.04/rpm/rocm-gdb
|
||||
mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM"
|
||||
}
|
||||
|
||||
package_rpm_tests(){
|
||||
# TODO, use this to package the tests as well. In the mean time hard code the package
|
||||
set -- rocm-gdb-tests
|
||||
local packageDir="$BUILD_DIR/package_rpm/$1" # e.g. out/ubuntu-16.04/16.04/build/rocm-gdb/package_rpm/main
|
||||
local specFile="$packageDir/$1.spec" # The generated spec file
|
||||
local packageRpm="$packageDir/rpm" # The RPM infrastructure
|
||||
# Extract version from build. If more than one line matches then
|
||||
# expect failures. Solution is to find which version is the wanted one.
|
||||
local VERSION
|
||||
get_version 0.0.0
|
||||
# add upgrade related version sub-field
|
||||
VERSION=${VERSION}.${ROCM_LIBPATCH_VERSION}
|
||||
local RELEASE=${CPACK_RPM_PACKAGE_RELEASE}%{?dist}
|
||||
|
||||
echo "specFile: $specFile"
|
||||
echo "packageRpm: $packageRpm"
|
||||
|
||||
mkdir -p "$packageRpm"
|
||||
|
||||
# Create the spec file.
|
||||
# Allow comments in the generation of the specfile, may be overkill.
|
||||
local ospost="$(echo '%define __os_install_post \'
|
||||
rpm --showrc | sed '1,/^-14: __os_install_post/d;
|
||||
/^-14:/,$d;/^%{nil}/!s/$/ \\/;
|
||||
/brp-python-bytecompile/d')"
|
||||
grep -v '^## ' <<- EOF > $specFile
|
||||
## Set up where this stuff goes
|
||||
%define _topdir $packageRpm
|
||||
%define _rpmfilename %%{ARCH}/%%{NAME}-${VERSION}-${RELEASE}.%%{ARCH}.rpm
|
||||
## The __os_install_post macro on centos creates .pyc and .pyo objects
|
||||
## by calling brp-python-bytecompile
|
||||
## This then creates an issue as the script doesn't package these files
|
||||
## override it
|
||||
$ospost
|
||||
##
|
||||
Name: ${PROJ_NAME}-tests
|
||||
Group: Development/Tools/Debuggers
|
||||
Summary: Tests for gdb enhanced to debug AMD GPUs
|
||||
Version: ${VERSION//-/_}
|
||||
Release: ${RELEASE}
|
||||
License: GPL
|
||||
Prefix: ${ROCM_INSTALL_PATH}
|
||||
Requires: dejagnu, ${PROJ_NAME} = ${VERSION//-/_}-${RELEASE}, rocm-core, make
|
||||
|
||||
%description
|
||||
Tests for ROCgdb
|
||||
|
||||
## these things are commented out as they are not needed, but are
|
||||
## left in for documentation.
|
||||
# %prep
|
||||
# : Should not need to do anything in prep
|
||||
# %build
|
||||
# : Should not need to do anything in build as make does that
|
||||
# %clean
|
||||
# : Should not need to do anything in clean
|
||||
## This is the meat. Get a copy of the files from where we built them
|
||||
## into the local RPM_BUILD_ROOT and left the defaults take over. Need
|
||||
## to quote the dollar signs as we want rpm to expand them when it is
|
||||
## run, rather than the shell when we build the spec file.
|
||||
%install
|
||||
rm -rf \$RPM_BUILD_ROOT
|
||||
mkdir -p \$RPM_BUILD_ROOT
|
||||
# Get a copy of the built tree.
|
||||
cp -ar $BUILD_DIR/package/tests/opt \$RPM_BUILD_ROOT/opt
|
||||
## The file section is generated by walking the tree.
|
||||
%files
|
||||
## package everything in \$RPM_BUILD_ROOT/${ROCM_INSTALL_PATH}/test.
|
||||
## A little excessive but this is just an internal test package
|
||||
${ROCM_INSTALL_PATH}/test
|
||||
EOF
|
||||
|
||||
copy_testsuite_files
|
||||
|
||||
# rpm wont resolve the dependency if the unversioned python (#!/usr/bin/python) is used.
|
||||
# /usr/bin/python - this file is not owned by any package.
|
||||
# So find and append the version to the /usr/bin/python as /usr/bin/python3
|
||||
# By updating this, the python3 requirement will be provided by the python3 package.
|
||||
find $BUILD_DIR/package/tests/opt -type f -exec sed -i '1s:^#! */usr/bin/python\>:&3:' {} +
|
||||
|
||||
rpmbuild --define "_topdir $packageRpm" -ba $specFile
|
||||
# Now copy it to final location
|
||||
mkdir -p "$PACKAGE_RPM" # e.g. out/ubuntu-16.04/16.04/rpm/rocm-gdb
|
||||
mv $packageRpm/RPMS/x86_64/*.rpm "$PACKAGE_RPM"
|
||||
}
|
||||
|
||||
build() {
|
||||
if [ ! -e "$ROCM_GDB_ROOT/configure" ]
|
||||
then
|
||||
toStdoutStderr "No $ROCM_GDB_ROOT/configure file, skippping rocm-gdb"
|
||||
exit 0 # This is not an error
|
||||
fi
|
||||
local pythonver=python3
|
||||
if [[ "$DISTRO_ID" == "ubuntu-18.04" ]]; then
|
||||
pythonver=python3.8
|
||||
fi
|
||||
# Workaround for rocm-gdb failure due to texlive on RHEL-9 & CentOS-9 SWDEV-339596
|
||||
if [[ "$DISTRO_ID" == "centos-9" ]] || [[ "$DISTRO_ID" == "rhel-9.0" ]]; then
|
||||
fmtutil-user --missing
|
||||
fi
|
||||
echo "Building $PROJ_NAME"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cd "$BUILD_DIR" || die "Failed to cd to '$BUILD_DIR'"
|
||||
# Build instructions taken from the README.ROCM with the addition
|
||||
# of --with-pkgversion
|
||||
#
|
||||
# The "new" way of specifying the path to the amd-dbgapi library is by
|
||||
# setting PKG_CONFIG_PATH. The --with-amd-dbgapi flag is used to ensure
|
||||
# that if amd-dbgapi is not found, configure fails.
|
||||
#
|
||||
# --with-rocm-dbgapi is kept for now, to ease the transition. It can be
|
||||
# removed once it is determined that we don't need to build source trees
|
||||
# using the "old" way.
|
||||
$ROCM_GDB_ROOT/configure --program-prefix=roc --prefix="${ROCM_INSTALL_PATH}" \
|
||||
--htmldir="\${prefix}/share/html" --pdfdir="\${prefix}/share/doc/rocgdb" \
|
||||
--infodir="\${prefix}/share/info/rocgdb" \
|
||||
--with-separate-debug-dir="\${prefix}/lib/debug:/usr/lib/debug" \
|
||||
--with-gdb-datadir="\${prefix}/share/rocgdb" --enable-64-bit-bfd \
|
||||
--with-bugurl="$BUG_URL" --with-pkgversion="${ROCM_BUILD_ID:-ROCm}" \
|
||||
--enable-targets="x86_64-linux-gnu,amdgcn-amd-amdhsa" \
|
||||
--disable-gas \
|
||||
--disable-gdbserver \
|
||||
--disable-gdbtk \
|
||||
--disable-gprofng \
|
||||
--disable-ld \
|
||||
--disable-shared \
|
||||
--disable-sim \
|
||||
--enable-tui \
|
||||
--with-amd-dbgapi \
|
||||
--with-expat \
|
||||
--with-lzma \
|
||||
--with-python=$pythonver \
|
||||
--with-rocm-dbgapi=$ROCM_INSTALL_PATH \
|
||||
--with-system-zlib \
|
||||
--with-zstd \
|
||||
--without-babeltrace \
|
||||
--without-guile \
|
||||
--without-intel-pt \
|
||||
--without-libunwind-ia64 \
|
||||
--without-xxhash \
|
||||
PKG_CONFIG_PATH="${ROCM_INSTALL_PATH}/share/pkgconfig" \
|
||||
LDFLAGS="$LDFLAGS"
|
||||
LD_RUN_PATH='${ORIGIN}/../lib' make $MAKE_OPTS
|
||||
|
||||
if [[ "$DISTRO_ID" == "ubuntu"* ]]; then
|
||||
#changing the python lib requirement in the built gdb for ubuntu builds
|
||||
REPLACE_LIB_NAME=$(ldd -d $BUILD_DIR/gdb/gdb |awk '/libpython/{print $1}')
|
||||
echo "Replacing $REPLACE_LIB_NAME with $LIB_AMD_PYTHON"
|
||||
patchelf --replace-needed $REPLACE_LIB_NAME $LIB_AMD_PYTHON $BUILD_DIR/gdb/gdb
|
||||
fi
|
||||
|
||||
mkdir -p $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/{share/rocgdb,bin}
|
||||
# Install gdb
|
||||
make $MAKE_OPTS -C gdb DESTDIR=$BUILD_DIR/package/main install install-pdf install-html
|
||||
# Install binutils for coremerge and coremerge manpage.
|
||||
make $MAKE_OPTS -C binutils DESTDIR=$BUILD_DIR/package/main install
|
||||
# Add in the AMD licences file
|
||||
linkFiles $ROCM_GDB_ROOT/gdb/NOTICES.txt $BUILD_DIR/package/main${ROCM_INSTALL_PATH}/share/doc/rocgdb
|
||||
keep_wanted_files
|
||||
# If a variable CPACKGEN indicates only one type of packaging is required
|
||||
# then don't bother making the other. This variable is set up in compute_utils.sh
|
||||
# Default to building both package types if variable is not set
|
||||
# Use "[ var = value ] || ..." rather than "[ var != value ] &&" so expression
|
||||
# evaluates to true, and set -e does not cause script to exit.
|
||||
[ "${CPACKGEN}" = "DEB" ] || package_rpm && package_rpm_tests
|
||||
[ "${CPACKGEN}" = "RPM" ] || package_deb
|
||||
}
|
||||
|
||||
# See if the code exists
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
main(){
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
ASAN_BUILD="no"
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ; MAKEARG="$MAKEARG REL=1" ;; # For compatability with other scripts
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
ASAN_BUILD="yes" ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
echo " Wheel"; WHEEL_PACKAGE=true ; shift;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package) #FIXME
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
# I think it would be better to use -- to indicate end of args
|
||||
# and insert an error message about unknown args at this point.
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
done
|
||||
|
||||
# If building with Clang, we need to build in C++17 mode, to avoid some build problems
|
||||
if [[ $CXX == *"clang++" ]]
|
||||
then
|
||||
CXX="$CXX -std=gnu++17"
|
||||
fi
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
case $TARGET in
|
||||
("clean")
|
||||
clean
|
||||
;;
|
||||
("build")
|
||||
build
|
||||
build_wheel "$BUILD_DIR" "$PROJ_NAME"
|
||||
;;
|
||||
("outdir")
|
||||
print_output_directory
|
||||
;;
|
||||
(*)
|
||||
die "Invalid target $TARGET"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
}
|
||||
|
||||
# If this script is not being sourced, then run it.
|
||||
if [ "$0" = "$BASH_SOURCE" ]
|
||||
then
|
||||
main "$@"
|
||||
else
|
||||
set +e # Undo the damage from compute_utils.sh
|
||||
fi
|
||||
@@ -1,264 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -d, --devstg Build only stage1 meta packages. Without this
|
||||
option script builds both stg1 and stg2"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -w, --wheel Creates python wheel package of rocm meta packages.
|
||||
It needs to be used along with -r option"
|
||||
echo " -s, --static Enable Support for Generating Static Meta Packages"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## ROCm build (using CMake) environment variables
|
||||
PROJ_NAME="meta"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
ROCM_BUILD_DIR="$(getBuildPath $PROJ_NAME)"
|
||||
ROCM_PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
ROCM_PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
ROCM_MAKE_OPTS="$DASH_JAY -C $ROCM_BUILD_DIR"
|
||||
#ROCM_DKMS_MAKE_OPTS="$DASH_JAY -C $ROCM_DKMS_BUILD_DIR"
|
||||
#ROCM_DEV_MAKE_OPTS="$DASH_JAY -C $ROCM_DEV_BUILD_DIR"
|
||||
BUILD_TYPE="Debug"
|
||||
TARGET="build"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
ADDRESS_SANITIZER=false
|
||||
STG2_PKG_BUILD="true"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o dhcraswo:p: --long help,devstg,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
ADDRESS_SANITIZER=true ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-d | --devstg )
|
||||
STG2_PKG_BUILD="false" ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package )
|
||||
MAKETARGET=$2 ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
# Generate the pkg list and its versions list as a ";" seperated string and export it to the ENV.
|
||||
# These PKG_LIST and VER_LIST envs will be used as a LIST in cmake function in utils.cmake
|
||||
gen_pkg_ver_list() {
|
||||
|
||||
# for mi* and navi* these packages needs to be excluded because of compression problem
|
||||
# compute-firmware_5.18.0-kfd-compute-rocm-npi-mi*-720_all.deb
|
||||
# linux-headers-5.18.0-kfd-compute-rocm-npi-mi*-720_5.18.0-kfd-compute-rocm-npi-mi*-720-1_amd64.deb
|
||||
# linux-image-5.18.0-kfd-compute-rocm-npi-mi*-720_5.18.0-kfd-compute-rocm-npi-mi*-720-1_amd64.deb
|
||||
# linux-image-6.2.8-kfd-compute-rocm-npi-navi*-wip-41_6.2.8-kfd-compute-rocm-npi-navi*-wip-41-1_amd64.deb
|
||||
# So making the exclude filelist generic
|
||||
declare -a Exclfiles=( "compute-firmware_*kfd-compute-rocm-npi-*.deb"
|
||||
"linux-headers-*kfd-compute-rocm-npi-*.deb"
|
||||
"linux-image-*kfd-compute-rocm-npi-*.deb"
|
||||
)
|
||||
|
||||
#this package needs to be excluded always
|
||||
Exclfiles+=('*dbgsym*')
|
||||
|
||||
PLIST=""
|
||||
VLIST=""
|
||||
search_dir="$PACKAGE_ROOT/$PACKAGEEXT"
|
||||
|
||||
# exclude *dbgsym* pkg files from the search
|
||||
for file in $(find $search_dir/. -type f -name "*.$PACKAGEEXT" ! -name ${Exclfiles[3]} ! -name ${Exclfiles[0]} ! -name ${Exclfiles[1]} ! -name ${Exclfiles[2]} );
|
||||
do
|
||||
if [ "$PACKAGEEXT" == "deb" ]; then
|
||||
dpkg -I $file | grep 'Package:\|Version:' > tmpfile
|
||||
PLIST="$(awk '/Package:/{print $2}' tmpfile);$PLIST"
|
||||
VLIST="$(awk '/Version:/{print $2}' tmpfile);$VLIST"
|
||||
|
||||
elif [ "$PACKAGEEXT" == "rpm" ]; then
|
||||
rpm -qip $file | grep 'Name\|Version\|Release' > tmpfile
|
||||
PLIST="$(awk '/Name/{print $3}' tmpfile);$PLIST"
|
||||
VLIST="$(awk '/Version/{print $3}' tmpfile)-$(awk '/Release/{print $3}' tmpfile);$VLIST"
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
[ -f tmpfile ] && rm tmpfile
|
||||
|
||||
# export as ENV variable
|
||||
export PKG_LIST="$PLIST"
|
||||
export VER_LIST="$VLIST"
|
||||
echo " PKG_LIST=$PKG_LIST"
|
||||
echo " VER_LIST=$VER_LIST"
|
||||
|
||||
}
|
||||
|
||||
generate_files_from_json() {
|
||||
#Generate existing pkg list and corresponding version list.
|
||||
#To be used for meta package dependencies version assignment.
|
||||
gen_pkg_ver_list
|
||||
|
||||
bash -c 'sudo pip3 install dataclasses'
|
||||
PY_MODULE="packaging_files_generator.py "
|
||||
pushd "$ROCM_ROOT/packaging"
|
||||
|
||||
if ! pyret=$(python3 $PY_MODULE ) ; then
|
||||
echo "FATAL!!! Python exectued with errors..."
|
||||
echo "Cannot proceed now bailing out .."
|
||||
exit 3
|
||||
fi
|
||||
|
||||
popd
|
||||
|
||||
}
|
||||
|
||||
clean_rocm() {
|
||||
rm -rf "$ROCM_BUILD_DIR"
|
||||
rm -rf "$ROCM_PACKAGE_DEB"
|
||||
rm -rf "$ROCM_PACKAGE_RPM"
|
||||
}
|
||||
|
||||
|
||||
clean_gen_files() {
|
||||
|
||||
GEN_FILES=`find $ROCM_ROOT/ -regextype sed -iregex ".*\.[iu]\{0,\}gen$"`
|
||||
while IFS= read -r line ; do
|
||||
if [ ! -z "$line" ]; then
|
||||
rm "$line"
|
||||
fi
|
||||
done <<< "$GEN_FILES"
|
||||
|
||||
}
|
||||
|
||||
|
||||
verify_meta_dependencies(){
|
||||
|
||||
#make package path
|
||||
pkg_path="$OUT_DIR/$PACKAGEEXT/meta"
|
||||
PY_MODULE="dependency_tester.py "
|
||||
#options required by dependency tester
|
||||
options=" --path=$pkg_path --jd=$JOB_DESIGNATOR --lpv=$ROCM_LIBPATCH_VERSION --bid=$BUILD_ID "
|
||||
echo " options == $options "
|
||||
pushd "$ROCM_ROOT/packaging"
|
||||
|
||||
pyret=$(python3 $PY_MODULE $options >> dependency_log.txt 2>&1 ) || true
|
||||
|
||||
echo "========== begin : dependency_log ==========="
|
||||
cat dependency_log.txt
|
||||
echo "========== end : dependency_log ==========="
|
||||
popd
|
||||
echo " verify_meta_dependencies : over "
|
||||
}
|
||||
|
||||
|
||||
build_rocm() {
|
||||
echo "Building Meta packaging"
|
||||
|
||||
if [ ! -d "$ROCM_BUILD_DIR" ]; then
|
||||
mkdir -p "$ROCM_BUILD_DIR"
|
||||
fi
|
||||
pushd "$ROCM_BUILD_DIR"
|
||||
cmake \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=1 \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DCMAKE_INSTALL_PREFIX="$PACKAGE_ROOT" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
-DROCM_VERSION="$ROCM_VERSION" \
|
||||
$ROCM_ROOT
|
||||
popd
|
||||
|
||||
if [[ "$SHARED_LIBS" == "ON" ]]; then
|
||||
if [[ "$STG2_PKG_BUILD" == "true" ]]; then
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS pkg_rocm
|
||||
else
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS STAGE_1_Targets
|
||||
fi
|
||||
|
||||
# Optional Meta Package
|
||||
if [[ "$ADDRESS_SANITIZER" == true ]]; then
|
||||
if [[ "$STG2_PKG_BUILD" == "true" ]]; then
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS pkg_rocm_asan
|
||||
else
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS ASAN_STAGE_1_Targets
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Optional Static Meta Package
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS pkg_rocm_language_static_dev
|
||||
#stg2
|
||||
cmake --build "$ROCM_BUILD_DIR" -- $ROCM_MAKE_OPTS pkg_rocm_static_dev
|
||||
fi
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCM_PACKAGE_DEB" $ROCM_BUILD_DIR/rocm*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCM_PACKAGE_RPM" $ROCM_BUILD_DIR/rocm*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${ROCM_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${ROCM_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_rocm ;;
|
||||
(build) generate_files_from_json && build_rocm && verify_meta_dependencies ; build_wheel "$ROCM_BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
clean_gen_files
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,159 +0,0 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
TEST_BIN_DIR="$(getBinPath)"
|
||||
TEST_NAME="rocm-bandwidth-test"
|
||||
TEST_UTILS_DIR="$(getUtilsPath)"
|
||||
TEST_SRC_DIR="rocm_bandwidth_test"
|
||||
TEST_BLD_DIR="$(getBuildPath $TEST_SRC_DIR)"
|
||||
|
||||
ROCM_PKG_PREFIX="$ROCM_INSTALL_PATH"
|
||||
TEST_PKG_ROOT="$(getPackageRoot)"
|
||||
TEST_PKG_DEB="$(getPackageRoot)/deb/$TEST_SRC_DIR"
|
||||
TEST_PKG_RPM="$(getPackageRoot)/rpm/$TEST_SRC_DIR"
|
||||
|
||||
ROCR_LIB_DIR="$(getPackageRoot)/lib"
|
||||
ROCR_INC_DIR="$(getPackageRoot)/hsa/include"
|
||||
|
||||
RUN_SCRIPT=$(echo $(basename "${BASH_SOURCE}") | sed "s/build_/run_/")
|
||||
|
||||
TARGET="build"
|
||||
MAKETARGET="all"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKEARG="$DASH_JAY"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
VALID_STR=`getopt -o hcraso:p: --long help,clean,release,static,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; MAKEARG="$MAKEARG REL=1" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; CPACKGEN="${2^^}" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_rocm_bandwidth_test() {
|
||||
echo "Cleaning $TEST_NAME"
|
||||
|
||||
rm -rf $TEST_BLD_DIR
|
||||
rm -rf $TEST_PKG_DEB
|
||||
rm -rf $TEST_PKG_RPM
|
||||
rm -rf $TEST_BIN_DIR/$TEST_NAME
|
||||
rm -f $TEST_UTILS_DIR/$RUN_SCRIPT
|
||||
}
|
||||
|
||||
build_rocm_bandwidth_test() {
|
||||
|
||||
echo "Building $TEST_NAME"
|
||||
|
||||
if [ ! -d "$TEST_BLD_DIR" ]; then
|
||||
mkdir -p "$TEST_BLD_DIR"
|
||||
pushd "$TEST_BLD_DIR"
|
||||
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=1 \
|
||||
-DCMAKE_INSTALL_PREFIX="$TEST_PKG_ROOT" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCMAKE_PREFIX_PATH="$ROCM_INSTALL_PATH" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
-DROCM_PATCH_VERSION=$ROCM_LIBPATCH_VERSION \
|
||||
-DCMAKE_MODULE_PATH="$ROCM_BANDWIDTH_TEST_ROOT/cmake_modules" \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
"$ROCM_BANDWIDTH_TEST_ROOT"
|
||||
|
||||
popd
|
||||
fi
|
||||
|
||||
echo "Building $TEST_NAME"
|
||||
cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR
|
||||
|
||||
echo "Installing $TEST_NAME"
|
||||
cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR install
|
||||
|
||||
echo "Packaging $TEST_NAME"
|
||||
cmake --build "$TEST_BLD_DIR" -- $MAKEARG -C $TEST_BLD_DIR package
|
||||
|
||||
mkdir -p "$TEST_BIN_DIR"
|
||||
echo "Copying $TEST_NAME to $TEST_BIN_DIR"
|
||||
progressCopy "$TEST_BLD_DIR/$TEST_NAME" "$TEST_BIN_DIR"
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_DEB" $TEST_BLD_DIR/*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$TEST_PKG_RPM" $TEST_BLD_DIR/*.rpm
|
||||
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${TEST_PKG_DEB};;
|
||||
("rpm")
|
||||
echo ${TEST_PKG_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_rocm_bandwidth_test ;;
|
||||
(build) build_rocm_bandwidth_test ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,167 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-32|-h] [makeopts]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Removes all rocm_smi build artifacts"
|
||||
echo " -r, --release Build non-debug version rocm_smi (default is debug)"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of rocm-smi.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -32, Build 32b version (default is 64b)"
|
||||
echo " -h, --help Prints this help"
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
# RSMI ==> deb/rpm package target
|
||||
# ROCM_SMI ==> rocm_smi library target and header
|
||||
|
||||
# ROCM_SMI
|
||||
PROJ_NAME="rsmi"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
TARGET="build"
|
||||
|
||||
PACKAGE_LIB=$(getLibPath)
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
|
||||
# RSMI
|
||||
RSMI_BUILD_DIR=$(getBuildPath rsmi)
|
||||
RSMI_PACKAGE_DEB_DIR="$(getPackageRoot)/deb/$PROJ_NAME"
|
||||
RSMI_PACKAGE_RPM_DIR="$(getPackageRoot)/rpm/$PROJ_NAME"
|
||||
RSMI_BUILD_TYPE="debug"
|
||||
BUILD_TYPE="Debug"
|
||||
|
||||
# BUILD ARGUMENTS
|
||||
MAKETARGET="deb"
|
||||
MAKEARG="$DASH_JAY O=$RSMI_BUILD_DIR"
|
||||
RSMI_MAKE_OPTS="$DASH_JAY O=$RSMI_BUILD_DIR -C $RSMI_BUILD_DIR"
|
||||
# The following should be 64 (default) 32 for 32b
|
||||
ROCM_SMI_BLD_BITS=64
|
||||
RSMI_PKG_NAME_ROOT="rocm-smi-lib"
|
||||
RSMI_PKG_NAME="${RSMI_PKG_NAME_ROOT}${ROCM_SMI_BLD_BITS}"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
PKGTYPE="deb"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# TODO - support standard option of passing cmake environment vars - CFLAGS,CXXFLAGS etc., to enable address sanitizer
|
||||
ADDRESS_SANITIZER=true ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
(-32)
|
||||
ROCM_SMI_BLD_BITS="32"; shift ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_rsmi() {
|
||||
rm -rf "$RSMI_BUILD_DIR"
|
||||
rm -rf "$RSMI_PACKAGE_DEB_DIR"
|
||||
rm -rf "$RSMI_PACKAGE_RPM_DIR"
|
||||
rm -rf "$PACKAGE_ROOT/rocm_smi"
|
||||
rm -rf "$PACKAGE_INCLUDE/rocm_smi"
|
||||
rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.*
|
||||
rm -f $PACKAGE_LIB/librocm_smi${ROCM_SMI_BLD_BITS}.*
|
||||
return 0
|
||||
}
|
||||
|
||||
build_rsmi() {
|
||||
echo "Building RSMI"
|
||||
echo "RSMI_BUILD_DIR: ${RSMI_BUILD_DIR}"
|
||||
if [ ! -d "$RSMI_BUILD_DIR" ]; then
|
||||
mkdir -p $RSMI_BUILD_DIR
|
||||
pushd $RSMI_BUILD_DIR
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
cmake \
|
||||
-DCMAKE_MODULE_PATH="$ROCM_SMI_LIB_ROOT/cmake_modules" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_common_cmake_params) \
|
||||
$(rocm_cmake_params) \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DROCM_SMI_PACKAGE="${RSMI_PKG_NAME}" \
|
||||
-DCPACK_PACKAGE_VERSION_MAJOR="1" \
|
||||
-DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \
|
||||
-DCPACK_PACKAGE_VERSION_PATCH="0" \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DBUILD_TESTS=ON \
|
||||
"$ROCM_SMI_LIB_ROOT"
|
||||
popd
|
||||
fi
|
||||
|
||||
echo "Making rocm_smi package:"
|
||||
cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS
|
||||
cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS install
|
||||
cmake --build "$RSMI_BUILD_DIR" -- $RSMI_MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_DEB_DIR" $RSMI_BUILD_DIR/*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$RSMI_PACKAGE_RPM_DIR" $RSMI_BUILD_DIR/*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${RSMI_PACKAGE_DEB_DIR};;
|
||||
("rpm")
|
||||
echo ${RSMI_PACKAGE_RPM_DIR};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_rsmi ;;
|
||||
(build) build_rsmi; build_wheel "$RSMI_BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
exit 0
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Removes all rocminfo build artifacts"
|
||||
echo " -r, --release Build non-debug version rocminfo (default is debug)"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of rocminfo.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo "Possible values for <pkg_type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
PROJ_NAME="rocminfo"
|
||||
TARGET="build"
|
||||
ROCMINFO_DEST="$(getBinPath)"
|
||||
ROCMINFO_SRC_ROOT="$ROCMINFO_ROOT"
|
||||
ROCMINFO_BUILD_DIR="$(getBuildPath $PROJ_NAME)"
|
||||
|
||||
MAKEARG="$DASH_JAY"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
ROCMINFO_PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
ROCMINFO_PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
BUILD_TYPE="debug"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:g: --long help,clean,release,static,wheel,address_sanitizer,outdir:,gpu_list: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
MAKEARG="$MAKEARG BUILD_TYPE=rel"; BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-g | --gpu_list)
|
||||
GPU_LIST="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
|
||||
clean_rocminfo() {
|
||||
echo "Removing rocminfo"
|
||||
rm -rf $ROCMINFO_DEST/rocminfo
|
||||
rm -rf $ROCMINFO_BUILD_DIR
|
||||
rm -rf $ROCMINFO_PACKAGE_DEB
|
||||
rm -rf $ROCMINFO_PACKAGE_RPM
|
||||
}
|
||||
|
||||
build_rocminfo() {
|
||||
if [ ! -d "$ROCMINFO_BUILD_DIR" ]; then
|
||||
mkdir -p $ROCMINFO_BUILD_DIR
|
||||
pushd $ROCMINFO_BUILD_DIR
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DROCRTST_BLD_TYPE="$BUILD_TYPE" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCPACK_PACKAGE_VERSION_MAJOR="1" \
|
||||
-DCPACK_PACKAGE_VERSION_MINOR="$ROCM_LIBPATCH_VERSION" \
|
||||
-DCPACK_PACKAGE_VERSION_PATCH="0" \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=TRUE\
|
||||
$ROCMINFO_SRC_ROOT
|
||||
|
||||
echo "Making rocminfo:"
|
||||
cmake --build . -- $MAKEARG
|
||||
cmake --build . -- $MAKEARG install
|
||||
cmake --build . -- $MAKEARG package
|
||||
popd
|
||||
fi
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_DEB" $ROCMINFO_BUILD_DIR/*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$ROCMINFO_PACKAGE_RPM" $ROCMINFO_BUILD_DIR/*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${ROCMINFO_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${ROCMINFO_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_rocminfo ;;
|
||||
(build) build_rocminfo; build_wheel "$ROCMINFO_BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
exit 0
|
||||
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src ROCmValidationSuite
|
||||
|
||||
# Internal RVS libraries need the extra RPATH
|
||||
ROCM_RVS_LIB_RPATH="\$ORIGIN/.."
|
||||
|
||||
build_rocmvalidationsuite() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
CXX=$(set_build_variables __CXX__)
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
cd "${COMPONENT_SRC}"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
# rocm_common_cmake_params provides the default rpath for rocm executables and libraries
|
||||
# Override cmake shared linker flags, since rvs libraries requires RUNPATH - $ORIGIN:$ORIGIN/..
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DFETCH_ROCMPATH_FROM_ROCMCORE=ON \
|
||||
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH:$ROCM_RVS_LIB_RPATH" \
|
||||
-B "$BUILD_DIR" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
mkdir -p "${PACKAGE_DIR}" && cp "${BUILD_DIR}"/*."${PKGTYPE}" "${PACKAGE_DIR}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocmvalidationsuite() {
|
||||
echo "Cleaning ROCmValidationSuite build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "${BUILD_DIR}" "${PACKAGE_DIR}"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocmvalidationsuite; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocmvalidationsuite ;;
|
||||
*) die "Invalid target ${TARGET}" ;;
|
||||
esac
|
||||
@@ -1,68 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocPRIM
|
||||
|
||||
build_rocprim() {
|
||||
echo "Start build"
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
# Temporary Fix as suggested in #SWDEV-314510
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
#Set ASAN flags
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# ASAN packaging is not required for rocPRIM, since its header only package
|
||||
# Setting the asan_cmake_params to false will disable ASAN packaging
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
fi
|
||||
|
||||
# Enable/Disable Static Flag to be used for
|
||||
# Package Dependecies during static/non-static builds
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
#Removed GPU ARCHS from here as it will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
CXX=$(set_build_variables __HIP_CC__) \
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_BENCHMARK=OFF \
|
||||
-DBUILD_TEST=ON \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocprim() {
|
||||
echo "Cleaning rocPRIM build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocprim; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocprim ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,148 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of ROCm Compute Profiler.
|
||||
It needs to be used along with -r option"
|
||||
echo
|
||||
echo "Possible values for package <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="rocprofiler-compute"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraso:p:w --long help,clean,release,static,address_sanitizer,outdir:,package:,wheel -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2" ; shift 2 ;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
--) shift; break;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET"
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars "$API_NAME" "$TARGET" "$BUILD_TYPE" "$SHARED_LIBS" "$CLEAN_OR_OUT" "$PKGTYPE" "$MAKETARGET"
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME:?}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME:?}"*
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
if [ "$DISTRO_ID" = centos-7 ]; then
|
||||
echo "Skip make and uploading packages for ROCm Compute Profiler on Centos7 distro, due to python dependency"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR" || exit
|
||||
|
||||
echo "ROCm CMake Params: $(rocm_cmake_params)"
|
||||
echo "ROCm Common CMake Params: $(rocm_common_cmake_params)"
|
||||
|
||||
#install python deps
|
||||
#python3 -m pip install -t ${BUILD_DIR}/python-libs -r ${ROCPROFILER_COMPUTE_ROOT}/requirements.txt
|
||||
print_lib_type $SHARED_LIBS
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
${GEN_NINJA} \
|
||||
-DCHECK_PYTHON_DEPS=NO \
|
||||
-DPYTHON_DEPS=${BUILD_DIR}/python-libs \
|
||||
-S "$ROCPROFILER_COMPUTE_ROOT"
|
||||
fi
|
||||
ninja $MAKE_OPTS
|
||||
ninja $MAKE_OPTS install
|
||||
ninja $MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo "${PACKAGE_DEB}";;
|
||||
("rpm")
|
||||
echo "${PACKAGE_RPM}";;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,145 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -w, --wheel Creates python wheel package of rocprofiler-register. It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="rocprofiler-register"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME"
|
||||
PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,address_sanitizer,wheeloutdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="Release" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME}"*
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
print_lib_type $SHARED_LIBS
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DROCPROFILER_REGISTER_BUILD_CI=1 \
|
||||
-DROCPROFILER_REGISTER_BUILD_TESTS=1 \
|
||||
-DROCPROFILER_REGISTER_BUILD_SAMPLES=1 \
|
||||
"$ROCPROFILER_REGISTER_ROOT"
|
||||
popd
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS install
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,205 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -w, --wheel Creates python wheel package of rocprofiler-sdk.
|
||||
It needs to be used along with -r option"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="rocprofiler-sdk"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
# Handling GPU Targets for HSACO and HIP Executables
|
||||
GPU_LIST="gfx900;gfx906;gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1031;gfx1100;gfx1101;gfx1102"
|
||||
ASAN=0
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcrawso:p: --long help,clean,release,static,address_sanitizer,wheel,outdir:,package: -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo"
|
||||
shift
|
||||
;;
|
||||
-a | --address_sanitizer)
|
||||
set_address_sanitizer_on
|
||||
set_asan_env_vars
|
||||
ASAN=1
|
||||
shift
|
||||
;;
|
||||
-s | --static)
|
||||
ack_and_skip_static
|
||||
;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true
|
||||
shift
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_ROOT/libexec/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME}"*
|
||||
rm -rf "$PACKAGE_LIB/${PROJ_NAME}"
|
||||
}
|
||||
|
||||
build_rocprofiler-sdk() {
|
||||
if [ ! -f "${ROCPROFILER_SDK_ROOT}/CMakeLists.txt" ]; then
|
||||
echo "Warning: $ROCPROFILER_SDK_ROOT not found"
|
||||
else
|
||||
echo "Building $PROJ_NAME"
|
||||
PACKAGE_CMAKE="$(getCmakePath)"
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
if [ $ASAN == 1 ]; then
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DAMDDeviceLibs_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/AMDDeviceLibs" \
|
||||
-Dhip_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip" \
|
||||
-Dhip-lang_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip-lang" \
|
||||
-Damd_comgr_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/amd_comgr" \
|
||||
-Dhsa-runtime64_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsa-runtime64" \
|
||||
-Dhsakmt_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsakmt" \
|
||||
-DCMAKE_HIP_COMPILER_ROCM_ROOT="${ROCM_INSTALL_PATH}" \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_INSTALL_PATH};${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DGPU_TARGETS="$GPU_LIST" \
|
||||
-DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=OFF \
|
||||
-DPython3_EXECUTABLE=$(which python3) \
|
||||
"$ROCPROFILER_SDK_ROOT"
|
||||
else
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_INSTALL_PATH}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DGPU_TARGETS="$GPU_LIST" \
|
||||
-DROCPROFILER_BUILD_SAMPLES=ON \
|
||||
-DROCPROFILER_BUILD_TESTS=ON \
|
||||
-DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=OFF \
|
||||
-DPython3_EXECUTABLE=$(which python3) \
|
||||
"$ROCPROFILER_SDK_ROOT"
|
||||
fi
|
||||
|
||||
popd
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" --target all -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target install -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target package -- $MAKE_OPTS
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
fi
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo ${PACKAGE_DEB}
|
||||
;;
|
||||
"rpm")
|
||||
echo ${PACKAGE_RPM}
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
clean) clean ;;
|
||||
build) build_rocprofiler-sdk; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,242 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -w, --wheel Creates python wheel package of rocprof_sys.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="rocprofiler-systems"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
# PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/$API_NAME"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/$API_NAME"
|
||||
# PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="-j 8"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
ASAN=0
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraso:p:w --long help,clean,release,address_sanitizer,static,outdir:,package:,wheel -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo"
|
||||
shift
|
||||
;;
|
||||
-a | --address_sanitizer)
|
||||
ack_and_ignore_asan
|
||||
# set_asan_env_vars
|
||||
# set_address_sanitizer_on
|
||||
|
||||
ASAN=1
|
||||
shift
|
||||
;;
|
||||
-s | --static)
|
||||
ack_and_skip_static
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
# OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2"
|
||||
shift 2
|
||||
;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME:?}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME:?}"*
|
||||
}
|
||||
|
||||
build_rocprofiler_systems() {
|
||||
echo "Building $PROJ_NAME"
|
||||
if [ "$DISTRO_ID" = "mariner-2.0" ] || [ "$DISTRO_ID" = "azurelinux-3.0" ]; then
|
||||
echo "Skip make and uploading packages for \"$PROJ_NAME\" on \"${DISTRO_ID}\" distro"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ $ASAN == 1 ]; then
|
||||
echo "Skip make and uploading packages for rocprofiler-systems on ASAN build"
|
||||
exit 0
|
||||
fi
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
echo "Created build directory: $BUILD_DIR"
|
||||
fi
|
||||
|
||||
cd $ROCPROFILER_SYSTEMS_ROOT || exit
|
||||
|
||||
echo "Current submodule status"
|
||||
git submodule status
|
||||
echo "Cached (old) submodule status"
|
||||
git submodule status --cached
|
||||
cat .git/config
|
||||
|
||||
echo "Updating submodules"
|
||||
git submodule init
|
||||
# copy the new URL to your local config
|
||||
git submodule sync --recursive
|
||||
# force update the submodule from the new URL
|
||||
git submodule update --init --recursive --force
|
||||
|
||||
echo "Updated submodule status"
|
||||
git submodule status
|
||||
cat .git/config
|
||||
|
||||
echo "Build directory: $BUILD_DIR"
|
||||
pushd "$BUILD_DIR" || exit
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
ELFUTIL_URL="https://compute-artifactory.amd.com/artifactory/rocm-generic-local/dev-tools/omnitrace/elfutils-0.188.tar.bz2"
|
||||
BINUTIL_URL="https://compute-artifactory.amd.com/artifactory/rocm-generic-local/dev-tools/omnitrace/binutils-2.40.tar.gz"
|
||||
|
||||
echo "ROCm CMake Params: $(rocm_cmake_params)"
|
||||
echo "ROCm Common CMake Params: $(rocm_common_cmake_params)"
|
||||
echo "ELFUTIL_URL=$ELFUTIL_URL, BINUTIL_URL=$BINUTIL_URL"
|
||||
|
||||
if [ $ASAN == 1 ]; then
|
||||
echo "Address Sanitizer path"
|
||||
|
||||
# Commenting out the below cmake command as it is not working as expected
|
||||
# LD_LIBRARY_PATH=$ROCM_INSTALL_PATH/lib/asan:$LD_LIBRARY_PATH
|
||||
# cmake \
|
||||
# $(rocm_cmake_params) \
|
||||
# $(rocm_common_cmake_params) \
|
||||
# -DROCPROFSYS_BUILD_{LIBUNWIND,DYNINST}=ON \
|
||||
# -DDYNINST_BUILD_{TBB,BOOST,ELFUTILS,LIBIBERTY}=ON \
|
||||
# -DAMDDeviceLibs_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/AMDDeviceLibs" \
|
||||
# -Dhip_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip" \
|
||||
# -Dhip-lang_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hip-lang" \
|
||||
# -Damd_comgr_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/amd_comgr" \
|
||||
# -Dhsa-runtime64_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsa-runtime64" \
|
||||
# -Dhsakmt_DIR="${ROCM_INSTALL_PATH}/lib/asan/cmake/hsakmt" \
|
||||
# -DROCM_PATH="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -Drocprofiler_ROOT_DIR="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCMAKE_HIP_COMPILER_ROCM_ROOT="${ROCM_INSTALL_PATH}" \
|
||||
# -DCMAKE_PREFIX_PATH="${ROCM_INSTALL_PATH};${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCMAKE_LIBRARY_PATH="${ROCM_INSTALL_PATH}/lib/asan" \
|
||||
# -DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=OFF \
|
||||
# "$ROCPROFILER_SYSTEMS_ROOT"
|
||||
|
||||
else
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DROCPROFSYS_BUILD_{LIBUNWIND,DYNINST}=ON \
|
||||
-DDYNINST_BUILD_{TBB,BOOST,ELFUTILS,LIBIBERTY}=ON \
|
||||
-DElfUtils_DOWNLOAD_URL="$ELFUTIL_URL" \
|
||||
-D{DYNINST,TIMEMORY}_BINUTILS_DOWNLOAD_URL="$BINUTIL_URL" \
|
||||
"$ROCPROFILER_SYSTEMS_ROOT"
|
||||
fi
|
||||
|
||||
|
||||
popd || exit
|
||||
|
||||
echo "Make Options: $MAKE_OPTS"
|
||||
cmake --build "$BUILD_DIR" --target all -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target install -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" --target package -- $MAKE_OPTS
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo "${PACKAGE_DEB}"
|
||||
;;
|
||||
"rpm")
|
||||
echo "${PACKAGE_RPM}"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
clean) clean ;;
|
||||
build) build_rocprofiler_systems; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,187 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -w, --wheel Creates python wheel package of roc-profiler.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="rocprofiler"
|
||||
PROJ_NAME="$API_NAME"
|
||||
LIB_NAME="lib${API_NAME}"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
# Handling GPU Targets for HSACO and HIP Executables
|
||||
GPU_LIST="gfx900,gfx906,gfx908,gfx90a,gfx940,gfx941,gfx942,gfx1030,gfx1031,gfx1100,gfx1101,gfx1102,gfx1200,gfx1201"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo"
|
||||
shift
|
||||
;;
|
||||
-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
shift
|
||||
;;
|
||||
-s | --static)
|
||||
ack_and_skip_static
|
||||
;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true
|
||||
shift
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
-p | --package)
|
||||
MAKETARGET="$2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_ROOT/libexec/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_LIB/${LIB_NAME}"*
|
||||
rm -rf "$PACKAGE_LIB/${PROJ_NAME}"
|
||||
}
|
||||
|
||||
build_rocprofiler() {
|
||||
echo "Building $PROJ_NAME"
|
||||
PACKAGE_CMAKE="$(getCmakePath)"
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DCMAKE_MODULE_PATH="$ROCPROFILER_ROOT/cmake_modules;$PACKAGE_CMAKE/hip" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DUSE_PROF_API=1 \
|
||||
-DUSE_GET_ROCM_PATH_API=1 \
|
||||
-DGPU_TARGETS="$GPU_LIST" \
|
||||
-DPython3_EXECUTABLE=$(which python3) \
|
||||
-DPROF_API_HEADER_PATH="$WORK_ROOT/roctracer/inc/ext" \
|
||||
-DHIP_HIPCC_FLAGS=$HIP_HIPCC_FLAGS";--offload-arch=$GPU_LIST" \
|
||||
-DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \
|
||||
-DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \
|
||||
-DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \
|
||||
"$ROCPROFILER_ROOT"
|
||||
|
||||
popd
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS install
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo ${PACKAGE_DEB}
|
||||
;;
|
||||
"rpm")
|
||||
echo ${PACKAGE_RPM}
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case "$TARGET" in
|
||||
clean) clean ;;
|
||||
build) build_rocprofiler; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,380 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Build thunk, rocr runtime, rocrtst, and kfdtest.
|
||||
# This replaces the build scripts for those components.
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
PROJ_NAME="rocr"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...] [make options]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo " -n, --norocr Don't build ROCr runtime (default is to build). This implies --norocrtst."
|
||||
echo " -k, --nokfdtest Don't build kfdtest (default is to build)"
|
||||
echo " -w, --wheel Creates python wheel packages. It needs to be used along with -r option"
|
||||
echo " -t, --norocrtst Don't build rocrtst (default is to build)"
|
||||
echo ""
|
||||
echo " rocrtst options:"
|
||||
echo " -e, --emulator Build a version suitable for running on emulator"
|
||||
echo " -g, --gpu_list <gpus> Quoted, semi-colon separated list of gpu architectures that"
|
||||
echo " kernels will run on; e.g., \"gfx803;gfx900;...\" the"
|
||||
echo " default is to build kernels for all supported architectures."
|
||||
|
||||
echo
|
||||
echo "Default build: debug, shared libs"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
build_rocr_runtime() {
|
||||
echo "Build ROCr Runtime"
|
||||
echo "$ROCR_ROOT"
|
||||
|
||||
# Set pkg config path for Static builds
|
||||
# so that static libraries of drm and libdrm_amdgpu will get linked
|
||||
if [ "$shared_libs" == "OFF" ]; then
|
||||
install_drmStatic_lib
|
||||
fi
|
||||
|
||||
if [ ! -d "$rocr_build_dir" ]; then
|
||||
mkdir -p "$rocr_build_dir"
|
||||
pushd "$rocr_build_dir" || { echo "Failed to pushd into $rocr_build_dir"; exit 1; }
|
||||
print_lib_type "$shared_libs"
|
||||
|
||||
cmake \
|
||||
$(rocm_cmake_params) \
|
||||
-DBUILD_SHARED_LIBS="$shared_libs" \
|
||||
-DBUILD_ROCR="$rocr_target" \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DROCM_INSTALL_PATH="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
-DTHUNK_DEFINITIONS="$thunk_defines_string" \
|
||||
-DROCR_DEFINITIONS="$rocr_defines_string" \
|
||||
"$ROCR_ROOT"
|
||||
popd
|
||||
fi
|
||||
|
||||
cmake --build "$rocr_build_dir" --verbose -- $DASH_JAY
|
||||
cmake --build "$rocr_build_dir" --target install --verbose
|
||||
cmake --build "$rocr_build_dir" --target package --verbose
|
||||
mkdir -p "$package_lib"
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$package_root_deb" "$rocr_build_dir"/hsa-rocr*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$package_root_rpm" "$rocr_build_dir"/hsa-rocr*.rpm
|
||||
}
|
||||
|
||||
build_rocrtst() {
|
||||
rocrtst_build_type="debug"
|
||||
mkdir -p "$rocrtst_build_dir"
|
||||
pushd "$rocrtst_build_dir" || { echo "Failed to pushd into $rocrtst_build_dir"; exit 1; }
|
||||
# BUILD_TYPE set to RelWithDebInfo causes rocm_common_cmake_params
|
||||
# to set some CPACK_RPM and _DEBIAN variables to be set which causes
|
||||
# problems for rocrtst at the packaging stage. Leave unset for now.
|
||||
BUILD_TYPE=
|
||||
if [[ $gpu_list ]]; then
|
||||
cmake -DTARGET_DEVICES="$gpu_list" \
|
||||
-DROCRTST_BLD_TYPE="$rocrtst_build_type" \
|
||||
-DBUILD_SHARED_LIBS="$shared_libs" \
|
||||
-DCMAKE_PREFIX_PATH="$ROCM_INSTALL_PATH;$ROCM_INSTALL_PATH/llvm" \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=1 \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
-DROCM_PATCH_VERSION="$ROCM_LIBPATCH_VERSION" \
|
||||
-DROCM_DIR="$ROCM_INSTALL_PATH" \
|
||||
-DLLVM_DIR="$ROCM_INSTALL_PATH/llvm/bin" \
|
||||
-DOPENCL_DIR="$ROCM_INSTALL_PATH" \
|
||||
-DEMULATOR_BUILD="$emulator_build" \
|
||||
"$rocrtst_src_root"
|
||||
else
|
||||
cmake -DROCRTST_BLD_TYPE="$rocrtst_build_type" \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=1 \
|
||||
-DBUILD_SHARED_LIBS="$shared_libs" \
|
||||
-DCMAKE_PREFIX_PATH="$ROCM_INSTALL_PATH;$ROCM_INSTALL_PATH/llvm" \
|
||||
-DCMAKE_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DROCM_PATCH_VERSION="$ROCM_LIBPATCH_VERSION" \
|
||||
-DROCM_DIR="$ROCM_INSTALL_PATH" \
|
||||
-DLLVM_DIR="$ROCM_INSTALL_PATH/llvm/bin" \
|
||||
-DOPENCL_DIR="$ROCM_INSTALL_PATH" \
|
||||
-DEMULATOR_BUILD="$emulator_build" \
|
||||
"$rocrtst_src_root"
|
||||
fi
|
||||
echo "Making rocrtst:"
|
||||
echo "MAKEARG=$MAKEARG [eom]"
|
||||
|
||||
cmake --build . -- $DASH_JAY
|
||||
cmake --build . -- rocrtst_kernels
|
||||
# Packaging is not required, so || true
|
||||
cmake --build . -- package || true
|
||||
mkdir -p "$rocrtst_package"
|
||||
|
||||
echo "Copying rocrtst binaries to $rocrtst_package"
|
||||
progressCopy "$rocrtst_build_dir" "$rocrtst_package"
|
||||
progressCopy "$ROCRTST_ROOT/thirdparty" "$rocrtst_package/thirdparty" || true
|
||||
|
||||
DEB_FILE=(./rocrtst*.deb)
|
||||
if [ -e "${DEB_FILE[0]}" ]; then
|
||||
mkdir -p "$package_root_deb"
|
||||
progressCopy "${DEB_FILE[@]}" "$package_root_deb"
|
||||
fi
|
||||
|
||||
RPM_FILE=(./rocrtst*.rpm)
|
||||
if [ -e "${RPM_FILE[0]}" ]; then
|
||||
mkdir -p "$package_root_rpm"
|
||||
progressCopy "${RPM_FILE[@]}" "$package_root_rpm"
|
||||
fi
|
||||
popd
|
||||
|
||||
}
|
||||
|
||||
# first define a function so I can use "set --" to overwrite the positional args.
|
||||
# Not needed in this case, but better to be safe...
|
||||
# Needed for wildcard globbing since we make 2 kfdtest RPMs now
|
||||
file_exists(){
|
||||
set -- $1
|
||||
[ -e "$1" ]
|
||||
}
|
||||
|
||||
build_kfdtest() {
|
||||
echo "Building kfdtest"
|
||||
|
||||
mkdir -p "$kfdtest_build_dir"
|
||||
pushd "$kfdtest_build_dir" || { echo "Failed to pushd into $kfdtest_build_dir"; exit 1; }
|
||||
|
||||
# LDFLAGS will be set only for address sanitizer build
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE="$build_type" \
|
||||
-DBUILD_SHARED_LIBS="$shared_libs" \
|
||||
-DCMAKE_PREFIX_PATH="${ROCM_INSTALL_PATH}" \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$ROCM_INSTALL_PATH" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH="FALSE" \
|
||||
-DCPACK_GENERATOR="${CPACKGEN:-"DEB;RPM"}" \
|
||||
-DCPACK_RPM_DEBUGINFO_PACKAGE=YES \
|
||||
-DCPACK_RPM_PACKAGE_DEBUG=YES \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=TRUE \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--enable-new-dtags -Wl,--rpath,$ROCM_RPATH $LDFLAGS" \
|
||||
"$kfdtest_src_root"
|
||||
cmake --build . -- $DASH_JAY
|
||||
# Putting || true to ensure backwards compatibility for branches
|
||||
# without the CPACK change to KFDTest
|
||||
cmake --build . -- package || true
|
||||
popd
|
||||
|
||||
mkdir -p "$kfdtest_bin"
|
||||
progressCopy "$kfdtest_build_dir" "$kfdtest_bin"
|
||||
progressCopy "$kfdtest_build_dir/kfdtest.exclude" "$kfdtest_bin"
|
||||
|
||||
if file_exists $kfdtest_build_dir/kfdtest*.deb ; then
|
||||
mkdir -p "$package_root_deb"
|
||||
cp "$kfdtest_build_dir"/kfdtest*.deb "$package_root_deb"
|
||||
fi
|
||||
|
||||
if file_exists "$kfdtest_build_dir"/kfdtest*.rpm ; then
|
||||
mkdir -p "$package_root_rpm"
|
||||
cp $kfdtest_build_dir/kfdtest*.rpm "$package_root_rpm"
|
||||
fi
|
||||
}
|
||||
|
||||
clean_rocr_runtime() {
|
||||
echo "Cleaning ROCr Runtime"
|
||||
# clean libhsakmt
|
||||
rm -f $package_lib/libhsakmt.so*
|
||||
rm -f $package_lib/libhsakmt.a
|
||||
rm -f $package_lib/libhsakmt-staticdrm.a
|
||||
rm -f $package_include/hsakmt*.h $package_include/linux/kfd_ioctl.h
|
||||
|
||||
# clean rocr
|
||||
rm -rf "${runtime_build_dir}"
|
||||
rm -f "$package_root"/lib/libhsa-runtime*
|
||||
rm -rf "$package_root/lib/cmake/hsa-runtime64"
|
||||
rm -rf "$package_root/include/hsa"
|
||||
rm -rf "$package_root/share/doc/hsa-runtime64"
|
||||
rm -f "$package_root_deb"/hsa-rocr*.deb
|
||||
rm -f "$package_root_rpm"/hsa-rocr*.rpm
|
||||
rm -f "$package_root_rpm"/hsa_rocr*.whl
|
||||
|
||||
# Remove when switching to flat directory layout.
|
||||
rm -rf "$PACKAGE_ROOT/hsa"
|
||||
|
||||
clean_rocrtst
|
||||
clean_kfdtest
|
||||
}
|
||||
|
||||
clean_rocrtst() {
|
||||
echo "Cleaning rocrtst"
|
||||
rm -rf "${rocrtst_package}"
|
||||
rm -rf "${rocrtst_build_dir}"
|
||||
rm -rf "${package_root_deb}"/rocrtst*.deb
|
||||
rm -rf "${package_root_rpm}"/rocrtst*.rpm
|
||||
}
|
||||
|
||||
clean_kfdtest() {
|
||||
echo "Cleaning kfdtest"
|
||||
rm -rf "$kfdtest_build_dir"
|
||||
rm -rf "$kfdtest_bin"
|
||||
rm -rf "$package_root_deb"/kfdtest*.deb
|
||||
rm -rf "$package_root_rpm"/kfdtest*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${pkgtype} in
|
||||
("deb")
|
||||
echo "${package_root_deb}";;
|
||||
("rpm")
|
||||
package_rpm="some_value"
|
||||
echo "${package_root_rpm}";;
|
||||
(*)
|
||||
echo "Invalid package type \"${pkgtype}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
# Common variables
|
||||
target="build"
|
||||
|
||||
kfdtest_target="yes"
|
||||
rocrtst_target="yes"
|
||||
rocr_target="ON"
|
||||
|
||||
package_root="$(getPackageRoot)"
|
||||
package_root_deb="${package_root}/deb/$PROJ_NAME"
|
||||
package_root_rpm="${package_root}/rpm/$PROJ_NAME"
|
||||
|
||||
# NOT NEEDED? PACKAGE_SRC="$(getSrcPath)"
|
||||
package_lib="$(getLibPath)"
|
||||
# package_bin="$(getBinPath)"
|
||||
package_include="$(getIncludePath)"
|
||||
runtime_build_dir="$(getBuildPath runtime)"
|
||||
|
||||
# ROCR_DEV_BUILD_DIR="$(getBuildPath hsa-rocr-dev)"
|
||||
# PREFIX_PATH="$package_root"
|
||||
BUILD_TYPE="Debug"
|
||||
shared_libs="ON"
|
||||
clean_or_out=0;
|
||||
maketarget="deb"
|
||||
pkgtype="deb"
|
||||
|
||||
# ROCt variables
|
||||
thunk_defines_string=
|
||||
roct_build_dir="${runtime_build_dir}/libhsakmt"
|
||||
|
||||
# ROCr variables
|
||||
rocr_defines_string=
|
||||
rocr_build_dir="${runtime_build_dir}/$PROJ_NAME"
|
||||
|
||||
# rocrtst variables
|
||||
rocrtst_package="$(getBinPath)/rocrtst_tests"
|
||||
rocrtst_build_dir="${runtime_build_dir}/rocrtst"
|
||||
rocrtst_src_root="$ROCRTST_ROOT/suites/test_common"
|
||||
emulator_build=0
|
||||
|
||||
# kfdtest variables
|
||||
# kfdtest_defines_string=
|
||||
kfdtest_src_root="$ROCR_ROOT/libhsakmt/tests/kfdtest"
|
||||
kfdtest_bin="$(getBinPath)/kfdtest"
|
||||
package_utils="$(getUtilsPath)"
|
||||
# May need to handle putting different components in different build directories (below)
|
||||
kfdtest_build_dir=${runtime_build_dir}/kfdtest
|
||||
|
||||
unset HIP_DEVICE_LIB_PATH
|
||||
unset ROCM_PATH
|
||||
|
||||
#parse the arguments
|
||||
valid_str=$(getopt -o hcraswnkteg:o: --long help,clean,release,static,wheel,address_sanitizer,norocr,nokfdtest,norocrtst,emulator,gpu_list:,outdir: -- "$@")
|
||||
eval set -- "$valid_str"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
target="clean" ; ((clean_or_out|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
shared_libs="OFF" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-n | --norocr)
|
||||
rocr_target="OFF"
|
||||
rocrtst_target="no"; shift ;;
|
||||
(-k | --nokfdtest)
|
||||
kfdtest_target="no" ; shift ;;
|
||||
(-t | --norocrtst)
|
||||
rocrtst_target="no" ; shift ;;
|
||||
(-e | --emulator )
|
||||
emulator_build=1 ; shift ;;
|
||||
(-g | --gpu_list )
|
||||
gpu_list=$2 ; shift 2;;
|
||||
(-o | --outdir)
|
||||
target="outdir"; pkgtype=$2 ; OUT_DIR_SPECIFIED=1 ; ((clean_or_out|=2)) ; shift 2 ;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " ${BASH_SOURCE}: UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 22;;
|
||||
esac
|
||||
done
|
||||
|
||||
ret_conflict=1
|
||||
check_conflicting_options $clean_or_out $pkgtype $maketarget
|
||||
if [ $ret_conflict -ge 30 ]; then
|
||||
print_vars $API_NAME $target $BUILD_TYPE $shared_libs $clean_or_out $pkgtype $maketarget
|
||||
exit $ret_conflict
|
||||
fi
|
||||
|
||||
case $target in
|
||||
(clean) clean_rocr_runtime ;;
|
||||
(build) build_rocr_runtime;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $target" ;;
|
||||
esac
|
||||
|
||||
checkchild(){
|
||||
if wait "$1"; then
|
||||
return;
|
||||
else
|
||||
die "$2 failed with exit code $?"
|
||||
fi
|
||||
}
|
||||
# Run the build for rocrtst and kfdtest in parallel
|
||||
if [ "$target" != "clean" ]; then
|
||||
if [ "$rocrtst_target" == "yes" ]; then
|
||||
build_rocrtst &
|
||||
else
|
||||
true & # Dummy build_rocrtst
|
||||
fi
|
||||
rocrtst_pid=$!
|
||||
if [ "$kfdtest_target" == "yes" ]; then
|
||||
build_kfdtest &
|
||||
else
|
||||
true & # Dummy build_kfdtest
|
||||
fi
|
||||
kfdtest_pid=$!
|
||||
checkchild $kfdtest_pid kfdtest
|
||||
checkchild $rocrtst_pid rocrtst
|
||||
fi
|
||||
# build wheel package
|
||||
if [[ "$target" == "build" ]]; then
|
||||
build_wheel "$rocr_build_dir" "$PROJ_NAME"
|
||||
fi
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,167 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -w, --wheel Creates python wheel package of rocr-debug-agent.
|
||||
It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME=rocm-debug-agent
|
||||
PROJ_NAME=$API_NAME
|
||||
LIB_NAME=lib${API_NAME}.so
|
||||
TARGET=build
|
||||
MAKETARGET=deb
|
||||
PACKAGE_ROOT=$(getPackageRoot)
|
||||
PACKAGE_BIN="$(getBinPath)"
|
||||
PACKAGE_LIB=$(getLibPath)
|
||||
PACKAGE_INCLUDE=$(getIncludePath)
|
||||
BUILD_DIR=$(getBuildPath $API_NAME)
|
||||
PACKAGE_DEB=$PACKAGE_ROOT/deb/$PROJ_NAME
|
||||
PACKAGE_RPM=$PACKAGE_ROOT/rpm/$PROJ_NAME
|
||||
PACKAGE_PREFIX=$ROCM_INSTALL_PATH
|
||||
BUILD_TYPE=Debug
|
||||
MAKE_OPTS="$DASH_JAY -C"
|
||||
|
||||
## Test variables
|
||||
TEST_PACKAGE_DIR="$(getBinPath)/rocm-debug-agent-test"
|
||||
PACKAGE_UTILS=$(getUtilsPath)
|
||||
|
||||
BC_DIR="$PACKAGE_ROOT/lib/bitcode"
|
||||
if [ -d "$BC_DIR" ] ; then
|
||||
export DEVICE_LIB_PATH=$BC_DIR
|
||||
fi
|
||||
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,static,wheel,address_sanitizer,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf $BUILD_DIR
|
||||
rm -rf $TEST_PACKAGE_DIR
|
||||
rm -rf $PACKAGE_DEB
|
||||
rm -rf $PACKAGE_RPM
|
||||
rm -rf $PACKAGE_ROOT/${PROJ_NAME}
|
||||
rm -rf $PACKAGE_LIB/${LIB_NAME}*
|
||||
rm -f $PACKAGE_UTILS/run_rocr_debug_agent_test.sh
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
# The cmake path is different for asan and non-asan builds.
|
||||
# Fetch after getting build type. Default will be non-asan build
|
||||
PACKAGE_CMAKE="$(getCmakePath)"
|
||||
# If rocm is installed to an unconventional location, --rocm-path needs to be set.
|
||||
export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH"
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
|
||||
cmake $(rocm_cmake_params) \
|
||||
-DCMAKE_PREFIX_PATH="$PACKAGE_CMAKE/amd-dbgapi" \
|
||||
-DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_HIP_ARCHITECTURES=OFF \
|
||||
$ROCR_DEBUG_AGENT_ROOT
|
||||
|
||||
popd
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR install
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS $BUILD_DIR package
|
||||
|
||||
mkdir -p $PACKAGE_LIB
|
||||
cp -R $BUILD_DIR/${LIB_NAME}* $PACKAGE_LIB
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DEB}" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_RPM}" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
|
||||
## Copy run test py script
|
||||
echo "copying run-test.py to $PACKAGE_BIN"
|
||||
progressCopy "$ROCR_DEBUG_AGENT_ROOT/test/run-test.py" "$PACKAGE_BIN"
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean ;;
|
||||
(build) build; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $target" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,80 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocRAND
|
||||
|
||||
build_rocrand() {
|
||||
echo "Start build"
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
#Removed GPU ARCHS from here as it will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# updating GPU_ARCHS for ASAN build to supported gpu arch only SWDEV-479178
|
||||
#GPU_ARCHS="gfx90a:xnack+;gfx942:xnack+"#This will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
fi
|
||||
cd $COMPONENT_SRC && mkdir "$BUILD_DIR"
|
||||
|
||||
git config --global --add safe.directory "$COMPONENT_SRC"
|
||||
# Rename the remote set by the repo tool to origin as
|
||||
# git submodule update looks for the remote origin.
|
||||
remote_name=$(git remote show | head -n 1)
|
||||
echo "remote name: $remote_name"
|
||||
[ "$remote_name" == "origin" ] || git remote rename "$remote_name" origin
|
||||
git remote -v
|
||||
git submodule update --init --force
|
||||
|
||||
# if GPU_ENABLE_GPU_ARCHARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value. This will override any of the case values above
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
#setting gfx arch as part of rocm_common_cmake_params
|
||||
set_gpu_arch "${ENABLE_GPU_ARCH}"
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DBUILD_TEST=ON \
|
||||
-DBUILD_BENCHMARK=ON \
|
||||
-DBUILD_CRUSH_TEST=ON \
|
||||
-DDEPENDENCIES_FORCE_DOWNLOAD=OFF \
|
||||
-DHIP_COMPILER=clang \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip" \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-B "${BUILD_DIR}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocrand() {
|
||||
echo "Cleaning rocRAND build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocrand; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocrand ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,123 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [-c|-r|-h] [makeopts]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -c, --clean Removes all RocR Samples build artifacts"
|
||||
echo " -e, --emulator Build a version suitable for running on emulator"
|
||||
echo " -r, --release Build release version RocR Samples (default is debug)"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -g, --gpu_list <gpus> Semi-colon separated List of gpu architectures that"
|
||||
echo " kernels will run on; e.g., \"gfx803;gfx900;...\" the"
|
||||
echo " default is to build kernels for all supported architectures."
|
||||
echo " -h, --help Prints this help"
|
||||
echo " makeopts Options to pass to the make command"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
GPU_LIST="gfx803;gfx701;gfx801;gfx802;gfx900;gfx902;gfx906;gfx908"
|
||||
|
||||
TARGET="build"
|
||||
ROCRTST_SAMPLES_PACKAGE=$(getBinPath)/rocrtst_samples
|
||||
ROCRTST_SAMPLES_ROOT=$ROCRTST_ROOT/samples
|
||||
ROCRTST_SAMPLES_BUILD_DIR=$(getBuildPath rocrtst_samples)
|
||||
|
||||
MAKEARG="$DASH_JAY"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_UTILS="$(getUtilsPath)"
|
||||
ROCRTST_SAMPLES_BUILD_TYPE="debug"
|
||||
EMULATOR_BUILD=0
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0;
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcrawo:seg: --long help,clean,release,outdir:,static,wheel,address_sanitizer,emulator,gpu_list: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
ROCRTST_SAMPLES_BUILD_TYPE="release"; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-o | --outdir )
|
||||
exit ;;
|
||||
(-s | --static)
|
||||
ack_and_skip_static ;;
|
||||
(-w | --wheel)
|
||||
echo "wheel build option accepted and ignored" ; shift ;;
|
||||
(-e | --emulator )
|
||||
EMULATOR_BUILD=1 ; ((CLEAN_OR_OUT|=3)) ; shift ;;
|
||||
(-g | --gpu_list )
|
||||
GPU_LIST=$2 ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean_rocrsamples() {
|
||||
echo "Removing ROCR Samples"
|
||||
rm -rf "$ROCRTST_SAMPLES_PACKAGE"
|
||||
rm -rf "$ROCRTST_SAMPLES_BUILD_DIR"
|
||||
}
|
||||
|
||||
build_rocrsamples() {
|
||||
mkdir -p $ROCRTST_SAMPLES_BUILD_DIR
|
||||
pushd $ROCRTST_SAMPLES_BUILD_DIR
|
||||
|
||||
cmake -DTARGET_DEVICES=$GPU_LIST \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DROCRTST_BLD_TYPE=$ROCRTST_SAMPLES_BUILD_TYPE \
|
||||
-DROCM_DIR=$PACKAGE_ROOT \
|
||||
-DLLVM_DIR="$ROCM_INSTALL_PATH/llvm/bin" \
|
||||
-DOPENCL_DIR=$ROCM_INSTALL_PATH \
|
||||
-DEMULATOR_BUILD=$EMULATOR_BUILD \
|
||||
$ROCRTST_SAMPLES_ROOT
|
||||
|
||||
echo "Making ROCR Samples:"
|
||||
cmake --build . -- $MAKEARG
|
||||
cmake --build . -- sample_kernels
|
||||
mkdir -p "$ROCRTST_SAMPLES_PACKAGE"
|
||||
|
||||
echo "Copying HSA Sample binaries to $ROCRTST_SAMPLES_PACKAGE"
|
||||
progressCopy "$ROCRTST_SAMPLES_BUILD_DIR" "$ROCRTST_SAMPLES_PACKAGE"
|
||||
popd
|
||||
}
|
||||
|
||||
case $TARGET in
|
||||
clean) clean_rocrsamples ;;
|
||||
build) build_rocrsamples ;;
|
||||
*) die "Invalid target $target" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
exit 0
|
||||
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocSHMEM
|
||||
|
||||
build_rocshmem() {
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
echo "Skip building rocSHMEM becasue of Address Sanitizer"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
echo "Start build rocSHMEM"
|
||||
|
||||
#Build step
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
#PREREQ STEPS step
|
||||
# Install OMPI + UCC + UCX
|
||||
export _ROCM_DIR=$ROCM_INSTALL_PATH
|
||||
mkdir -p "$BUILD_DIR"/rocshmem
|
||||
export BUILD_DIR
|
||||
export MPI_HOME=$BUILD_DIR/install/ompi/
|
||||
|
||||
# Update PATH and LD_LIBRARY_PATH
|
||||
# Change to your location, these will be deleted in install_dependencies.sh
|
||||
export PATH="$BUILD_DIR"/install/ucx/bin:$PATH
|
||||
export PATH="$BUILD_DIR"/install/ucc/bin:$PATH
|
||||
export PATH="$BUILD_DIR"/install//ompi/bin:$PATH
|
||||
|
||||
export LD_LIBRARY_PATH="$BUILD_DIR"/install/ucx/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH="$BUILD_DIR"/install/ucc/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH="$BUILD_DIR"/install/ompi/lib:$LD_LIBRARY_PATH
|
||||
|
||||
$COMPONENT_SRC/scripts/install_dependencies.sh
|
||||
|
||||
cd "$BUILD_DIR"/rocshmem
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX="$ROCM_ROOT"/bin/hipcc \
|
||||
cmake "${rocm_math_common_cmake_params[@]}"\
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=$ROCM_INSTALL_PATH \
|
||||
-DCMAKE_VERBOSE_MAKEFILE=OFF \
|
||||
-DDEBUG=OFF \
|
||||
-DPROFILE=OFF \
|
||||
-DUSE_GPU_IB=OFF \
|
||||
-DUSE_RO=OFF \
|
||||
-DUSE_DC=OFF \
|
||||
-DUSE_IPC=ON \
|
||||
-DUSE_COHERENT_HEAP=ON \
|
||||
-DUSE_THREADS=OFF \
|
||||
-DUSE_WF_COAL=OFF \
|
||||
-DUSE_SINGLE_NODE=ON \
|
||||
-DUSE_HOST_SIDE_HDP_FLUSH=OFF \
|
||||
$COMPONENT_SRC
|
||||
|
||||
cmake --build "$BUILD_DIR"/rocshmem -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR"/rocshmem -- install
|
||||
cmake --build "$BUILD_DIR"/rocshmem -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"deb;rpm"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/rocshmem/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocshmem() {
|
||||
echo "Cleaning rocSHMEM build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocshmem; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocshmem ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,75 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocSOLVER
|
||||
|
||||
build_rocsolver() {
|
||||
echo "Start build"
|
||||
|
||||
SHARED_LIBS="ON"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
EXTRA_TESTS="ON"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
rebuild_lapack
|
||||
EXTRA_TESTS="OFF"
|
||||
# updating GPU_ARCHS for ASAN build to supported gpu arch only SWDEV-479178
|
||||
#GPU_ARCHS="gfx90a:xnack+;gfx942:xnack+"#This will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
fi
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value. This will override any of the case values above
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
#setting gfx arch as part of rocm_common_cmake_params
|
||||
set_gpu_arch "${ENABLE_GPU_ARCH}"
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
CXX=$(set_build_variables __HIP_CC__) \
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-Drocblas_DIR="${ROCM_PATH}/rocblas/lib/cmake/rocblas" \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_TESTING=ON \
|
||||
-DBUILD_CLIENTS_EXTRA_TESTS="${EXTRA_TESTS}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
mkdir $PACKAGE_DIR && cp ${BUILD_DIR}/*.${PKGTYPE} $PACKAGE_DIR
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocsolver() {
|
||||
echo "Cleaning rocSOLVER build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocsolver; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocsolver ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
PATH=${ROCM_PATH}/bin:$PATH
|
||||
set_component_src rocSPARSE
|
||||
|
||||
build_rocsparse() {
|
||||
echo "Start build"
|
||||
cd $COMPONENT_SRC
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# updating GPU_ARCHS for ASAN build to supported gpu arch only SWDEV-479178
|
||||
#GPU_ARCHS="gfx90a:xnack+;gfx942:xnack+"#This will be part of compute_utils.sh ROCMOPS-7302 & ROCMOPS-8091
|
||||
fi
|
||||
SHARED_LIBS="ON"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
SHARED_LIBS="OFF"
|
||||
fi
|
||||
|
||||
MIRROR="http://compute-artifactory.amd.com/artifactory/list/rocm-generic-local/mathlib/sparse/"
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GFX_ARCH to that value. This will override any of the case values above
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
#setting gfx arch as part of rocm_common_cmake_params
|
||||
set_gpu_arch "${ENABLE_GPU_ARCH}"
|
||||
fi
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
ROCSPARSE_TEST_MIRROR=$MIRROR \
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
CC=$(set_build_variables __CC__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
-DBUILD_CLIENTS_SAMPLES=ON \
|
||||
-DBUILD_CLIENTS_TESTS=ON \
|
||||
-DBUILD_CLIENTS_BENCHMARKS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX=${ROCM_PATH} \
|
||||
-DBUILD_ADDRESS_SANITIZER="${ADDRESS_SANITIZER}" \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocsparse() {
|
||||
echo "Cleaning rocSPARSE build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocsparse; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocsparse ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,62 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
build_release=true
|
||||
set_component_src rocThrust
|
||||
|
||||
build_rocthrust() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
cd $COMPONENT_SRC
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# ASAN packaging is not required for rocThrust, since its header only package
|
||||
# Setting the asan_cmake_params to false will disable ASAN packaging
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
${LAUNCHER_FLAGS} \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/lib/cmake/hip;${ROCM_PATH}/hip/cmake" \
|
||||
-DROCPRIM_ROOT="${ROCM_PATH}/rocprim" \
|
||||
-DBUILD_TEST=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocthrust() {
|
||||
echo "Cleaning rocThrust build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_rocthrust ;;
|
||||
(build) build_rocthrust; build_wheel ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,188 +0,0 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname $BASH_SOURCE)/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: ${BASH_SOURCE##*/} [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of
|
||||
type referred to by pkg_type"
|
||||
echo " -s, --static Component/Build does not support static builds just accepting this param & ignore. No effect of the param on this build"
|
||||
echo " -w, --wheel Creates python wheel package of roc-tracer.
|
||||
It needs to be used along with -r option"
|
||||
echo " -h, --help Prints this help"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Build environment variables
|
||||
API_NAME="roctracer"
|
||||
PROJ_NAME="$API_NAME"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
BUILD_DIR="$(getBuildPath $API_NAME)"
|
||||
PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
PACKAGE_PREFIX="$ROCM_INSTALL_PATH"
|
||||
|
||||
export HIP_PATH="${ROCM_INSTALL_PATH}"
|
||||
export HCC_HOME="${PACKAGE_ROOT}/hcc"
|
||||
|
||||
TARGET="build"
|
||||
BUILD_TYPE="Debug"
|
||||
MAKE_OPTS="$DASH_JAY -C $BUILD_DIR"
|
||||
HIP_VDI=1
|
||||
SHARED_LIBS="ON"
|
||||
CLEAN_OR_OUT=0
|
||||
MAKETARGET="deb"
|
||||
PKGTYPE="deb"
|
||||
|
||||
# Handling GPU Targets for HSACO and HIP Executables
|
||||
GPU_LIST="gfx900;gfx906;gfx908;gfx90a;gfx940;gfx941;gfx942;gfx1030;gfx1031;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=$(getopt -o hcraswo: --long help,clean,release,static,wheel,address_sanitizer,outdir: -- "$@")
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true; do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
-h | --help)
|
||||
printUsage
|
||||
exit 0
|
||||
;;
|
||||
-c | --clean)
|
||||
TARGET="clean"
|
||||
((CLEAN_OR_OUT |= 1))
|
||||
shift
|
||||
;;
|
||||
-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo"
|
||||
shift
|
||||
;;
|
||||
-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
shift
|
||||
;;
|
||||
-s | --static)
|
||||
ack_and_skip_static
|
||||
;;
|
||||
-w | --wheel)
|
||||
WHEEL_PACKAGE=true
|
||||
shift
|
||||
;;
|
||||
-o | --outdir)
|
||||
TARGET="outdir"
|
||||
PKGTYPE=$2
|
||||
OUT_DIR_SPECIFIED=1
|
||||
((CLEAN_OR_OUT |= 2))
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;; # end delimiter
|
||||
*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] " >&2
|
||||
exit 20
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
RET_CONFLICT=1
|
||||
check_conflicting_options $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
if [ $RET_CONFLICT -ge 30 ]; then
|
||||
print_vars $API_NAME $TARGET $BUILD_TYPE $SHARED_LIBS $CLEAN_OR_OUT $PKGTYPE $MAKETARGET
|
||||
exit $RET_CONFLICT
|
||||
fi
|
||||
|
||||
clean() {
|
||||
echo "Cleaning $PROJ_NAME"
|
||||
rm -rf "$BUILD_DIR"
|
||||
rm -rf "$PACKAGE_DEB"
|
||||
rm -rf "$PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_INCLUDE/${PROJ_NAME}"
|
||||
rm -rf "$PACKAGE_ROOT/${PROJ_NAME}"
|
||||
}
|
||||
|
||||
build() {
|
||||
echo "Building $PROJ_NAME"
|
||||
# The cmake path is different for asan and non-asan builds.
|
||||
# Fetch after getting build type. Default will be non-asan build
|
||||
PACKAGE_CMAKE="$(getCmakePath)"
|
||||
# Find HIP in the build tree
|
||||
export ROCM_PATH="${ROCM_INSTALL_PATH}"
|
||||
export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH"
|
||||
|
||||
if [ ! -d "$BUILD_DIR" ]; then
|
||||
mkdir -p "$BUILD_DIR"
|
||||
pushd "$BUILD_DIR"
|
||||
print_lib_type $SHARED_LIBS
|
||||
|
||||
export HIPCC_COMPILE_FLAGS_APPEND="--rocm-path=$ROCM_PATH --offload-arch=gfx900 --offload-arch=gfx906 --offload-arch=gfx908 \
|
||||
--offload-arch=gfx90a --offload-arch=gfx940 --offload-arch=gfx941 \
|
||||
--offload-arch=gfx942 --offload-arch=gfx1030 --offload-arch=gfx1031 \
|
||||
--offload-arch=gfx1100 --offload-arch=gfx1101 --offload-arch=gfx1102 \
|
||||
--offload-arch=gfx1200 --offload-arch=gfx1201"
|
||||
cmake $(rocm_cmake_params) \
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX="$PACKAGE_PREFIX/$PROJ_NAME" \
|
||||
-DCMAKE_MODULE_PATH="$PACKAGE_CMAKE/hip" \
|
||||
-DCMAKE_HIP_ARCHITECTURES=OFF \
|
||||
-DBUILD_SHARED_LIBS=$SHARED_LIBS \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DCMAKE_HIP_ARCHITECTURES=OFF \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DROCM_ROOT_DIR="$ROCM_INSTALL_PATH" \
|
||||
-DHIP_VDI="$HIP_VDI" \
|
||||
-DROCM_RPATH="$ROCM_RPATH" \
|
||||
-DGPU_TARGETS="$GPU_LIST" \
|
||||
-DCPACK_OBJCOPY_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objcopy" \
|
||||
-DCPACK_READELF_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-readelf" \
|
||||
-DCPACK_STRIP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-strip" \
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${ROCM_INSTALL_PATH}/llvm/bin/llvm-objdump" \
|
||||
"$ROCTRACER_ROOT"
|
||||
|
||||
popd
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS doc
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS install
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS package
|
||||
|
||||
copy_if DEB "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_DEB" "$BUILD_DIR/${API_NAME}"*.deb
|
||||
copy_if RPM "${CPACKGEN:-"DEB;RPM"}" "$PACKAGE_RPM" "$BUILD_DIR/${API_NAME}"*.rpm
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
"deb")
|
||||
echo ${PACKAGE_DEB}
|
||||
;;
|
||||
"rpm")
|
||||
echo ${PACKAGE_RPM}
|
||||
;;
|
||||
*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
clean) clean ;;
|
||||
build) build ; build_wheel "$BUILD_DIR" "$PROJ_NAME" ;;
|
||||
outdir) print_output_directory ;;
|
||||
*) die "$BASH_SOURCE Invalid target $TARGET - exiting" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,64 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rocWMMA
|
||||
|
||||
build_rocwmma() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
# To check if rocwmma source is present
|
||||
if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then
|
||||
echo "Skipping rocWMMA as source is not available"
|
||||
mkdir -p $COMPONENT_SRC
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
# ASAN packaging is not required for rocWMMA, since its header only package
|
||||
# Setting the asan_cmake_params to false will disable ASAN packaging
|
||||
ASAN_CMAKE_PARAMS="false"
|
||||
fi
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
|
||||
init_rocm_common_cmake_params
|
||||
CXX=$(set_build_variables __CXX__)\
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DROCWMMA_BUILD_VALIDATION_TESTS=ON \
|
||||
-DROCWMMA_VALIDATE_WITH_ROCBLAS=ON \
|
||||
-DROCWMMA_BUILD_BENCHMARK_TESTS=ON \
|
||||
-DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cmake --build "$BUILD_DIR" -- package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rocwmma() {
|
||||
echo "Cleaning rocWMMA build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rocwmma; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rocwmma ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,82 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src rpp
|
||||
DEPS_DIR="$RPP_DEPS_LOCATION"
|
||||
|
||||
LLVM_LIBDIR="${ROCM_PATH}/llvm/lib"
|
||||
ROCM_LLVM_LIB_RPATH="\$ORIGIN/llvm/lib"
|
||||
# RPP specific exe linker parameters
|
||||
rpp_specific_cmake_params() {
|
||||
local rpp_cmake_params
|
||||
if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then
|
||||
rpp_cmake_params="-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_EXE_RPATH:$LLVM_LIBDIR"
|
||||
else
|
||||
rpp_cmake_params=""
|
||||
fi
|
||||
printf '%s ' "${rpp_cmake_params}"
|
||||
}
|
||||
|
||||
build_rpp() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
# To check if RPP source is present
|
||||
if [ ! -e $COMPONENT_SRC/CMakeLists.txt ]; then
|
||||
echo "Skipping RPP build as source is not available"
|
||||
mkdir -p $COMPONENT_SRC
|
||||
exit 0
|
||||
fi
|
||||
|
||||
CXX=$(set_build_variables __AMD_CLANG_++__)
|
||||
# Enable ASAN
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on
|
||||
fi
|
||||
|
||||
echo "C compiler: $CC"
|
||||
echo "CXX compiler: $CXX"
|
||||
mkdir -p $BUILD_DIR && cd $BUILD_DIR
|
||||
init_rocm_common_cmake_params
|
||||
# rocm_common_cmake_params provides the default rpath for rocm executables and libraries
|
||||
# Override cmake shared linker flags to add RPATH for boost libraries
|
||||
cmake \
|
||||
"${rocm_math_common_cmake_params[@]}" \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DBACKEND=HIP \
|
||||
-DCMAKE_INSTALL_LIBDIR=$(getInstallLibDir) \
|
||||
$(rpp_specific_cmake_params) \
|
||||
-DCMAKE_SHARED_LINKER_FLAGS_INIT="-fno-openmp-implicit-rpath -Wl,--enable-new-dtags,--build-id=sha1,--rpath,${ROCM_LIB_RPATH}:${DEPS_DIR}/lib:${ROCM_LLVM_LIB_RPATH}" \
|
||||
-DCMAKE_PREFIX_PATH="${DEPS_DIR};${ROCM_PATH}" \
|
||||
"$COMPONENT_SRC"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- -j${PROC}
|
||||
cmake --build "$BUILD_DIR" -- install
|
||||
cpack -G ${PKGTYPE^^}
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_rpp() {
|
||||
echo "Cleaning rpp build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_rpp; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_rpp ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,228 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
source "$(dirname "${BASH_SOURCE}")/compute_utils.sh"
|
||||
|
||||
printUsage() {
|
||||
echo
|
||||
echo "Usage: $(basename "${BASH_SOURCE}") [options ...]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -c, --clean Clean output and delete all intermediate work"
|
||||
echo " -p, --package <type> Specify packaging format"
|
||||
echo " -r, --release Make a release build instead of a debug build"
|
||||
echo " -a, --address_sanitizer Enable address sanitizer"
|
||||
echo " -w, --wheel Creates python wheel package of thunk. It needs to be used along with -r option"
|
||||
echo " -o, --outdir <pkg_type> Print path of output directory containing packages of type referred to by pkg_type"
|
||||
echo " -h, --help Prints this help"
|
||||
echo " -s, --static Build static lib (.a). build instead of dynamic/shared(.so) "
|
||||
echo
|
||||
echo "Possible values for <type>:"
|
||||
echo " deb -> Debian format (default)"
|
||||
echo " rpm -> RPM format"
|
||||
echo
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
## Thunk build (using Makefile) environment variables
|
||||
PROJ_NAME="roct"
|
||||
PACKAGE_ROOT="$(getPackageRoot)"
|
||||
PACKAGE_DEB="$(getPackageRoot)/deb/libhsakmt"
|
||||
PACKAGE_RPM="$(getPackageRoot)/rpm/libhsakmt"
|
||||
THUNK_BUILD_DIR="$(getBuildPath thunk)"
|
||||
TARGET="build"
|
||||
MAKETARGET="deb"
|
||||
MAKEARG="$DASH_JAY O=$THUNK_BUILD_DIR"
|
||||
PACKAGE_LIB="$(getLibPath)"
|
||||
PACKAGE_INCLUDE="$(getIncludePath)"
|
||||
SHARED_LIBS="ON"
|
||||
STATIC_FLAG=
|
||||
|
||||
## ROCt build (using CMake) environment variables
|
||||
ROCT_BUILD_DIR="$(getBuildPath $PROJ_NAME)"
|
||||
ROCT_PACKAGE_DEB="$PACKAGE_ROOT/deb/$PROJ_NAME"
|
||||
ROCT_PACKAGE_RPM="$PACKAGE_ROOT/rpm/$PROJ_NAME"
|
||||
ROCT_BUILD_TYPE="debug"
|
||||
BUILD_TYPE="Debug"
|
||||
ROCT_MAKE_OPTS="$DASH_JAY -C $ROCT_BUILD_DIR"
|
||||
CLEAN_OR_OUT=0;
|
||||
|
||||
#debug function
|
||||
print_vars() {
|
||||
echo " Var status thunk "
|
||||
echo "TARGET= $TARGET"
|
||||
echo "BUILD_TYPE = $BUILD_TYPE"
|
||||
echo "MAKETARGE = $MAKETARGET"
|
||||
echo "CLEAN_OR_OUT = $CLEAN_OR_OUT"
|
||||
echo "PKGTYPE= $PKGTYPE"
|
||||
}
|
||||
|
||||
check_conflicting_options() {
|
||||
|
||||
if [ "$MAKETARGET" != "deb" ] && [ "$MAKETARGET" != "rpm" ] && [ "$MAKETARGET" != "tar" ]; then
|
||||
echo " Wrong Param Passed for Package Type. Aborting .. "
|
||||
print_vars
|
||||
exit 30
|
||||
fi
|
||||
#echo " CLEAN_OR_OUT = $CLEAN_OR_OUT "
|
||||
if [ $CLEAN_OR_OUT -ge 2 ]; then
|
||||
if [ "$PKGTYPE" != "deb" ] && [ "$PKGTYPE" != "rpm" ] && [ "$PKGTYPE" != "tar" ]; then
|
||||
echo " Wrong Param Passed for Package Type for the Outdir. Aborting .. "
|
||||
print_vars
|
||||
exit 40
|
||||
fi
|
||||
fi
|
||||
# check Clean Vs Outdir
|
||||
if [ $CLEAN_OR_OUT -ge 3 ]; then
|
||||
echo " Clean & Out Both are sepcified. Not accepted. Bailing .. "
|
||||
exit 50
|
||||
fi
|
||||
}
|
||||
|
||||
#parse the arguments
|
||||
VALID_STR=`getopt -o hcraswo:p: --long help,clean,release,address_sanitizer,wheel,clean,outdir:,package: -- "$@"`
|
||||
eval set -- "$VALID_STR"
|
||||
|
||||
while true ;
|
||||
do
|
||||
#echo "parocessing $1"
|
||||
case "$1" in
|
||||
(-h | --help)
|
||||
printUsage ; exit 0;;
|
||||
(-c | --clean)
|
||||
TARGET="clean" ; ((CLEAN_OR_OUT|=1)) ; shift ;;
|
||||
(-r | --release)
|
||||
BUILD_TYPE="RelWithDebInfo" ; shift ;;
|
||||
(-a | --address_sanitizer)
|
||||
set_asan_env_vars
|
||||
set_address_sanitizer_on ; shift ;;
|
||||
(-s | --static)
|
||||
SHARED_LIBS="OFF" ;
|
||||
STATIC_FLAG="-DBUILD_SHARED_LIBS=$SHARED_LIBS" ; shift ;;
|
||||
(-w | --wheel)
|
||||
WHEEL_PACKAGE=true ; shift ;;
|
||||
(-o | --outdir)
|
||||
TARGET="outdir"; PKGTYPE=$2 ; OUT_DIR_SPECIFIED=1 ; ((CLEAN_OR_OUT|=2)) ; shift 2 ;;
|
||||
(-p | --package)
|
||||
MAKETARGET="$2" ; shift 2;;
|
||||
--) shift; break;; # end delimiter
|
||||
(*)
|
||||
echo " This should never come but just incase : UNEXPECTED ERROR Parm : [$1] ">&2 ; exit 20;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
check_conflicting_options
|
||||
|
||||
|
||||
clean_roct() {
|
||||
rm -rf "$ROCT_BUILD_DIR"
|
||||
rm -rf "$ROCT_PACKAGE_DEB"
|
||||
rm -rf "$ROCT_PACKAGE_RPM"
|
||||
rm -rf "$PACKAGE_ROOT/libhsakmt"
|
||||
rm -rf "$PACKAGE_INCLUDE/libhsakmt"
|
||||
rm -f $PACKAGE_LIB/libhsakmt.so*
|
||||
rm -f $PACKAGE_LIB/libhsakmt.a
|
||||
rm -f $PACKAGE_INCLUDE/hsakmt*.h $PACKAGE_INCLUDE/linux/kfd_ioctl.h
|
||||
}
|
||||
|
||||
build_roct() {
|
||||
echo "Building ROCt"
|
||||
|
||||
# Clean up the deb and rpm files first to avoid multiple versions
|
||||
rm -f $ROCT_BUILD_DIR/hsakmt-roct*.deb
|
||||
rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb
|
||||
rm -f "$ROCT_PACKAGE_DEB"/*
|
||||
|
||||
rm -f $ROCT_BUILD_DIR/hsakmt-roct*.rpm
|
||||
rm -f $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm
|
||||
rm -f "$ROCT_PACKAGE_RPM"/*
|
||||
|
||||
# Set pkg config path for Static builds
|
||||
# so that static libraries of drm and libdrm_amdgpu will get linked
|
||||
if [ "$SHARED_LIBS" == "OFF" ]; then
|
||||
install_drmStatic_lib
|
||||
fi
|
||||
# Set this variable only for CentOS 7, as this does not
|
||||
# allow the "suggests" field for the generated package.
|
||||
if [ "${DISTRO_ID}" = "centos-7" ]; then
|
||||
libdrm_cmake_var="-DHSAKMT_REQUIRES_LIBDRM=true"
|
||||
fi
|
||||
|
||||
if [ ! -d "$ROCT_BUILD_DIR" ]; then
|
||||
mkdir -p "$ROCT_BUILD_DIR"
|
||||
pushd "$ROCT_BUILD_DIR"
|
||||
|
||||
cmake \
|
||||
-DCMAKE_MODULE_PATH="$THUNK_ROOT/cmake_modules" \
|
||||
-DBUILD_SHARED_LIBS="OFF" \
|
||||
$(rocm_cmake_params) \
|
||||
$(rocm_common_cmake_params) \
|
||||
-DHSAKMT_INSTALL_PREFIX="$PACKAGE_ROOT" \
|
||||
-DHSAKMT_INSTALL_LIBDIR="$PACKAGE_LIB" \
|
||||
-DHSAKMT_PACKAGING_INSTALL_PREFIX="$ROCM_PATH" \
|
||||
-DENABLE_LDCONFIG=OFF \
|
||||
-DHSAKMT_WERROR=1 \
|
||||
-DADDRESS_SANITIZER="$ADDRESS_SANITIZER" \
|
||||
$libdrm_cmake_var \
|
||||
"$THUNK_ROOT"
|
||||
popd
|
||||
fi
|
||||
cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS
|
||||
cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install
|
||||
cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package
|
||||
|
||||
if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then
|
||||
cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS install-dev
|
||||
cmake --build "$ROCT_BUILD_DIR" -- $ROCT_MAKE_OPTS package-dev
|
||||
fi
|
||||
|
||||
mkdir -p "$PACKAGE_LIB"
|
||||
# We have both here as we transition from shared to static lib
|
||||
if [ -e "$ROCT_BUILD_DIR/libhsakmt.so" ]; then
|
||||
# If the .so exists, so will the .so.1 and such
|
||||
cp -R "$ROCT_BUILD_DIR/libhsakmt.so"* "$PACKAGE_LIB"
|
||||
fi
|
||||
if [ -e "$ROCT_BUILD_DIR/libhsakmt.a" ]; then
|
||||
cp -R "$ROCT_BUILD_DIR/libhsakmt.a" "$PACKAGE_LIB"
|
||||
fi
|
||||
|
||||
mkdir -p "$ROCT_PACKAGE_DEB"
|
||||
if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "DEB" ]] ; then
|
||||
cp -a $ROCT_BUILD_DIR/hsakmt*.deb "$ROCT_PACKAGE_DEB"
|
||||
if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then
|
||||
cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.deb "$ROCT_PACKAGE_DEB"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$ROCT_PACKAGE_RPM"
|
||||
if [[ "${CPACKGEN:-"DEB;RPM"}" =~ "RPM" ]] ; then
|
||||
cp -a $ROCT_BUILD_DIR/hsakmt*.rpm "$ROCT_PACKAGE_RPM"
|
||||
if [ -e "$THUNK_ROOT/hsakmt-dev.txt" ]; then
|
||||
cp -a $ROCT_BUILD_DIR/hsakmt-roct-dev/hsakmt-roct*.rpm "$ROCT_PACKAGE_RPM"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
print_output_directory() {
|
||||
case ${PKGTYPE} in
|
||||
("deb")
|
||||
echo ${ROCT_PACKAGE_DEB};;
|
||||
("rpm")
|
||||
echo ${ROCT_PACKAGE_RPM};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
verifyEnvSetup
|
||||
|
||||
case $TARGET in
|
||||
(clean) clean_roct ;;
|
||||
(build) build_roct; build_wheel "$ROCT_BUILD_DIR" "$PROJ_NAME" ;;
|
||||
(outdir) print_output_directory ;;
|
||||
(*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
|
||||
echo "Operation complete"
|
||||
@@ -1,41 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
|
||||
|
||||
set_component_src TransferBench
|
||||
|
||||
build_transferbench() {
|
||||
echo "Start build"
|
||||
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
ack_and_skip_static
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
|
||||
init_rocm_common_cmake_params
|
||||
|
||||
CXX=$(set_build_variables __HIP_CC__) \
|
||||
cmake "${rocm_math_common_cmake_params[@]}" "$COMPONENT_SRC"
|
||||
make package
|
||||
|
||||
rm -rf _CPack_Packages/ && find -name '*.o' -delete
|
||||
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
|
||||
show_build_cache_stats
|
||||
}
|
||||
|
||||
clean_transferbench() {
|
||||
echo "Cleaning TransferBench build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
|
||||
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
|
||||
echo "Done!"
|
||||
}
|
||||
|
||||
stage2_command_args "$@"
|
||||
|
||||
case $TARGET in
|
||||
build) build_transferbench; build_wheel ;;
|
||||
outdir) print_output_directory ;;
|
||||
clean) clean_transferbench ;;
|
||||
*) die "Invalid target $TARGET" ;;
|
||||
esac
|
||||
@@ -1,769 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
TOPOLOGY_SYSFS_DIR=/sys/devices/virtual/kfd/kfd/topology/nodes
|
||||
|
||||
# Set python version
|
||||
# TODO: Get the python version from build arguments
|
||||
PY_COMMAND=python3.6
|
||||
# Set a sensible default value for DASH_JAY in case none is provided
|
||||
DASH_JAY=${DASH_JAY:-"-j $(nproc)"}
|
||||
|
||||
# Enable ccache by default unless requested otherwhise
|
||||
if [[ "$ROCM_USE_CCACHE" != "0" ]] ; then
|
||||
for d in /usr/lib/ccache /usr/lib64/ccache ;do
|
||||
if [ -d "$d" ]; then
|
||||
PATH="$d:$PATH"
|
||||
break # Only add one ccache at most
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# TODO: To be removed, once debug package issues are fixed
|
||||
DISABLE_DEBUG_PACKAGE="false"
|
||||
set_gdwarf_4() {
|
||||
# In SLES and RHEL, debuginfo package is not getting generated
|
||||
# Splitting debuginfo is getting failed(dwarf-5 unhandled) when compiler is set to clang.
|
||||
# By default -gdwarf-5 is used for the compression of debug symbols
|
||||
# So setting -gdwarf-4 as a quick fix
|
||||
# TODO: -gdwarf-5 unhandling when compiler set to clang need to be fixed
|
||||
case "$DISTRO_ID" in
|
||||
(sles*|rhel*)
|
||||
SET_DWARF_VERSION_4="-gdwarf-4"
|
||||
;;
|
||||
(*)
|
||||
SET_DWARF_VERSION_4=""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Print message to stderr
|
||||
# param message string to print on exit
|
||||
# Example: printErr "file not found"
|
||||
printErr() {
|
||||
echo "$@" 1>&2
|
||||
}
|
||||
|
||||
# Print message to stderr and terminate current program
|
||||
# param message string to print on exit
|
||||
# Example: die "Your program" has terminated
|
||||
die() {
|
||||
printErr "FATAL: $@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Die if first argument is empty
|
||||
# param string to validate
|
||||
# param error message
|
||||
# Example: die "$VARIABLE" "Your program" has terminated
|
||||
dieIfEmpty() {
|
||||
if [ "$1" == "" ]; then
|
||||
shift
|
||||
die "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get directory with build output package
|
||||
# Precedence:
|
||||
# 1. PWD
|
||||
# 2. Caller's folder
|
||||
# 3. Known build output folder
|
||||
getPackageRoot() {
|
||||
local scriptPath=$(readlink -f $(dirname $BASH_SOURCE))
|
||||
local testFile="build.version"
|
||||
|
||||
if [ -a "$PWD/$testFile" ]; then
|
||||
echo "$PWD"
|
||||
elif [ -a "$scriptPath/../$testFile" ]; then
|
||||
echo "$scriptPath/.."
|
||||
elif [ -a "$scriptPath/$testFile" ]; then
|
||||
echo "$scriptPath"
|
||||
elif [ ! -z "$OUT_DIR" ]; then
|
||||
echo "$OUT_DIR"
|
||||
else
|
||||
die "Failed to determine package directory"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get a list of directories containing the build output
|
||||
# shared objects.
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getLibPath() {
|
||||
local packageRoot="$(getPackageRoot)"
|
||||
dieIfEmpty "$packageRoot"
|
||||
echo "$packageRoot/lib"
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output executables
|
||||
# param binDir (optional) - package name
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getBinPath() {
|
||||
local binDir="$1"
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
|
||||
if [ "$binDir" == "" ]; then
|
||||
echo "$packageRoot/bin"
|
||||
else
|
||||
echo "$packageRoot/bin/$binDir"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output source files
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getSrcPath() {
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
echo "$packageRoot/src"
|
||||
}
|
||||
|
||||
# Get a list of directories to place build output
|
||||
# param moduleName - name of the module for the build path
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getBuildPath() {
|
||||
local moduleName="$1"
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
echo "$packageRoot/build/$moduleName"
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output etc files
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getUtilsPath() {
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
echo "$packageRoot/utils"
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output include files
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getIncludePath() {
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
echo "$packageRoot/include"
|
||||
}
|
||||
|
||||
# Get the directory containing the cmake config files
|
||||
getCmakePath() {
|
||||
local rocmInstallPath=${ROCM_INSTALL_PATH}
|
||||
local cmakePath="lib/cmake"
|
||||
if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then
|
||||
cmakePath="lib/asan/cmake"
|
||||
fi
|
||||
dieIfEmpty "$rocmInstallPath"
|
||||
echo "$rocmInstallPath/$cmakePath"
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output debian files
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getDebPath() {
|
||||
local packageName="$1"
|
||||
dieIfEmpty "$packageName" "No valid package name specified"
|
||||
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
|
||||
echo "$packageRoot/deb/$packageName"
|
||||
}
|
||||
|
||||
# Get a list of directories containing the output rpm files
|
||||
# Important: PWD takes precedence over build output folder
|
||||
getRpmPath() {
|
||||
local packageName="$1"
|
||||
dieIfEmpty "$packageName" "No valid package name specified"
|
||||
|
||||
local packageRoot=$(getPackageRoot)
|
||||
dieIfEmpty "$packageRoot"
|
||||
|
||||
echo "$packageRoot/rpm/$packageName"
|
||||
}
|
||||
|
||||
|
||||
verifyEnvSetup() {
|
||||
if [ -z "$OUT_DIR" ]; then
|
||||
die "Please source build/envsetup.sh first."
|
||||
fi
|
||||
}
|
||||
|
||||
# Copy a file or directory to target location and show single line progress
|
||||
progressCopy() {
|
||||
if [ -d "$1" ]; then
|
||||
rsync -a "$1"/* "$2"
|
||||
else
|
||||
rsync -a "$1" "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#following three common functions have been written to addition of static libraries
|
||||
print_lib_type() {
|
||||
if [ "$1" == "OFF" ];
|
||||
then
|
||||
echo " Building Archive "
|
||||
else
|
||||
echo " Building Shared Object "
|
||||
fi
|
||||
}
|
||||
|
||||
check_conflicting_options() {
|
||||
# 1->CLEAN_OR_OUT 2->PKGTYPE 3->MAKETARGET
|
||||
RET_CONFLICT=0
|
||||
if [ $1 -ge 2 ]; then
|
||||
if [ "$2" != "deb" ] && [ "$2" != "rpm" ] && [ "$2" != "tar" ]; then
|
||||
echo " Wrong Param Passed for Package Type for the Outdir... "
|
||||
RET_CONFLICT=30
|
||||
fi
|
||||
fi
|
||||
# check Clean Vs Outdir
|
||||
if [ $1 -ge 3 ] && [ $RET_CONFLICT -eq 0 ] ; then
|
||||
echo " Clean & Out Both are sepcified. Not accepted. Bailing .. "
|
||||
RET_CONFLICT=40
|
||||
fi
|
||||
if [ $RET_CONFLICT -eq 0 ] && [ "$3" != "deb" ] && [ "$3" != "rpm" ] && [ "$3" != "all" ] && [ "$3" != "tar" ]; then
|
||||
echo " Wrong Param Passed for Package Type... "
|
||||
RET_CONFLICT=50
|
||||
fi
|
||||
}
|
||||
|
||||
# Set the LLVM directory path with respect to ROCM_PATH
|
||||
# LLVM is installed in $ROCM_PATH/lib/llvm
|
||||
ROCM_LLVMDIR="lib/llvm"
|
||||
|
||||
export ADDRESS_SANITIZER="OFF"
|
||||
set_asan_env_vars() {
|
||||
export ADDRESS_SANITIZER="ON"
|
||||
# Flag to set cmake build params for ASAN builds
|
||||
ASAN_CMAKE_PARAMS="true"
|
||||
# Pass the LLVM bin path as the first parameter
|
||||
local LLVM_BIN_DIR=${1:-"${ROCM_INSTALL_PATH}/llvm/bin"}
|
||||
export CC="$LLVM_BIN_DIR/clang"
|
||||
export CXX="$LLVM_BIN_DIR/clang++"
|
||||
export FC="$LLVM_BIN_DIR/flang"
|
||||
export PATH="$PATH:$LLVM_BIN_DIR/"
|
||||
# get exact path to ASAN lib containing clang version
|
||||
ASAN_LIB_PATH=$(clang --print-file-name=libclang_rt.asan-x86_64.so)
|
||||
export LD_LIBRARY_PATH="${ASAN_LIB_PATH%/*}:${ROCM_PATH}/${ROCM_LLVMDIR}/lib:${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
export ASAN_OPTIONS="detect_leaks=0"
|
||||
}
|
||||
|
||||
set_address_sanitizer_on() {
|
||||
set_gdwarf_4
|
||||
export CFLAGS="-fsanitize=address -shared-libasan -g -gz $SET_DWARF_VERSION_4"
|
||||
export CXXFLAGS="-fsanitize=address -shared-libasan -g -gz $SET_DWARF_VERSION_4"
|
||||
export LDFLAGS="-Wl,--enable-new-dtags -fuse-ld=lld -fsanitize=address -shared-libasan -g -gz -Wl,--build-id=sha1 -L${ROCM_PATH}/${ROCM_LLVMDIR}/lib -L${ROCM_PATH}/lib/asan -L${ROCM_PATH}/${ROCM_LLVMDIR}/lib/asan"
|
||||
}
|
||||
|
||||
rebuild_lapack() {
|
||||
wget -nv -O lapack-3.9.1.tar.gz \
|
||||
http://compute-artifactory.amd.com/artifactory/rocm-generic-thirdparty-deps/ubuntu/lapack-v3.9.1.tar.gz
|
||||
sh -c "echo 'd0085d2caf997ff39299c05d4bacb6f3d27001d25a4cc613d48c1f352b73e7e0 *lapack-3.9.1.tar.gz' | sha256sum -c"
|
||||
tar xzf lapack-3.9.1.tar.gz --one-top-level=lapack-src --strip-components 1
|
||||
rm lapack-3.9.1.tar.gz
|
||||
|
||||
cmake -Slapack-src -Blapack-bld \
|
||||
${LAUNCHER_FLAGS} \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DCBLAS=ON \
|
||||
-DLAPACKE=OFF
|
||||
cmake --build lapack-bld -- -j${PROC}
|
||||
sudo -E $(which cmake) --build lapack-bld -- install
|
||||
rm -rf lapack-src lapack-bld
|
||||
}
|
||||
|
||||
ack_and_ignore_asan() {
|
||||
echo "-a parameter accepted but ignored"
|
||||
}
|
||||
|
||||
ack_and_skip_static() {
|
||||
echo "-s parameter accepted but static build is not enabled for this component..skipping"
|
||||
exit 0
|
||||
}
|
||||
|
||||
#debug function #dumping values in case of error to solve the same
|
||||
print_vars() {
|
||||
echo " Status of Vars in $1 build "
|
||||
echo " TARGET= $2 "
|
||||
echo " BUILD_TYPE = $3 "
|
||||
echo " SHARED_LIBS = $4 "
|
||||
echo " CLEAN_OR_OUT = $5 "
|
||||
echo " PKGTYPE= $6 "
|
||||
echo " MAKETARGET = $7 "
|
||||
}
|
||||
|
||||
# Provide this as a function, rather than a variable to delay the evaluation
|
||||
# of variables. In particular we might want to put code in here which changes
|
||||
# depending on if we are building with the address sanitizer or not
|
||||
# Can do things like set the packaging type - no point in packaging RPM on debian and
|
||||
# vica versa.
|
||||
# Set CPACK_RPM_INSTALL_WITH_EXEC so it packages debug info for shared libraries.
|
||||
rocm_common_cmake_params(){
|
||||
if [ "$BUILD_TYPE" = "RelWithDebInfo" ] ; then
|
||||
printf '%s ' "-DCPACK_RPM_DEBUGINFO_PACKAGE=TRUE" \
|
||||
"-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=TRUE" \
|
||||
"-DCPACK_RPM_INSTALL_WITH_EXEC=TRUE" \
|
||||
# end of list comment or blank line
|
||||
fi
|
||||
printf '%s ' "-DROCM_DEP_ROCMCORE=ON" \
|
||||
"-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_EXE_RPATH" \
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH" \
|
||||
"-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF" \
|
||||
"-DCPACK_RPM_PACKAGE_RELOCATABLE=ON" \
|
||||
"-DCPACK_SET_DESTDIR=OFF" \
|
||||
"-DINCLUDE_PATH_COMPATIBILITY=OFF" \
|
||||
# set lib directory to lib/asan for ASAN builds
|
||||
# Disable file reorg backward compatibilty for ASAN builds
|
||||
# ENABLE_ASAN_PACKAGING - Used for enabling ASAN packaging
|
||||
if [ "$ASAN_CMAKE_PARAMS" == "true" ] ; then
|
||||
local asan_common_cmake_params
|
||||
local ASAN_LIBDIR="lib/asan"
|
||||
local CMAKE_PATH=$(getCmakePath)
|
||||
asan_common_cmake_params=(
|
||||
"-DCMAKE_INSTALL_LIBDIR=$ASAN_LIBDIR"
|
||||
"-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_INSTALL_PATH}/$ASAN_LIBDIR;$ROCM_INSTALL_PATH/llvm;$ROCM_INSTALL_PATH"
|
||||
"-DENABLE_ASAN_PACKAGING=$ASAN_CMAKE_PARAMS"
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_LIB_RPATH"
|
||||
)
|
||||
printf '%s ' "${asan_common_cmake_params[@]}"
|
||||
else
|
||||
printf '%s ' "-DCMAKE_INSTALL_LIBDIR=lib" \
|
||||
# end of list comment or blank line
|
||||
fi
|
||||
}
|
||||
|
||||
rocm_cmake_params() {
|
||||
local cmake_params
|
||||
|
||||
cmake_params=(
|
||||
"-DCMAKE_PREFIX_PATH=${ROCM_INSTALL_PATH}/llvm;${ROCM_INSTALL_PATH}"
|
||||
"-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}"
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=1"
|
||||
"-DCPACK_GENERATOR=${CPACKGEN:-'DEB;RPM'}"
|
||||
"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE"
|
||||
"-DROCM_PATCH_VERSION=${ROCM_LIBPATCH_VERSION}"
|
||||
"-DCMAKE_INSTALL_PREFIX=${ROCM_INSTALL_PATH}"
|
||||
"-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_INSTALL_PATH}"
|
||||
)
|
||||
|
||||
printf '%s ' "${cmake_params[@]}"
|
||||
}
|
||||
|
||||
copy_if() {
|
||||
local type=$1 selector=$2 dir=$3
|
||||
shift 3
|
||||
mkdir -p "$dir"
|
||||
if [[ "${selector,,}" =~ "${type,,}" ]] ; then
|
||||
cp -a "$@" "$dir"
|
||||
fi
|
||||
# handle ddeb files as well, renaming them on the way
|
||||
for f
|
||||
do
|
||||
case "$f" in
|
||||
# Properly formed debian package name is a number of _ separated fields
|
||||
# The first is the package name.
|
||||
# Second is version number
|
||||
# third is architecture
|
||||
# Ensure we have at least one _ in the name
|
||||
(*"_"*".deb")
|
||||
local deb=${f%.deb}
|
||||
local basename=${deb##*/}
|
||||
local dirname=${f%/*}
|
||||
# filename($f) can be either /some/path/pkgname.deb or pkgname.deb
|
||||
# If its pkgname.deb, then directory should be .
|
||||
[[ "$dirname" == "$f" ]] && dirname=.
|
||||
local pkgname=${basename%%_*}
|
||||
local pkgextra=${basename#*_}
|
||||
# cmake 3.22 creates the filename by replacing .deb with -dbgsym.ddeb
|
||||
# at least for hostcall. Mind you hostcall looks to be incorrectly packaged.
|
||||
if [ -e "${deb}-dbgsym.ddeb" ]
|
||||
then
|
||||
dest=${deb##*/}
|
||||
dest="${dest%%_*}-dbgsym_${dest#*_}"
|
||||
cp -a "${deb}-dbgsym.ddeb" "$dir/${dest##*/}.deb"
|
||||
# copying the -dbgsym package to build director as well , as it is used for uploading to artifactory
|
||||
cp -a "${deb}-dbgsym.ddeb" "$BUILD_DIR/${dest##*/}.deb"
|
||||
fi
|
||||
# This is needed for comgr
|
||||
if [ -e "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" ]
|
||||
then
|
||||
cp "$dirname/${pkgname}-dbgsym_${pkgextra}.ddeb" "$dir/${pkgname}-dbgsym_${pkgextra}.deb"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Function to remove -r or -R from MAKEFLAGS
|
||||
remove_make_r_flags(){
|
||||
local firstword='^[^ ]*'
|
||||
if [[ "$MAKEFLAGS" =~ ${firstword}r ]] ; then MAKEFLAGS=${MAKEFLAGS/r/} ; fi
|
||||
if [[ "$MAKEFLAGS" =~ ${firstword}R ]] ; then MAKEFLAGS=${MAKEFLAGS/R/} ; fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Functions to create wheel packages
|
||||
install_wheel_prerequisites(){
|
||||
sudo yum install -y cpio
|
||||
$PY_COMMAND -m pip install --upgrade pip
|
||||
$PY_COMMAND -m pip install --upgrade build wheel setuptools rpm
|
||||
}
|
||||
# Before calling create_wheel_packge, make sure to set the global variables
|
||||
# Global variables: BUILD_SCRIPT_ROOT
|
||||
create_wheel_package() {
|
||||
echo "Creating wheel package"
|
||||
local buildDir="$1"
|
||||
local projName="$2"
|
||||
local PKG_INFO="pkginfo"
|
||||
# Get package output directory from project name
|
||||
local packageDir="$(getRpmPath $projName)"
|
||||
local ROCM_WHEEL_DIR="${buildDir}/_wheel"
|
||||
# Remove the _wheel directory if already exist
|
||||
rm -rf $ROCM_WHEEL_DIR
|
||||
mkdir -p $ROCM_WHEEL_DIR
|
||||
# Copy the setup.py generator to build folder
|
||||
cp -f $BUILD_SCRIPT_ROOT/setup.py $ROCM_WHEEL_DIR
|
||||
pushd $ROCM_WHEEL_DIR
|
||||
|
||||
local PKG_NAME_LIST=( "${packageDir}"/*.rpm )
|
||||
for pkg in "${PKG_NAME_LIST[@]}"; do
|
||||
if [[ "$pkg" =~ "-dbgsym" ]] || [[ "$pkg" =~ "-debuginfo" ]]; then
|
||||
echo "Discarding debug info wheel package. Continue with next package "
|
||||
continue
|
||||
fi
|
||||
pkgFiles=$(rpm -ql "$pkg")
|
||||
if [[ "$pkgFiles" =~ "contains no files" ]]; then
|
||||
echo "Package $pkg is empty."
|
||||
continue
|
||||
fi
|
||||
#Clean up any old files
|
||||
rm -rf opt usr build $PKG_INFO
|
||||
cat << EOF > "$PKG_INFO"
|
||||
PKG_NAME=$pkg
|
||||
EOF
|
||||
# Currently only supports python3.6
|
||||
$PY_COMMAND -m build --wheel -n -C--global-option=--build-number -C--global-option=$BUILD_ID
|
||||
done
|
||||
# Copy the wheel created to RPM folder which will be uploaded to artifactory
|
||||
copy_if WHL "WHL" "$packageDir" "$ROCM_WHEEL_DIR"/dist/*.whl
|
||||
popd
|
||||
}
|
||||
|
||||
# Function used by component build scripts for generating wheel package
|
||||
# Wheel package will be created if WHEEL_PACKAGE is set
|
||||
build_wheel() {
|
||||
if [[ "$WHEEL_PACKAGE" != "true" ]] || [[ "$SHARED_LIBS" == "OFF" ]] || [[ "$ENABLE_ADDRESS_SANITIZER" == "true" ]]; then
|
||||
echo "Wheel Package build disabled !!!!"
|
||||
return
|
||||
fi
|
||||
echo "Wheel Package build started !!!!"
|
||||
install_wheel_prerequisites
|
||||
# Input argument
|
||||
# $1 : Build directory
|
||||
# $2 : project name
|
||||
if [ -n "$1" ]; then
|
||||
create_wheel_package "$1" "$2"
|
||||
else
|
||||
create_wheel_package $BUILD_DIR "${PACKAGE_DIR##*/}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Set a variable to the value needed by cmake to use ninja if it is available
|
||||
# If GEN_NINJA is already defined, even as the empty string, then leave the value alone
|
||||
# Intended use in build_xxxx.sh is ${GEN_NINJA:+"$GEN_NINJA"} to cope with potentially weird values
|
||||
# but in practice just ${GEN_NINJA} without quotes will be fine.
|
||||
# e.g. cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" $GEN_NINJA
|
||||
# If for some reason you wanted to build without ninja just export an empty GEN_NINJA variable
|
||||
if [ "${GEN_NINJA+defined}" != "defined" ] && command -v ninja >/dev/null ; then
|
||||
GEN_NINJA=-GNinja
|
||||
fi
|
||||
|
||||
# Install amdgpu-install-internal package required for running amdpgu-repo and
|
||||
# set the repo for installing amdgpu static package
|
||||
set_amdgpu_repo() {
|
||||
#if amdgpu-repo command doesn't exist, install it
|
||||
if ! command -v amdgpu-repo &> /dev/null
|
||||
then
|
||||
# From ROCm VERSION get the first two numbers eg 6.2.0 --> 6.2
|
||||
AMDGPU_INSTALL_VER=${ROCM_VERSION%%.${ROCM_VERSION#?.*.}}
|
||||
# Currently static builds are triggered in RHEL-8 OS. only yum install is used for time being
|
||||
# TODO: Should be modified to handle other OS as well
|
||||
BASE_URL="https://artifactory-cdn.amd.com/artifactory/list/amdgpu-rpm/rhel"
|
||||
sudo yum install -y "${BASE_URL}/amdgpu-install-internal-${AMDGPU_INSTALL_VER}_8-1.noarch.rpm"
|
||||
fi
|
||||
KERNEL_INFO_FILE_URL=http://rocm-ci.amd.com/job/$JOB_NAME/$BUILD_ID/artifact/amdgpu_kernel_info.txt
|
||||
RADEON_TIER=$(curl "${KERNEL_INFO_FILE_URL}") || die "Failed to set Linux core build number."
|
||||
AMDGPU_BUILD_OPT="--amdgpu-build=${RADEON_TIER}"
|
||||
for delay in 0 30 60 120
|
||||
do
|
||||
echo "Sleeping ${delay} seconds"
|
||||
sleep ${delay};
|
||||
sudo amdgpu-repo $AMDGPU_BUILD_OPT --rocm-build="${JOB_NAME}/${BUILD_ID}" && return 0
|
||||
echo "Attempt to update repo using amdgpu-repo failed, retrying..."
|
||||
done
|
||||
echo "All attempts for amdgpu-repo installation failed, fallback to local repo update and installation!"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Function will install drm static packages and its dependencies
|
||||
install_drmStatic_lib(){
|
||||
if set_amdgpu_repo ; then
|
||||
sudo yum install -y libdrm-amdgpu-static
|
||||
else
|
||||
echo " amdgpu repo setting failed (rc=$?) "
|
||||
exit 60
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Set offload compress to ON by default
|
||||
DISABLE_OFFLOAD_COMPRESSION="false"
|
||||
setup_offload_compress(){
|
||||
# Enable offload compression based on the flag
|
||||
if [ "${DISABLE_OFFLOAD_COMPRESSION}" == "false" ] ; then
|
||||
export CFLAGS="$CFLAGS --offload-compress "
|
||||
export CXXFLAGS="$CXXFLAGS --offload-compress "
|
||||
else
|
||||
# Disable offload compression based on the flag
|
||||
export CFLAGS=${CFLAGS//" --offload-compress "/ }
|
||||
export CXXFLAGS=${CXXFLAGS//" --offload-compress "/ }
|
||||
fi
|
||||
}
|
||||
|
||||
# Get CMAKE build flags for CMAKE build trigger
|
||||
set_build_variables() {
|
||||
|
||||
# Variables which changes based on build types ex:ASAN/STATIC Builds.
|
||||
# Note:
|
||||
# 1. __CXX__ Argument is for getting the equivalant cmake_cxx_flag_params
|
||||
# which is clang++ for ASAN/STATIC builds and hipcc for rest all builds.
|
||||
# 2. __CC__ Argument is for getting the equivalant cmake_cc_flag_params
|
||||
# which is clang for ASAN/STATIC builds and hipcc for rest all builds.
|
||||
# 3. Similarly the __CMAKE_CXX_COMPILER__ and __CMAKE_CC_COMPILER__ Arguments
|
||||
# gives clang++, clang configuration for ASAN/STATIC and hipcc for rest of all builds.
|
||||
local cxx_flag_params
|
||||
local cc_flag_params
|
||||
local LLVM_BIN_DIR="$ROCM_PATH/lib/llvm/bin"
|
||||
local HIPCC_BIN_DIR="$ROCM_PATH/bin"
|
||||
|
||||
# Set Variable based on build types
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] || [ "${ENABLE_STATIC_BUILDS}" == "true" ] ; then
|
||||
cxx_flag_params="$LLVM_BIN_DIR/clang++"
|
||||
cc_flag_params="$LLVM_BIN_DIR/clang"
|
||||
else
|
||||
setup_offload_compress
|
||||
cxx_flag_params="$HIPCC_BIN_DIR/hipcc"
|
||||
cc_flag_params="$HIPCC_BIN_DIR/hipcc"
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
("__C_++__")
|
||||
printf "%s" "c++"
|
||||
;;
|
||||
("__G_++__")
|
||||
printf "%s" "g++"
|
||||
;;
|
||||
("__AMD_CLANG_++__")
|
||||
printf "%s" "amdclang++"
|
||||
;;
|
||||
("__HIP_CC__")
|
||||
printf "%s" "$HIPCC_BIN_DIR/hipcc"
|
||||
;;
|
||||
("__CLANG++__")
|
||||
printf "%s" "$LLVM_BIN_DIR/clang++"
|
||||
;;
|
||||
("__CLANG__")
|
||||
printf "%s" "$LLVM_BIN_DIR/clang"
|
||||
;;
|
||||
("__CXX__")
|
||||
printf "%s" "${cxx_flag_params}"
|
||||
;;
|
||||
("__CC__")
|
||||
printf "%s" "${cc_flag_params}"
|
||||
;;
|
||||
("__CMAKE_CC_PARAMS__")
|
||||
printf '%s ' "-DCMAKE_C_COMPILER=${cc_flag_params}"
|
||||
;;
|
||||
("__CMAKE_CXX_PARAMS__")
|
||||
printf '%s ' "-DCMAKE_CXX_COMPILER=${cxx_flag_params}"
|
||||
;;
|
||||
(*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
# Get the install directory name for libraries
|
||||
getInstallLibDir() {
|
||||
local libDir="lib"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then
|
||||
libDir="lib/asan"
|
||||
fi
|
||||
echo "$libDir"
|
||||
}
|
||||
|
||||
# Hardcoding the default GPU_ARCH, but this will be overwritten by input from job param or by component build script
|
||||
GFX_ARCH="gfx908;gfx90a:xnack-;gfx90a:xnack+;gfx1030;gfx1100;gfx1101;gfx1102;gfx942:xnack-;gfx942:xnack+;gfx1200;gfx1201"
|
||||
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ] ; then
|
||||
# updating Default GPU_ARCHS for ASAN builds
|
||||
GFX_ARCH="gfx90a:xnack+;gfx942:xnack+"
|
||||
fi
|
||||
# if ENABLE_GPU_ARCH Job parameter is set, then set GFX_ARCH to that value
|
||||
if [ -n "$ENABLE_GPU_ARCH" ]; then
|
||||
GFX_ARCH="$ENABLE_GPU_ARCH"
|
||||
fi
|
||||
# Finally overwrite the GPU_ARCH with the value from the component build script, if set_gpu_arch is called
|
||||
# We need to make sure where set_gpu_arch is called in the component build script,
|
||||
# it should have if condition to check if GPU_ARCH is set by ENABLE_GPU_ARCH, so JOB LEVEL PARAM will have highest priority
|
||||
set_gpu_arch(){
|
||||
GFX_ARCH="$1"
|
||||
}
|
||||
|
||||
disable_debug_package_generation(){
|
||||
SET_DWARF_VERSION_4=""
|
||||
DISABLE_DEBUG_PACKAGE="true"
|
||||
}
|
||||
|
||||
# Populate the common cmake params
|
||||
rocm_math_common_cmake_params=()
|
||||
init_rocm_common_cmake_params(){
|
||||
local retCmakeParams=${1:-rocm_math_common_cmake_params}
|
||||
local SET_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'}
|
||||
local ASAN_LIBDIR="lib/asan"
|
||||
local CMAKE_PATH=$(getCmakePath)
|
||||
# Common cmake parameters can be set
|
||||
# component build scripts can use this function
|
||||
local cmake_params
|
||||
if [ "${ASAN_CMAKE_PARAMS}" == "true" ] ; then
|
||||
cmake_params=(
|
||||
"-DCMAKE_PREFIX_PATH=$CMAKE_PATH;${ROCM_PATH}/$ASAN_LIBDIR;$ROCM_PATH/llvm;$ROCM_PATH"
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_LIB_RPATH"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_ASAN_EXE_RPATH"
|
||||
"-DENABLE_ASAN_PACKAGING=true"
|
||||
)
|
||||
else
|
||||
cmake_params=(
|
||||
"-DCMAKE_PREFIX_PATH=${ROCM_PATH}/llvm;${ROCM_PATH}"
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_LIB_RPATH"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,$ROCM_EXE_RPATH"
|
||||
)
|
||||
fi
|
||||
|
||||
cmake_params+=(
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=1"
|
||||
"-DCMAKE_BUILD_TYPE=${SET_BUILD_TYPE}"
|
||||
"-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE"
|
||||
"-DCMAKE_INSTALL_PREFIX=${ROCM_PATH}"
|
||||
"-DCMAKE_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}"
|
||||
"-DBUILD_FILE_REORG_BACKWARD_COMPATIBILITY=OFF"
|
||||
"-DROCM_SYMLINK_LIBS=OFF"
|
||||
"-DCPACK_PACKAGING_INSTALL_PREFIX=${ROCM_PATH}"
|
||||
"-DROCM_DISABLE_LDCONFIG=ON"
|
||||
"-DCPACK_SET_DESTDIR=OFF"
|
||||
"-DCPACK_RPM_PACKAGE_RELOCATABLE=ON"
|
||||
"-DROCM_PATH=${ROCM_PATH}"
|
||||
)
|
||||
#rocWMMa does not support gfx1030, so removing from default
|
||||
if [ "${COMPONENT_SRC}" == "$LIBS_WORK_DIR/rocWMMA" ]; then
|
||||
GFX_ARCH=$(echo $GFX_ARCH | sed 's/\(gfx1030;\)//g')
|
||||
fi
|
||||
#if component is not composable_kernel then only add -DAMDGPU_TARGETS, this is not supported for CK along with -DINSTANCES_ONLY
|
||||
if [ "${COMPONENT_SRC}" != "$LIBS_WORK_DIR/composable_kernel" ]; then
|
||||
cmake_params+=(
|
||||
"-DAMDGPU_TARGETS=${GFX_ARCH}"
|
||||
)
|
||||
fi
|
||||
|
||||
#if component is not hipsparselt | hipblaslt | rocBLAS | composable_kernel, then only add below cmake params. as GPU_TARGETS and CMAKE_HIP_ARCHITECTURES are not supported for hipsparselt, hipblaslt and rocblas
|
||||
# in future after SWDEV-468293, below params is not needed for any component
|
||||
case "${COMPONENT_SRC}" in
|
||||
"${LIBS_WORK_DIR}/hipSPARSELt" | "${LIBS_WORK_DIR}/hipBLASLt" | "${LIBS_WORK_DIR}/rocBLAS" | "${LIBS_WORK_DIR}/composable_kernel")
|
||||
# Do nothing for these components
|
||||
;;
|
||||
*)
|
||||
cmake_params+=(
|
||||
"-DGPU_TARGETS=${GFX_ARCH}"
|
||||
"-DCMAKE_HIP_ARCHITECTURES=${GFX_ARCH}"
|
||||
)
|
||||
;;
|
||||
esac
|
||||
#TODO :remove if clause once debug related issues are fixed
|
||||
if [ "${DISABLE_DEBUG_PACKAGE}" == "true" ] ; then
|
||||
SET_BUILD_TYPE=Release
|
||||
cmake_params+=(
|
||||
"-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=FALSE"
|
||||
"-DCPACK_RPM_DEBUGINFO_PACKAGE=FALSE"
|
||||
"-DCPACK_RPM_INSTALL_WITH_EXEC=FALSE"
|
||||
"-DCMAKE_BUILD_TYPE=${SET_BUILD_TYPE}"
|
||||
)
|
||||
elif [ "$SET_BUILD_TYPE" == "RelWithDebInfo" ] || [ "$SET_BUILD_TYPE" == "Debug" ]; then
|
||||
# RelWithDebinfo optimization level -O2 is having performance impact
|
||||
# So overriding the same to -O3
|
||||
set_gdwarf_4
|
||||
cmake_params+=(
|
||||
"-DCPACK_DEBIAN_DEBUGINFO_PACKAGE=TRUE"
|
||||
"-DCPACK_RPM_DEBUGINFO_PACKAGE=TRUE"
|
||||
"-DCPACK_RPM_INSTALL_WITH_EXEC=TRUE"
|
||||
"-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${SET_DWARF_VERSION_4} -O3 -g -DNDEBUG"
|
||||
)
|
||||
fi
|
||||
eval "${retCmakeParams}=( \"\${cmake_params[@]}\" ) "
|
||||
}
|
||||
|
||||
# Setup a number of variables to specify where to find the source
|
||||
# where to do the build and where to put the packages
|
||||
# Note the PACKAGE_DIR downcases the package name
|
||||
# This could be extended to do different things based on $1
|
||||
set_component_src(){
|
||||
COMPONENT_SRC="$LIBS_WORK_DIR/$1"
|
||||
|
||||
BUILD_DIR="$OUT_DIR/build/$1"
|
||||
DEB_PATH="$OUT_DIR/${PKGTYPE}/${1,,}"
|
||||
RPM_PATH="$OUT_DIR/${PKGTYPE}/${1,,}"
|
||||
PACKAGE_DIR="$OUT_DIR/${PKGTYPE}/${1,,}"
|
||||
}
|
||||
|
||||
# Standard definition of function to print the package location. If
|
||||
# for some reason a custom version is needed then it can overwrite
|
||||
# this definition
|
||||
# TODO: Don't use a global PKGTYPE, pass the value in as a parameter
|
||||
print_output_directory() {
|
||||
case ${1:-$PKGTYPE} in
|
||||
("deb")
|
||||
echo ${DEB_PATH};;
|
||||
("rpm")
|
||||
echo ${RPM_PATH};;
|
||||
(*)
|
||||
echo "Invalid package type \"${PKGTYPE}\" provided for -o" >&2; exit 1;;
|
||||
esac
|
||||
exit
|
||||
}
|
||||
|
||||
# Standard argument processing
|
||||
# Here to avoid repetition
|
||||
TARGET="build" # default target
|
||||
stage2_command_args(){
|
||||
while [ "$1" != "" ];
|
||||
do
|
||||
case $1 in
|
||||
-o | --outdir )
|
||||
shift 1; PKGTYPE=$1 ; TARGET="outdir" ;;
|
||||
-c | --clean )
|
||||
TARGET="clean" ;;
|
||||
*)
|
||||
break ;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
}
|
||||
|
||||
show_build_cache_stats(){
|
||||
if [ "$CCACHE_ENABLED" = "true" ] ; then
|
||||
if ! ccache -s; then
|
||||
echo "Unable to display sccache stats"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
FROM ubuntu:jammy as builder
|
||||
COPY packages /tmp/packages
|
||||
COPY local-pin-600 /tmp/local-pin-600
|
||||
COPY install-prerequisities.sh /tmp/install-prerequisities.sh
|
||||
RUN chmod +x /tmp/install-prerequisities.sh
|
||||
ENV KBUILD_PKG_ROOTCMD=
|
||||
ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps
|
||||
RUN /tmp/install-prerequisities.sh
|
||||
WORKDIR /src
|
||||
@@ -1,27 +0,0 @@
|
||||
# Steps to build the Docker Image
|
||||
|
||||
1. Clone this repository.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/ROCm/rocm-build.git
|
||||
```
|
||||
|
||||
2. Go into the OS-specific Docker directory in build-infra.
|
||||
|
||||
```bash
|
||||
cd rocm-build/build/docker/ubuntu22
|
||||
```
|
||||
|
||||
3. Build the Docker image
|
||||
|
||||
```bash
|
||||
docker build -t <docker image name> .
|
||||
```
|
||||
|
||||
Replace the `<docker image name>` with a new Docker image name of your choice.
|
||||
|
||||
4. After successful build, check that your \<docker image name\> exist in the list of available Docker images.
|
||||
|
||||
```bash
|
||||
docker images
|
||||
```
|
||||
@@ -1,324 +0,0 @@
|
||||
#! /usr/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
apt-get -y update
|
||||
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(sed 's/#.*//' /tmp/packages)
|
||||
apt-get clean
|
||||
rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy
|
||||
|
||||
#Install 2.17.1 version of git as we are seeing issues with 2.25 , where it was not allowing to add git submodules if the user is different for parent git directory
|
||||
curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz
|
||||
tar -zxf git.tar.gz
|
||||
cd git-*
|
||||
make prefix=/usr/local all
|
||||
make prefix=/usr/local install
|
||||
git --version
|
||||
|
||||
#install argparse and CppHeaderParser python modules for roctracer and rocprofiler
|
||||
#install rocm-docs-core for the docs-as-code project. Only needed on one OS
|
||||
# CppHeader needs setuptools. setuptools needs wheel.
|
||||
# Looks like I need them as seperate commands
|
||||
# Sigh, install both python2 and python 3 version
|
||||
pip3 install --no-cache-dir setuptools wheel tox
|
||||
pip3 install --no-cache-dir CppHeaderParser argparse requests lxml barectf recommonmark jinja2==3.0.0 \
|
||||
websockets matplotlib numpy==1.26.4 scipy minimal msgpack pytest sphinx joblib PyYAML rocm-docs-core cmake==3.25.2 pandas myst-parser lit
|
||||
|
||||
# Allow sudo for everyone user
|
||||
echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone
|
||||
|
||||
#Install libva-amdgpu-dev libdrm-amdgpu-dev
|
||||
wget https://repo.radeon.com/amdgpu-install/6.3/ubuntu/jammy/amdgpu-install_6.3.60300-1_all.deb
|
||||
apt install -y ./amdgpu-install_6.3.60300-1_all.deb
|
||||
apt update
|
||||
apt install -y libva-amdgpu-dev libdrm-amdgpu-dev
|
||||
rm -rf /etc/apt/sources.list.d/amdgpu.list /etc/apt/sources.list.d/amdgpu-proprietary.list ./amdgpu-install_6.3.60300-1_all.deb
|
||||
apt autoremove -y --purge amdgpu-install
|
||||
apt update
|
||||
|
||||
# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline
|
||||
wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.6/opam-2.1.6-x86_64-linux/download -O /usr/local/bin/opam
|
||||
chmod +x /usr/local/bin/opam
|
||||
opam init --yes --disable-sandboxing
|
||||
opam install ctypes --yes
|
||||
|
||||
# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3)
|
||||
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
|
||||
chmod a+x /usr/bin/repo
|
||||
|
||||
|
||||
# Install sharp from MLNX_OFED_LINUX as dependency for rccl-rdma-sharp-plugins
|
||||
cd /var/tmp
|
||||
mkdir mlnx
|
||||
wget -O mlnx/tar.tgz https://content.mellanox.com/ofed/MLNX_OFED-24.01-0.3.3.1/MLNX_OFED_LINUX-24.01-0.3.3.1-ubuntu22.04-x86_64.tgz
|
||||
tar -xz -C mlnx -f mlnx/tar.tgz
|
||||
apt-key add mlnx/*/RPM-GPG-KEY-Mellanox
|
||||
echo "deb [arch=amd64] file:$(echo $PWD/mlnx/*/DEBS) ./" > /etc/apt/sources.list.d/sharp.list
|
||||
apt update
|
||||
apt install -y sharp
|
||||
apt clean
|
||||
rm -rf /var/cache/apt/ /var/lib/apt/lists/* mlnx /etc/apt/sources.list.d/sharp.list
|
||||
|
||||
apt update
|
||||
apt -y install libunwind-dev
|
||||
apt -y install libgoogle-glog-dev;
|
||||
|
||||
# Install python3.8 from source
|
||||
curl -LO https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tar.xz
|
||||
tar -xvf Python-3.8.13.tar.xz
|
||||
pwd
|
||||
ls /var/tmp/
|
||||
ls Python-3.8.13
|
||||
mv Python-3.8.13 /opt/
|
||||
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev pkg-config make -y
|
||||
cd /opt/Python-3.8.13/
|
||||
./configure --enable-optimizations --enable-shared
|
||||
make
|
||||
make -j 6
|
||||
make altinstall
|
||||
ldconfig /opt/Python3.8.13
|
||||
python3.8 --version
|
||||
|
||||
# roctracer and rocprofiler needs this python3.8
|
||||
python3.8 -m pip install setuptools wheel
|
||||
python3.8 -m pip install CppHeaderParser argparse requests lxml PyYAML joblib
|
||||
|
||||
|
||||
#Install older version of hwloc-devel package for rocrtst
|
||||
curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2
|
||||
tar -xvf hwloc-1.11.13.tar.bz2
|
||||
cd hwloc-1.11.13
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
cp /usr/local/lib/libhwloc.so.5 /usr/lib
|
||||
hwloc-info --version
|
||||
|
||||
# Install gtest
|
||||
mkdir -p /tmp/gtest
|
||||
cd /tmp/gtest
|
||||
wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip
|
||||
unzip googletest.zip
|
||||
cd googletest-1.14.0/
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
rm -rf /tmp/gtest
|
||||
|
||||
## Install gRPC from source
|
||||
## RDC Pre-requisites
|
||||
mkdir /tmp/grpc
|
||||
mkdir /usr/grpc
|
||||
cd /tmp
|
||||
git clone --recurse-submodules -b v1.67.1 https://github.com/grpc/grpc
|
||||
cd grpc
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 -DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,'$ORIGIN' ..
|
||||
make -j $(nproc) install
|
||||
rm -rf /tmp/grpc
|
||||
|
||||
## Download prebuilt AMD multithreaded blis (2.0)
|
||||
## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403
|
||||
mkdir -p /tmp/blis
|
||||
cd /tmp/blis
|
||||
wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz -
|
||||
mv amd-blis-mt /usr/blis
|
||||
cd /
|
||||
rm -rf /tmp/blis
|
||||
|
||||
## rocBLAS Pre-requisites
|
||||
## Download aocl-linux-gcc-4.2.0_1_amd64.deb
|
||||
mkdir -p /tmp/aocl
|
||||
cd /tmp/aocl
|
||||
wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-2/aocl-linux-gcc-4.2.0_1_amd64.deb
|
||||
apt install ./aocl-linux-gcc-4.2.0_1_amd64.deb
|
||||
rm -rf /tmp/aocl
|
||||
|
||||
## hipBLAS Pre-requisites
|
||||
## lapack(3.9.1v)
|
||||
## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174
|
||||
lapack_version=3.9.1
|
||||
lapack_srcdir=lapack-$lapack_version
|
||||
lapack_blddir=lapack-$lapack_version-bld
|
||||
mkdir -p /tmp/lapack
|
||||
cd /tmp/lapack
|
||||
rm -rf "$lapack_srcdir" "$lapack_blddir"
|
||||
wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf -
|
||||
cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF
|
||||
make -j$(nproc) -C "$lapack_blddir"
|
||||
make -C "$lapack_blddir" install
|
||||
cd $lapack_blddir
|
||||
cp -r ./include/* /usr/local/include/
|
||||
cp -r ./lib/* /usr/local/lib
|
||||
cd /
|
||||
rm -rf /tmp/lapack
|
||||
|
||||
## rocSOLVER Pre-requisites
|
||||
## FMT(7.1.3v)
|
||||
## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152
|
||||
fmt_version=7.1.3
|
||||
fmt_srcdir=fmt-$fmt_version
|
||||
fmt_blddir=fmt-$fmt_version-bld
|
||||
mkdir -p /tmp/fmt
|
||||
cd /tmp/fmt
|
||||
rm -rf "$fmt_srcdir" "$fmt_blddir"
|
||||
wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/7.1.3.tar.gz | tar xzf -
|
||||
cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF
|
||||
make -j$(nproc) -C "$fmt_blddir"
|
||||
make -C "$fmt_blddir" install
|
||||
|
||||
# Build and install libjpeg-turbo
|
||||
mkdir -p /tmp/libjpeg-turbo
|
||||
cd /tmp/libjpeg-turbo
|
||||
wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip
|
||||
unzip libjpeg-turbo-2.0.6.2.zip
|
||||
cd libjpeg-turbo-2.0.6.2
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib ..
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/libjpeg-turbo
|
||||
|
||||
# Get released ninja from source
|
||||
mkdir -p /tmp/ninja
|
||||
cd /tmp/ninja
|
||||
wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip
|
||||
unzip ninja.zip
|
||||
cd ninja-1.11.1.g95dee.kitware.jobserver-1
|
||||
./configure.py --bootstrap
|
||||
cp ninja /usr/local/bin/
|
||||
rm -rf /tmp/ninja
|
||||
|
||||
# Install FFmpeg and dependencies
|
||||
apt-get update
|
||||
apt-get install --no-install-recommends -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
|
||||
|
||||
# Build NASM
|
||||
mkdir -p /tmp/nasm-2.15.05
|
||||
cd /tmp
|
||||
wget -qO- "https://distfiles.macports.org/nasm/nasm-2.15.05.tar.bz2" | tar -xvj
|
||||
cd nasm-2.15.05
|
||||
./autogen.sh
|
||||
./configure --prefix="/usr/local"
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/nasm-2.15.05
|
||||
|
||||
# Build YASM
|
||||
mkdir -p /tmp/yasm-1.3.0
|
||||
cd /tmp
|
||||
wget -qO- "http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz" | tar -xvz
|
||||
cd yasm-1.3.0
|
||||
./configure --prefix="/usr/local"
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/yasm-1.3.0
|
||||
|
||||
# Build x264
|
||||
mkdir -p /tmp/x264-snapshot-20191217-2245-stable
|
||||
cd /tmp
|
||||
wget -qO- "https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245-stable.tar.bz2" | tar -xvj
|
||||
cd /tmp/x264-snapshot-20191217-2245-stable
|
||||
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure --prefix="/usr/local" --enable-shared
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/x264-snapshot-20191217-2245-stable
|
||||
|
||||
# Build x265
|
||||
mkdir -p /tmp/x265_2.7
|
||||
cd /tmp
|
||||
wget -qO- "https://get.videolan.org/x265/x265_2.7.tar.gz" | tar -xvz
|
||||
cd /tmp/x265_2.7/build/linux
|
||||
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/usr/local" -DENABLE_SHARED:bool=on ../../source
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/x265_2.7
|
||||
|
||||
# Build fdk-aac
|
||||
mkdir -p /tmp/fdk-aac-2.0.2
|
||||
cd /tmp
|
||||
wget -qO- "https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz" | tar -xvz
|
||||
cd /tmp/fdk-aac-2.0.2
|
||||
autoreconf -fiv
|
||||
./configure --prefix="/usr/local" --enable-shared --disable-static
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/fdk-aac-2.0.2
|
||||
|
||||
cp /tmp/local-pin-600 /etc/apt/preferences.d
|
||||
|
||||
command -v lbzip2
|
||||
ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor
|
||||
|
||||
# Install Google Benchmark
|
||||
mkdir -p /tmp/Gbenchmark
|
||||
cd /tmp/Gbenchmark
|
||||
wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz
|
||||
cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14
|
||||
make -j -C build
|
||||
cd /tmp/Gbenchmark/build
|
||||
make install
|
||||
|
||||
# Build boost-1.85.0 from source for RPP
|
||||
# Installing in a non-standard location since the test packages of hipFFT and rocFFT pick up the version of
|
||||
# the installed Boost library and declare a package dependency on that specific version of Boost.
|
||||
# For example, if this was installed in the standard location it would declare a dependency on libboost-dev(el)1.85.0
|
||||
# which is not available as a package in any distro.
|
||||
# Once this is fixed, we can remove the Boost package from the requirements list and install this
|
||||
# in the standard location
|
||||
mkdir -p /tmp/boost-1.85.0
|
||||
cd /tmp/boost-1.85.0
|
||||
wget -nv https://sourceforge.net/projects/boost/files/boost/1.85.0/boost_1_85_0.tar.bz2 -O ./boost_1_85_0.tar.bz2
|
||||
tar -xf boost_1_85_0.tar.bz2 --use-compress-program="/usr/local/bin/compressor"
|
||||
cd boost_1_85_0
|
||||
./bootstrap.sh --prefix=${RPP_DEPS_LOCATION} --with-python=python3
|
||||
./b2 stage -j$(nproc) threading=multi link=shared cxxflags="-std=c++11"
|
||||
./b2 install threading=multi link=shared --with-system --with-filesystem
|
||||
./b2 stage -j$(nproc) threading=multi link=static cxxflags="-std=c++11 -fpic" cflags="-fpic"
|
||||
./b2 install threading=multi link=static --with-system --with-filesystem
|
||||
rm -rf /tmp/boost-1.85.0
|
||||
|
||||
# Build ccache from the source
|
||||
cd /tmp
|
||||
git clone https://github.com/ccache/ccache -b v4.7.5
|
||||
cd ccache
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
make
|
||||
make install
|
||||
cd /tmp
|
||||
rm -rf ccache
|
||||
|
||||
# symlinks for ccache
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/gcc
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/g++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/cc
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/c++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/amdclang
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/amdclang++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/hipcc
|
||||
|
||||
# Installing MIOpen dependencies
|
||||
pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz
|
||||
mkdir -p /tmp/MIOpen
|
||||
git clone https://github.com/ROCm/MIOpen.git -b amd-master /tmp/MIOpen
|
||||
cd /tmp/MIOpen
|
||||
# Commenting rocMLIR and componsable kernel components to install thirt party dependences
|
||||
sed -i '/ROCm\/rocMLIR@\|ROCm\/composable_kernel@/s/^/#/' requirements.txt
|
||||
mkdir -p /tmp/miopen-deps
|
||||
rbuild prepare -d /tmp/miopen-deps/ --cxx /usr/bin/g++ --cc /usr/bin/gcc
|
||||
# Installing rocMLIR which is a depency for MIOPEN. Please not we are not installing CK
|
||||
# explicitly its already build as part of rocm stack.
|
||||
export PROC=${PROC:-"$(nproc)"}
|
||||
MLIR_COMMIT="$(awk '/rocMLIR/ {split($1, s, "@"); print s[2]}' requirements.txt)"
|
||||
mkdir -p /tmp/rocMLIR
|
||||
cd /tmp/rocMLIR
|
||||
wget -nv "https://www.github.com/ROCmSoftwarePlatform/rocMLIR/archive/${MLIR_COMMIT}.tar.gz"
|
||||
tar -xzf "${MLIR_COMMIT}.tar.gz"
|
||||
cd "rocMLIR-${MLIR_COMMIT}"
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja -DCMAKE_C_COMPILER="/usr/bin/gcc" -DCMAKE_CXX_COMPILER="/usr/bin/g++" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/tmp/miopen-deps" -DBUILD_FAT_LIBROCKCOMPILER=1 ..
|
||||
cmake --build . -- librockCompiler
|
||||
cmake --build . -- install
|
||||
rm -rf _CPack_Packages/ /tmp/MIOpen /tmp/rocMLIR
|
||||
find -name '*.o' -delete
|
||||
@@ -1,3 +0,0 @@
|
||||
Package: *
|
||||
Pin: origin ""
|
||||
Pin-Priority: 600
|
||||
@@ -1,135 +0,0 @@
|
||||
apt-utils
|
||||
aria2
|
||||
autoconf
|
||||
automake
|
||||
bc
|
||||
bison
|
||||
bridge-utils
|
||||
build-essential
|
||||
bzip2
|
||||
check
|
||||
chrpath
|
||||
cifs-utils
|
||||
cpio
|
||||
curl
|
||||
devscripts
|
||||
dkms
|
||||
dos2unix
|
||||
fakeroot
|
||||
flex
|
||||
freeglut3-dev
|
||||
g++
|
||||
g++-multilib
|
||||
gawk
|
||||
gcc
|
||||
gcc-multilib
|
||||
gfortran
|
||||
git-lfs
|
||||
gnupg
|
||||
graphviz
|
||||
kernel-wedge
|
||||
lbzip2
|
||||
# less is needed by repo
|
||||
less
|
||||
libass-dev
|
||||
libatlas-base-dev
|
||||
libbabeltrace-ctf-dev
|
||||
libbabeltrace-dev
|
||||
libboost-all-dev
|
||||
libboost-dev
|
||||
libboost-filesystem-dev
|
||||
libboost-program-options-dev
|
||||
libboost-system-dev
|
||||
libbz2-dev
|
||||
libc++-dev
|
||||
libc++1
|
||||
libc++abi-dev
|
||||
libc++abi1
|
||||
libc6-dev-i386
|
||||
libcap-dev
|
||||
libcurl4-openssl-dev
|
||||
libdrm-dev
|
||||
libdw-dev
|
||||
libdw1
|
||||
libdwarf-dev
|
||||
libelf-dev
|
||||
libelf1
|
||||
libexpat1-dev
|
||||
libfftw3-dev
|
||||
libfile-find-rule-perl
|
||||
libgflags-dev
|
||||
libglew-dev
|
||||
libgmp-dev
|
||||
libgtk2.0-dev
|
||||
libhdf5-serial-dev
|
||||
libjpeg-dev
|
||||
libleveldb-dev
|
||||
liblmdb-dev
|
||||
liblzma-dev
|
||||
libmpfr-dev
|
||||
libmpich-dev
|
||||
libmsgpack-dev
|
||||
libncurses5-dev
|
||||
libnuma-dev
|
||||
libomp-dev
|
||||
libopenblas-base
|
||||
libopenblas-dev
|
||||
libopencv-dev
|
||||
libpci-dev
|
||||
libpci3
|
||||
libpciaccess-dev
|
||||
libpciaccess0
|
||||
libprotobuf-dev
|
||||
libpython2.7-dev
|
||||
libpython3-dev
|
||||
libreadline-dev
|
||||
libsnappy-dev
|
||||
libssl-dev
|
||||
libsuitesparse-dev
|
||||
libsystemd-dev
|
||||
libtinfo-dev
|
||||
libtool
|
||||
liburi-encode-perl
|
||||
libva-dev
|
||||
libvirt-clients
|
||||
libvirt-daemon-system
|
||||
libyaml-cpp-dev
|
||||
libzstd-dev
|
||||
llvm
|
||||
llvm-dev
|
||||
llvm-runtime
|
||||
mesa-common-dev
|
||||
mpich
|
||||
ocaml
|
||||
ocaml-findlib
|
||||
ocl-icd-libopencl1
|
||||
ocl-icd-opencl-dev
|
||||
patchelf
|
||||
pigz
|
||||
pkg-config
|
||||
protobuf-compiler
|
||||
python-is-python3
|
||||
python3-pip-whl
|
||||
python3-dev
|
||||
python3-pip
|
||||
python3-venv
|
||||
python3-yaml
|
||||
python3.8-dev
|
||||
re2c
|
||||
redis-tools
|
||||
rpm
|
||||
rsync
|
||||
ssh
|
||||
strace
|
||||
sudo
|
||||
systemtap-sdt-dev
|
||||
texinfo
|
||||
texlive
|
||||
texlive-extra-utils
|
||||
texlive-plain-generic
|
||||
texlive-xetex
|
||||
unzip
|
||||
vim
|
||||
wget
|
||||
xsltproc
|
||||
zlib1g-dev
|
||||
@@ -1,11 +0,0 @@
|
||||
FROM ubuntu:noble as builder
|
||||
COPY packages /tmp/packages
|
||||
COPY local-pin-600 /tmp/local-pin-600
|
||||
COPY install-prerequisities.sh /tmp/install-prerequisities.sh
|
||||
RUN chmod +x /tmp/install-prerequisities.sh
|
||||
ENV KBUILD_PKG_ROOTCMD=
|
||||
ENV RPP_DEPS_LOCATION=/usr/local/rpp-deps
|
||||
ENV PATH="/opt/venv/bin:$PATH"
|
||||
ENV PATH=$PATH:"/usr/local/bin"
|
||||
RUN /tmp/install-prerequisities.sh
|
||||
WORKDIR /src
|
||||
@@ -1,27 +0,0 @@
|
||||
# Steps to build the Docker Image
|
||||
|
||||
1. Clone this repository.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/ROCm/rocm-build.git
|
||||
```
|
||||
|
||||
2. Go into the OS-specific Docker directory in build-infra.
|
||||
|
||||
```bash
|
||||
cd rocm-build/build/docker/ubuntu22
|
||||
```
|
||||
|
||||
3. Build the Docker image
|
||||
|
||||
```bash
|
||||
docker build -t <docker image name> .
|
||||
```
|
||||
|
||||
Replace the `<docker image name>` with a new Docker image name of your choice.
|
||||
|
||||
4. After successful build, check that your \<docker image name\> exist in the list of available Docker images.
|
||||
|
||||
```bash
|
||||
docker images
|
||||
```
|
||||
@@ -1,265 +0,0 @@
|
||||
#! /usr/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
apt-get update
|
||||
DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get install --no-install-recommends -y $(sed 's/#.*//' /tmp/packages)
|
||||
apt-get clean
|
||||
rm -rf /var/cache/apt/ /var/lib/apt/lists/* /etc/apt/apt.conf.d/01proxy
|
||||
|
||||
#Install 2.17.1 version of git as we are seeing issues with 2.25 , where it was not allowing to add git submodules if the user is different for parent git directory
|
||||
curl -o git.tar.gz https://cdn.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz
|
||||
tar -zxf git.tar.gz
|
||||
cd git-*
|
||||
make prefix=/usr/local all
|
||||
make prefix=/usr/local install
|
||||
git --version
|
||||
|
||||
# venv for python to be able to run pip3 without --break-system-packages
|
||||
python3 -m venv /opt/venv
|
||||
source /opt/venv/bin/activate
|
||||
pip3 install CppHeaderParser argparse lxml recommonmark jinja2==3.0.0 \
|
||||
websockets matplotlib numpy scipy minimal msgpack pytest sphinx joblib PyYAML rocm-docs-core cmake==3.25.2 pandas \
|
||||
myst-parser setuptools lit
|
||||
|
||||
# Allow sudo for everyone user
|
||||
echo 'ALL ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/everyone
|
||||
|
||||
wget https://repo.radeon.com/amdgpu-install/6.3/ubuntu/noble/amdgpu-install_6.3.60300-1_all.deb
|
||||
apt install -y ./amdgpu-install_6.3.60300-1_all.deb
|
||||
apt update
|
||||
apt install -y libva-amdgpu-dev libdrm-amdgpu-dev
|
||||
rm -rf /etc/apt/sources.list.d/amdgpu.list /etc/apt/sources.list.d/amdgpu-proprietary.list ./amdgpu-install_6.3.60300-1_all.deb
|
||||
apt autoremove -y --purge amdgpu-install
|
||||
apt update
|
||||
|
||||
|
||||
# Install OCaml packages to build LLVM's OCaml bindings to be used in lightning compiler test pipeline
|
||||
wget -nv https://sourceforge.net/projects/opam.mirror/files/2.1.6/opam-2.1.6-x86_64-linux/download -O /usr/local/bin/opam
|
||||
chmod +x /usr/local/bin/opam
|
||||
opam init --yes --disable-sandboxing
|
||||
opam install ctypes --yes
|
||||
|
||||
# Install and modify git-repo (#!/usr/bin/env python -> #!/usr/bin/env python3)
|
||||
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
|
||||
chmod a+x /usr/bin/repo
|
||||
|
||||
#Install older version of hwloc-devel package for rocrtst
|
||||
curl -lO https://download.open-mpi.org/release/hwloc/v1.11/hwloc-1.11.13.tar.bz2
|
||||
tar -xvf hwloc-1.11.13.tar.bz2
|
||||
cd hwloc-1.11.13
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
cp /usr/local/lib/libhwloc.so.5 /usr/lib
|
||||
hwloc-info --version
|
||||
|
||||
# Install gtest
|
||||
mkdir -p /tmp/gtest
|
||||
cd /tmp/gtest
|
||||
wget https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip -O googletest.zip
|
||||
unzip googletest.zip
|
||||
cd googletest-1.14.0/
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
rm -rf /tmp/gtest
|
||||
|
||||
## Install gRPC from source
|
||||
## RDC Pre-requisites
|
||||
mkdir /tmp/grpc
|
||||
mkdir /usr/grpc
|
||||
cd /tmp
|
||||
git clone --recurse-submodules -b v1.67.1 https://github.com/grpc/grpc
|
||||
cd grpc
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DgRPC_INSTALL=ON -DBUILD_SHARED_LIBS=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr/grpc -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=14 ..
|
||||
make -j $(nproc) install
|
||||
rm -rf /tmp/grpc
|
||||
|
||||
### rocBLAS Pre-requisites
|
||||
## Download prebuilt AMD multithreaded blis (2.0)
|
||||
## Reference : https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/install.sh#L403
|
||||
mkdir -p /tmp/blis
|
||||
cd /tmp/blis
|
||||
wget -O - https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-ubuntu-2.0.tar.gz | tar xfz -
|
||||
mv amd-blis-mt /usr/blis
|
||||
cd /
|
||||
rm -rf /tmp/blis
|
||||
|
||||
## Download aocl-linux-aocc-4.0_1_amd64
|
||||
mkdir -p /tmp/aocl
|
||||
cd /tmp/aocl
|
||||
wget -nv https://download.amd.com/developer/eula/aocl/aocl-4-0/aocl-linux-aocc-4.0_1_amd64.deb
|
||||
apt install ./aocl-linux-aocc-4.0_1_amd64.deb
|
||||
rm -rf /tmp/aocl
|
||||
|
||||
## hipBLAS Pre-requisites
|
||||
## lapack(3.9.1v)
|
||||
## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L174
|
||||
lapack_version=3.9.1
|
||||
lapack_srcdir=lapack-$lapack_version
|
||||
lapack_blddir=lapack-$lapack_version-bld
|
||||
mkdir -p /tmp/lapack
|
||||
cd /tmp/lapack
|
||||
rm -rf "$lapack_srcdir" "$lapack_blddir"
|
||||
wget -O - https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz | tar xzf -
|
||||
cmake -H$lapack_srcdir -B$lapack_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_FLAGS=-fno-optimize-sibling-calls -DBUILD_TESTING=OFF -DCBLAS=ON -DLAPACKE=OFF
|
||||
make -j$(nproc) -C "$lapack_blddir"
|
||||
make -C "$lapack_blddir" install
|
||||
cd $lapack_blddir
|
||||
cp -r ./include/* /usr/local/include/
|
||||
cp -r ./lib/* /usr/local/lib
|
||||
cd /
|
||||
rm -rf /tmp/lapack
|
||||
|
||||
# rocSOLVER Pre-requisites
|
||||
## FMT(7.1.3v)
|
||||
## Reference https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/install.sh#L152
|
||||
fmt_version=7.1.3
|
||||
fmt_srcdir=fmt-$fmt_version
|
||||
fmt_blddir=fmt-$fmt_version-bld
|
||||
mkdir -p /tmp/fmt
|
||||
cd /tmp/fmt
|
||||
rm -rf "$fmt_srcdir" "$fmt_blddir"
|
||||
wget -O - https://github.com/fmtlib/fmt/archive/refs/tags/7.1.3.tar.gz | tar xzf -
|
||||
cmake -H$fmt_srcdir -B$fmt_blddir -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_EXTENSIONS=OFF -DCMAKE_CXX_STANDARD_REQUIRED=ON -DFMT_DOC=OFF -DFMT_TEST=OFF
|
||||
make -j$(nproc) -C "$fmt_blddir"
|
||||
make -C "$fmt_blddir" install
|
||||
|
||||
# Build and install libjpeg-turbo
|
||||
mkdir -p /tmp/libjpeg-turbo
|
||||
cd /tmp/libjpeg-turbo
|
||||
wget -nv https://github.com/rrawther/libjpeg-turbo/archive/refs/heads/2.0.6.2.zip -O libjpeg-turbo-2.0.6.2.zip
|
||||
unzip libjpeg-turbo-2.0.6.2.zip
|
||||
cd libjpeg-turbo-2.0.6.2
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE -DENABLE_STATIC=FALSE -DCMAKE_INSTALL_DEFAULT_LIBDIR=lib ..
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/libjpeg-turbo
|
||||
|
||||
# Get released ninja from source
|
||||
mkdir -p /tmp/ninja
|
||||
cd /tmp/ninja
|
||||
wget -nv https://codeload.github.com/Kitware/ninja/zip/refs/tags/v1.11.1.g95dee.kitware.jobserver-1 -O ninja.zip
|
||||
unzip ninja.zip
|
||||
cd ninja-1.11.1.g95dee.kitware.jobserver-1
|
||||
./configure.py --bootstrap
|
||||
cp ninja /usr/local/bin/
|
||||
rm -rf /tmp/ninja
|
||||
|
||||
# Install FFmpeg and dependencies
|
||||
apt-get update
|
||||
apt-get install --no-install-recommends -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
|
||||
|
||||
# Build NASM
|
||||
mkdir -p /tmp/nasm-2.15.05
|
||||
cd /tmp
|
||||
wget -qO- "https://distfiles.macports.org/nasm/nasm-2.15.05.tar.bz2" | tar -xvj
|
||||
cd nasm-2.15.05
|
||||
./autogen.sh
|
||||
./configure --prefix="/usr/local"
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/nasm-2.15.05
|
||||
|
||||
# Build YASM
|
||||
mkdir -p /tmp/yasm-1.3.0
|
||||
cd /tmp
|
||||
wget -qO- "http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz" | tar -xvz
|
||||
cd yasm-1.3.0
|
||||
./configure --prefix="/usr/local"
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/yasm-1.3.0
|
||||
|
||||
# Build x264
|
||||
mkdir -p /tmp/x264-snapshot-20191217-2245-stable
|
||||
cd /tmp
|
||||
wget -qO- "https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245-stable.tar.bz2" | tar -xvj
|
||||
cd /tmp/x264-snapshot-20191217-2245-stable
|
||||
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" ./configure --prefix="/usr/local" --enable-shared
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/x264-snapshot-20191217-2245-stable
|
||||
|
||||
# Build x265
|
||||
mkdir -p /tmp/x265_2.7
|
||||
cd /tmp
|
||||
wget -qO- "https://get.videolan.org/x265/x265_2.7.tar.gz" | tar -xvz
|
||||
cd /tmp/x265_2.7/build/linux
|
||||
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/usr/local" -DENABLE_SHARED:bool=on ../../source
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/x265_2.7
|
||||
|
||||
# Build fdk-aac
|
||||
mkdir -p /tmp/fdk-aac-2.0.2
|
||||
cd /tmp
|
||||
wget -qO- "https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz" | tar -xvz
|
||||
cd /tmp/fdk-aac-2.0.2
|
||||
autoreconf -fiv
|
||||
./configure --prefix="/usr/local" --enable-shared --disable-static
|
||||
make -j$(nproc) install
|
||||
rm -rf /tmp/fdk-aac-2.0.2
|
||||
|
||||
cp /tmp/local-pin-600 /etc/apt/preferences.d
|
||||
|
||||
command -v lbzip2
|
||||
ln -sf $(command -v lbzip2) /usr/local/bin/compressor || ln -sf $(command -v bzip2) /usr/local/bin/compressor
|
||||
|
||||
# Install Google Benchmark
|
||||
mkdir -p /tmp/Gbenchmark
|
||||
cd /tmp/Gbenchmark
|
||||
wget -qO- https://github.com/google/benchmark/archive/refs/tags/v1.6.1.tar.gz | tar xz
|
||||
cmake -Sbenchmark-1.6.1 -Bbuild -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_CXX_STANDARD=14
|
||||
make -j -C build
|
||||
cd /tmp/Gbenchmark/build
|
||||
make install
|
||||
|
||||
# Build ccache from the source
|
||||
cd /tmp
|
||||
git clone https://github.com/ccache/ccache -b v4.7.5
|
||||
cd ccache
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
make
|
||||
make install
|
||||
cd /tmp
|
||||
rm -rf ccache
|
||||
|
||||
# symlinks for ccache
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/gcc
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/g++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/cc
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/c++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/amdclang
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/amdclang++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/hipcc
|
||||
|
||||
# Installing MIOpen dependencies
|
||||
pip3 install https://github.com/RadeonOpenCompute/rbuild/archive/master.tar.gz
|
||||
mkdir -p /tmp/MIOpen
|
||||
git clone https://github.com/ROCm/MIOpen.git -b amd-master /tmp/MIOpen
|
||||
cd /tmp/MIOpen
|
||||
# Commenting rocMLIR and componsable kernel components to install thirt party dependences
|
||||
sed -i '/ROCm\/rocMLIR@\|ROCm\/composable_kernel@/s/^/#/' requirements.txt
|
||||
mkdir -p /tmp/miopen-deps
|
||||
rbuild prepare -d /tmp/miopen-deps/ --cxx /usr/bin/g++ --cc /usr/bin/gcc
|
||||
# Installing rocMLIR which is a depency for MIOPEN. Please not we are not installing CK
|
||||
# explicitly its already build as part of rocm stack.
|
||||
export PROC=${PROC:-"$(nproc)"}
|
||||
MLIR_COMMIT="$(awk '/rocMLIR/ {split($1, s, "@"); print s[2]}' requirements.txt)"
|
||||
mkdir -p /tmp/rocMLIR
|
||||
cd /tmp/rocMLIR
|
||||
wget -nv "https://www.github.com/ROCmSoftwarePlatform/rocMLIR/archive/${MLIR_COMMIT}.tar.gz"
|
||||
tar -xzf "${MLIR_COMMIT}.tar.gz"
|
||||
cd "rocMLIR-${MLIR_COMMIT}"
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja -DCMAKE_C_COMPILER="/usr/bin/gcc" -DCMAKE_CXX_COMPILER="/usr/bin/g++" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/tmp/miopen-deps" -DBUILD_FAT_LIBROCKCOMPILER=1 ..
|
||||
cmake --build . -- librockCompiler
|
||||
cmake --build . -- install
|
||||
rm -rf _CPack_Packages/ /tmp/MIOpen /tmp/rocMLIR
|
||||
find -name '*.o' -delete
|
||||
@@ -1,3 +0,0 @@
|
||||
Package: *
|
||||
Pin: origin ""
|
||||
Pin-Priority: 600
|
||||
@@ -1,135 +0,0 @@
|
||||
apt-utils
|
||||
aria2
|
||||
autoconf
|
||||
automake
|
||||
bc
|
||||
bison
|
||||
bridge-utils
|
||||
build-essential
|
||||
bzip2
|
||||
check
|
||||
chrpath
|
||||
cifs-utils
|
||||
cmake
|
||||
cpio
|
||||
curl
|
||||
devscripts
|
||||
dos2unix
|
||||
doxygen
|
||||
fakeroot
|
||||
flex
|
||||
freeglut3-dev
|
||||
g++
|
||||
g++-multilib
|
||||
gawk
|
||||
gcc
|
||||
gcc-multilib
|
||||
gfortran
|
||||
git-lfs
|
||||
gnupg
|
||||
googletest
|
||||
graphviz
|
||||
kernel-wedge
|
||||
kmod
|
||||
lbzip2
|
||||
less
|
||||
libass-dev
|
||||
libatlas-base-dev
|
||||
libbabeltrace-dev
|
||||
libboost-all-dev
|
||||
libboost-dev
|
||||
libboost-filesystem-dev
|
||||
libboost-program-options-dev
|
||||
libboost-system-dev
|
||||
libbz2-dev
|
||||
libc++-dev
|
||||
libc++1
|
||||
libc++abi-dev
|
||||
libc++abi1
|
||||
libc6-dev-i386
|
||||
libcap-dev
|
||||
libcurl4-openssl-dev
|
||||
libdrm-dev
|
||||
libdw-dev
|
||||
libdw1
|
||||
libdwarf-dev
|
||||
libelf-dev
|
||||
libelf1
|
||||
libexpat1-dev
|
||||
libfftw3-dev
|
||||
libfile-find-rule-perl
|
||||
libgflags-dev
|
||||
libglew-dev
|
||||
libgmp-dev
|
||||
libgoogle-glog-dev
|
||||
libgtk2.0-dev
|
||||
libhdf5-dev
|
||||
libjpeg-dev
|
||||
libleveldb-dev
|
||||
liblmdb-dev
|
||||
liblzma-dev
|
||||
libmpfr-dev
|
||||
libmpich-dev
|
||||
libmsgpack-dev
|
||||
libncurses-dev
|
||||
libnuma-dev
|
||||
libomp-dev
|
||||
libopenblas-dev
|
||||
libopencv-dev
|
||||
libpci-dev
|
||||
libpci3
|
||||
libpciaccess-dev
|
||||
libpciaccess0
|
||||
libprotobuf-dev
|
||||
libpython3-dev
|
||||
libreadline-dev
|
||||
libsnappy-dev
|
||||
libssl-dev
|
||||
libsuitesparse-dev
|
||||
libsystemd-dev
|
||||
libtool
|
||||
liburi-encode-perl
|
||||
libva-dev
|
||||
libvirt-clients
|
||||
libvirt-daemon-system
|
||||
libyaml-cpp-dev
|
||||
llvm
|
||||
llvm-dev
|
||||
llvm-runtime
|
||||
mesa-common-dev
|
||||
mpich
|
||||
ocaml
|
||||
ocaml-findlib
|
||||
ocl-icd-libopencl1
|
||||
ocl-icd-opencl-dev
|
||||
patchelf
|
||||
pigz
|
||||
pkg-config
|
||||
protobuf-compiler
|
||||
python-is-python3
|
||||
python3-barectf
|
||||
python3-dev
|
||||
python3-pip
|
||||
python3-pip-whl
|
||||
python3-requests
|
||||
python3-venv
|
||||
python3-yaml
|
||||
re2c
|
||||
redis-tools
|
||||
rpm
|
||||
rsync
|
||||
ssh
|
||||
strace
|
||||
sudo
|
||||
systemtap-sdt-dev
|
||||
texinfo
|
||||
texlive
|
||||
texlive-extra-utils
|
||||
texlive-plain-generic
|
||||
texlive-xetex
|
||||
unzip
|
||||
vim
|
||||
wget
|
||||
xsltproc
|
||||
xxd
|
||||
zlib1g-dev
|
||||
@@ -1,273 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set_WORK_ROOT(){
|
||||
[ -n "$WORK_ROOT" ] && return 0
|
||||
export WORK_ROOT=$PWD
|
||||
while :; do
|
||||
[ -d "$WORK_ROOT/.repo/manifests" ] && return 0
|
||||
WORK_ROOT=$WORK_ROOT/..
|
||||
( cd -P "$WORK_ROOT" && [ "$PWD" != "/" ] ) || break
|
||||
done
|
||||
echo "Unable to find a .repo/manifests directory above '$PWD'" >&2
|
||||
unset WORK_ROOT # No point in saying we have one when we don't
|
||||
return 1
|
||||
}
|
||||
set_WORK_ROOT || exit 2
|
||||
|
||||
if [ "$DASH_JAY" == "" ]; then
|
||||
if [ -x "$(command -v nproc)" ]; then
|
||||
export DASH_JAY="-j $(nproc)"
|
||||
else
|
||||
export DASH_JAY="-j 4"
|
||||
fi
|
||||
fi
|
||||
|
||||
# explanation of JOB_DESIGNATOR states:
|
||||
# exists, empty string -> originated from release job, pass thru a null string
|
||||
# exists, non-empty -> originated from other CI job, use as set, example: "dnnhc."
|
||||
# does not exist -> dev or non-CI build, got to this point without instantiation
|
||||
# so assign a default value: "local."
|
||||
export JOB_DESIGNATOR="${JOB_DESIGNATOR-"local."}"
|
||||
echo "JOB_DESIGNATOR=${JOB_DESIGNATOR}"
|
||||
|
||||
# explanation of SLES_BUILD_ID_PREFIX states:
|
||||
# exists, non-empty -> originated from sles job, use as set, example: "sles151."
|
||||
# exists, empty string -> originated from non-sles job, pass thru a null string
|
||||
# does not exist -> got to this point without instantiation so a default null string: ""
|
||||
export SLES_BUILD_ID_PREFIX
|
||||
echo "SLES_BUILD_ID_PREFIX=${SLES_BUILD_ID_PREFIX}"
|
||||
|
||||
if [ -z "${BUILD_ID}" ]; then
|
||||
export BUILD_ID=9999
|
||||
fi
|
||||
|
||||
if [ -n "${JOB_NAME}" ]; then
|
||||
export ROCM_BUILD_ID=${JOB_NAME/compute-/}-${BUILD_ID}
|
||||
fi
|
||||
|
||||
source /etc/os-release
|
||||
#re-export the variables with less generic names
|
||||
export DISTRO_NAME=$ID
|
||||
export DISTRO_RELEASE=$VERSION_ID
|
||||
export DISTRO_ID=$ID-$VERSION_ID
|
||||
|
||||
|
||||
# Enable wheel package for Almainux-8 mainline builds
|
||||
# Currently no wheel package required for static and ASAN builds
|
||||
if [[ "${DISTRO_ID}" == almalinux-8* ]] && [[ "${ENABLE_ADDRESS_SANITIZER}" != "true" ]] && [[ "${ENABLE_STATIC_BUILD}" != "true" ]]; then
|
||||
export WHEEL_PACKAGE=true
|
||||
else
|
||||
unset WHEEL_PACKAGE
|
||||
fi
|
||||
|
||||
case "${DISTRO_NAME}" in
|
||||
("ubuntu") export CPACKGEN=DEB PACKAGEEXT=deb PKGTYPE=deb ROCM_PKGTYPE=DEB ;;
|
||||
("centos") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("sles") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("rhel") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("mariner") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("azurelinux") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("almalinux") export CPACKGEN=RPM PACKAGEEXT=rpm PKGTYPE=rpm ROCM_PKGTYPE=RPM ;;
|
||||
("debian") export CPACKGEN=DEB PACKAGEEXT=deb PKGTYPE=deb ROCM_PKGTYPE=DEB ;;
|
||||
esac
|
||||
|
||||
# set up package file name variables for CPACK_GENERATOR
|
||||
# rpm packages name are set with jenkins job designator and build no
|
||||
# deb package is appendeded with OS version as well
|
||||
export CPACK_DEBIAN_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}~$VERSION_ID"
|
||||
export CPACK_RPM_PACKAGE_RELEASE="${JOB_DESIGNATOR}${SLES_BUILD_ID_PREFIX}${BUILD_ID}"
|
||||
|
||||
export SCRIPT_PATH=$WORK_ROOT/brahma-utils/kfd-tools/scripts
|
||||
export ENV_PATH=$SCRIPT_PATH/hsaThunk.env
|
||||
OUT_DIR="${OUT_DIR:=$WORK_ROOT/out/$DISTRO_ID/$DISTRO_RELEASE}"
|
||||
export OUT_DIR
|
||||
export RT_TMP=$OUT_DIR/tmp/rt
|
||||
|
||||
# Unused
|
||||
# export ROCM_VERSION=$(git --git-dir=$WORK_ROOT/.repo/manifests/.git describe --always)
|
||||
|
||||
#source transform, for things like ocl_lc
|
||||
export SRC_TF_ROOT=$OUT_DIR/srctf
|
||||
|
||||
# Read ROCm Version and calculate ROCm libpatch version from rocm_version.txt
|
||||
# Using logic from calculateRocmPatchVersion() in common.gvy
|
||||
get_rocm_libpatch_version() {
|
||||
rocm_version=$1
|
||||
if [[ "${rocm_version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
libpatch_version=${rocm_version//\./0}
|
||||
echo "${libpatch_version}"
|
||||
else
|
||||
echo "Invalid ROCm Version: ${rocm_version}"
|
||||
exit 10
|
||||
fi
|
||||
}
|
||||
|
||||
# Read the default ROCm version from rocm_version.txt if the ROCM_VERSION
|
||||
# variable is either not set, empty or only contains spaces.
|
||||
if [ -f "${BUILD_SCRIPT_ROOT}/rocm_version.txt" ] && [ -z $ROCM_VERSION ]; then
|
||||
ROCM_VERSION="$(cat ${BUILD_SCRIPT_ROOT}/rocm_version.txt)"
|
||||
fi
|
||||
|
||||
# ROCM variables
|
||||
# ROCM_VERSION and ROCM_LIBPATCH_VERSION are changed: Eg:"3.3.0" ~= 30300
|
||||
#default ROCM_VERSION: 9.99.99 and ROCM_LIBPATCH_VERSION: 99999 if not set
|
||||
: ${ROCM_VERSION:="9.99.99"}
|
||||
ROCM_LIBPATCH_VERSION=$(get_rocm_libpatch_version $ROCM_VERSION)
|
||||
echo "ROCM_VERSION=${ROCM_VERSION}"
|
||||
echo "ROCM_LIBPATCH_VERSION=${ROCM_LIBPATCH_VERSION}"
|
||||
export ROCM_VERSION ROCM_LIBPATCH_VERSION
|
||||
|
||||
# Previously we would put the job number into the ROCM_INSTALL_PATH
|
||||
# This interacted badly with our desire to reuse builds, a it ment every build was unique
|
||||
export ROCM_INSTALL_PATH="/opt/rocm-${ROCM_VERSION}"
|
||||
|
||||
# Setting the ROCM_INSTALL_PATH id to Last Know Good build ID, PSDB incremental built packages will install into /opt/rocm-<parent build ID>
|
||||
# No longer applicable, as we no longer have the job number in the ROCM_INSTALL_PATH
|
||||
|
||||
if [ -n "${AFAR_VERSION}" ]; then
|
||||
# multi-version (side-by-side) install for Advanced Feature Access Release (AFAR)
|
||||
# suggested AFAR_VERSION: "afar001"
|
||||
# Hopefully this is correct for AFAR
|
||||
ROCM_INSTALL_PATH="/opt/rocm-${AFAR_VERSION##-}"
|
||||
fi
|
||||
|
||||
if [[ "${ENABLE_STATIC_BUILDS}" == true ]]; then
|
||||
# For static builds add a -static post fix in rocm folder
|
||||
export ROCM_INSTALL_PATH="${ROCM_INSTALL_PATH}-static"
|
||||
fi
|
||||
|
||||
echo "Setting ROCM_INSTALL_PATH=${ROCM_INSTALL_PATH}"
|
||||
|
||||
export ROCM_PATH="$ROCM_INSTALL_PATH"
|
||||
export ROCM_LIBPATH=""
|
||||
export DEVTOOLSET_LIBPATH="/opt/rh/devtoolset-7/root/usr/lib64;/opt/rh/devtoolset-7/root/usr/lib"
|
||||
|
||||
# Source directories
|
||||
# TODO: We should have autodiscoverable makefiles
|
||||
export DIST_NO_DEBUG=yes
|
||||
export OPENCL_MAINLINE=1
|
||||
# export P4_ROOT=$WORK_ROOT/p4
|
||||
# export RT_ROOT=$P4_ROOT/driver/
|
||||
export FW_ROOT=$WORK_ROOT/brahma-utils/firmware/deb-pkgs
|
||||
# export HSA_ROOT=$WORK_ROOT/hsa
|
||||
export HSA_SOURCE_ROOT=$WORK_ROOT/ROCR-Runtime
|
||||
# export HSA_CLOSED_SOURCE_ROOT=$WORK_ROOT/p4/driver
|
||||
export HSA_OPENSOURCE_ROOT=$HSA_SOURCE_ROOT/src
|
||||
# export ROCR_ROOT=$HSA_ROOT/rocr-runtime
|
||||
export ROCR_ROOT=$WORK_ROOT/ROCR-Runtime
|
||||
export ROCRTST_ROOT=$HSA_SOURCE_ROOT/rocrtst
|
||||
export HSA_CORE_ROOT=$HSA_OPENSOURCE_ROOT
|
||||
export HSA_IMAGE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-image
|
||||
export HSA_FINALIZE_ROOT=$HSA_OPENSOURCE_ROOT/hsa-ext-finalize
|
||||
export HSA_TOOLS_ROOT=$HSA_OPENSOURCE_ROOT/hsa-runtime-tools
|
||||
# export HSA_RT_ROOT=$RT_ROOT/drivers/hsa/runtime
|
||||
# export OCL_RT_ROOT=$RT_ROOT/drivers/opencl
|
||||
# export OCL_RT_STG_ROOT=$P4_ROOT/opencl
|
||||
export OCL_RT_SRC_TF_ROOT=$SRC_TF_ROOT/ocl_lc
|
||||
export KERNEL_ROOT=$WORK_ROOT/kernel
|
||||
export SCRIPT_ROOT=$WORK_ROOT/build
|
||||
export BUILD_SCRIPT_ROOT=$WORK_ROOT/ROCm/tools/rocm-build
|
||||
export TEST_SCRIPT_ROOT=$WORK_ROOT/MLSEQA_TestRepo
|
||||
export THUNK_ROOT=$WORK_ROOT/ROCT-Thunk-Interface
|
||||
export AMDGPURASTOOL_ROOT=$WORK_ROOT/amdgpuras-tool
|
||||
export AQLPROFILE_ROOT=$WORK_ROOT/aqlprofile
|
||||
export ROCPROFILER_ROOT=$WORK_ROOT/rocprofiler
|
||||
export ROCTRACER_ROOT=$WORK_ROOT/roctracer
|
||||
export ROCPROFILER_REGISTER_ROOT=$WORK_ROOT/rocprofiler-register
|
||||
export ROCPROFILER_SDK_ROOT=$WORK_ROOT/rocprofiler-sdk
|
||||
export ROCPROFILER_COMPUTE_ROOT=$WORK_ROOT/rocprofiler-compute
|
||||
export ROCPROFILER_SYSTEMS_ROOT=$WORK_ROOT/rocprofiler-systems
|
||||
export UTILS_ROOT=$WORK_ROOT/rocm-utils
|
||||
export KFDTEST_ROOT=$THUNK_ROOT/tests/kfdtest
|
||||
# export HSA_SAMPLES_ROOT=$RT_ROOT/drivers/hsa/runtime/samples
|
||||
# export CHIMEX_ROOT=$WORK_ROOT/benchmarks/chimex
|
||||
# export AMDP2P_ROOT=$WORK_ROOT/drivers/amdp2p
|
||||
# export HIP_ROOT=$WORK_ROOT/HIP
|
||||
# export HIP_VDI_ROCM_SRC_TF_ROOT=$SRC_TF_ROOT/hip_vdi_rocm
|
||||
# export HIP_VDI_PAL_SRC_TF_ROOT=$SRC_TF_ROOT/hip_vdi_pal
|
||||
# export HIP_SAMPLES_ROOT=$WORK_ROOT/HIP-Examples
|
||||
# export HIP_PRIVATE_SAMPLES_ROOT=$WORK_ROOT/hip-examples-private
|
||||
export HIPIFY_ROOT=$WORK_ROOT/HIPIFY
|
||||
# export GPUBURN_ROOT=$WORK_ROOT/tests/gpuburn
|
||||
# export HSAPROFILER_TEST_ROOT=$WORK_ROOT/dev-tools/RCP-Internal/Src/Tests/HSAFoundationProfileAPITest
|
||||
# export HSATESTCOMMON_ROOT=$WORK_ROOT/dev-tools/Common/Src/HSATestCommon
|
||||
# export HSATESTGTEST_ROOT=$WORK_ROOT/dev-tools/Common/Lib/Ext/GoogleTest1.8/googletest
|
||||
# export SMI_ROOT=$WORK_ROOT/rocm-smi
|
||||
export AMD_SMI_LIB_ROOT=$WORK_ROOT/amdsmi
|
||||
export ROCM_SMI_LIB_ROOT=$WORK_ROOT/rocm_smi_lib
|
||||
export RSMITST_ROOT=$ROCM_SMI_LIB_ROOT/tests/rocm_smi_test
|
||||
export LLVM_PROJECT_ROOT=$WORK_ROOT/llvm-project
|
||||
export LLVM_ROOT=$LLVM_PROJECT_ROOT/llvm
|
||||
export CLANG_ROOT=$LLVM_PROJECT_ROOT/clang
|
||||
export LLD_ROOT=$LLVM_PROJECT_ROOT/lld
|
||||
export HIPCC_ROOT=$LLVM_PROJECT_ROOT/amd/hipcc
|
||||
export DEVICELIBS_ROOT=$LLVM_PROJECT_ROOT/amd/device-libs
|
||||
export DKMS_ROOT=$WORK_ROOT/drivers/linux-dkms
|
||||
export ROCM_ROOT=$WORK_ROOT/meta
|
||||
export ROCM_CORE_ROOT=$WORK_ROOT/rocm-core
|
||||
export ROCM_DEV_ROOT=$WORK_ROOT/meta/rocm-dev
|
||||
export ROCM_CMAKE_ROOT=$WORK_ROOT/rocm-cmake
|
||||
export ROCM_BANDWIDTH_TEST_ROOT=$WORK_ROOT/rocm_bandwidth_test
|
||||
export ROCMINFO_ROOT=$WORK_ROOT/rocminfo
|
||||
export ROCR_DEBUG_AGENT_ROOT=$WORK_ROOT/rocr_debug_agent
|
||||
export COMGR_ROOT=$LLVM_PROJECT_ROOT/amd/comgr
|
||||
export COMGR_LIB_PATH=$OUT_DIR/build/amd_comgr
|
||||
# export HOSTCALL_ROOT=$WORK_ROOT/hostcall
|
||||
export RCCL_ROOT=$WORK_ROOT/rccl
|
||||
export ROCM_DBGAPI_ROOT=$WORK_ROOT/ROCdbgapi
|
||||
export ROCM_GDB_ROOT=$WORK_ROOT/ROCgdb
|
||||
# export ROCclr_ROOT=$WORK_ROOT/vdi
|
||||
export HIP_ON_ROCclr_ROOT=$WORK_ROOT/hip
|
||||
export HIPAMD_ROOT=$WORK_ROOT/hipamd
|
||||
export HIP_CATCH_TESTS_ROOT=$WORK_ROOT/hip-tests
|
||||
# export OPENCL_ON_ROCclr_ROOT=$WORK_ROOT/opencl-on-vdi
|
||||
export CLR_ROOT=$WORK_ROOT/clr
|
||||
export OPENCL_CTS_ROOT=$WORK_ROOT/OpenCL-CTS
|
||||
export OPENCL_ICD_LOADER_ROOT=$WORK_ROOT/OpenCL-ICD-Loader
|
||||
export OPENCL_HEADERS_ROOT=$WORK_ROOT/OpenCL-Headers
|
||||
export OPENCL_CLHPP_ROOT=$WORK_ROOT/OpenCL-CLHPP
|
||||
export AOMP_REPOS=$WORK_ROOT/openmp-extras
|
||||
export HIPOTHER_ROOT=$WORK_ROOT/hipother
|
||||
|
||||
# For libraries $ORIGIN
|
||||
# For binaries $ORIGIN/../lib
|
||||
export ROCM_LIB_RPATH='$ORIGIN'
|
||||
export ROCM_EXE_RPATH='$ORIGIN/../lib'
|
||||
|
||||
# For ASAN Libraries since the asan lib path is lib/asan/
|
||||
export ROCM_ASAN_LIB_RPATH='$ORIGIN:$ORIGIN/..'
|
||||
export ROCM_ASAN_EXE_RPATH="\$ORIGIN/../lib/asan:\$ORIGIN/../lib"
|
||||
|
||||
# Intermediate output directories for projects without build output relocation
|
||||
export FW_OUT=$WORK_ROOT/brahma-utils/firmware/deb-pkgs
|
||||
|
||||
export PATH=$PATH:$SCRIPT_ROOT
|
||||
if [ -e "$SCRIPT_PATH/hsaThunk.util" ]; then
|
||||
source $SCRIPT_PATH/hsaThunk.util $ENV_PATH $WORK_ROOT
|
||||
fi
|
||||
|
||||
# From setup_env.sh
|
||||
export BUILD_TYPE=Release
|
||||
export LIBS_WORK_DIR=$WORK_ROOT
|
||||
export BUILD_ARTIFACTS=$OUT_DIR/$PACKAGEEXT
|
||||
|
||||
export HIPCC_COMPILE_FLAGS_APPEND="-O3 -Wno-format-nonliteral -parallel-jobs=4"
|
||||
export HIPCC_LINK_FLAGS_APPEND="-O3 -parallel-jobs=4"
|
||||
|
||||
export PATH="${ROCM_PATH}/bin:${ROCM_PATH}/lib/llvm/bin:${PATH}:${HOME}/.local/bin"
|
||||
|
||||
export LC_ALL=C.UTF-8
|
||||
export LANG=C.UTF-8
|
||||
|
||||
export PROC=${PROC:-"$(nproc)"}
|
||||
# export RELEASE_FLAG=${RELEASE_FLAG:-"-r"}
|
||||
export SUDO=sudo
|
||||
export PATH=/usr/local/bin:${PATH}:/sbin:/bin
|
||||
export CCACHE_DIR=${HOME}/.ccache
|
||||
|
||||
# set ccache environment variable for math libraries
|
||||
if [[ "${CCACHE_ENABLED}" != "false" ]]; then
|
||||
export LAUNCHER_FLAGS="-DCMAKE_CXX_COMPILER_LAUNCHER=/usr/local/bin/ccache -DCMAKE_C_COMPILER_LAUNCHER=/usr/local/bin/ccache"
|
||||
export CCACHE_COMPILERCHECK=none
|
||||
export CCACHE_EXTRAFILES=${OUT_DIR}/rocm_compilers_hash_file
|
||||
fi
|
||||
@@ -1,124 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
|
||||
|
||||
UNTAR_COMPONENT_NAME=$1
|
||||
|
||||
# Static supported components
|
||||
STATIC_SUPPORTED_COMPONENTS="comgr devicelibs hip_on_rocclr hipblas hipblas-common hipcc hiprand hipsolver hipsparse lightning openmp_extras rocblas rocm rocm_smi_lib rocm-cmake rocm-core rocminfo rocprim rocprofiler-register rocr rocrand rocsolver rocsparse"
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ] && ! echo "$STATIC_SUPPORTED_COMPONENTS" | grep -qE "(^| )$UNTAR_COMPONENT_NAME( |$)"; then
|
||||
echo "Static build is not enabled for $UNTAR_COMPONENT_NAME ..skipping!!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
copy_pkg_files_to_rocm() {
|
||||
local comp_folder=$1
|
||||
local comp_pkg_name=$2
|
||||
|
||||
cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2
|
||||
if [ "${PKGTYPE}" = 'deb' ]; then
|
||||
dpkg-deb -x ${comp_pkg_name}_*.deb pkg/
|
||||
else
|
||||
mkdir pkg && pushd pkg/ || exit 2
|
||||
if [[ "${comp_pkg_name}" != *-dev* ]]; then
|
||||
rpm2cpio ../${comp_pkg_name}-*.rpm | cpio -idmv
|
||||
else
|
||||
rpm2cpio ../${comp_pkg_name}el-*.rpm | cpio -idmv
|
||||
fi
|
||||
popd || exit 2
|
||||
fi
|
||||
ls ./pkg -alt
|
||||
${SUDO} cp -r ./pkg${ROCM_PATH}/* "${ROCM_PATH}" || exit 2
|
||||
rm -rf pkg/
|
||||
}
|
||||
|
||||
get_os_name() {
|
||||
local os_name
|
||||
os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release)
|
||||
echo "${os_name,,}"
|
||||
}
|
||||
|
||||
set_pkg_type() {
|
||||
local os_name
|
||||
os_name=$(grep -oP '^NAME="\K.*(?=")' < /etc/os-release)
|
||||
if [[ "${os_name,,}" == "ubuntu" || "${os_name,,}" == "debian gnu/linux" ]]; then
|
||||
echo "deb"
|
||||
else
|
||||
echo "rpm"
|
||||
fi
|
||||
}
|
||||
|
||||
set_llvm_link() {
|
||||
local comp_folder=$1
|
||||
local comp_pkg_name=$2
|
||||
|
||||
cd "${OUT_DIR}/${PKGTYPE}/${comp_folder}"|| exit 2
|
||||
if [ "${PKGTYPE}" = 'deb' ]; then
|
||||
dpkg-deb -e ${comp_pkg_name}_*.deb post/
|
||||
mkdir -p "${ROCM_PATH}/tmp_llvm"
|
||||
cp 'post/postinst' "${ROCM_PATH}/tmp_llvm"
|
||||
pushd "${ROCM_PATH}/tmp_llvm"
|
||||
bash -x postinst
|
||||
popd
|
||||
rm -rf "${ROCM_PATH}/tmp_llvm" post/
|
||||
fi
|
||||
}
|
||||
|
||||
setup_rocm_compilers_hash_file() {
|
||||
local clang_version
|
||||
clang_version="$("${ROCM_PATH}/llvm/bin/clang" --version | head -n 1)"
|
||||
printf '%s: %s\n' 'clang version' "${clang_version}" | tee "${OUT_DIR}/rocm_compilers_hash_file"
|
||||
}
|
||||
|
||||
PKGTYPE=$(set_pkg_type)
|
||||
|
||||
case $UNTAR_COMPONENT_NAME in
|
||||
(lightning)
|
||||
if [ "${CCACHE_ENABLED}" == "true" ] ; then
|
||||
setup_rocm_compilers_hash_file
|
||||
fi
|
||||
|
||||
mkdir -p ${ROCM_PATH}/bin
|
||||
printf '%s\n' > ${ROCM_PATH}/bin/target.lst gfx900 gfx906 gfx908 gfx803 gfx1030
|
||||
|
||||
if [ -e "${ROCM_PATH}/lib/llvm/bin/rocm.cfg" ]; then
|
||||
sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/lib/llvm/bin/rocm.cfg
|
||||
elif [ -e "${ROCM_PATH}/llvm/bin/rocm.cfg" ]; then
|
||||
sed -i '/-frtlib-add-rpath/d' ${ROCM_PATH}/llvm/bin/rocm.cfg
|
||||
fi
|
||||
|
||||
# set_llvm_link lightning rocm-llvm
|
||||
ln -s "${ROCM_PATH}/lib/llvm/bin/amdclang" "${ROCM_PATH}/bin/amdclang" || true
|
||||
ln -s "${ROCM_PATH}/lib/llvm/bin/amdclang++" "${ROCM_PATH}/bin/amdclang++" || true
|
||||
;;
|
||||
(hipify_clang)
|
||||
chmod +x ${ROCM_PATH}/bin/hipify-perl
|
||||
;;
|
||||
(hip_on_rocclr)
|
||||
rm -f ${ROCM_PATH}/bin/hipcc.bat
|
||||
# hack transferbench source code
|
||||
sed -i 's/^set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ..)/#&/' "$WORK_ROOT/TransferBench/CMakeLists.txt"
|
||||
;;
|
||||
(rocblas)
|
||||
if [ $ENABLE_ADDRESS_SANITIZER != 'true' ]; then
|
||||
pkgName=rocblas-dev
|
||||
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
|
||||
pkgName=rocblas-static-dev
|
||||
fi
|
||||
copy_pkg_files_to_rocm rocblas $pkgName
|
||||
fi
|
||||
;;
|
||||
(composable_kernel)
|
||||
cd "${OUT_DIR}/${PKGTYPE}/composable_kernel"
|
||||
if [ "${PKGTYPE}" = 'deb' ]; then
|
||||
dpkg-deb -c composablekernel-dev*.deb | awk '{sub(/^\./, "", $6); print $6}' | tee ../../ck.files
|
||||
else
|
||||
rpm -qlp composablekernel-dev*.rpm | tee ../../ck.files
|
||||
fi
|
||||
;;
|
||||
(*)
|
||||
echo "post processing is not required for ${UNTAR_COMPONENT_NAME}"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.2.0"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.2.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="ROCT-Thunk-Interface" />
|
||||
<project name="amdsmi" />
|
||||
<project name="omniperf" />
|
||||
<project name="omnitrace" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIP-Examples" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.2.1"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.2.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="ROCT-Thunk-Interface" />
|
||||
<project name="amdsmi" />
|
||||
<project name="omniperf" />
|
||||
<project name="omnitrace" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIP-Examples" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.2.2"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.2.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="ROCT-Thunk-Interface" />
|
||||
<project name="amdsmi" />
|
||||
<project name="omniperf" />
|
||||
<project name="omnitrace" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIP-Examples" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,76 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.2.4"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.2.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="ROCT-Thunk-Interface" />
|
||||
<project name="amdsmi" />
|
||||
<project name="omniperf" />
|
||||
<project name="omnitrace" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="roctracer" />
|
||||
<project name="ROCm" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.3.0"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.3.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.3.1"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.3.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.3.2"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.3.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,77 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.3.3"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.3.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="HIP" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.4.0"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.4.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="hip" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<project name="spirv-llvm-translator" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSHMEM" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.4.1"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.4.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="hip" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<project name="spirv-llvm-translator" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSHMEM" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.4.2"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.4.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="hip" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<project name="spirv-llvm-translator" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSHMEM" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
@@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remote name="rocm-org" fetch="https://github.com/ROCm/" />
|
||||
<default revision="refs/tags/rocm-6.4.3"
|
||||
remote="rocm-org"
|
||||
sync-c="true"
|
||||
sync-j="4" />
|
||||
<!--list of projects for ROCm-->
|
||||
<project name="ROCm" revision="roc-6.4.x" />
|
||||
<project name="ROCK-Kernel-Driver" />
|
||||
<project name="ROCR-Runtime" />
|
||||
<project name="amdsmi" />
|
||||
<project name="rdc" />
|
||||
<project name="rocm_bandwidth_test" />
|
||||
<project name="rocm_smi_lib" />
|
||||
<project name="rocm-core" />
|
||||
<project name="rocm-examples" />
|
||||
<project name="rocminfo" />
|
||||
<project name="rocprofiler" />
|
||||
<project name="rocprofiler-register" />
|
||||
<project name="rocprofiler-sdk" />
|
||||
<project name="rocprofiler-compute" />
|
||||
<project name="rocprofiler-systems" />
|
||||
<project name="roctracer" />
|
||||
<!--HIP Projects-->
|
||||
<project name="hip" />
|
||||
<project name="hip-tests" />
|
||||
<project name="HIPIFY" />
|
||||
<project name="clr" />
|
||||
<project name="hipother" />
|
||||
<!-- The following projects are all associated with the AMDGPU LLVM compiler -->
|
||||
<project name="half" />
|
||||
<project name="llvm-project" />
|
||||
<project name="spirv-llvm-translator" />
|
||||
<!-- gdb projects -->
|
||||
<project name="ROCdbgapi" />
|
||||
<project name="ROCgdb" />
|
||||
<project name="rocr_debug_agent" />
|
||||
<!-- ROCm Libraries -->
|
||||
<project groups="mathlibs" name="AMDMIGraphX" />
|
||||
<project groups="mathlibs" name="MIOpen" />
|
||||
<project groups="mathlibs" name="MIVisionX" />
|
||||
<project groups="mathlibs" name="ROCmValidationSuite" />
|
||||
<project groups="mathlibs" name="Tensile" />
|
||||
<project groups="mathlibs" name="composable_kernel" />
|
||||
<project groups="mathlibs" name="hipBLAS-common" />
|
||||
<project groups="mathlibs" name="hipBLAS" />
|
||||
<project groups="mathlibs" name="hipBLASLt" />
|
||||
<project groups="mathlibs" name="hipCUB" />
|
||||
<project groups="mathlibs" name="hipFFT" />
|
||||
<project groups="mathlibs" name="hipRAND" />
|
||||
<project groups="mathlibs" name="hipSOLVER" />
|
||||
<project groups="mathlibs" name="hipSPARSE" />
|
||||
<project groups="mathlibs" name="hipSPARSELt" />
|
||||
<project groups="mathlibs" name="hipTensor" />
|
||||
<project groups="mathlibs" name="hipfort" />
|
||||
<project groups="mathlibs" name="rccl" />
|
||||
<project groups="mathlibs" name="rocAL" />
|
||||
<project groups="mathlibs" name="rocALUTION" />
|
||||
<project groups="mathlibs" name="rocBLAS" />
|
||||
<project groups="mathlibs" name="rocDecode" />
|
||||
<project groups="mathlibs" name="rocJPEG" />
|
||||
<project groups="mathlibs" name="rocPyDecode" />
|
||||
<project groups="mathlibs" name="rocFFT" />
|
||||
<project groups="mathlibs" name="rocPRIM" />
|
||||
<project groups="mathlibs" name="rocRAND" />
|
||||
<project groups="mathlibs" name="rocSHMEM" />
|
||||
<project groups="mathlibs" name="rocSOLVER" />
|
||||
<project groups="mathlibs" name="rocSPARSE" />
|
||||
<project groups="mathlibs" name="rocThrust" />
|
||||
<project groups="mathlibs" name="rocWMMA" />
|
||||
<project groups="mathlibs" name="rocm-cmake" />
|
||||
<project groups="mathlibs" name="rpp" />
|
||||
<project groups="mathlibs" name="TransferBench" />
|
||||
<!-- Projects for OpenMP-Extras -->
|
||||
<project name="aomp" path="openmp-extras/aomp" />
|
||||
<project name="aomp-extras" path="openmp-extras/aomp-extras" />
|
||||
<project name="flang" path="openmp-extras/flang" />
|
||||
</manifest>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user