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",