-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathMakefile.build
More file actions
125 lines (111 loc) · 4.53 KB
/
Makefile.build
File metadata and controls
125 lines (111 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# holds all the docker container image builders required for components
WORK_DIR := /usr/src/github.com/ROCm/device-metrics-exporter/
SMILIB_CONTAINER_WORKDIR := ${WORK_DIR}
AMDMSMI_SRC_DIR := $(TOP_DIR)/
AMDSMI_BUILD_DIR := $(TOP_DIR)/tools/smilib-builderimage/
GIMSMI_BUILD_DIR := $(TOP_DIR)/tools/gimlib-builderimage/
GPUAGENT_SRC_DIR := $(TOP_DIR)/gpuagent/
GPUAGENT_BUILD_DIR := $(TOP_DIR)/tools/gpuagent-builderimage/
GPUAGENT_OUT_DIR := $(TOP_DIR)/gpuagent/sw/nic/build/x86_64/sim/bin/
GPUAGENT_CONTAINER_WORKDIR := /usr/src/github.com/ROCm/gpu-agent/
ASSET_COPY_SCRIPT := $(TOP_DIR)/tools/scripts/copy_buildasset_gpuagent.sh
ROCPROFILER_CONTAINER_WORKDIR := ${WORK_DIR}/rocprofilerclient
ROCPROFILER_BUILD_DIR := $(TOP_DIR)/tools/rocprofiler-builderimage/
ROCPROFILER_SRC_DIR := $(TOP_DIR)/rocprofilerclient/
ROCPROFILER_ASSET_BLD_DIR := $(ROCPROFILER_SRC_DIR)/build/
ROCPROFILER_ASSET_DIR := $(ASSETS_PATH)/rocprofiler/
# this is usually required once for expediting the compilation
# these create docker container images for the compilation of respective OS libraries
.PHONY: amdsmi-build
amdsmi-build:
ifeq ($(OS), RHEL9)
$(eval DOCKERFILE=$(AMDSMI_BUILD_DIR)/Dockerfile.rhel9)
$(eval BUILDER_IMAGE=$(AMDSMI_BUILDER_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_IMAGE})
else ifeq ($(OS), UBUNTU22)
$(eval DOCKERFILE=$(AMDSMI_BUILD_DIR)/Dockerfile.ubuntu22)
$(eval BUILDER_IMAGE=$(AMDSMI_BUILDER_UB22_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_UBUNTU22})
else ifeq ($(OS), UBUNTU24)
$(eval DOCKERFILE=$(AMDSMI_BUILD_DIR)/Dockerfile.ubuntu24)
$(eval BUILDER_IMAGE=$(AMDSMI_BUILDER_UB24_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_UBUNTU24})
else ifeq ($(OS), AZURE3)
$(eval DOCKERFILE=$(AMDSMI_BUILD_DIR)/Dockerfile.azure)
$(eval BUILDER_IMAGE=$(AMDSMI_BUILDER_AZURE_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_AZURE})
else
$(error unsupported os)
endif
@echo "Building amdsmi $(OS), $(DOCKERFILE), $(BUILDER_IMAGE), $(BASE_IMAGE)"
@docker image rm $(BUILDER_IMAGE) || true
@docker build --build-arg BUILD_BASE_IMAGE=${BASE_IMAGE} \
-t $(BUILDER_IMAGE) . -f $(DOCKERFILE)
.PHONY: amdsmi-build-rhel
amdsmi-build-rhel:
OS=RHEL9 ${MAKE} amdsmi-build
.PHONY: amdsmi-build-ub22
amdsmi-build-ub22:
OS=UBUNTU22 ${MAKE} amdsmi-build
.PHONY: amdsmi-build-ub24
amdsmi-build-ub24:
OS=UBUNTU24 ${MAKE} amdsmi-build
.PHONY: amdsmi-build-azure
amdsmi-build-azure:
OS=AZURE3 ${MAKE} amdsmi-build
# creates a container image required for gpuagent build tools necessary for
# compilation
.PHONY: gpuagent-build
gpuagent-build:
@docker image rm $(GPUAGENT_BUILDER_IMAGE) || true
@docker build --build-arg BUILD_BASE_IMAGE=$(GPUAGENT_BASE_IMAGE) \
-t $(GPUAGENT_BUILDER_IMAGE) \
. -f $(GPUAGENT_BUILD_DIR)/Dockerfile-u22.04
# for debugging or developing with shell for gpuagent codebase
.PHONY: gpuagent-shell
gpuagent-shell:
@docker run --rm -it --privileged \
-e "USER_NAME=$(shell whoami)" \
-e "USER_UID=$(shell id -u)" \
-e "USER_GID=$(shell id -g)" \
--name gpuagentbuild -v $(GPUAGENT_SRC_DIR):$(GPUAGENT_CONTAINER_WORKDIR) \
-w $(GPUAGENT_CONTAINER_WORKDIR) --entrypoint bash $(GPUAGENT_BUILDER_IMAGE)
.PHONY: rocprofiler-build
rocprofiler-build:
@docker image rm $(ROCPROFILER_BUILDER_IMAGE) || true
@docker build --build-arg BUILD_BASE_IMAGE=$(ROCPROFILER_BASE_UBUNTU22) \
--build-arg ROCM_VERSION=$(ROCM_VERSION) \
--build-arg AMDGPU_VERSION=$(ROCM_VERSION) \
-t $(ROCPROFILER_BUILDER_IMAGE) \
. -f $(ROCPROFILER_BUILD_DIR)/Dockerfile.ubuntu22
# these create docker container images for the compilation of respective OS libraries
.PHONY: gimsmi-build
gimsmi-build:
ifeq ($(OS), RHEL9)
$(eval DOCKERFILE=$(GIMSMI_BUILD_DIR)/Dockerfile.rhel9)
$(eval BUILDER_IMAGE=$(GIMSMI_BUILDER_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_IMAGE})
else ifeq ($(OS), UBUNTU22)
$(eval DOCKERFILE=$(GIMSMI_BUILD_DIR)/Dockerfile.ubuntu22)
$(eval BUILDER_IMAGE=$(GIMSMI_BUILDER_UB22_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_UBUNTU22})
else ifeq ($(OS), UBUNTU24)
$(eval DOCKERFILE=$(GIMSMI_BUILD_DIR)/Dockerfile.ubuntu24)
$(eval BUILDER_IMAGE=$(GIMSMI_BUILDER_UB24_IMAGE))
$(eval BASE_IMAGE=${AMDSMI_BASE_UBUNTU24})
else
$(error unsupported os)
endif
@echo "Building gimsmi $(OS), $(DOCKERFILE), $(BUILDER_IMAGE), $(BASE_IMAGE)"
@docker image rm $(BUILDER_IMAGE) || true
@docker build --build-arg BASE_IMAGE=${BASE_IMAGE} \
-t $(BUILDER_IMAGE) . -f $(DOCKERFILE)
.PHONY: gimsmi-build-rhel
gimsmi-build-rhel:
OS=RHEL9 ${MAKE} gimsmi-build
.PHONY: gimsmi-build-ub22
gimsmi-build-ub22:
OS=UBUNTU22 ${MAKE} gimsmi-build
.PHONY: gimsmi-build-ub24
gimsmi-build-ub24:
OS=UBUNTU24 ${MAKE} gimsmi-build