The unified diff between revisions [50829f45..] and [38dfa2e6..] is displayed below. It can also be downloaded as a raw diff.

#
#
# delete "config/boards/qemu_x86.mk"
#
# delete "debian"
#
# delete "runtime_user"
#
# delete "runtime_user/GNUmakefile"
#
# rename "debian/patches"
#     to "patches"
#
# patch "GNUmakefile"
#  from [14f1ec653513305be713b2be6ebdc0d935c2d43f]
#    to [30e7ef03c9cb68409707cf3c269a03f39ed5fddc]
#
# patch "lovelace.gpr"
#  from [e88aa26e00de3c98253bed74791c49d7df875399]
#    to [64e769a98c380708eab9428cf04b834a881b4cda]
#
============================================================
--- GNUmakefile	14f1ec653513305be713b2be6ebdc0d935c2d43f
+++ GNUmakefile	30e7ef03c9cb68409707cf3c269a03f39ed5fddc
@@ -1,8 +1,8 @@ KERNEL_INCLUDES=
 KERNEL_INCLUDES=
+CPUS := $(shell getconf _NPROCESSORS_ONLN)
+RUNTIME_KERNEL_DIR=runtime_kernel
 LOVELACE_TOPDIR=$(shell pwd)
-CONFIG_FILES=$(wildcard config/*.mk)
-CLEAN=
-OBJ_DIR=$(LOVELACE_TOPDIR)/obj
+OBJ_DIR_32=$(LOVELACE_TOPDIR)/obj32
 LIBGCC2_INCLUDES=-I. -I../build/gcc -I../src/include -I../src/gcc
 LIBGCC2_FLAGS=-O2 -B. -m32 -fexceptions -fnon-call-exceptions
 LIBGCC2_DEFINES=-DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \
@@ -26,51 +26,35 @@ lovelace.stage1.memory.x86
 lovelace.stage1.idt \
 lovelace.stage1.memory.x86

-include $(CONFIG_FILES)
+ADACTL=config/boards/project_x86.adp

-default:
-	@echo "available targets :"
-	@echo "        - clean"
-	@echo "        - distclean"
-	@echo "        - list_boards"
-	@echo "        - config_qemu_x86"
-	@echo "        - check_env_variables"
-ifdef ADACTL
-	@echo "        - adactl"
-endif
+all:test_kernel.elf lovelace.elf

-check_env_variables:
-ifdef GNATSOURCES
-	@echo "OK GNATSOURCES=$(GNATSOURCES)"
-else
-	@echo "NOK GNATSOURCES,should point to gnat-gpl-2007-src.tgz";exit 1
-endif
-ifdef GCCSOURCES
-	@echo "OK GCCSOURCES=$(GCCSOURCES)"
-else
-	@echo "NOK GCCSOURCES,should point to gcc-4_1-branch-20070403-src.tar.gz";exit 1
-endif
+test_kernel.elf:$(OBJ_DIR_32)/kernel.o $(OBJ_DIR_32)/loader.o all_sources \
+$(OBJ_DIR_32)/lovelace-bootstrap.o
+	ld -T $(LOVELACE_TOPDIR)/src/boards/x86/linker.ld -m elf_i386 \
+	-o $@ $(OBJ_DIR_32)/kernel.o $(OBJ_DIR_32)/loader.o \
+	$(OBJ_DIR_32)/lovelace-stage1-console.o $(OBJ_DIR_32)/lovelace-outb.o

-variables:
-	@echo "LOVELACE_TOPDIR=$(LOVELACE_TOPDIR)"
-	@echo "CONFIG_FILES=$(CONFIG_FILES)"
-	@echo "GNATSOURCES=$(GNATSOURCES)"
-	@echo "GCCSOURCES=$(GCCSOURCES)"
+lovelace.elf:$(OBJ_DIR_32)/lovelace-bootstrap.o $(OBJ_DIR_32)/loader.o all_sources
+	ld -T $(LOVELACE_TOPDIR)/src/boards/x86/linker.ld -m elf_i386 \
+	-o $@ $(OBJ_DIR_32)/lovelace-bootstrap.o $(OBJ_DIR_32)/loader.o \
+	$(OBJ_DIR_32)/lovelace-stage1-console.o $(OBJ_DIR_32)/lovelace-outb.o \
+	$(OBJ_DIR_32)/last_chance_handler.o

-config_qemu_x86:
-	rm -f config/board.mk
-	ln -s boards/qemu_x86.mk config/board.mk
+all_sources:runtime_files
+	quilt push -a
+	touch all_sources

-list_boards:
-	@echo "qemu_x86"
-
-clean:board_clean
+clean:
 	rm -f `find . -name "*~"` setup_done
-	rm -Rf $(CLEAN) obj runtime_files obj_user
+	rm -Rf obj32 obj64 runtime_files obj_user
 	rm -f `find  -name "*.ali"`
 	rm -f `find  -name "*.adt"`
+	rm -f lovelace.elf test_kernel.elf all_sources
+	-quilt pop -a
+	rm -Rf .pc
 	make -C $(RUNTIME_KERNEL_DIR) clean
-	make -C $(RUNTIME_USER_DIR) clean

 distclean:clean
 	rm -Rf config/board.mk
@@ -115,7 +99,6 @@ runtime_files:

 runtime_files:
 	make -C $(RUNTIME_KERNEL_DIR) all
-	make -C $(RUNTIME_USER_DIR) all
 	touch runtime_files

 ifdef ADACTL
@@ -124,3 +107,19 @@ endif
 	do adactl -r -p $(ADACTL) -f config/adactl_rules $$i; \
 	done
 endif
+
+$(OBJ_DIR_32)/kernel.o:$(LOVELACE_TOPDIR)/src/boards/x86/kernel.adb \
+$(LOVELACE_TOPDIR)/src/boards/x86/kernel.ads $(OBJ_DIR_32) all_sources
+	gcc -m32 -c -nostdlib -nostdinc -I$(LOVELACE_TOPDIR)/runtime_kernel \
+	-I$(LOVELACE_TOPDIR)/src/core \
+	-o $@ $<
+
+$(OBJ_DIR_32)/loader.o:$(LOVELACE_TOPDIR)/src/boards/x86/loader.s $(OBJ_DIR_32)
+	gcc -m32 -c -o $@ $<
+
+.PHONY:$(OBJ_DIR_32)/lovelace-bootstrap.o
+$(OBJ_DIR_32)/lovelace-bootstrap.o:
+	gnatmake -j$(CPUS) -XOBJ_DIR=$(OBJ_DIR_32) -a -c -P lovelace.gpr
+
+$(OBJ_DIR_32) $(OBJ_DIR_64):
+	mkdir -p $@
\ No newline at end of file
============================================================
--- lovelace.gpr	e88aa26e00de3c98253bed74791c49d7df875399
+++ lovelace.gpr	64e769a98c380708eab9428cf04b834a881b4cda
@@ -1,17 +1,10 @@ project Lovelace is
 project Lovelace is

-   type Target is ("qemu_x86");
-
-   Current_Target : Target := EXTERNAL ("TARGET", "qemu_x86");
-
-   case Current_Target is
-      when "qemu_x86" =>
-         for Source_Dirs use ("src/core", "src/boards/x86",
-                              "src/boards/qemu_x86", "runtime_kernel");
-         for Object_Dir use "obj";
-         for main use ("lovelace-bootstrap.adb", "lovelace-main.adb");
-   end case;
-
+   for Source_Dirs use ("src/core", "src/boards/x86",
+                        "src/boards/qemu_x86", "runtime_kernel");
+   for Object_Dir use external("OBJ_DIR");
+   for main use ("lovelace-bootstrap.adb", "lovelace-main.adb");
+
    package Compiler is
       for Default_Switches ("ada") use
          ("-O2", "-gnaty", "-gnatf", "-gnatL", "-nostdinc", "-nostdlib",