meso: commit wip (thanks fincs) rewrite to support build targets
This commit is contained in:
@@ -1,26 +1,36 @@
|
||||
TARGETS := kernel.bin kernel_ldr.bin
|
||||
CLEAN_TARGETS := $(foreach target,$(TARGETS),$(target:.bin=)-clean)
|
||||
ATMOSPHERE_BUILD_CONFIGS :=
|
||||
all: release
|
||||
|
||||
SUBFOLDERS := $(MODULES)
|
||||
define ATMOSPHERE_ADD_TARGET
|
||||
|
||||
all: mesosphere.bin
|
||||
ATMOSPHERE_BUILD_CONFIGS += $(strip $1)
|
||||
|
||||
clean: $(CLEAN_TARGETS)
|
||||
@rm -f mesosphere.bin
|
||||
$(strip $1): mesosphere$(strip $2).bin
|
||||
|
||||
mesosphere.bin: $(TARGETS)
|
||||
@python build_mesosphere.py
|
||||
@echo "Built mesosphere.bin..."
|
||||
mesosphere$(strip $2).bin: kernel/kernel$(strip $2).bin kernel_ldr/kernel_ldr$(strip $2).bin
|
||||
@python build_mesosphere.py kernel/kernel$(strip $2).bin kernel_ldr/kernel_ldr$(strip $2).bin mesosphere$(strip $2).bin
|
||||
@echo "Built mesosphere$(strip $2).bin..."
|
||||
|
||||
$(TARGETS): check_libmeso
|
||||
$(MAKE) -C $(@:.bin=)
|
||||
@cp $(@:.bin=)/$(@) $(@)
|
||||
kernel/kernel$(strip $2).bin: check_libmeso$(strip $1)
|
||||
@$$(MAKE) -C kernel $(strip $1)
|
||||
|
||||
check_libmeso:
|
||||
@$(MAKE) --no-print-directory -C ../libraries/libmesosphere
|
||||
kernel_ldr/kernel_ldr$(strip $2).bin: check_libmeso$(strip $1)
|
||||
@$$(MAKE) -C kernel_ldr $(strip $1)
|
||||
|
||||
$(CLEAN_TARGETS):
|
||||
$(MAKE) -C $(@:-clean=) clean
|
||||
@rm -f $(@:-clean=).bin
|
||||
check_libmeso$(strip $1):
|
||||
@$$(MAKE) -C ../libraries/libmesosphere $(strip $1)
|
||||
|
||||
.PHONY: all clean $(CLEAN_TARGETS)
|
||||
$(strip $1)-clean:
|
||||
@$$(MAKE) -C kernel $(strip $1)-clean
|
||||
@$$(MAKE) -C kernel_ldr $(strip $1)-clean
|
||||
@rm -f mesosphere$(strip $2).bin
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, release, ,))
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, debug, _debug,))
|
||||
$(eval $(call ATMOSPHERE_ADD_TARGET, audit, _audit,))
|
||||
|
||||
clean: $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),$(config)-clean)
|
||||
|
||||
.PHONY: all clean $(ATMOSPHERE_BUILD_CONFIGS) $(foreach config,$(ATMOSPHERE_BUILD_CONFIGS),$(target)-clean)
|
||||
|
||||
@@ -11,12 +11,12 @@ def align_up(val, algn):
|
||||
|
||||
|
||||
def main(argc, argv):
|
||||
if argc != 1:
|
||||
print('Usage: %s' % argv[0])
|
||||
if argc != 4:
|
||||
print('Usage: %s kernel_ldr.bin kernel.bin output.bin' % argv[0])
|
||||
return 1
|
||||
with open('kernel_ldr/kernel_ldr.bin', 'rb') as f:
|
||||
with open(argv[1], 'rb') as f:
|
||||
kernel_ldr = f.read()
|
||||
with open('kernel/kernel.bin', 'rb') as f:
|
||||
with open(argv[2], 'rb') as f:
|
||||
kernel = f.read()
|
||||
kernel_metadata_offset = 4
|
||||
assert (kernel_metadata_offset <= len(kernel) - 0x40)
|
||||
@@ -37,7 +37,7 @@ def main(argc, argv):
|
||||
kernel_ldr_end = kernel_ldr_offset + len(kernel_ldr)
|
||||
mesosphere_end = align_up(kernel_ldr_end, 0x1000)
|
||||
|
||||
with open('mesosphere.bin', 'wb') as f:
|
||||
with open(argv[3], 'wb') as f:
|
||||
f.write(kernel[:kernel_metadata_offset + 4])
|
||||
f.write(pk('<QQI', embedded_ini_offset, kernel_ldr_offset, atmosphere_target_firmware(10, 1, 0)))
|
||||
f.write(kernel[kernel_metadata_offset + 0x18:])
|
||||
|
||||
Reference in New Issue
Block a user