summaryrefslogtreecommitdiff
path: root/src/Makefile
blob: c842a5e59fb58c005623251a6cad5dbdd5c4d429 (plain)
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
# Include directories
INCLUDES += ../include
CFLAGS += $(foreach DIR,$(INCLUDES),-I$(DIR))

LIB_NAME = libhsakmt.so
LIB_MAJOR_VER = 1

# 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 -ggdb -pthread -fvisibility=hidden -O2

LDFLAGS += -lrt -pthread -Wl,--version-script=libhsakmt.ver -Wl,-soname=$(LIB_NAME).$(LIB_MAJOR_VER)

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

.PHONY: all lnx lnx64a clean

# Default target
all: lnx lnx64a

BUILD_ROOT = ../build
BUILDDIR = $(BUILD_ROOT)/$(MAKECMDGOALS)

TARGET = $(addprefix $(BUILDDIR)/,$(OBJS))

$(BUILDDIR)/$(LIB_NAME).$(LIB_MAJOR_VER): $(TARGET)
	gcc -shared $(LDFLAGS) -o $@ $^

$(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)

lnx64a: $(BUILDDIR)/$(LIB_NAME)

clean:
	rm -rf $(BUILD_ROOT)

#Rule
$(BUILDDIR)/%.o: %.c
	@echo Compiling $^
	@mkdir -p $(dir $@)
	gcc $(CFLAGS) -c $< -o $@