mirror of https://github.com/aristocratos/btop.git
Properly invoke CMake to build ROCm
* Build an optimized library by default * Only build the library target * ROCm is build with debug symbols when `make DEBUG=true` * Enable LTO * Use the more generic CMake build command instead of calling make directly, this always uses all cores by default and makes it easier to switch to another generator e.g. Ninja * Use a variable to store the ROCm source directory. The directory can be changed with `make ROCM_DIR=<dir>` * The static library is now directly linked by CMake and not created off of the object files from a shared library build * The C++ compiler used to compile btop is now used to compile ROCm to avoid name mangling when `CXX` from the environment and `make CXX=` differ * CMake is invoked from btop's root directory
This commit is contained in:
parent
0585bc9cfb
commit
6f12e3555d
18
Makefile
18
Makefile
|
@ -329,20 +329,24 @@ uninstall:
|
||||||
|
|
||||||
#? Compile rocm_smi
|
#? Compile rocm_smi
|
||||||
ifeq ($(GPU_SUPPORT)$(RSMI_STATIC),truetrue)
|
ifeq ($(GPU_SUPPORT)$(RSMI_STATIC),truetrue)
|
||||||
|
ROCM_DIR ?= lib/rocm_smi_lib
|
||||||
|
ROCM_BUILD_DIR := $(ROCM_DIR)/build
|
||||||
|
ifeq ($(DEBUG),true)
|
||||||
|
BUILD_TYPE := Debug
|
||||||
|
else
|
||||||
|
BUILD_TYPE := Release
|
||||||
|
endif
|
||||||
.ONESHELL:
|
.ONESHELL:
|
||||||
rocm_smi:
|
rocm_smi:
|
||||||
@printf "\n\033[1;92mBuilding ROCm SMI static library\033[37m...\033[0m\n"
|
@printf "\n\033[1;92mBuilding ROCm SMI static library\033[37m...\033[0m\n"
|
||||||
@TSTAMP=$$(date +%s 2>/dev/null || echo "0")
|
@TSTAMP=$$(date +%s 2>/dev/null || echo "0")
|
||||||
@mkdir -p lib/rocm_smi_lib/build
|
|
||||||
@cd lib/rocm_smi_lib/build
|
|
||||||
@$(QUIET) || printf "\033[1;97mRunning CMake...\033[0m\n"
|
@$(QUIET) || printf "\033[1;97mRunning CMake...\033[0m\n"
|
||||||
@cmake .. $(SUPPRESS) || { printf "\033[1;91mCMake failed, continuing build without statically linking ROCm SMI\033[37m...\033[0m\n"; exit 0; }
|
CXX=$(CXX) cmake -S $(ROCM_DIR) -B $(ROCM_BUILD_DIR) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DCMAKE_POLICY_DEFAULT_CMP0069=NEW -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DBUILD_SHARED_LIBS=OFF $(SUPPRESS) || { printf "\033[1;91mCMake failed, continuing build without statically linking ROCm SMI\033[37m...\033[0m\n"; exit 0; }
|
||||||
@$(QUIET) || printf "\n\033[1;97mBuilding and linking...\033[0m\n"
|
@$(QUIET) || printf "\n\033[1;97mBuilding and linking...\033[0m\n"
|
||||||
@$(MAKE) $(SUPPRESS) || { printf "\033[1;91mMake failed, continuing build without statically linking ROCm SMI\033[37m...\033[0m\n"; exit 0; }
|
@cmake --build $(ROCM_BUILD_DIR) -j -t rocm_smi64 $(SUPPRESS) || { printf "\033[1;91mMake failed, continuing build without statically linking ROCm SMI\033[37m...\033[0m\n"; exit 0; }
|
||||||
@ar -crs rocm_smi/librocm_smi64.a $$(find rocm_smi -name '*.o') $(SURPRESS) || { printf "\033[1;91mFailed to pack ROCm SMI into static library, continuing build without statically linking ROCm SMI\033[37m...\033[0m\n"; exit 0; }
|
@printf "\033[1;92m100$(P)\033[10D\033[5C-> \033[1;37m$(ROCM_BUILD_DIR)/rocm_smi/librocm_smi64.a \033[1;93m(\033[1;97m$$(du -ah $(ROCM_BUILD_DIR)/rocm_smi/librocm_smi64.a | cut -f1)iB\033[1;93m)\033[0m\n"
|
||||||
@printf "\033[1;92m100$(P)\033[10D\033[5C-> \033[1;37mrocm_smi/librocm_smi64.a \033[100D\033[38C\033[1;93m(\033[1;97m$$(du -ah rocm_smi/librocm_smi64.a | cut -f1)iB\033[1;93m)\033[0m\n"
|
|
||||||
@printf "\033[1;92mROCm SMI build complete in \033[92m(\033[97m$$($(DATE_CMD) -d @$$(expr $$(date +%s 2>/dev/null || echo "0") - $(TIMESTAMP) 2>/dev/null) -u +%Mm:%Ss 2>/dev/null | sed 's/^00m://' || echo "unknown")\033[92m)\033[0m\n"
|
@printf "\033[1;92mROCm SMI build complete in \033[92m(\033[97m$$($(DATE_CMD) -d @$$(expr $$(date +%s 2>/dev/null || echo "0") - $(TIMESTAMP) 2>/dev/null) -u +%Mm:%Ss 2>/dev/null | sed 's/^00m://' || echo "unknown")\033[92m)\033[0m\n"
|
||||||
@$(eval override LDFLAGS += lib/rocm_smi_lib/build/rocm_smi/librocm_smi64.a -DRSMI_STATIC) # TODO: this seems to execute every time, no matter if the compilation failed or succeeded
|
@$(eval override LDFLAGS += $(ROCM_BUILD_DIR)/rocm_smi/librocm_smi64.a -DRSMI_STATIC) # TODO: this seems to execute every time, no matter if the compilation failed or succeeded
|
||||||
@$(eval override CXXFLAGS += -DRSMI_STATIC)
|
@$(eval override CXXFLAGS += -DRSMI_STATIC)
|
||||||
else
|
else
|
||||||
rocm_smi:
|
rocm_smi:
|
||||||
|
|
Loading…
Reference in New Issue