diff --git a/.travis.yml b/.travis.yml index 42c23e9ef..0d84a836b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,23 +5,21 @@ git: language: c compiler: gcc before_install: + - echo "deb https://dl.bintray.com/rwth-os/hermitcore vivid main" | sudo tee -a /etc/apt/sources.list - sudo apt-get -qq update - sudo apt-get install -y curl qemu-system-x86 nasm texinfo libmpfr-dev libmpc-dev libgmp-dev libisl-dev flex bison packaging-dev + #- sudo apt-get install -y --force-yes binutils-hermit gcc-hermit-bootstrap + - sudo apt-get install -y --force-yes binutils-hermit libhermit newlib-hermit pthread-embedded-hermit gcc-hermit - git submodule update --init lwip usr/libomp + script: - - mv .git .. - cd .. - mv HermitCore libhermit-0.1 - - tar -czf libhermit_0.1.orig.tar.gz libhermit-0.1 - - mv .git libhermit-0.1 - - cd $TOPDIR - - wget https://bintray.com/rwth-os/hermitcore/download_file?file_path=binutils-hermit_2.26.1-1_amd64.deb -O binutils-hermit_2.26.1-1_amd64.deb - - sudo dpkg -i ./binutils-hermit_2.26.1-1_amd64.deb - - wget https://www.lankes.org/deploy/bootstrap.tar.gz - - tar xzf bootstrap.tar.gz - - cd /home/travis/build/RWTH-OS/libhermit-0.1 - - debuild -e PATH -us -uc - - x86_64-hermit-readelf -a kernel/main.o + - tar -czf libhermit_0.1.orig.tar.gz libhermit-0.1 --exclude=.git + - cd libhermit-0.1 + - debuild -e PATH -us -uc -j2 + - x86_64-hermit-readelf -a kernel/main.o | grep ABI + deploy: on: production provider: bintray @@ -32,8 +30,7 @@ deploy: secure: JfsqEUO3Z60yGfuK5RSzwMoWZtaYflZtW7QE6R1DVMPEQ+CytzEdV2JaTpY14xz4yz1YpBBuQ0P3Q3e2rf/ORp8N8j7/5m3gfiDi8bRH3gX10r6vCQaUBilj0pz3amWUacxwBUEYR/f1029OnJ1qug30f4ARk7DWyuAePt0OboDXZ3j4JOi8xfXKTzofyKGugU4EuzhmKAbpHaBoX97g8z+gETC+wsBEYio8iD2h0ZOe/qZ0S+JGYkphIKcxpQazKdi3YrmWm0BUZsQRtkgoH7KUZm8vqfOUyVOrK+UGOTz4vXqCWHZ+wG1QRrGPUv8ehLrB26y2o02mmaDWQhM+I3RtllL06JDvDw40xjRImYtzg6xr7Mvl0OTQHprXrkN8gw2IbIivV8v31O46Ov+KIaN3CCx1IncnllBWjEXAIs4zPtvNj2Ad338JTkI/opHmPG0DI0DKE36r8wPZYTs/pHVpc3xEzwKYDklJkICjMLUakUGKppS7eKzKGRMjWvbT0vM/U7hHUcz0lA+BUoXedNmJQ1wBT85Ud8uobuKS4C8QmlgIuF1PI2+6LJr5LsCGZRvg7Pl1SPc3ZQLPHX4ggoLAnZZJiV/0ZPCn7XCLiUS1qws37l0uZT1zJQMFLsw9MGuP58tpT7WDuYYAwma/pL+OKC/JKoDhuJwM1I7wB4s= env: global: - - TOPDIR=/home/travis/build - - PATH=$PATH:/opt/hermit/bin:$TOPDIR/x86/bin + - PATH=$PATH:/opt/hermit/bin/ - PROXY_STR=":hermit:M:7:\\x42::`pwd`/RWTH-OS/libhermit-0.1/tools/proxy" - HERMIT_ISLE=qemu - HERMIT_CPUS=1 diff --git a/Makefile.in b/Makefile.in index fbd2e7ca9..02dd1e93d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -126,6 +126,34 @@ toolchain: $(INSTALL_LIBHERMIT) PROFILING_CFLAGS="$(PROFILING_CFLAGS)" \ PROFILING_LDFLAGS="$(PROFILING_LDFLAGS)" -C usr toolchain +libs: + $Q$(MAKE) ARCH=$(ARCH) PREFIX=$(prefix) \ + LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_NEWLIB)" \ + GOFLAGS_FOR_TARGET="$(GOFLAGS_FOR_NEWLIB)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_NEWLIB)" \ + FFLAGS_FOR_TARGET="$(FFLAGS_FOR_NEWLIB)" \ + FCFLAGS_FOR_TARGET="$(FCFLAGS_FOR_NEWLIB)" \ + FCFLAGS="$(FCFLAGS_FOR_NEWLIB)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_NEWLIB)" \ + NASMFLAGS="$(NASMFLAGS_FOR_NEWLIB)" \ + CC_FOR_TARGET=$(CC_FOR_TARGET) \ + GO_FOR_TARGET=$(GO_FOR_TARGET) \ + FC_FOR_TARGET=$(FC_FOR_TARGET) \ + CXX_FOR_TARGET=$(CXX_FOR_TARGET) \ + GCC_FOR_TARGET=$(GCC_FOR_TARGET) \ + AR_FOR_TARGET=$(AR_FOR_TARGET) \ + AS_FOR_TARGET=$(AS_FOR_TARGET) \ + LD_FOR_TARGET=$(LD_FOR_TARGET) \ + NM_FOR_TARGET=$(NM_FOR_TARGET) \ + OBJDUMP_FOR_TARGET=$(OBJDUMP_FOR_TARGET) \ + OBJCOPY_FOR_TARGET=$(OBJCOPY_FOR_TARGET) \ + RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET) \ + STRIP_FOR_TARGET=$(STRIP_FOR_TARGET) \ + ELFEDIT_FOR_TARGET=$(ELFEDIT_FOR_TARGET) \ + READELF_FOR_TARGET=$(READELF_FOR_TARGET) \ + PROFILING_CFLAGS="$(PROFILING_CFLAGS)" \ + PROFILING_LDFLAGS="$(PROFILING_LDFLAGS)" -C usr libs + bootstrap: $Q$(MAKE) ARCH=$(ARCH) PREFIX=$(prefix) CFLAGS="" LDFLAGS="" -C usr bootstrap @@ -189,7 +217,7 @@ install_libhermit: install: install_libhermit $Q$(MAKE) PREFIX=$(prefix) -C usr install - $Q$(INSTALL_PROGRAM) tools/proxy $(prefix)/bin + $Q$(MAKE) PREFIX=$(prefix) -C tools install clean: $Q$(RM) $(NAME) $(NAME).sym $(NAME).bin *~ @@ -245,6 +273,6 @@ include/hermit/config.inc: include/hermit/config.h @echo [GCC-ASM] $@ $Q$(CC_FOR_TARGET) $(CFLAGS) -c -o $@ $< -.PHONY: default all clean qemu gdb usr test toolchain tools examples +.PHONY: default all clean qemu gdb usr test toolchain tools examples libs include $(addsuffix /Makefile,$(SUBDIRS)) diff --git a/configure b/configure index f1dc7a989..ecb4f5a1f 100755 --- a/configure +++ b/configure @@ -619,6 +619,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -694,6 +695,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -946,6 +948,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1083,7 +1094,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1236,6 +1247,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2845,7 +2857,7 @@ $as_echo "#define DEFAULT_STACK_SIZE 262144" >>confdefs.h fi -ac_config_files="$ac_config_files Makefile" +ac_config_files="$ac_config_files Makefile tools/Makefile usr/ircce/Makefile usr/xray/Makefile usr/libomp/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -3540,6 +3552,10 @@ do case $ac_config_target in "include/hermit/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/hermit/config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "usr/ircce/Makefile") CONFIG_FILES="$CONFIG_FILES usr/ircce/Makefile" ;; + "usr/xray/Makefile") CONFIG_FILES="$CONFIG_FILES usr/xray/Makefile" ;; + "usr/libomp/Makefile") CONFIG_FILES="$CONFIG_FILES usr/libomp/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/configure.ac b/configure.ac index 6b0ae9e16..0034a434e 100644 --- a/configure.ac +++ b/configure.ac @@ -73,5 +73,5 @@ else AC_DEFINE(DEFAULT_STACK_SIZE, 262144, Define the default stack size) fi -AC_CONFIG_FILES(Makefile) +AC_CONFIG_FILES(Makefile tools/Makefile usr/ircce/Makefile usr/xray/Makefile usr/libomp/Makefile) AC_OUTPUT diff --git a/debian/rules b/debian/rules index 32933b96f..9f0e5f692 100755 --- a/debian/rules +++ b/debian/rules @@ -3,41 +3,34 @@ # output every command that modifies files on the build system. #export DH_VERBOSE = 1 - # see FEATURE AREAS in dpkg-buildflags(1) #export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_BUILD_OPTS = nocheck -# see ENVIRONMENT in dpkg-buildflags(1) -# package maintainers to append CFLAGS -#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic -# package maintainers to append LDFLAGS -#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed - - %: - dh $@ #--with autotools_dev + dh $@ #--parallel - -# dh_make generated override targets -# This is example for Cmake (See https://bugs.debian.org/641051 ) override_dh_auto_configure: - dh_auto_configure -- --prefix=/opt/hermit + ./configure --prefix=`pwd`/debian/libhermit/opt/hermit + +override_dh_auto_build: + # this target is somehow not executed by dh_auto_build and thus the build fails + make arch/x86/kernel/boot.h + + dh_auto_build + make libs override_dh_auto_test: @echo "tests are disabled" override_dh_auto_install: - mkdir -p debian/libhermit/opt/hermit/x86_64-hermit/lib - mkdir -p debian/libhermit/opt/hermit/x86_64-hermit/include - mkdir -p debian/libhermit/opt/hermit/x86_64-hermit/bin - /usr/bin/install -c -m 644 libhermit.a debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/ircce/libircce.a debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/ircce/*.h debian/libhermit/opt/hermit/x86_64-hermit/include - #/usr/bin/install -c -m 644 usr/ircce/libxray.a debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/ircce/libxray.spec debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/ircce/libxray.h debian/libhermit/opt/hermit/x86_64-hermit/include - #/usr/bin/install -c -m 644 usr/libomp/libiomp.h debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/libomp/libgomp.spec debian/libhermit/opt/hermit/x86_64-hermit/lib - #/usr/bin/install -c -m 644 usr/libomp/src/omp.h debian/libhermit/opt/hermit/x86_64-hermit/include - /usr/bin/install -c tools/proxy debian/libhermit/opt/hermit/bin + #make install_libhermit + make install + + # delete unneded files that would cause conflicts + rm -rf `-pwd`/debian/libhermit/opt/hermit/share/info/dir + +override_dh_strip: + # stripping will incorrectly use system tools for stripping, generating + # wrong binary format, i.e. not for HermitCore + @echo "No stripping" diff --git a/tools/Makefile b/tools/Makefile.in similarity index 65% rename from tools/Makefile rename to tools/Makefile.in index f12c85ecb..14d3fe0cc 100644 --- a/tools/Makefile +++ b/tools/Makefile.in @@ -4,6 +4,12 @@ CP = cp CFLAGS = -O2 -Wall -std=gnu99 $(ARCH_OPT) PROXYFILES = proxy init.sh $(shell find ../usr/tests ../usr/benchmarks ../usr/openmpbench -type f -executable) +prefix = @prefix@ +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ + # Prettify output V = 0 ifeq ($V,0) @@ -26,6 +32,12 @@ clean: @echo Cleaning tools $Q$(RM) -rf *.o *~ *.bin *.obj +install: proxy + @echo Install tools + $Q$(INSTALL_PROGRAM) -d $(prefix)/bin + $Q$(INSTALL_PROGRAM) proxy $(prefix)/bin + $Q$(INSTALL_DATA) ../arch/x86/loader/ldhermit.elf $(prefix)/bin + veryclean: clean depend: diff --git a/tools/proxy.c b/tools/proxy.c index aeaa618d9..31eec3528 100644 --- a/tools/proxy.c +++ b/tools/proxy.c @@ -307,7 +307,7 @@ static int init_qemu(char *path) exit(1); } str = strstr(loader_path, "proxy"); - strncpy(str, "../arch/x86/loader/ldhermit.elf", MAX_PATH-strlen(loader_path)+5); + strncpy(str, "ldhermit.elf", MAX_PATH-strlen(loader_path)+5); str = getenv("HERMIT_APP_PORT"); if (str) diff --git a/usr/ircce/Makefile b/usr/ircce/Makefile.in similarity index 53% rename from usr/ircce/Makefile rename to usr/ircce/Makefile.in index 94abecf44..321433e84 100644 --- a/usr/ircce/Makefile +++ b/usr/ircce/Makefile.in @@ -6,6 +6,12 @@ C_source = $(wildcard *.c) NAME = libircce.a OBJS = $(C_source:.c=.o) +prefix = @prefix@ +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ + # # Prettify output V = 0 @@ -27,8 +33,13 @@ $(NAME): $(OBJS) $Q$(AR_FOR_TARGET) $(ARFLAGS_FOR_TARGET) $@ $(OBJS) install: - $Q$(CP) $(NAME) $(PREFIX)/$(CROSSPREFIX)/lib - $Q$(CP) *.h $(PREFIX)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) $(NAME) $(prefix)/$(CROSSPREFIX)/lib + $Q$(INSTALL_DATA) iRCCE.h $(prefix)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) iRCCE_lib.h $(prefix)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) RCCE_debug.h $(prefix)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) RCCE.h $(prefix)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) RCCE_lib.h $(prefix)/$(CROSSPREFIX)/include + $Q$(INSTALL_DATA) rte_memcpy.h $(prefix)/$(CROSSPREFIX)/include clean: @echo Cleaning examples diff --git a/usr/libomp b/usr/libomp index b686c65c3..e7ea3a270 160000 --- a/usr/libomp +++ b/usr/libomp @@ -1 +1 @@ -Subproject commit b686c65c3234365fd4c610be74ece5c3a5195658 +Subproject commit e7ea3a270fc09f771596c02869344a362c8c5439 diff --git a/usr/xray/Makefile b/usr/xray/Makefile.in similarity index 60% rename from usr/xray/Makefile rename to usr/xray/Makefile.in index 4e4bc0997..de709f34a 100644 --- a/usr/xray/Makefile +++ b/usr/xray/Makefile.in @@ -11,14 +11,19 @@ CFLAGS += ${CFLAGS_FOR_TARGET} OBJS = xray.o stringpool.o hashtable.o symtable.o demangle.o parsesymbols.o report.o +prefix = @prefix@ +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ $(NAME): $(OBJS) $(AR_FOR_TARGET) rsv $@ $(OBJS) install: $(NAME) - $(CP) $(NAME) $(PREFIX)/$(CROSSPREFIX)/lib - $(CP) libxray.spec $(PREFIX)/$(CROSSPREFIX)/lib - $(CP) xray.h $(PREFIX)/$(CROSSPREFIX)/include + $(INSTALL_DATA) $(NAME) $(prefix)/$(CROSSPREFIX)/lib + $(INSTALL_DATA) libxray.spec $(prefix)/$(CROSSPREFIX)/lib + $(INSTALL_DATA) xray.h $(prefix)/$(CROSSPREFIX)/include %.o: %.c @echo [CC] $@