2015-08-11 09:39:17 +02:00
|
|
|
override TOPDIR = $(shell pwd)
|
2015-06-26 20:49:43 +02:00
|
|
|
ARCH = x86
|
2015-08-03 22:23:43 +02:00
|
|
|
TARGET=x86_64-hermit
|
2016-04-09 17:51:50 +02:00
|
|
|
NJOBS=-j$(shell nproc)
|
2016-03-13 11:11:59 +01:00
|
|
|
#OMPRT=libgomp
|
|
|
|
OMPRT=libomp
|
2015-06-26 20:49:43 +02:00
|
|
|
|
2016-01-10 03:13:31 +01:00
|
|
|
CROSSCOMPREFIX = x86_64-hermit
|
2017-01-10 23:47:18 +01:00
|
|
|
PREFIX = /opt/hermit
|
2015-06-26 20:49:43 +02:00
|
|
|
RM = rm -rf
|
|
|
|
CD = cd
|
2016-01-10 03:13:31 +01:00
|
|
|
CP = cp
|
2016-03-30 13:04:19 +02:00
|
|
|
MKDIR = mkdir -p
|
2015-06-26 20:49:43 +02:00
|
|
|
TMP = $(TOPDIR)/tmp
|
2017-01-08 00:59:39 +01:00
|
|
|
OPT = --disable-shared --disable-multilib --enable-lto --enable-newlib-hw-fp --enable-newlib-io-c99-formats --enable-newlib-multithread #--enable-newlib-reent-small
|
|
|
|
CLONE_DEPTH = --depth=50
|
|
|
|
#CLONE_DEPTH =
|
2015-06-26 20:49:43 +02:00
|
|
|
|
|
|
|
# Prettify output
|
|
|
|
V = 0
|
|
|
|
ifeq ($V,0)
|
|
|
|
Q = @
|
|
|
|
P = > /dev/null
|
|
|
|
endif
|
|
|
|
|
2015-08-11 10:25:19 +02:00
|
|
|
default:
|
|
|
|
@echo Do not use default rule!
|
|
|
|
|
2017-01-08 15:52:14 +01:00
|
|
|
examples:
|
2015-08-11 10:25:19 +02:00
|
|
|
@echo Build demo applications
|
2016-09-10 10:11:50 +02:00
|
|
|
$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET) $(PROFILING_CFLAGS)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET) $(PROFILING_LDFLAGS)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) GO_FOR_TARGET="$(GO_FOR_TARGET)" GOFLAGS_FOR_TARGET="$(GOFLAGS_FOR_TARGET)" -C tests depend
|
|
|
|
$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET) $(PROFILING_CFLAGS)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET) $(PROFILING_LDFLAGS)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) GO_FOR_TARGET="$(GO_FOR_TARGET)" GOFLAGS_FOR_TARGET="$(GOFLAGS_FOR_TARGET)" -C tests
|
2016-05-18 01:06:40 +02:00
|
|
|
$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET) $(PROFILING_CFLAGS)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET) $(PROFILING_LDFLAGS)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) -C benchmarks depend
|
|
|
|
$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET) $(PROFILING_CFLAGS)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET) $(PROFILING_LDFLAGS)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) -C benchmarks
|
2016-04-02 23:38:50 +02:00
|
|
|
#$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) -C openmpbench depend
|
2016-05-18 01:06:40 +02:00
|
|
|
$Q$(MAKE) ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET) $(PROFILING_CFLAGS)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET) $(PROFILING_LDFLAGS)" OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) -C openmpbench
|
2015-06-26 20:49:43 +02:00
|
|
|
|
2017-01-10 23:47:18 +01:00
|
|
|
bootstrap: binutils gcc newlib pte $(TMP)/binutils $(TMP)/bootstrap
|
2017-01-08 00:59:39 +01:00
|
|
|
|
|
|
|
binutils:
|
|
|
|
git clone $(CLONE_DEPTH) https://github.com/RWTH-OS/binutils.git
|
|
|
|
|
|
|
|
gcc:
|
|
|
|
git clone $(CLONE_DEPTH) https://github.com/RWTH-OS/gcc.git
|
|
|
|
|
|
|
|
pte:
|
|
|
|
git clone $(CLONE_DEPTH) https://github.com/RWTH-OS/pthread-embedded.git pte
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(CD) pte; ./configure --prefix=$(PREFIX)
|
2017-01-08 00:59:39 +01:00
|
|
|
|
|
|
|
newlib:
|
|
|
|
git clone $(CLONE_DEPTH) https://github.com/RWTH-OS/newlib.git
|
2015-08-11 09:39:17 +02:00
|
|
|
|
|
|
|
$(TMP)/binutils:
|
2015-08-11 10:25:19 +02:00
|
|
|
@echo Build binutils
|
2015-08-03 22:23:43 +02:00
|
|
|
$Q$(MKDIR) $(TMP)/binutils
|
2017-01-13 00:51:26 +01:00
|
|
|
$Q$(CD) $(TMP)/binutils; $(TOPDIR)/binutils/configure --target=$(TARGET) --prefix=$(PREFIX) --with-sysroot --disable-multilib --disable-shared --disable-nls --disable-gdb --disable-libdecnumber --disable-readline --disable-sim --disable-libssp --enable-tls && $(MAKE) $(NJOBS) && $(MAKE) install
|
2015-08-11 09:39:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
$(TMP)/bootstrap:
|
2015-08-11 10:25:19 +02:00
|
|
|
@echo Build bootstrap compiler
|
2015-08-11 09:39:17 +02:00
|
|
|
$Q$(MKDIR) $(TMP)/bootstrap
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(CD) $(TMP)/bootstrap; $(TOPDIR)/gcc/configure --target=$(TARGET) --prefix=$(PREFIX) --without-headers --disable-multilib --with-isl --with-tune=generic --enable-languages=c,lto --disable-nls --disable-shared --disable-libssp --disable-libgomp --enable-threads=posix --enable-tls --enable-lto --disable-symvers && $(MAKE) $(NJOBS) all-gcc && $(MAKE) install-gcc
|
2015-08-11 09:39:17 +02:00
|
|
|
|
2017-01-08 15:52:14 +01:00
|
|
|
toolchain: $(TMP)/newlib libpthread $(TMP)/gcc libs
|
2015-08-11 09:39:17 +02:00
|
|
|
|
|
|
|
$(TMP)/newlib:
|
2016-05-13 22:00:30 +02:00
|
|
|
@echo Build newlib
|
2015-08-03 22:23:43 +02:00
|
|
|
$Q$(MKDIR) $(TMP)/newlib
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(CD) $(TMP)/newlib; $(TOPDIR)/newlib/configure --target=$(TARGET) --prefix=$(PREFIX) $(OPT) && $(MAKE) $(NJOBS) && $(MAKE) install
|
2015-08-12 21:01:20 +02:00
|
|
|
|
2017-01-08 00:59:39 +01:00
|
|
|
libpthread:
|
2016-05-13 22:00:30 +02:00
|
|
|
@echo Build libpthread
|
2016-05-18 01:06:40 +02:00
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Iplatform/hermit -Iplatform/helper -Wall $(PROFILING_CFLAGS)" -C pte depend
|
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Iplatform/hermit -Iplatform/helper -Wall $(PROFILING_CFLAGS)" -C pte
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Iplatform/hermit -Iplatform/helper -Wall $(PROFILING_CFLAGS)" -C pte install
|
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Iplatform/hermit -Iplatform/helper -Wall $(PROFILING_CFLAGS)" -C pte headers
|
2016-03-11 14:17:53 +01:00
|
|
|
|
|
|
|
libs:
|
2016-05-18 01:06:40 +02:00
|
|
|
@echo Build Xray profiler
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET)" PREFIX=$(PREFIX) -C xray
|
2016-05-18 01:06:40 +02:00
|
|
|
@echo Build OpenMP Runtime and iRCCE
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Wall -pthread $(PROFILING_CFLAGS)" PREFIX=$(PREFIX) -C $(OMPRT) depend
|
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CXX_FOR_TARGET=$(CXX_FOR_TARGET) CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Wall -pthread $(PROFILING_CFLAGS)" PREFIX=$(PREFIX) -C $(OMPRT)
|
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Wall" PREFIX=$(PREFIX) -C ircce depend
|
|
|
|
$Q$(MAKE) TARGET=$(TARGET) CC_FOR_TARGET=$(CC_FOR_TARGET) AR_FOR_TARGET=$(AR_FOR_TARGET) CFLAGS_FOR_TARGET+="-I. -Wall" PREFIX=$(PREFIX) -C ircce
|
|
|
|
|
|
|
|
install:
|
|
|
|
$Q$(MAKE) PREFIX=$(PREFIX) -C xray install
|
|
|
|
$Q$(MAKE) PREFIX=$(PREFIX) -C ircce install
|
|
|
|
$Q$(MAKE) PREFIX=$(PREFIX) -C $(OMPRT) install
|
2015-10-17 11:56:19 +02:00
|
|
|
|
2015-08-11 09:39:17 +02:00
|
|
|
$(TMP)/gcc:
|
2015-08-11 10:25:19 +02:00
|
|
|
@echo Build final gcc
|
2015-08-03 22:23:43 +02:00
|
|
|
$Q$(MKDIR) $(TMP)/gcc
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(CD) $(TMP)/gcc; $(TOPDIR)/gcc/configure --target=$(TARGET) --prefix=$(PREFIX) --with-newlib --with-isl --disable-multilib --without-libatomic --with-tune=generic --enable-languages=c,c++,lto --disable-nls --disable-shared --disable-libssp --enable-threads=posix --disable-libgomp --enable-tls --enable-lto --disable-symvers && $(MAKE) $(NJOBS) && $(MAKE) install
|
2015-09-09 13:52:29 +02:00
|
|
|
$Q$(RM) $(TMP)/gcc
|
|
|
|
$Q$(MKDIR) $(TMP)/gcc
|
2017-01-10 23:47:18 +01:00
|
|
|
$Q$(CD) $(TMP)/gcc; $(TOPDIR)/gcc/configure --target=$(TARGET) --prefix=$(PREFIX) --with-newlib --with-isl --disable-multilib --without-libatomic --with-tune=generic --enable-languages=c,c++,go,fortran,lto --disable-nls --disable-shared --disable-libssp --enable-threads=posix --disable-libgomp --enable-tls --enable-lto --disable-symvers && $(MAKE) $(NJOBS) && $(MAKE) install
|
2015-06-26 20:49:43 +02:00
|
|
|
|
|
|
|
clean:
|
2015-08-09 21:59:56 +02:00
|
|
|
@echo Cleaning toolchain
|
2016-03-13 00:31:42 +01:00
|
|
|
$Q$(MAKE) -C $(OMPRT) clean
|
|
|
|
$Q$(MAKE) -C ircce clean
|
2015-10-09 20:22:02 +02:00
|
|
|
$Q$(MAKE) -C tests clean
|
2015-10-09 20:31:14 +02:00
|
|
|
$Q$(MAKE) -C benchmarks clean
|
2016-03-08 19:10:51 +01:00
|
|
|
$Q$(MAKE) -C openmpbench clean
|
2016-05-18 00:36:22 +02:00
|
|
|
$Q$(MAKE) -C xray clean
|
2015-06-26 20:49:43 +02:00
|
|
|
|
|
|
|
veryclean:
|
2015-08-09 21:59:56 +02:00
|
|
|
@echo Propper cleaning of the toolchain
|
2016-03-13 00:31:42 +01:00
|
|
|
$Q$(MAKE) -C $(OMPRT) veryclean
|
2015-10-17 11:56:19 +02:00
|
|
|
$Q$(MAKE) -C ircce veryclean
|
2015-10-09 20:22:02 +02:00
|
|
|
$Q$(MAKE) -C tests veryclean
|
2015-10-17 11:56:19 +02:00
|
|
|
$Q$(MAKE) -C benchmarks veryclean
|
2016-03-08 19:10:51 +01:00
|
|
|
$Q$(MAKE) -C openmpbench veryclean
|
2017-01-08 00:59:39 +01:00
|
|
|
$Q$(RM) binutils gcc newlib pte
|
2015-08-19 07:35:29 +02:00
|
|
|
$Q$(RM) $(TMP)
|
2016-01-10 03:13:31 +01:00
|
|
|
|
2017-01-08 00:59:39 +01:00
|
|
|
.PHONY: default all clean veryclean headers libpthread libs
|