[kaffe] CVS kaffe (alex): some infos about the DROPS port, configuration, building, etc.

Kaffe CVS cvs-commits at kaffe.org
Tue Dec 20 14:11:10 PST 2005


PatchSet 7026 
Date: 2005/12/20 21:54:25
Author: alex
Branch: HEAD
Tag: (none) 
Log:
some infos about the DROPS port, configuration, building, etc.

Members: 
	FAQ/FAQ.drops:INITIAL->1.1 

===================================================================
Checking out kaffe/FAQ/FAQ.drops
RCS:  /home/cvs/kaffe/kaffe/FAQ/FAQ.drops,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/FAQ/FAQ.drops	Tue Dec 20 22:11:10 2005
@@ -0,0 +1,150 @@
+Building kaffe on DROPS[1]
+==========================
+
+author: Alexander Boettcher <alex at kaffe.org>
+date: 20.12.2005
+
+Notes about the DROPS port
+--------------------------
+The DROPS port of Kaffe uses its own threading system (drops-l4threads),
+which requires the L4Env [2] threading packet. Additionally, it uses the
+semaphore implementation of L4Env for the KSem interface of Kaffe. Further,
+the DROPS Kaffe port requires the DietLibC port, which does not provide
+the full LibC functionality (state 2005). Therefore, you will find a lot of
+unimplemented functions in the syscall interface of Kaffe, because they are
+not enabled or supported in the DROPS port of the DietLibC.
+ 
+The DROPS port of Kaffe works fine in interpreter mode on x86. JIT is untested.
+
+Configuration/building 
+----------------------
+
+1. Download Kaffe and build a 'native' Kaffe for your operating system and
+   hardware. 
+
+2. Download DROPS and build it [1]. Follow the information provided at the
+   homepage of DROPS. Use Fiasco-UX [4] for first tests ! Fiasco-UX is a port
+   of the Fiasco [3] microkernel to the Linux system-call interface. If 
+   Kaffe runs with Fiasco-UX, it should also run with the Fiasco
+   kernel on real hardware. Kaffe uses the L4 Console for outputs (maybe
+   DoPE[6] in the future ?).
+
+   Required components for Kaffe on DROPS:
+   - Fiasco microkernel
+   - L4Env (L4Con, L4VFS [File support], Thread packet, Semaphore packet, etc.)
+   - DietLibC port (l4/pkg/dietlibc, l4/pkg/libc_support,
+                    l4/pkg/libc_backends_l4env).
+
+3. Cross compile Kaffe for DROPS.
+
+   Go to the l4/pkg directory of your DROPS installation. Create a directory
+   kaffe and call the template for creating a new DROPS packet :
+
+   l4/pkg       : mkdir kaffe
+   l4/pkg       : cd kaffe
+   l4/pkg/kaffe : ../../mk/tmpl/inst
+
+   Enter the server/src directory in l4/pkg/kaffe and use the provided Makefile
+   to crosscompile kaffe. You have to adapt the values of KAFFE_KAFFEH, KAFFE_SRC
+   in the Makefile by setting the right paths to the kaffeh binary of your native
+   Kaffe and of your source code directory of Kaffe.
+
+   Currently, the DietLibC port does not provide a getenv implementation.
+   Therefore, the workaround (implemented in kaffe/config/i386/drops/md.c)
+   getenv implementation looks for a file 'kaffepath.env', where
+   it expects the environment names and values. For example:
+
+   kaffepath.env:
+     BOOTCLASSPATH=/kaffe/rt.jar
+     KAFFELIBRARYPATH=.
+     KAFFECLASSPATH=/kaffe:/kaffe/example.jar
+
+   If Kaffe does not find the file, it uses the standard values from
+   kaffe/config/i386/drops/md.c .
+
+   Finally, in the DROPS directory l4/tool/run-ux you can find a script ('kaffe'),
+   that starts Fiasco-UX, Kaffe and all necessary services of DROPS.
+
+4. Feel free to post your extensions, patches, etc.
+   Maybe, you can and want help us to develop and support Kaffe and Kaffe
+   on DROPS! Any kind of help is welcome.
+
+   Thx.
+
+[1] Dresdner Real-Time Operating System (DROPS) homepage - http://wwwos.inf.tu-dresden.de/drops
+[2] L4 Environment - http://wwwos.inf.tu-dresden.de/l4env
+[3] Fiasco - http://wwwos.inf.tu-dresden.de/fiasco
+[4] Fiasco UX - http://wwwos.inf.tu-dresden.de/fiasco/ux
+[5] DOpE (a real-time window server) - http://wwwos.inf.tu-dresden.de/dope
+[6] Example Makefile
+
+---------------Makefile (l4/pkg/kaffe/server/src)-------
+PKGDIR	?= ../..
+L4DIR	?= $(PKGDIR)/../..
+
+TARGET   = kaffevm
+SYSTEMS  = x86-l4v2
+
+#INSTALL_TARGET =
+
+include $(L4DIR)/mk/prog.mk
+
+L4DIR_ABS        =$(shell cd $(L4DIR);pwd)
+
+#
+# Kaffe configure parameters
+# 
+# adapt KAFFE_KAFFEH, KAFFE_SRC to your environment !
+#
+KAFFE_KAFFEH	 = $(shell cd $(PKGDIR);pwd)/native/kaffe/kaffeh/kaffeh
+KAFFE_SRC        = $(PKGDIR)/contrib
+#
+#
+#
+
+KAFFE_L4_OPTION  = -DARCH_$(ARCH) \
+                   -DDROPS_SHARED_LIBRARIES
+
+KAFFE_CC        = $(CC_x86) -nostdinc -nostdlib -DL4API_l4v2 $(KAFFE_L4_OPTION) -I$(L4DIR_ABS)/include/$(ARCH)/$(L4API) -I$(L4DIR_ABS)/include/$(ARCH) -I$(L4DIR_ABS)/include -I$(L4DIR_ABS)/include/l4/gmp -I$(L4DIR_ABS)/include/dietlibc -I$(GCCDIR_x86)/include -I$(DROPS_STDDIR)/include/$(ARCH)/$(L4API) -I$(DROPS_STDDIR)/include/$(ARCH) -I$(DROPS_STDDIR)/include -I$(L4DIR_ABS)/include/dietlibc -DSIZE_MAX=4294967295U
+
+KAFFE_CXX       = $(KAFFE_CC)
+
+KAFFE_LDFLAGS   = -nostdlib -L$(L4DIR_ABS)/lib/$(ARCH)_$(CPU)/$(L4API) -L$(L4DIR_ABS)/lib/$(ARCH)_$(CPU) -Ttext=0x0154f000 -Wl,-gc-sections
+
+KAFFE_LIBS    = -T$(L4DIR_ABS)/lib/$(ARCH)_$(CPU)/main_stat.ld -lcrt0.o -lloader.s -ldiet_be_l4_start_stop -lc_be_io.o -lc_be_mmap -lc_be_mmap_util -lc_be_socket_io -lc_be_select -ldiet_c -lc_be_simple_mem -lc_be_mmap -lc_be_time -ll4util -lrtc -ll4env -lgcc -ldiet_be_simple_sleep -ll4vfs_select -ll4vfs_select_listener-server -ll4vfs_basic_name_server -ll4vfs_basic_io -ll4vfs_connection -ll4vfs_net_io -ll4vfs_name_server -ldiet_be_l4_start_stop -ll4vfs_common_io -lc_be_file-table
+
+kaffe_configure:
+	if [ ! -e ../build/config.ready ]; then \
+		cd .. \
+		&& mkdir -p build \
+		&& cd build \
+		&& KAFFEH=$(KAFFE_KAFFEH) \
+        	LD_PRELOAD=$(L4DIR_ABS)/tool/gendep/libgendep.so \
+	        LIBS="$(KAFFE_LIBS)" \
+        	LDFLAGS="$(KAFFE_LDFLAGS)" \
+	        CC="$(KAFFE_CC)" \
+        	CXX="$(KAFFE_CXX)" \
+	        $(KAFFE_SRC)/configure --build=i386-linux --host=i386-drops \
+                               --enable-pure-java-math --disable-sound --without-alsa --without-esd \
+                               --with-threads=drops-l4threads --with-engine=intrp \
+                               --disable-boehm-gc-configuration \
+                               --disable-nls --disable-gjdoc --disable-largefile \
+                               --disable-gtk-peer \
+		&& echo "ready" >config.ready; \
+	fi
+
+kaffevm: kaffe_configure
+	ln ../build/kaffe/kaffe/kaffe-bin kaffevm -sf
+	cd ../build \
+	&& make 
+	if [ ! -L ../build/libraries/javalib/rt.jar ]; then \
+		ln -s external/classpath/lib/glibj.zip ../build/libraries/javalib/rt.jar; \
+	fi
+
+clean::
+	rm build -rf
+
+cleanall::
+	rm build -rf
+
+.PHONY: kaffe_configure kaffevm




More information about the kaffe mailing list