mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
final.axf building from top-level build.py including containers
This commit is contained in:
46
build.py
Executable file
46
build.py
Executable file
@@ -0,0 +1,46 @@
|
||||
#! /usr/bin/env python2.6
|
||||
# -*- mode: python; coding: utf-8; -*-
|
||||
#
|
||||
# Top-level build script for Codezero
|
||||
#
|
||||
# Configures the Codezero environment, builds the kernel and userspace
|
||||
# libraries, builds and packs all containers and builds the final loader
|
||||
# image that contains all images.
|
||||
#
|
||||
import os, sys, shelve, shutil
|
||||
from os.path import join
|
||||
from config.projpaths import *
|
||||
from config.configuration import *
|
||||
from scripts.conts import containers
|
||||
from configure import *
|
||||
|
||||
# NOTE:
|
||||
# The scripts obtain all the configuration data (a set of class
|
||||
# instances) from the configuration shelve, so we don't pass
|
||||
# any arguments here.
|
||||
|
||||
def main():
|
||||
#
|
||||
# Configure
|
||||
#
|
||||
configure_kernel(join(CML2_CONFIG_SRCDIR, 'arm.cml'))
|
||||
|
||||
#
|
||||
# Build the kernel and libl4
|
||||
#
|
||||
os.chdir(PROJROOT)
|
||||
os.system("scons")
|
||||
|
||||
#
|
||||
# Build containers
|
||||
#
|
||||
containers.build_all_containers()
|
||||
|
||||
#
|
||||
# Build libs and loader
|
||||
#
|
||||
os.chdir(PROJROOT)
|
||||
os.system("scons -f SConstruct.loader")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,6 +1,6 @@
|
||||
#! /usr/bin/env python2.6
|
||||
# -*- mode: python; coding: utf-8; -*-
|
||||
import os, sys, shelve, shutil, re
|
||||
import os, sys, shelve, shutil, re, string
|
||||
from projpaths import *
|
||||
|
||||
class Container:
|
||||
@@ -108,6 +108,23 @@ class configuration:
|
||||
# Make sure elements in order for indexed accessing
|
||||
self.containers.sort()
|
||||
|
||||
|
||||
def containers_print(self, containers):
|
||||
for c in containers:
|
||||
print '\nContainer %d' % c.id
|
||||
print 'Container type: %s' % string.ljust(c.type, 10)
|
||||
print 'Container lma: %s' % string.ljust('%s - %s' % (c.lma_start, c.lma_end), 10)
|
||||
print 'Container vma: %s' % string.ljust('%s - %s' % (c.vma_start, c.vma_end), 10)
|
||||
|
||||
def config_print(self):
|
||||
print 'Configuration\n'
|
||||
print '-------------\n'
|
||||
print 'Arch: %s' % string.ljust('%s, %s' % (self.arch, self.subarch), 16)
|
||||
print 'Platform: %s' % string.ljust(self.platform, 16)
|
||||
print 'Symbols:\n %s' % self.all
|
||||
print 'Containers: %s' % self.ncontainers
|
||||
self.containers_print(self.containers)
|
||||
|
||||
def configuration_save(config):
|
||||
if not os.path.exists(CONFIG_SHELVE_DIR):
|
||||
os.mkdir(CONFIG_SHELVE_DIR)
|
||||
|
||||
@@ -44,6 +44,7 @@ def configure_kernel(cml_file):
|
||||
cml2_header_to_symbols(CML2_CONFIG_H, config)
|
||||
cml2_update_config_h(CONFIG_H, config)
|
||||
configuration_save(config)
|
||||
#config.config_print()
|
||||
|
||||
if __name__ == "__main__":
|
||||
configure_kernel(join(CML2_CONFIG_SRCDIR, "arm.cml"))
|
||||
|
||||
@@ -36,17 +36,19 @@ def build_container(container):
|
||||
"container of type: %s" % (container.type)
|
||||
Exit(1)
|
||||
|
||||
def main():
|
||||
def build_all_containers():
|
||||
container_images = []
|
||||
|
||||
config = configuration_retrieve()
|
||||
|
||||
# config.config_print()
|
||||
for container in config.containers:
|
||||
container_images.append(build_container(container))
|
||||
|
||||
all_cont_packer = AllContainerPacker(container_images, config.containers)
|
||||
|
||||
all_cont_packer.pack_all()
|
||||
return all_cont_packer.pack_all()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
build_all_containers()
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ class AllContainerPacker:
|
||||
file_body = ""
|
||||
img_i = 0
|
||||
for img in self.cont_images_in:
|
||||
print img
|
||||
file_body += containers_assembler_body % (img_i, img)
|
||||
img_i += 1
|
||||
|
||||
@@ -86,10 +85,8 @@ class AllContainerPacker:
|
||||
self.containers_lds_out,
|
||||
self.containers_S_out))
|
||||
|
||||
# oldwd = os.getcwd()
|
||||
# os.chdir(PROJROOT)
|
||||
# os.system("scons -f SConstruct.loader")
|
||||
# os.chdir(oldwd)
|
||||
# Return the final image to calling script
|
||||
return self.containers_elf_out
|
||||
|
||||
def clean(self):
|
||||
if os.path.exists(self.containers_elf_out):
|
||||
|
||||
@@ -44,9 +44,6 @@ assembler_symbol_definition = \
|
||||
'''
|
||||
|
||||
def generate_ksym_to_loader(target_path, source_path):
|
||||
print "Source: ", source_path
|
||||
print "Target: ", target_path
|
||||
|
||||
symbols = ['break_virtual']
|
||||
with open(target_path, 'w') as asm_file:
|
||||
asm_file.write(ksym_header % (target_path, source_path, sys.argv[0]))
|
||||
@@ -76,7 +73,6 @@ def generate_image_S(target_path, images):
|
||||
fbody = ''
|
||||
with open(target_path, 'w+') as images_S:
|
||||
for img in images:
|
||||
# print img[:-len(kern_fname)]
|
||||
print os.path.basename(img.path)
|
||||
if os.path.basename(img.path) == kern_fname:
|
||||
fbody += decl_sect_asm % ('.kernel', img)
|
||||
|
||||
Reference in New Issue
Block a user