summaryrefslogtreecommitdiff
path: root/Makefile.prebuild
blob: c59e9049c49922c85b72780c7ffd876c368d9d3e (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
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
# This is triggered by Makefile.system and runs before any of the code is built.

export BINARY
export USE_OPENMP

ifdef DYNAMIC_ARCH
override HOST_CFLAGS += -DDYNAMIC_ARCH
endif

ifdef TARGET_CORE
TARGET_MAKE = Makefile_kernel.conf
TARGET_CONF = config_kernel.h
else
TARGET_MAKE = Makefile.conf
TARGET_CONF = config.h
endif

ifdef USE_PERL
SCRIPTSUFFIX = .pl
else
SCRIPTSUFFIX =
endif

# CPUIDEMU = ../../cpuid/table.o

ifdef CPUIDEMU
EXFLAGS = -DCPUIDEMU -DVENDOR=99
endif

ifeq ($(TARGET), MIPS24K)
TARGET_FLAGS = -mips32r2
endif

ifeq ($(TARGET), MIPS1004K)
TARGET_FLAGS = -mips32r2
endif

ifeq ($(TARGET), P5600)
TARGET_FLAGS = -mips32r5
endif

ifeq ($(TARGET), I6400)
TARGET_FLAGS = -mips64r6
endif

ifeq ($(TARGET), P6600)
TARGET_FLAGS = -mips64r6
endif

ifeq ($(TARGET), I6500)
TARGET_FLAGS = -mips64r6
endif

ifeq ($(TARGET), C910V)
TARGET_FLAGS = -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d
endif

all: getarch_2nd
	./getarch_2nd  0 >> $(TARGET_MAKE)
	./getarch_2nd  1 >> $(TARGET_CONF)

$(TARGET_CONF): c_check$(SCRIPTSUFFIX) f_check$(SCRIPTSUFFIX) getarch
	./c_check$(SCRIPTSUFFIX) $(TARGET_MAKE) $(TARGET_CONF) $(CC) $(TARGET_FLAGS) $(CFLAGS)
ifneq ($(ONLY_CBLAS), 1)
	./f_check$(SCRIPTSUFFIX) $(TARGET_MAKE) $(TARGET_CONF) $(FC) $(TARGET_FLAGS)
else
#When we only build CBLAS, we set NOFORTRAN=2
	echo "NOFORTRAN=2" >> $(TARGET_MAKE)
	echo "NO_FBLAS=1" >> $(TARGET_MAKE)
	echo "F_COMPILER=GFORTRAN"  >> $(TARGET_MAKE)
	echo "BU=_"  >> $(TARGET_MAKE)
	echo "#define BUNDERSCORE _" >> $(TARGET_CONF)
	echo "#define NEEDBUNDERSCORE 1" >> $(TARGET_CONF)
endif
	./getarch 0 >> $(TARGET_MAKE)
	./getarch 1 >> $(TARGET_CONF)


getarch : getarch.c cpuid.S dummy $(CPUIDEMU)
	avx512=$$(./c_check$(SCRIPTSUFFIX) - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_AVX512); \
	rv64gv=$$(./c_check$(SCRIPTSUFFIX) - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_RV64GV); \
	$(HOSTCC) $(HOST_CFLAGS) $(EXFLAGS) $${avx512:+-D$${avx512}} $${rv64gv:+-D$${rv64gv}} -o $(@F) getarch.c cpuid.S $(CPUIDEMU)

getarch_2nd : getarch_2nd.c $(TARGET_CONF) dummy
ifndef TARGET_CORE
	$(HOSTCC) -I. $(HOST_CFLAGS) -o $(@F) getarch_2nd.c
else
	$(HOSTCC) -I. $(HOST_CFLAGS) -DBUILD_KERNEL -o $(@F) getarch_2nd.c
endif

dummy:

.PHONY: dummy