From 2c2de075a981c3fc0bac63619de9a78e675be9e5 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sun, 30 Jul 2017 08:21:35 -0500 Subject: [PATCH] Add back GNU Makefiles. Change-Id: I4a367655a905a85d4c29980aa2da8ac28db73d10 --- Makefile | 18 ++++++++ src/Makefile | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 Makefile create mode 100644 src/Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..c306e90756 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +.PHONY: all clean lnx64a lnx + +all: lnx64a + +deb: + $(MAKE) -C src deb + +rpm: + $(MAKE) -C src rpm + +lnx64a: + $(MAKE) -C src lnx64a + +lnx: + $(MAKE) -C src lnx + +clean: + $(MAKE) -C src clean diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000000..615fd9b10c --- /dev/null +++ b/src/Makefile @@ -0,0 +1,116 @@ +# Our directory +THUNK_ROOT ?= $(abspath ../) + +# Include directories +INCLUDE_DIR := ../include +INCLUDES += $(INCLUDE_DIR) +CFLAGS += $(foreach DIR,$(INCLUDES),-I$(DIR)) + +LIB_NAME = libhsakmt.so +LIB_MAJOR_VER = 1 + +PACKAGE_MAJOR_VER = 1 +PACKAGE_MINOR_VER = 0 +PACKAGE_PATCH_VER ?= 0 +PACKAGE_VER = $(PACKAGE_MAJOR_VER).$(PACKAGE_MINOR_VER).$(PACKAGE_PATCH_VER) +export PACKAGE_VER +DEB_BUILD_ARCH = $(shell dpkg --print-architecture | sed 's/ \*$i//g') + +# Compiler options +CFLAGS += -fPIC # Position-independent code required to build shared library +CFLAGS += -W -Wall -Wextra -Werror -Wno-unused-parameter +CFLAGS += -Wformat-security -Wswitch-default -Wundef \ + -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual \ + -Wlogical-op -Wstrict-prototypes -Wmissing-prototypes \ + -Wmissing-declarations -Wredundant-decls \ + -Wunreachable-code +CFLAGS += -std=gnu99 -pthread -fvisibility=hidden -O2 + +# If this is not a release build, add debug-specific flags +ifneq ($(REL),1) + CFLAGS += -ggdb +endif + +LDFLAGS += -lrt -pthread -lpci -Wl,--version-script=libhsakmt.ver -Wl,-soname=$(LIB_NAME).$(LIB_MAJOR_VER) -Wl,-z,nodelete + +OBJS = debug.o globals.o memory.o perfctr.o time.o version.o \ + events.o openclose.o queues.o topology.o fmm.o pmc_table.o \ + libhsakmt.o + +.PHONY: all lnx lnx64a clean + +# Default target +all: lnx64a + +# To relocate build output, set "O=target/dir/" +# otherwise it defaults to a local directory + +ifdef O + BUILD_ROOT := $(O) +else + BUILD_ROOT := ../build +endif +BUILD_ROOT := $(abspath $(BUILD_ROOT)) + +BUILDDIR = $(BUILD_ROOT)/$(MAKECMDGOALS) +TARGET = $(addprefix $(BUILDDIR)/,$(OBJS)) + +$(BUILDDIR)/$(LIB_NAME).$(LIB_MAJOR_VER): $(TARGET) + gcc -shared -o $@ $^ $(LDFLAGS) + +$(BUILDDIR)/$(LIB_NAME): $(BUILDDIR)/$(LIB_NAME).$(LIB_MAJOR_VER) + @ln -sf $(LIB_NAME).$(LIB_MAJOR_VER) $(BUILDDIR)/$(LIB_NAME) + +lnx: CFLAGS += -m32 +lnx: LDFLAGS += -m32 +lnx: $(BUILDDIR)/$(LIB_NAME) + +PACKAGE_DIR = $(BUILDDIR)/libhsakmt +DEBIAN_DIR = ../DEBIAN +LDCONF_FILE = $(DEBIAN_DIR)/x86_64-libhsakmt.conf +LDCONF_INSTALL_DIR = $(PACKAGE_DIR)/etc/ld.so.conf.d +ROCM_ROOT = $(PACKAGE_DIR)/opt/rocm +ROCM_LIB = $(ROCM_ROOT)/lib +ROCM_INCLUDE = $(ROCM_ROOT)/include +INSTALL_LIB_DIR = libhsakmt/lib +INSTALL_INCLUDE_DIR = libhsakmt/include/libhsakmt + +export PACKAGE_DIR + +package-common: lnx64a + @mkdir -p $(PACKAGE_DIR) + + @mkdir -p $(LDCONF_INSTALL_DIR) + @cp -r $(LDCONF_FILE) $(LDCONF_INSTALL_DIR) + + @mkdir -p $(ROCM_ROOT)/$(INSTALL_LIB_DIR) + @cp $(BUILDDIR)/$(LIB_NAME).$(LIB_MAJOR_VER) $(ROCM_ROOT)/$(INSTALL_LIB_DIR) + + @mkdir -p $(ROCM_ROOT)/$(INSTALL_INCLUDE_DIR) + @cp -r $(INCLUDE_DIR)/* $(ROCM_ROOT)/$(INSTALL_INCLUDE_DIR) + + @mkdir -p $(ROCM_LIB) + @ln -fs ../$(INSTALL_LIB_DIR)/$(LIB_NAME).$(LIB_MAJOR_VER) $(ROCM_LIB)/$(LIB_NAME) + + @mkdir -p $(ROCM_INCLUDE) + ln -fs ../$(INSTALL_INCLUDE_DIR) $(ROCM_INCLUDE)/ + +deb: package-common + @mkdir -p $(PACKAGE_DIR)/DEBIAN + @sed 's/\$$version/$(PACKAGE_VER)/g;s/\$$arch/$(DEB_BUILD_ARCH)/g' $(DEBIAN_DIR)/control > $(PACKAGE_DIR)/DEBIAN/control + + @fakeroot dpkg-deb --build $(PACKAGE_DIR) \ + $(BUILDDIR)/hsakmt-dev-$(PACKAGE_VER)-${DEB_BUILD_ARCH}.deb + +rpm: package-common + @rpmbuild --define '_topdir $(BUILD_ROOT)/rpm' -ba $(THUNK_ROOT)/RPM/libhsakmt.spec + +lnx64a: $(BUILDDIR)/$(LIB_NAME) + +clean: + rm -rf $(BUILD_ROOT) +#Rule +$(BUILDDIR)/%.o: %.c ../include/hsakmt.h ../include/hsakmttypes.h ../include/linux/kfd_ioctl.h + @echo Compiling $^ + @mkdir -p $(dir $@) + gcc $(CFLAGS) -c $< -o $@