2015-10-09 20:31:14 +02:00
|
|
|
ARCH = x86
|
|
|
|
TARGET=x86_64-hermit
|
|
|
|
MAKE = make
|
2015-12-30 10:38:14 +01:00
|
|
|
override STRIP_DEBUG = --strip-debug #--strip-unneeded
|
2015-10-09 20:31:14 +02:00
|
|
|
KEEP_DEBUG = --only-keep-debug
|
2016-03-24 00:22:29 +01:00
|
|
|
OBJCOPY_FLAGS = -j .mboot -j .ktext -j .kdata -j .kbss -j .tbss -j .tdata -j .fini -j .init -j .ctors -j .dtors -j .text -j .data -j .rodata -j .bss -j .percore -j .eh_frame -j .jcr -j .got.plt -j .preinit_array -j .init_array -j .fini_array -j .gcc_except_table -O binary
|
2015-10-09 20:31:14 +02:00
|
|
|
|
2016-03-30 15:51:09 +02:00
|
|
|
# We patch the ELF header with a custom OSABI to be recognized by binfmt_misc
|
|
|
|
ELF_OSABI_OFFSET = 7
|
|
|
|
ELF_OSABI = "\\x42"
|
|
|
|
|
2015-10-09 20:31:14 +02:00
|
|
|
# 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
|
|
|
|
|
|
|
|
# Prettify output
|
|
|
|
V = 0
|
|
|
|
ifeq ($V,0)
|
|
|
|
Q = @
|
|
|
|
P = > /dev/null
|
|
|
|
endif
|
|
|
|
|
|
|
|
# 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 $@ $<
|
|
|
|
|
2015-12-30 10:38:14 +01:00
|
|
|
%.bin: %
|
|
|
|
@echo [OBJECT_COPY] $@
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(OBJCOPY_FLAGS) $< $@
|
|
|
|
|
2015-10-09 20:31:14 +02:00
|
|
|
default: all
|
|
|
|
|
2016-01-26 14:30:00 +01:00
|
|
|
all: stream.bin hg.bin netio.bin RCCE_pingping.bin RCCE_pingpong.bin
|
2015-10-09 20:31:14 +02:00
|
|
|
|
|
|
|
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) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -fopenmp -o $@ $<
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
2016-03-30 15:51:09 +02:00
|
|
|
$Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null
|
2015-10-09 20:31:14 +02:00
|
|
|
$Qchmod a-x $@.sym
|
|
|
|
|
2015-10-17 11:58:56 +02:00
|
|
|
RCCE_pingping: RCCE_pingping.o
|
|
|
|
@echo [LD] $@
|
|
|
|
$Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lircce
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
2016-03-30 15:51:09 +02:00
|
|
|
$Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null
|
2015-10-17 11:58:56 +02:00
|
|
|
$Qchmod a-x $@.sym
|
|
|
|
|
|
|
|
RCCE_pingpong: RCCE_pingpong.o
|
|
|
|
@echo [LD] $@
|
|
|
|
$Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< -lircce
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
2016-03-30 15:51:09 +02:00
|
|
|
$Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null
|
2015-10-17 11:58:56 +02:00
|
|
|
$Qchmod a-x $@.sym
|
|
|
|
|
2016-01-10 20:25:58 +01:00
|
|
|
netio.o: netio.c
|
|
|
|
@echo [CC] $@
|
|
|
|
$Q$(CC_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) -D_POSIX_SOURCE -o $@ $<
|
|
|
|
|
2016-01-10 03:13:31 +01:00
|
|
|
netio: netio.o
|
|
|
|
@echo [LD] $@
|
|
|
|
$Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $<
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(KEEP_DEBUG) $@ $@.sym
|
|
|
|
$Q$(OBJCOPY_FOR_TARGET) $(STRIP_DEBUG) $@
|
2016-03-30 15:51:09 +02:00
|
|
|
$Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null
|
2016-01-10 03:13:31 +01:00
|
|
|
$Qchmod a-x $@.sym
|
|
|
|
|
2015-10-09 22:17:57 +02:00
|
|
|
hg: hg.o hist.o rdtsc.o run.o init.o opt.o report.o setup.o
|
|
|
|
@echo [LD] $@
|
|
|
|
$Q$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) $(CFLAGS_FOR_TARGET) -o $@ $< 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) $@
|
2016-03-30 15:51:09 +02:00
|
|
|
$Qprintf $(ELF_OSABI) | dd of=$@ bs=1 seek=$(ELF_OSABI_OFFSET) count=1 conv=notrunc 2>/dev/null
|
2015-10-09 22:17:57 +02:00
|
|
|
$Qchmod a-x $@.sym
|
|
|
|
|
2015-10-09 20:31:14 +02:00
|
|
|
clean:
|
|
|
|
@echo Cleaning benchmarks
|
2016-01-10 03:13:31 +01:00
|
|
|
$Q$(RM) stream hg netio RCCE_pingping RCCE_pingpong *.sym *.o *~ *.bin
|
2015-10-09 20:31:14 +02:00
|
|
|
|
|
|
|
veryclean:
|
|
|
|
@echo Propper cleaning benchmarks
|
2015-12-30 10:38:14 +01:00
|
|
|
$Q$(RM) stream hg RCCE_pingping RCCE_pingpong *.sym *.o *~ *.bin
|
2015-10-09 20:31:14 +02:00
|
|
|
|
|
|
|
depend:
|
|
|
|
$Q$(CC_FOR_TARGET) -MM $(CFLAGS_FOR_TARGET) *.c > Makefile.dep
|
|
|
|
|
|
|
|
-include Makefile.dep
|
|
|
|
# DO NOT DELETE
|