mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-30 00:00:15 +01:00

Currently, "user-level" code has to deactivate the red zone support. To avoid this, we create an interrupt stack table (IST1), which is the default stack for all interrupts. Consequently, the common stack isn't touch by handling any interrupt and the red-zone could be used for compiler optimizations. By using IST1, nested interrupts (beside NMI) arn't longer supported. But HermitCores doesn't rely on this support.
126 lines
3.6 KiB
Makefile
126 lines
3.6 KiB
Makefile
ARCH = x86
|
|
TARGET=x86_64-hermit
|
|
MAKE = make
|
|
override STRIP_DEBUG = --strip-debug #--strip-unneeded
|
|
KEEP_DEBUG = --only-keep-debug
|
|
|
|
# Set your own cross compiler tool chain prefix here
|
|
CROSSCOMPREFIX = x86_64-hermit-
|
|
|
|
CC_FOR_TARGET = $(CROSSCOMPREFIX)gcc
|
|
CXX_FOR_TARGET = $(CROSSCOMPREFIX)g++
|
|
GCC_FOR_TARGET = $(CROSSCOMPREFIX)gcc
|
|
CPP_FOR_TARGET = $(CROSSCOMPREFIX)cpp
|
|
AR_FOR_TARGET = $(CROSSCOMPREFIX)ar
|
|
AS_FOR_TARGET = $(CROSSCOMPREFIX)as
|
|
LD_FOR_TARGET = $(CROSSCOMPREFIX)ld
|
|
NM_FOR_TARGET = $(CROSSCOMPREFIX)nm
|
|
OBJDUMP_FOR_TARGET = $(CROSSCOMPREFIX)objdump
|
|
OBJCOPY_FOR_TARGET = $(CROSSCOMPREFIX)objcopy
|
|
RANLIB_FOR_TARGET = $(CROSSCOMPREFIX)ranlib
|
|
STRIP_FOR_TARGET = $(CROSSCOMPREFIX)strip
|
|
READELF_FOR_TARGET = $(CROSSCOMPREFIX)readelf
|
|
ELFEDIT_FOR_TARGET = $(CROSSCOMPREFIX)elfedit
|
|
|
|
# Prettify output
|
|
V = 0
|
|
ifeq ($V,0)
|
|
Q = @
|
|
P = > /dev/null
|
|
endif
|
|
|
|
ICC_EXE =
|
|
#ICC_EXE = stream_icc
|
|
|
|
# other implicit rules
|
|
%.o : %.c
|
|
@echo [CC] $@
|
|
$Q$(CC_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) -o $@ $<
|
|
|
|
%.o: %.cpp
|
|
@echo [CXX] $@
|
|
$Q$(CXX_FOR_TARGET) -c $(CXXFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $<
|
|
|
|
%.o: %.f90
|
|
@echo [F90] $@
|
|
$Q$(FC_FOR_TARGET) -c $(FFLAGS_FOR_TARGET) -o $@ $<
|
|
|
|
default: all
|
|
|
|
all: stream hg netio RCCE_pingping RCCE_pingpong basic $(ICC_EXE)
|
|
|
|
stream.o: stream.c
|
|
@echo [CC] $@
|
|
$Q$(CC_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) -fopenmp -o $@ $<
|
|
|
|
stream: stream.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -fopenmp
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
stream_icc.o: stream.c
|
|
@echo [ICC] $@
|
|
icc -m64 -c -o $@ -O3 -xHost -I$(TOPDIR)/hermit/usr/x86/x86_64-hermit/include/ -openmp -ffreestanding $<
|
|
$Q$(ELFEDIT_FOR_TARGET) --output-osabi HermitCore $@
|
|
|
|
stream_icc: stream_icc.o
|
|
@echo [LD]
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -fopenmp
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
basic.o: basic.c
|
|
@echo [CC] $@
|
|
$Q$(CC_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) -pthread -o $@ $<
|
|
|
|
basic: basic.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -pthread
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
RCCE_pingping: RCCE_pingping.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -lircce
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
RCCE_pingpong: RCCE_pingpong.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -lircce
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
netio: netio.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET)
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
hg: hg.o hist.o rdtsc.o run.o init.o opt.o report.o setup.o
|
|
@echo [LD] $@
|
|
$Q$(CC_FOR_TARGET) -o $@ $< $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) hist.o rdtsc.o run.o init.o opt.o report.o setup.o
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
|
$Qchmod a-x $@.sym
|
|
|
|
clean:
|
|
@echo Cleaning benchmarks
|
|
$Q$(RM) stream hg netio RCCE_pingping RCCE_pingpong *.sym *.o *~
|
|
|
|
veryclean:
|
|
@echo Propper cleaning benchmarks
|
|
$Q$(RM) stream hg RCCE_pingping RCCE_pingpong *.sym *.o *~
|
|
|
|
depend:
|
|
$Q$(CC_FOR_TARGET) -MM $(CFLAGS_FOR_TARGET) *.c > Makefile.dep
|
|
|
|
-include Makefile.dep
|
|
# DO NOT DELETE
|