Generate C code in OBJDIR

This should allow merging in the project without breaking "make dist"
after "make distclean".

This currently requires GCC though (for "-include").
This commit is contained in:
Pierre Pronchery 2018-09-17 00:59:20 +02:00
parent c101f525d0
commit f42e325785
8 changed files with 26 additions and 8 deletions

3
src/kernel/platform.c Normal file
View File

@ -0,0 +1,3 @@
/* $Id$ */
/* Copyright (c) 2018 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS uKernel */

View File

@ -30,7 +30,6 @@
PLATFORMCONF="../arch/$ARCH/platform.conf"
[ -f "$PLATFORMCONF" ] || PLATFORMCONF="platform.conf"
PROGNAME="platform.sh"
TARGET="platform.c"
#functions
@ -181,4 +180,4 @@ if [ $# -ne 1 ]; then
exit $?
fi
#XXX breaks OBJDIR
_platform < "$PLATFORMCONF" > "$TARGET"
_platform < "$PLATFORMCONF" > "$1"

View File

@ -1,4 +1,4 @@
targets=crtbegin.o,crtend.o,crti.o,crtn.o,platform.c,uKernel.bin
targets=crtbegin.o,crtend.o,crti.o,crtn.o,../arch/$(ARCH)/platform.c,uKernel.bin
cppflags_force=-nostdinc -isystem ../../include -I..
as=$(CC)
asflags_force=$(CFLAGSF) $(CFLAGS) -c
@ -24,10 +24,10 @@ sources=crti.S
type=object
sources=crtn.S
[platform.c]
[../arch/$(ARCH)/platform.c]
type=script
script=./platform.sh
depends=../arch/amd64/platform.conf,../arch/i386/platform.conf,platform.sh
depends=../arch/$(ARCH)/platform.conf,platform.sh
[uKernel.bin]
type=binary
@ -48,5 +48,9 @@ depends=../common/crtn.S,../arch/amd64/crtn.S,../arch/i386/crtn.S
[multiboot.c]
depends=../loader/multiboot.c,../drivers/boot/multiboot.h
[platform.c]
cppflags=-include $(OBJDIR)../arch/$(ARCH)/platform.c
depends=$(OBJDIR)../arch/$(ARCH)/platform.c
[start.S]
depends=../arch/amd64/gdt.S,../arch/amd64/kernel.S,../arch/i386/gdt.S,../arch/i386/idt.S,../arch/i386/intr.S,../arch/i386/kernel.S

View File

@ -0,0 +1 @@
dist=Makefile,start.S

View File

@ -0,0 +1 @@
dist=Makefile,start.S

2
tools/arch/project.conf Normal file
View File

@ -0,0 +1,2 @@
subdirs=amd64,i386
dist=Makefile,start.S

3
tools/platform.c Normal file
View File

@ -0,0 +1,3 @@
/* $Id$ */
/* Copyright (c) 2018 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS uKernel */

View File

@ -1,11 +1,12 @@
targets=crtbegin.o,crtend.o,crti.o,crtn.o,platform.c,start.o,uKernel
subdirs=arch
targets=crtbegin.o,crtend.o,crti.o,crtn.o,arch/$(ARCH)/platform.c,start.o,uKernel
cppflags_force=-nostdinc -isystem ../include -I../src
cflags_force=`../tools/platform.sh -V NATIVE_CFLAGS -C "$$ARCH"`
cflags=-W -Wall -g -O2
as=$(CC)
asflags_force=$(CFLAGSF) $(CFLAGS) -c
ldflags_force=`../tools/platform.sh -V NATIVE_LDFLAGS -C "$$ARCH"`
dist=Makefile,arch/start.S,arch/amd64/start.S,arch/i386/start.S,platform.sh
dist=Makefile,platform.sh
#targets
[crtbegin.o]
@ -24,7 +25,7 @@ sources=crti.S
type=object
sources=crtn.S
[platform.c]
[arch/$(ARCH)/platform.c]
type=script
script=../src/kernel/platform.sh
depends=platform.conf,../src/kernel/platform.sh
@ -55,5 +56,9 @@ depends=../src/common/crtn.S,../src/arch/amd64/crtn.S,../src/arch/i386/crtn.S
[main.c]
depends=../src/kernel/main.c
[platform.c]
cppflags=-include $(OBJDIR)arch/$(ARCH)/platform.c
depends=$(OBJDIR)arch/$(ARCH)/platform.c
[start.S]
depends=arch/start.S,arch/amd64/start.S,arch/i386/start.S