Subversion Repositories HelenOS

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1801 → Rev 1802

/trunk/kernel/tools/config.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/trunk/kernel/kernel.config
7,29 → 7,15
@ "mips32" MIPS 32-bit
@ "ppc32" PowerPC 32-bit
@ "ppc64" PowerPC 64-bit
@ "sparc64" Sun UltraSPARC
@ "sparc64" Sun UltraSPARC 64-bit
@ "xen32" Xen 32-bit
! ARCH (choice)
 
# IA32 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ia32] IA32_COMPILER (choice)
% [ARCH=ia32] SAVEAS IA32_COMPILER COMPILER
 
# AMD64 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=amd64] AMD64_COMPILER (choice)
% [ARCH=amd64] SAVEAS AMD64_COMPILER COMPILER
 
# Compiler
@ "cross" Cross-compiler
@ "native" Native
! [(ARCH!=amd64)&(ARCH!=ia32)] OTHER_COMPILER (choice)
% [(ARCH!=amd64)&(ARCH!=ia32)] SAVEAS OTHER_COMPILER COMPILER
! COMPILER (choice)
 
 
# CPU type
@ "pentium4" Pentium 4
@ "pentium3" Pentium 3
36,21 → 22,24
@ "athlon-xp" Athlon XP
@ "athlon-mp" Athlon MP
@ "prescott" Prescott
! [ARCH=ia32|ARCH=xen32] IA32_CPU (choice)
! [ARCH=ia32|ARCH=xen32] MACHINE (choice)
 
# MIPS Machine type
# CPU type
@ "opteron" Opteron
! [ARCH=amd64] MACHINE (choice)
 
# Machine type
@ "msim" MSIM Simulator
@ "simics" Virtutech Simics simulator
@ "lgxemul" GXEmul Little Endian
@ "bgxemul" GXEmul Big Endian
@ "indy" SGI Indy
! [ARCH=mips32] MIPS_MACHINE (choice)
! [ARCH=mips32] MACHINE (choice)
 
# Framebuffer support
! [(ARCH=mips32&MIPS_MACHINE=lgxemul)|(ARCH=mips32&MIPS_MACHINE=bgxemul)|(ARCH=ia32)|(ARCH=amd64)|(ARCH=xen32)] CONFIG_FB (y/n)
! [(ARCH=mips32&MACHINE=lgxemul)|(ARCH=mips32&MACHINE=bgxemul)|(ARCH=ia32)|(ARCH=amd64)|(ARCH=xen32)] CONFIG_FB (y/n)
 
# Framebuffer width
@ "320"
@ "640"
@ "800"
@ "1024"
63,9 → 52,6
! [(ARCH=ia32|ARCH=amd64|ARCH=xen32)&CONFIG_FB=y] CONFIG_VESA_WIDTH (choice)
 
# Framebuffer height
@ "200"
@ "240"
@ "400"
@ "480"
@ "600"
@ "768"
84,8 → 70,6
@ "24"
! [(ARCH=ia32|ARCH=amd64|ARCH=xen32)&CONFIG_FB=y] CONFIG_VESA_BPP (choice)
 
 
 
# Support for SMP
! [ARCH=ia32|ARCH=amd64|ARCH=xen32] CONFIG_SMP (y/n)
 
96,7 → 80,7
! [(ARCH=ia32|ARCH=amd64|ARCH=xen32)&CONFIG_SMP=y] CONFIG_SIMICS_FIX (y/n)
 
# Lazy FPU context switching
! [(ARCH=mips32&MIPS_MACHINE!=msim&MIPS_MACHINE!=simics)|ARCH=amd64|ARCH=ia32|ARCH=ia64|ARCH=xen32] CONFIG_FPU_LAZY (y/n)
! [(ARCH=mips32&MACHINE!=msim&MACHINE!=simics)|ARCH=amd64|ARCH=ia32|ARCH=ia64|ARCH=xen32] CONFIG_FPU_LAZY (y/n)
 
# Power off on halt
! [ARCH=ppc32] CONFIG_POWEROFF (n/y)
116,7 → 100,7
! [CONFIG_DEBUG=y&(ARCH=amd64|ARCH=mips32|ARCH=ia32|ARCH=xen32)] CONFIG_DEBUG_ALLREGS (y/n)
 
# Use VHPT
! [ARCH=ia64] CONFIG_VHPT (y/n)
! [ARCH=ia64] CONFIG_VHPT (n/y)
 
## Run-time configuration directives
 
133,16 → 117,16
@ "synch/semaphore2" Sempahore test 2
@ [ARCH=ia32|ARCH=amd64|ARCH=ia64|ARCH=xen32] "fpu/fpu1" Intel fpu test 1
@ [ARCH=ia32|ARCH=amd64|ARCH=xen32] "fpu/sse1" Intel Sse test 1
@ [ARCH=mips32&MIPS_MACHINE!=msim&MIPS_MACHINE!=simics] "fpu/mips1" Mips FPU test 1
@ [ARCH=mips32&MACHINE!=msim&MACHINE!=simics] "fpu/mips1" MIPS FPU test 1
@ "print/print1" Printf test 1
@ "thread/thread1" Thread test 1
@ "mm/mapping1" Mapping test 1
@ "mm/falloc1" Frame Allocation test 1
@ "mm/falloc2" Frame Allocation test 2
@ "mm/slab1" SLAB test1 - No CPU-cache
@ "mm/slab1" SLAB test1 - No CPU cache
@ "mm/slab2" SLAB test2 - SMP CPU cache
@ "fault/fault1" Write to NULL (maybe page fault)
@ "sysinfo" Sysinfo fill and dump test
@ [ARCH=ia64] "mm/purge1" Itanium TLB purge test
@ [ARCH=mips32] "debug/mips1" Mips breakpoint-debug test
@ [ARCH=mips32] "debug/mips1" MIPS breakpoint-debug test
! CONFIG_TEST (choice)
/trunk/kernel/Makefile
26,23 → 26,11
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
## Kernel release
#
 
VERSION = 0
PATCHLEVEL = 2
SUBLEVEL = 0
EXTRAVERSION = 2
NAME = Daylight
ifdef EXTRAVERSION
RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION)
else
RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
endif
 
## Include configuration
#
 
-include ../version
-include Makefile.config
 
## Common compiler flags
49,7 → 37,7
#
 
DEFS = -D$(ARCH) -DARCH=\"$(ARCH)\" -DRELEASE=\"$(RELEASE)\" "-DNAME=\"$(NAME)\"" -DKERNEL
CFLAGS = -fno-builtin -fomit-frame-pointer -Wall -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -nostdlib -nostdinc -Igeneric/include/
CFLAGS = -fno-builtin -fomit-frame-pointer -Wall -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -nostdlib -nostdinc -Igeneric/include/
LFLAGS = -M
AFLAGS =
 
70,41 → 58,50
ifeq ($(CONFIG_DEBUG),y)
DEFS += -DCONFIG_DEBUG
endif
 
ifeq ($(CONFIG_DEBUG_SPINLOCK),y)
DEFS += -DCONFIG_DEBUG_SPINLOCK
endif
 
ifeq ($(CONFIG_DEBUG_AS_WATCHPOINT),y)
DEFS += -DCONFIG_DEBUG_AS_WATCHPOINT
endif
 
ifeq ($(CONFIG_FPU_LAZY),y)
DEFS += -DCONFIG_FPU_LAZY
endif
 
ifeq ($(CONFIG_DEBUG_ALLREGS),y)
DEFS += -DCONFIG_DEBUG_ALLREGS
endif
 
ifeq ($(CONFIG_VHPT),y)
DEFS += -DCONFIG_VHPT
endif
 
ifeq ($(CONFIG_POWEROFF),y)
DEFS += -DCONFIG_POWEROFF
endif
 
ifeq ($(CONFIG_FB),y)
ifeq ($(ARCH),ia32)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
ifeq ($(ARCH),ia32)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
endif
ifeq ($(ARCH),amd64)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
endif
ifeq ($(ARCH),xen32)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
endif
endif
ifeq ($(ARCH),amd64)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
endif
ifeq ($(ARCH),xen32)
DEFS += -DCONFIG_VESA_WIDTH=$(CONFIG_VESA_WIDTH)
DEFS += -DCONFIG_VESA_HEIGHT=$(CONFIG_VESA_HEIGHT)
DEFS += -DCONFIG_VESA_BPP=$(CONFIG_VESA_BPP)
endif
endif
 
## Toolchain configuration
#
204,12 → 201,7
.PHONY: all build config distclean clean archlinks depend disasm
 
all:
tools/config.py default $(NARCH)
ifdef NARCH
ifneq ($(ARCH), $(NARCH))
$(MAKE) -C . clean
endif
endif
../tools/config.py kernel.config default $(ARCH) $(COMPILER) $(CONFIG_DEBUG) $(MACHINE)
$(MAKE) -C . build
 
build: kernel.bin disasm
216,7 → 208,7
 
config:
-rm Makefile.depend
tools/config.py
tools/config.py kernel.config
 
-include Makefile.depend
 
226,9 → 218,9
clean:
-rm -f kernel.bin kernel.raw kernel.map kernel.map.pre kernel.objdump kernel.disasm generic/src/debug/real_map.bin Makefile.depend* generic/include/arch generic/include/genarch arch/$(ARCH)/_link.ld
find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \;
for arch in arch/*; do \
[ -e $$arch/_link.ld ] && rm $$arch/_link.ld 2>/dev/null;\
done;exit 0
for arch in arch/* ; do \
[ -e $$arch/_link.ld ] && rm $$arch/_link.ld 2>/dev/null ; \
done ; exit 0
 
archlinks:
ln -sfn ../../arch/$(ARCH)/include/ generic/include/arch
/trunk/kernel/arch/sparc64/Makefile.inc
35,9 → 35,6
TARGET = sparc64-linux-gnu
TOOLCHAIN_DIR = /usr/local/sparc64/bin
 
## Make some default assumptions
#
 
CFLAGS += -mcpu=ultrasparc -m64
LFLAGS += -no-check-sections -N
 
/trunk/kernel/arch/ia64/Makefile.inc
35,9 → 35,6
TARGET = ia64-pc-linux-gnu
TOOLCHAIN_DIR = /usr/local/ia64/bin
 
## Make some default assumptions
#
 
INIT0_ADDRESS = 0xe000000000400000
INIT0_SIZE = 0x100000
 
/trunk/kernel/arch/ppc32/Makefile.inc
35,9 → 35,6
TARGET = ppc-linux-gnu
TOOLCHAIN_DIR = /usr/local/ppc/bin
 
## Make some default assumptions
#
 
CFLAGS += -mcpu=powerpc -msoft-float -m32
AFLAGS += -a32
LFLAGS += -no-check-sections -N
/trunk/kernel/arch/amd64/Makefile.inc
35,20 → 35,13
TARGET = amd64-linux-gnu
TOOLCHAIN_DIR = /usr/local/amd64/bin
 
## Make some default assumptions
#
 
ifndef CPU
CPU = opteron
endif
 
CFLAGS += -fno-unwind-tables -m64 -mcmodel=kernel -mno-red-zone
DEFS += -D_CPU=${CPU} -D__64_BITS__
DEFS += -DMACHINE=$(MACHINE) -D__64_BITS__
 
## Accepted CPUs
#
 
ifeq ($(CPU),opteron)
ifeq ($(MACHINE),opteron)
CFLAGS += -march=opteron
DEFS += -DFENCES=p4
endif
/trunk/kernel/arch/ppc64/Makefile.inc
35,9 → 35,6
TARGET = ppc64-linux-gnu
TOOLCHAIN_DIR = /usr/local/ppc64/bin
 
## Make some default assumptions
#
 
CFLAGS += -mcpu=powerpc64 -msoft-float -m64
AFLAGS += -a64
LFLAGS += -no-check-sections -N
/trunk/kernel/arch/mips32/Makefile.inc
33,13 → 33,6
TARGET = mipsel-linux-gnu
TOOLCHAIN_DIR = /usr/local/mipsel/bin
 
## Make some default assumptions
#
 
ifndef MIPS_MACHINE
MIPS_MACHINE = msim
endif
 
KERNEL_LOAD_ADDRESS = 0x80100000
INIT_ADDRESS = 0x81000000
INIT_SIZE = 262144
46,7 → 39,7
 
CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss
 
DEFS += -D__32_BITS__ -DMACHINE=${MIPS_MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE}
DEFS += -D__32_BITS__ -DMACHINE=$(MACHINE) -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS} -DINIT_ADDRESS=${INIT_ADDRESS} -DINIT_SIZE=${INIT_SIZE}
 
## Compile with hierarchical page tables support.
#
63,7 → 56,7
## Accepted MACHINEs
#
 
ifeq ($(MIPS_MACHINE),indy)
ifeq ($(MACHINE),indy)
# GCC 4.0.1 compiled for mipsEL has problems compiling in
# BigEndian mode with the swl/swr/lwl/lwr instructions.
# We have to compile it with mips-sgi-irix5 to get it right.
77,12 → 70,12
INIT_ADDRESS = 0
INIT_SIZE = 0
endif
ifeq ($(MIPS_MACHINE),lgxemul)
ifeq ($(MACHINE),lgxemul)
BFD_NAME = elf32-tradlittlemips
BFD = binary
CFLAGS += -DFB_BIG_ENDIAN -DARCH_HAS_FPU -mips3
endif
ifeq ($(MIPS_MACHINE),bgxemul)
ifeq ($(MACHINE),bgxemul)
BFD_NAME = elf32-bigmips
BFD = ecoff-bigmips
TARGET = mips-sgi-irix5
90,7 → 83,7
CFLAGS += -EB -DBIG_ENDIAN -DARCH_HAS_FPU -mips3
INIT_ADDRESS = 0x81800000
endif
ifeq ($(MIPS_MACHINE),simics)
ifeq ($(MACHINE),simics)
# SIMICS 4kc emulation is broken, although for instructions
# that do not bother us
99,7 → 92,7
CFLAGS += -mhard-float -mips3 -DTLBCNT=16
TLBCNT = 16
endif
ifeq ($(MIPS_MACHINE),msim)
ifeq ($(MACHINE),msim)
BFD_NAME = elf32-tradlittlemips
BFD = binary
CFLAGS += -mhard-float -mips3
/trunk/kernel/arch/ia32/Makefile.inc
35,39 → 35,32
TARGET = i686-pc-linux-gnu
TOOLCHAIN_DIR = /usr/local/i686/bin
 
## Make some default assumptions
#
DEFS += -DMACHINE=$(MACHINE) -D__32_BITS__
 
ifndef IA32_CPU
IA32_CPU = pentium4
endif
 
DEFS += -D_CPU=${IA32_CPU} -D__32_BITS__
 
## Accepted CPUs
#
 
ifeq ($(IA32_CPU),athlon-xp)
ifeq ($(MACHINE),athlon-xp)
CFLAGS += -march=athlon-xp -mmmx -msse -m3dnow
DEFS += -DCONFIG_FENCES_P3
CONFIG_SMP = n
CONFIG_HT = n
endif
ifeq ($(IA32_CPU),athlon-mp)
ifeq ($(MACHINE),athlon-mp)
CFLAGS += -march=athlon-mp -mmmx -msse -m3dnow
DEFS += -DCONFIG_FENCES_P3
CONFIG_HT = n
endif
ifeq ($(IA32_CPU),pentium3)
ifeq ($(MACHINE),pentium3)
CFLAGS += -march=pentium3 -mmmx -msse
DEFS += -DCONFIG_FENCES_P3
CONFIG_HT = n
endif
ifeq ($(IA32_CPU),prescott)
ifeq ($(MACHINE),prescott)
CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
DEFS += -DCONFIG_FENCES_P4
endif
ifeq ($(IA32_CPU),pentium4)
ifeq ($(MACHINE),pentium4)
CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2
DEFS += -DCONFIG_FENCES_P4
endif
/trunk/uspace/tools/config.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/trunk/uspace/uspace.config
8,26 → 8,13
@ "mips32eb" MIPS 32-bit Big Endian
@ "ppc32" PowerPC 32-bit
@ "ppc64" PowerPC 64-bit
@ "sparc64" Sun UltraSPARC 64-bit
! ARCH (choice)
 
# IA32 Compiler
# Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ia32] IA32_COMPILER (choice)
% [ARCH=ia32] SAVEAS IA32_COMPILER COMPILER
! COMPILER (choice)
 
# PPC32 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ppc32] PPC32_COMPILER (choice)
% [ARCH=ppc32] SAVEAS PPC32_COMPILER COMPILER
 
# PPC64 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ppc64] PPC64_COMPILER (choice)
% [ARCH=ppc64] SAVEAS PPC64_COMPILER COMPILER
 
# MIPS FPU support
! [ARCH=mips32|ARCH=mips32eb] CONFIG_MIPS_FPU (n/y)
 
# General debuging and assert checking
! CONFIG_DEBUG (y/n)
/trunk/uspace/Makefile
29,6 → 29,7
## Include configuration
#
 
-include ../version
-include Makefile.config
 
DIRS = \
47,12 → 48,19
ifeq ($(ARCH), amd64)
DIRS += pci
endif
 
ifeq ($(ARCH), ia32)
DIRS += pci
endif
 
CFLAGS += -DCONFIG_MIPS_FPU
ifeq ($(ARCH), mips32)
CFLAGS += -DCONFIG_MIPS_FPU
endif
 
ifeq ($(ARCH), mips32eb)
CFLAGS += -DCONFIG_MIPS_FPU
endif
 
BUILDS := $(addsuffix .build,$(DIRS))
CLEANS := $(addsuffix .clean,$(DIRS))
 
59,16 → 67,11
.PHONY: all config build $(BUILDS) $(CLEANS) clean distclean
 
all:
tools/config.py default $(NARCH)
ifdef NARCH
ifneq ($(ARCH), $(NARCH))
$(MAKE) -C . clean
endif
endif
../tools/config.py uspace.config default $(ARCH) $(COMPILER) $(CONFIG_DEBUG)
$(MAKE) -C . build
 
config:
tools/config.py
../tools/config.py uspace.config
 
build: $(BUILDS)
 
/trunk/tools/config.py
0,0 → 1,507
#!/usr/bin/env python
"""
HelenOS configuration script
"""
import sys
import os
import re
import commands
 
INPUT = sys.argv[1]
OUTPUT = 'Makefile.config'
TMPOUTPUT = 'Makefile.config.tmp'
 
class DefaultDialog:
"Wrapper dialog that tries to return default values"
def __init__(self, dlg):
self.dlg = dlg
 
def set_title(self,text):
self.dlg.set_title(text)
def yesno(self, text, default=None):
if default is not None:
return default
return self.dlg.yesno(text, default)
def noyes(self, text, default=None):
if default is not None:
return default
return self.dlg.noyes(text, default)
def choice(self, text, choices, defopt=None):
if defopt is not None:
return choices[defopt][0]
return self.dlg.choice(text, choices, defopt)
 
class NoDialog:
def __init__(self):
self.printed = None
self.title = 'HelenOS Configuration'
 
def print_title(self):
if not self.printed:
sys.stdout.write("\n*** %s ***\n" % self.title)
self.printed = True
 
def set_title(self, text):
self.title = text
self.printed = False
def noyes(self, text, default=None):
if not default:
default = 'n'
return self.yesno(text, default)
def yesno(self, text, default=None):
self.print_title()
if default != 'n':
default = 'y'
while 1:
sys.stdout.write("%s (y/n)[%s]: " % (text,default))
inp = sys.stdin.readline()
if not inp:
raise EOFError
inp = inp.strip().lower()
if not inp:
return default
if inp == 'y':
return 'y'
elif inp == 'n':
return 'n'
 
def _print_choice(self, text, choices, defopt):
sys.stdout.write('%s:\n' % text)
for i,(text,descr) in enumerate(choices):
sys.stdout.write('\t%2d. %s\n' % (i, descr))
if defopt is not None:
sys.stdout.write('Enter choice number[%d]: ' % defopt)
else:
sys.stdout.write('Enter choice number: ')
 
def menu(self, text, choices, button, defopt=None):
self.title = 'Main menu'
menu = []
for key, descr in choices:
txt = key + (45-len(key))*' ' + ': ' + descr
menu.append((key, txt))
return self.choice(text, [button] + menu)
def choice(self, text, choices, defopt=None):
self.print_title()
while 1:
self._print_choice(text, choices, defopt)
inp = sys.stdin.readline()
if not inp:
raise EOFError
if not inp.strip():
if defopt is not None:
return choices[defopt][0]
continue
try:
number = int(inp.strip())
except ValueError:
continue
if number < 0 or number >= len(choices):
continue
return choices[number][0]
 
 
def eof_checker(fnc):
def wrapper(self, *args, **kw):
try:
return fnc(self, *args, **kw)
except EOFError:
return getattr(self.bckdialog,fnc.func_name)(*args, **kw)
return wrapper
 
class Dialog(NoDialog):
def __init__(self):
NoDialog.__init__(self)
self.dlgcmd = os.environ.get('DIALOG','dialog')
self.title = ''
self.backtitle = 'HelenOS Configuration'
if os.system('%s --print-maxsize >/dev/null 2>&1' % self.dlgcmd) != 0:
raise NotImplementedError
self.bckdialog = NoDialog()
 
def set_title(self,text):
self.title = text
self.bckdialog.set_title(text)
def calldlg(self,*args,**kw):
"Wrapper for calling 'dialog' program"
indesc, outdesc = os.pipe()
pid = os.fork()
if not pid:
os.close(2)
os.dup(outdesc)
os.close(indesc)
dlgargs = [self.dlgcmd,'--title',self.title,
'--backtitle', self.backtitle]
for key,val in kw.items():
dlgargs.append('--'+key)
dlgargs.append(val)
dlgargs += args
os.execlp(self.dlgcmd,*dlgargs)
 
os.close(outdesc)
try:
errout = os.fdopen(indesc,'r')
data = errout.read()
errout.close()
pid,status = os.wait()
except:
os.system('reset') # Reset terminal
raise
if not os.WIFEXITED(status):
os.system('reset') # Reset terminal
raise EOFError
status = os.WEXITSTATUS(status)
if status == 255:
raise EOFError
return status,data
def yesno(self, text, default=None):
if text[-1] not in ('?',':'):
text = text + ':'
width = '50'
height = '5'
if len(text) < 48:
text = ' '*int(((48-len(text))/2)) + text
else:
width = '0'
height = '0'
if default == 'n':
res,data = self.calldlg('--defaultno','--yesno',text,height,width)
else:
res,data = self.calldlg('--yesno',text,height,width)
 
if res == 0:
return 'y'
return 'n'
yesno = eof_checker(yesno)
 
def menu(self, text, choices, button, defopt=None):
self.title = 'Main menu'
text = text + ':'
width = '70'
height = str(8 + len(choices))
args = []
for key,val in choices:
args.append(key)
args.append(val)
 
kw = {}
if defopt:
kw['default-item'] = choices[defopt][0]
res,data = self.calldlg('--ok-label','Change',
'--extra-label',button[1],
'--extra-button',
'--menu',text,height,width,
str(len(choices)),*args,**kw)
if res == 3:
return button[0]
if res == 1: # Cancel
sys.exit(1)
elif res:
print data
raise EOFError
return data
menu = eof_checker(menu)
def choice(self, text, choices, defopt=None):
text = text + ':'
width = '50'
height = str(8 + len(choices))
args = []
for key,val in choices:
args.append(key)
args.append(val)
 
kw = {}
if defopt:
kw['default-item'] = choices[defopt][0]
res,data = self.calldlg('--nocancel','--menu',text,height,width,
str(len(choices)),*args, **kw)
if res:
print data
raise EOFError
return data
choice = eof_checker(choice)
def read_defaults(fname,defaults):
"Read saved values from last configuration run"
f = file(fname,'r')
for line in f:
res = re.match(r'^(?:#!# )?([^#]\w*)\s*=\s*(.*?)\s*$', line)
if res:
defaults[res.group(1)] = res.group(2)
f.close()
 
def check_condition(text, defaults, asked_names):
seen_vars = [ x[0] for x in asked_names ]
ctype = 'cnf'
if ')|' in text or '|(' in text:
ctype = 'dnf'
if ctype == 'cnf':
conds = text.split('&')
else:
conds = text.split('|')
 
for cond in conds:
if cond.startswith('(') and cond.endswith(')'):
cond = cond[1:-1]
inside = check_inside(cond, defaults, ctype, seen_vars)
if ctype == 'cnf' and not inside:
return False
if ctype == 'dnf' and inside:
return True
 
if ctype == 'cnf':
return True
return False
 
def check_inside(text, defaults, ctype, seen_vars):
"""
Check that the condition specified on input line is True
 
only CNF is supported
"""
if ctype == 'cnf':
conds = text.split('|')
else:
conds = text.split('&')
for cond in conds:
res = re.match(r'^(.*?)(!?=)(.*)$', cond)
if not res:
raise RuntimeError("Invalid condition: %s" % cond)
condname = res.group(1)
oper = res.group(2)
condval = res.group(3)
if condname not in seen_vars:
varval = ''
## raise RuntimeError("Variable %s not defined before being asked." %\
## condname)
elif not defaults.has_key(condname):
raise RuntimeError("Condition var %s does not exist: %s" % \
(condname,text))
else:
varval = defaults[condname]
if ctype == 'cnf':
if oper == '=' and condval == varval:
return True
if oper == '!=' and condval != varval:
return True
else:
if oper== '=' and condval != varval:
return False
if oper== '!=' and condval == varval:
return False
if ctype=='cnf':
return False
return True
 
def parse_config(input, output, dlg, defaults={}, askonly=None):
"Parse configuration file and create Makefile.config on the fly"
def ask_the_question(dialog):
"Ask question based on the type of variables to ask"
# This is quite a hack, this thingy is written just to
# have access to local variables..
if vartype == 'y/n':
return dialog.yesno(comment, default)
elif vartype == 'n/y':
return dialog.noyes(comment, default)
elif vartype == 'choice':
defopt = None
if default is not None:
for i,(key,val) in enumerate(choices):
if key == default:
defopt = i
break
return dialog.choice(comment, choices, defopt)
else:
raise RuntimeError("Bad method: %s" % vartype)
 
f = file(input, 'r')
outf = file(output, 'w')
 
outf.write('#########################################\n')
outf.write('## AUTO-GENERATED FILE, DO NOT EDIT!!! ##\n')
outf.write('#########################################\n\n')
 
asked_names = []
 
comment = ''
default = None
choices = []
for line in f:
if line.startswith('%'):
res = re.match(r'^%\s*(?:\[(.*?)\])?\s*(.*)$', line)
if not res:
raise RuntimeError('Invalid command: %s' % line)
if res.group(1):
if not check_condition(res.group(1), defaults,
asked_names):
continue
args = res.group(2).strip().split(' ')
cmd = args[0].lower()
args = args[1:]
if cmd == 'saveas':
outf.write('%s = %s\n' % (args[1],defaults[args[0]]))
elif cmd == 'shellcmd':
varname = args[0]
args = args[1:]
for i,arg in enumerate(args):
if arg.startswith('$'):
args[i] = defaults[arg[1:]]
data,status = commands.getstatusoutput(' '.join(args))
if status:
raise RuntimeError('Error running: %s' % ' '.join(args))
outf.write('%s = %s\n' % (varname,data.strip()))
continue
if line.startswith('!'):
# Ask a question
res = re.search(r'!\s*(?:\[(.*?)\])?\s*([^\s]+)\s*\((.*)\)\s*$', line)
if not res:
raise RuntimeError("Weird line: %s" % line)
varname = res.group(2)
vartype = res.group(3)
 
default = defaults.get(varname,None)
if res.group(1):
if not check_condition(res.group(1), defaults,
asked_names):
if default is not None:
outf.write('#!# %s = %s\n' % (varname, default))
# Clear cumulated values
comment = ''
default = None
choices = []
continue
asked_names.append((varname,comment))
 
if default is None or not askonly or askonly == varname:
default = ask_the_question(dlg)
else:
default = ask_the_question(DefaultDialog(dlg))
 
outf.write('%s = %s\n' % (varname, default))
# Remeber the selected value
defaults[varname] = default
# Clear cumulated values
comment = ''
default = None
choices = []
continue
if line.startswith('@'):
# Add new line into the 'choice array'
res = re.match(r'@\s*(?:\[(.*?)\])?\s*"(.*?)"\s*(.*)$', line)
if not res:
raise RuntimeError("Bad line: %s" % line)
if res.group(1):
if not check_condition(res.group(1),defaults,
asked_names):
continue
choices.append((res.group(2), res.group(3)))
continue
 
# All other things print to output file
outf.write(line)
if re.match(r'^#[^#]', line):
# Last comment before question will be displayed to the user
comment = line[1:].strip()
elif line.startswith('## '):
# Set title of the dialog window
dlg.set_title(line[2:].strip())
 
outf.write('\n')
outf.write('REVISION = %s\n' % commands.getoutput('svnversion . 2> /dev/null'))
outf.write('TIMESTAMP = %s\n' % commands.getoutput('date "+%Y-%m-%d %H:%M:%S"'))
outf.close()
f.close()
return asked_names
 
def main():
defaults = {}
try:
dlg = Dialog()
except NotImplementedError:
dlg = NoDialog()
 
if len(sys.argv) >= 3 and sys.argv[2]=='default':
defmode = True
else:
defmode = False
 
# Default run will update the configuration file
# with newest options
if os.path.exists(OUTPUT):
read_defaults(OUTPUT, defaults)
 
# Get ARCH from command line if specified
if len(sys.argv) >= 4:
defaults['ARCH'] = sys.argv[3]
# Get COMPILER from command line if specified
if len(sys.argv) >= 5:
defaults['COMPILER'] = sys.argv[4]
# Get CONFIG_DEBUG from command line if specified
if len(sys.argv) >= 6:
defaults['CONFIG_DEBUG'] = sys.argv[5]
# Get MACHINE/IMAGE from command line if specified
if len(sys.argv) >= 7:
defaults['MACHINE'] = sys.argv[6]
defaults['IMAGE'] = sys.argv[6]
 
# Dry run only with defaults
varnames = parse_config(INPUT, TMPOUTPUT, DefaultDialog(dlg), defaults)
# If not in default mode, present selection of all possibilities
if not defmode:
defopt = 0
while 1:
# varnames contains variable names that were in the
# last question set
choices = [ (x[1],defaults[x[0]]) for x in varnames ]
res = dlg.menu('Configuration',choices,('save','Save'),defopt)
if res == 'save':
parse_config(INPUT, TMPOUTPUT, DefaultDialog(dlg), defaults)
break
# transfer description back to varname
for i,(vname,descr) in enumerate(varnames):
if res == descr:
defopt = i
break
# Ask the user a simple question, produce output
# as if the user answered all the other questions
# with default answer
varnames = parse_config(INPUT, TMPOUTPUT, dlg, defaults,
askonly=varnames[i][0])
if os.path.exists(OUTPUT):
os.unlink(OUTPUT)
os.rename(TMPOUTPUT, OUTPUT)
if not defmode and dlg.yesno('Rebuild everything?') == 'y':
os.execlp('make','make','clean','build')
 
if __name__ == '__main__':
main()
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/trunk/HelenOS.config
0,0 → 1,24
## General configuration directives
 
# Platform
@ "amd64" AMD64/Intel EM64T (PC)
@ "ia32" Intel IA-32 (PC)
@ "ia64" Intel IA-64 (Ski)
@ "mips32msim" MIPS 32-bit (MSIM)
@ "mips32sim" MIPS 32-bit (Simics)
@ "mips32gbe" MIPS 32-bit (GXEmul big endian)
@ "mips32gle" MIPS 32-bit (GXEmul little endian)
@ "mips32sgi" MIPS 32-bit (Sgi Indy)
@ "ppc32" PowerPC 32-bit (iMac G4)
@ "ppc64" PowerPC 64-bit (iMac G5)
@ "sparc64" Sun UltraSPARC 64-bit
@ "xen32" Xen 32-bit (PC)
! PLATFORM (choice)
 
# Compiler
@ "cross" Cross-compiler
@ "native" Native
! COMPILER (choice)
 
# Debug build
! CONFIG_DEBUG (y/n)
/trunk/boot/tools/config.py
File deleted
Property changes:
Deleted: svn:executable
-*
\ No newline at end of property
/trunk/boot/boot.config
11,24 → 11,11
@ "xen32" Xen 32-bit
! ARCH (choice)
 
# PPC32 Compiler
# Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ppc32] PPC32_COMPILER (choice)
% [ARCH=ppc32] SAVEAS PPC32_COMPILER COMPILER
! COMPILER (choice)
 
# PPC64 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=ppc64] PPC64_COMPILER (choice)
% [ARCH=ppc64] SAVEAS PPC64_COMPILER COMPILER
 
# MIPS32 Compiler
@ "cross" Cross-compiler
@ "native" Native
! [ARCH=mips32] MIPS32_COMPILER (choice)
% [ARCH=mips32] SAVEAS MIPS32_COMPILER COMPILER
 
# Debug bootloader
! [ARCH=ppc32] CONFIG_DEBUG (n/y)
 
38,4 → 25,4
# Target image
@ "binary" Binary image (MSIM)
@ "ecoff" Ecoff image (GXEmul)
! [ARCH=mips32] CONFIG_IMAGE (choice)
! [ARCH=mips32] IMAGE (choice)
/trunk/boot/Makefile
29,9 → 29,10
## Include configuration
#
 
-include ../version
-include Makefile.config
 
## Common flags
## Paths
#
 
BASE = ..
38,17 → 39,6
KERNELDIR = $(BASE)/kernel
USPACEDIR = $(BASE)/uspace
 
## Setup arch configuration
#
 
-include arch/$(ARCH)/Makefile.inc
 
ifeq ($(ARCH),xen32)
UARCH = ia32
else
UARCH = $(ARCH)
endif
 
ifeq ($(CONFIG_DEBUG),y)
DEFS += -DCONFIG_DEBUG
endif
57,35 → 47,19
DEFS += -DCONFIG_BAT
endif
 
.PHONY: all build config distclean arch_distclean clean kernel uspace clean_kernel clean_uspace distclean_kernel distclean_uspace
.PHONY: all build config distclean clean generic_clean
 
all:
tools/config.py default
$(MAKE) -C . build $(ARCH)
../tools/config.py boot.config default $(ARCH) $(COMPILER) $(CONFIG_DEBUG) $(IMAGE)
$(MAKE) -C . build
 
-include arch/$(ARCH)/Makefile.inc
 
config:
tools/config.py
../tools/config.py boot.config
 
distclean: clean arch_distclean
distclean: clean
-rm Makefile.config
 
kernel:
$(MAKE) -C $(KERNELDIR) NARCH=$(ARCH)
 
uspace:
$(MAKE) -C $(USPACEDIR) NARCH=$(UARCH)
 
clean_kernel:
$(MAKE) -C $(KERNELDIR) clean ARCH=$(ARCH)
 
clean_uspace:
$(MAKE) -C $(USPACEDIR) clean ARCH=$(UARCH)
 
clean_boot_gen:
generic_clean:
-rm generic/*.o genarch/*.o
 
distclean_kernel:
$(MAKE) -C $(KERNELDIR) distclean ARCH=$(ARCH)
 
distclean_uspace:
$(MAKE) -C $(USPACEDIR) distclean ARCH=$(UARCH)
/trunk/boot/arch/xen32/Makefile.inc
26,27 → 26,30
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.iso
TASKS = \
$(USPACEDIR)/init/init \
$(USPACEDIR)/ns/ns \
$(USPACEDIR)/pci/pci \
$(USPACEDIR)/fb/fb \
$(USPACEDIR)/kbd/kbd \
$(USPACEDIR)/console/console \
$(USPACEDIR)/tetris/tetris \
$(USPACEDIR)/ipcc/ipcc \
$(USPACEDIR)/klog/klog
 
image.iso: kernel uspace
build: $(BASE)/image.iso
 
$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/grub/xen.gz $(KERNELDIR)/kernel.bin $(TASKS)
mkdir -p arch/$(ARCH)/iso/boot/grub
cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
cp arch/$(ARCH)/grub/xen.gz arch/$(ARCH)/iso/boot/
cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/init/init arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ns/ns arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/pci/pci arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/fb/fb arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/kbd/kbd arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/console/console arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/tetris/tetris arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ipcc/ipcc arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/klog/klog arch/$(ARCH)/iso/boot/
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o image.iso arch/$(ARCH)/iso/
for task in $(TASKS) ; do \
cp $$task arch/$(ARCH)/iso/boot/ ; \
done
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
 
clean: clean_kernel clean_uspace
clean:
-rm -fr arch/$(ARCH)/iso
-rm -f image.iso
 
arch_distclean: distclean_kernel distclean_uspace
-rm -f $(BASE)/image.iso
/trunk/boot/arch/sparc64/Makefile.inc
28,20 → 28,23
 
TMP=distroot
 
build: image.iso
build: $(BASE)/image.iso
 
image.iso: kernel
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(CONFIG_IMAGE)
$(BASE)/image.iso: depend arch/$(ARCH)/loader/image.boot
mkdir -p $(TMP)/boot
mkdir -p $(TMP)/HelenOS
cat arch/$(ARCH)/silo/silo.tar.gz | (cd $(TMP)/boot; tar xvfz -)
cp arch/$(ARCH)/silo/README arch/$(ARCH)/silo/COPYING arch/$(ARCH)/silo/silo.conf $(TMP)/boot
cp arch/$(ARCH)/loader/image.boot $(TMP)/HelenOS/image.boot
mkisofs -f -G $(TMP)/boot/isofs.b -B ... -r -o image.iso $(TMP)/
mkisofs -f -G $(TMP)/boot/isofs.b -B ... -r -o $(BASE)/image.iso $(TMP)/
 
clean: clean_boot_gen clean_kernel
make -C arch/$(ARCH)/loader clean
depend:
-rm arch/$(ARCH)/loader/image.boot
 
arch/$(ARCH)/loader/image.boot:
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
 
clean: generic_clean
make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
-rm -fr $(TMP)
-rm -f image.iso
 
arch_distclean: distclean_kernel
-rm -f $(BASE)/image.iso
/trunk/boot/arch/ia64/Makefile.inc
26,18 → 26,16
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
VMAXLMA_SRC=$(KERNELDIR)/contrib/arch/ia64/vmaxlma.c
VMAXLMA_SRC = tools/ia64/vmaxlma.c
 
build: kernel.bin
build: $(BASE)/kernel.bin
 
kernel.bin: kernel uspace vmaxlma
cp $(KERNELDIR)/kernel.bin .
./vmaxlma kernel.bin
$(BASE)/kernel.bin: $(KERNELDIR)/kernel.bin vmaxlma
cp $(KERNELDIR)/kernel.bin $(BASE)/kernel.bin
./vmaxlma $(BASE)/kernel.bin
 
vmaxlma: $(VMAXLMA_SRC)
gcc $(VMAXLMA_SRC) -o $@
$(CC) $(VMAXLMA_SRC) -o $@
 
clean: clean_kernel clean_uspace
-rm -f kernel.bin vmaxlma
 
arch_distclean: distclean_kernel distclean_uspace
clean:
-rm -f $(BASE)/kernel.bin vmaxlma
/trunk/boot/arch/ppc32/Makefile.inc
26,14 → 26,17
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.boot
build: $(BASE)/image.boot
 
image.boot: kernel uspace
$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
 
depend:
-rm arch/$(ARCH)/loader/image.boot
 
arch/$(ARCH)/loader/image.boot:
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
cp arch/$(ARCH)/loader/image.boot image.boot
 
clean: clean_boot_gen clean_kernel clean_uspace
make -C arch/$(ARCH)/loader clean KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
-rm -f image.boot
 
arch_distclean: distclean_kernel distclean_uspace
clean: generic_clean
make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) "DEFS=$(DEFS)"
-rm -f $(BASE)/image.boot
/trunk/boot/arch/amd64/Makefile.inc
26,26 → 26,29
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.iso
TASKS = \
$(USPACEDIR)/init/init \
$(USPACEDIR)/ns/ns \
$(USPACEDIR)/pci/pci \
$(USPACEDIR)/fb/fb \
$(USPACEDIR)/kbd/kbd \
$(USPACEDIR)/console/console \
$(USPACEDIR)/tetris/tetris \
$(USPACEDIR)/ipcc/ipcc \
$(USPACEDIR)/klog/klog
 
image.iso: kernel uspace
build: $(BASE)/image.iso
 
$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(TASKS)
mkdir -p arch/$(ARCH)/iso/boot/grub
cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/init/init arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ns/ns arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/pci/pci arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/fb/fb arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/kbd/kbd arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/console/console arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/tetris/tetris arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ipcc/ipcc arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/klog/klog arch/$(ARCH)/iso/boot/
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o image.iso arch/$(ARCH)/iso/
for task in $(TASKS) ; do \
cp $$task arch/$(ARCH)/iso/boot/ ; \
done
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
 
clean: clean_kernel clean_uspace
clean:
-rm -fr arch/$(ARCH)/iso
-rm -f image.iso
 
arch_distclean: distclean_kernel distclean_uspace
-rm -f $(BASE)/image.iso
/trunk/boot/arch/ppc64/Makefile.inc
26,14 → 26,17
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.boot
build: $(BASE)/image.boot
 
image.boot: kernel uspace
$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
 
depend:
-rm arch/$(ARCH)/loader/image.boot
 
arch/$(ARCH)/loader/image.boot:
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
cp arch/$(ARCH)/loader/image.boot image.boot
 
clean: clean_boot_gen clean_kernel clean_uspace
make -C arch/$(ARCH)/loader clean KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
-rm -f image.boot
 
arch_distclean: distclean_kernel distclean_uspace
clean: generic_clean
make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR)
-rm -f $(BASE)/image.boot
/trunk/boot/arch/mips32/Makefile.inc
26,14 → 26,17
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.boot
build: $(BASE)/image.boot
 
image.boot: kernel uspace
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(CONFIG_IMAGE)
cp arch/$(ARCH)/loader/image.boot image.boot
$(BASE)/image.boot: depend arch/$(ARCH)/loader/image.boot
cp arch/$(ARCH)/loader/image.boot $(BASE)/image.boot
 
clean: clean_boot_gen clean_kernel clean_uspace
make -C arch/$(ARCH)/loader clean
-rm -f image.boot
depend:
-rm arch/$(ARCH)/loader/image.boot
 
arch_distclean: distclean_kernel distclean_uspace
arch/$(ARCH)/loader/image.boot:
make -C arch/$(ARCH)/loader COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
 
clean:
make -C arch/$(ARCH)/loader clean COMPILER=$(COMPILER) KERNELDIR=../../../$(KERNELDIR) USPACEDIR=../../../$(USPACEDIR) IMAGE=$(IMAGE)
-rm -f $(BASE)/image.boot
/trunk/boot/arch/ia32/Makefile.inc
26,26 → 26,29
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
build: image.iso
TASKS = \
$(USPACEDIR)/init/init \
$(USPACEDIR)/ns/ns \
$(USPACEDIR)/pci/pci \
$(USPACEDIR)/fb/fb \
$(USPACEDIR)/kbd/kbd \
$(USPACEDIR)/console/console \
$(USPACEDIR)/tetris/tetris \
$(USPACEDIR)/ipcc/ipcc \
$(USPACEDIR)/klog/klog
 
image.iso: kernel uspace
build: $(BASE)/image.iso
 
$(BASE)/image.iso: arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/grub/menu.lst $(KERNELDIR)/kernel.bin $(TASKS)
mkdir -p arch/$(ARCH)/iso/boot/grub
cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/init/init arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ns/ns arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/pci/pci arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/fb/fb arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/kbd/kbd arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/console/console arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/tetris/tetris arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/ipcc/ipcc arch/$(ARCH)/iso/boot/
cp $(USPACEDIR)/klog/klog arch/$(ARCH)/iso/boot/
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o image.iso arch/$(ARCH)/iso/
for task in $(TASKS) ; do \
cp $$task arch/$(ARCH)/iso/boot/ ; \
done
mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
 
clean: clean_kernel clean_uspace
clean:
-rm -fr arch/$(ARCH)/iso
-rm -f image.iso
 
arch_distclean: distclean_kernel distclean_uspace
-rm -f $(BASE)/image.iso
/trunk/version
0,0 → 1,11
VERSION = 0
PATCHLEVEL = 2
SUBLEVEL = 0
EXTRAVERSION = 2
NAME = Daylight
 
ifdef EXTRAVERSION
RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION)
else
RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)
endif
/trunk/Makefile
0,0 → 1,152
#
# Copyright (C) 2006 Martin Decky
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# - The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
## Include configuration
#
 
-include Makefile.config
 
## Setup platform configuration
#
 
ifeq ($(PLATFORM),amd64)
KARCH = amd64
MACHINE = opteron
UARCH = amd64
BARCH = amd64
endif
 
ifeq ($(PLATFORM),ia32)
KARCH = ia32
UARCH = ia32
BARCH = ia32
endif
 
ifeq ($(PLATFORM),ia64)
KARCH = ia64
UARCH = ia64
BARCH = ia64
endif
 
ifeq ($(PLATFORM),mips32msim)
KARCH = mips32
MACHINE = msim
UARCH = mips32
BARCH = mips32
IMAGE = binary
endif
 
ifeq ($(PLATFORM),mips32sim)
KARCH = mips32
MACHINE = simics
UARCH = mips32
BARCH = mips32
IMAGE = ecoff
endif
 
ifeq ($(PLATFORM),mips32gbe)
KARCH = mips32
MACHINE = bgxemul
UARCH = mips32eb
BARCH = mips32
IMAGE = ecoff
endif
 
ifeq ($(PLATFORM),mips32gle)
KARCH = mips32
MACHINE = lgxemul
UARCH = mips32
BARCH = mips32
IMAGE = ecoff
endif
 
ifeq ($(PLATFORM),mips32sgi)
KARCH = mips32
MACHINE = indy
UARCH = mips32eb
BARCH = mips32
IMAGE = ecoff
endif
 
ifeq ($(PLATFORM),ppc32)
KARCH = ppc32
UARCH = ppc32
BARCH = ppc32
endif
 
ifeq ($(PLATFORM),ppc64)
KARCH = ppc64
UARCH = ppc64
BARCH = ppc64
endif
 
ifeq ($(PLATFORM),sparc64)
KARCH = sparc64
UARCH = sparc64
BARCH = sparc64
endif
 
ifeq ($(PLATFORM),xen32)
KARCH = xen32
UARCH = ia32
BARCH = xen32
endif
 
.PHONY: all build config distclean clean
 
all:
tools/config.py HelenOS.config default
$(MAKE) -C . build
 
build:
ifneq ($(MACHINE),)
$(MAKE) -C kernel ARCH=$(KARCH) COMPILER=$(COMPILER) CONFIG_DEBUG=$(CONFIG_DEBUG) MACHINE=$(MACHINE)
else
$(MAKE) -C kernel ARCH=$(KARCH) COMPILER=$(COMPILER) CONFIG_DEBUG=$(CONFIG_DEBUG)
endif
$(MAKE) -C uspace ARCH=$(UARCH) COMPILER=$(COMPILER) CONFIG_DEBUG=$(CONFIG_DEBUG)
ifneq ($(IMAGE),)
$(MAKE) -C boot ARCH=$(BARCH) COMPILER=$(COMPILER) CONFIG_DEBUG=$(CONFIG_DEBUG) IMAGE=$(IMAGE)
else
$(MAKE) -C boot ARCH=$(BARCH) COMPILER=$(COMPILER) CONFIG_DEBUG=$(CONFIG_DEBUG)
endif
 
config:
-rm Makefile.depend HelenOS.config
tools/config.py
 
distclean:
-rm Makefile.config
-$(MAKE) -C kernel distclean
-$(MAKE) -C uspace distclean
-$(MAKE) -C boot distclean
 
clean:
-$(MAKE) -C kernel clean
-$(MAKE) -C uspace clean
-$(MAKE) -C boot clean