From c450ddcb3d10374f5ac66a51c887954f0dacc8b1 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Sat, 10 Dec 2016 01:30:38 +0100 Subject: [PATCH] Disambiguate kernel-specific file names This patch removes possible ambiguities with respect to the naming of kernel-dependent binaries and libraries. It also removes the use of kernel-specific global side effects from the build system. The reach of kernel-specific peculiarities has thereby become limited to the actual users of the respective 'syscall-' libraries. Kernel-specific build artifacts are no longer generated at magic places within the build directory (like okl4's includes, or the L4 build directories of L4/Fiasco and Fiasco.OC, or the build directories of various kernels). Instead, such artifacts have been largely moved to the libcache. E.g., the former '/l4/' build directory for the L4 build system resides at '/var/libcache/syscall-foc/build/'. This way, the location is unique to the kernel. Note that various tools are still generated somewhat arbitrarily under '/tool/' as there is no proper formalism for building host tools yet. As the result of this work, it has become possible to use a joint Genode build directory that is usable with all kernels of a given hardware platform. E.g., on x86_32, one can now seamlessly switch between linux, nova, sel4, okl4, fiasco, foc, and pistachio without rebuilding any components except for core, the kernel, the dynamic linker, and the timer driver. At the current stage, such a build directory must still be created manually. A change of the 'create_builddir' tool will follow to make this feature easily available. This patch also simplifies various 'run/boot_dir' plugins by removing the option for an externally hosted kernel. This option remained unused for many years now. Issue #2190 --- repos/base-fiasco/doc/fiasco.txt | 31 +--- repos/base-fiasco/etc/fiasco.conf | 11 -- repos/base-fiasco/etc/specs.conf | 16 +- .../lib/import/import-syscall-fiasco.mk | 6 + .../base-fiasco/lib/mk/base-fiasco-common.mk | 2 +- repos/base-fiasco/lib/mk/base-fiasco.mk | 2 + .../lib/mk/{core.inc => core-fiasco.inc} | 2 +- repos/base-fiasco/lib/mk/kernel-fiasco.inc | 53 ++++++ .../{mk/l4_pkg.mk => lib/mk/l4_pkg.inc} | 38 ++--- repos/base-fiasco/lib/mk/l4v2_support.mk | 19 --- repos/base-fiasco/lib/mk/platform.inc | 56 ------- .../{x86/core.mk => x86_32/core-fiasco.mk} | 2 +- .../lib/mk/spec/x86_32/kernel-fiasco.mk | 3 + .../lib/mk/spec/x86_32/startup-fiasco.mk | 3 + .../platform.mk => x86_32/syscall-fiasco.mk} | 2 +- repos/base-fiasco/lib/mk/syscall-fiasco.inc | 38 +++++ repos/base-fiasco/mk/spec/fiasco.mk | 25 --- repos/base-fiasco/mk/spec/fiasco_x86.mk | 20 --- repos/base-fiasco/src/bootstrap/target.mk | 5 - repos/base-fiasco/src/core/fiasco/target.mk | 3 + repos/base-fiasco/src/kernel/fiasco/target.mk | 18 ++ .../base-fiasco/src/kernel/spec/x86/target.mk | 4 - repos/base-fiasco/src/kernel/target.inc | 22 --- repos/base-fiasco/src/sigma0/target.mk | 5 - repos/base-foc/doc/foc.txt | 20 --- repos/base-foc/etc/foc.conf | 20 --- repos/base-foc/etc/specs.conf | 9 +- .../base-foc/lib/import/import-syscall-foc.mk | 23 +++ repos/base-foc/lib/mk/base-foc-common.inc | 2 +- repos/base-foc/lib/mk/base-foc.inc | 3 +- .../lib/mk/{core.inc => core-foc.inc} | 4 +- repos/base-foc/lib/mk/kernel-foc.inc | 47 ++++++ .../{mk/l4_pkg.mk => lib/mk/l4_pkg.inc} | 31 ++-- repos/base-foc/lib/mk/l4re_support.mk | 14 -- repos/base-foc/lib/mk/platform.inc | 59 ------- .../lib/mk/spec/arm/{core.mk => core-foc.mk} | 2 +- repos/base-foc/lib/mk/spec/arm/platform.inc | 8 - repos/base-foc/lib/mk/spec/arm/startup-foc.mk | 3 + .../base-foc/lib/mk/spec/arm/syscall-foc.inc | 18 ++ repos/base-foc/lib/mk/spec/arm/syscall.mk | 5 - .../lib/mk/spec/arndale/kernel-foc.mk | 3 + .../base-foc/lib/mk/spec/arndale/platform.mk | 6 - .../lib/mk/spec/arndale/syscall-foc.mk | 3 + .../base-foc/lib/mk/spec/imx53/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/imx53/platform.mk | 6 - .../base-foc/lib/mk/spec/imx53/syscall-foc.mk | 3 + .../lib/mk/spec/odroid_x2/kernel-foc.mk | 3 + .../lib/mk/spec/odroid_x2/platform.mk | 6 - .../lib/mk/spec/odroid_x2/syscall-foc.mk | 3 + .../base-foc/lib/mk/spec/panda/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/panda/platform.mk | 6 - .../base-foc/lib/mk/spec/panda/syscall-foc.mk | 3 + .../base-foc/lib/mk/spec/pbxa9/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/pbxa9/platform.mk | 6 - .../base-foc/lib/mk/spec/pbxa9/syscall-foc.mk | 3 + repos/base-foc/lib/mk/spec/rpi/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/rpi/platform.mk | 6 - repos/base-foc/lib/mk/spec/rpi/syscall-foc.mk | 3 + repos/base-foc/lib/mk/spec/x86/core-foc.inc | 10 ++ repos/base-foc/lib/mk/spec/x86/core.inc | 11 -- .../base-foc/lib/mk/spec/x86/syscall-foc.inc | 12 ++ repos/base-foc/lib/mk/spec/x86/syscall.mk | 5 - repos/base-foc/lib/mk/spec/x86_32/core-foc.mk | 3 + repos/base-foc/lib/mk/spec/x86_32/core.mk | 4 - .../base-foc/lib/mk/spec/x86_32/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/x86_32/platform.mk | 13 -- .../lib/mk/spec/x86_32/startup-foc.mk | 3 + .../lib/mk/spec/x86_32/syscall-foc.mk | 9 + repos/base-foc/lib/mk/spec/x86_64/core-foc.mk | 3 + repos/base-foc/lib/mk/spec/x86_64/core.mk | 4 - .../base-foc/lib/mk/spec/x86_64/kernel-foc.mk | 3 + repos/base-foc/lib/mk/spec/x86_64/platform.mk | 13 -- .../lib/mk/spec/x86_64/startup-foc.mk | 3 + .../lib/mk/spec/x86_64/syscall-foc.mk | 7 + repos/base-foc/lib/mk/syscall-foc.inc | 59 +++++++ repos/base-foc/mk/spec/foc.mk | 46 ------ repos/base-foc/mk/spec/foc_arm.mk | 26 --- repos/base-foc/mk/spec/foc_imx53.mk | 2 +- repos/base-foc/mk/spec/foc_x86_32.mk | 19 +-- repos/base-foc/mk/spec/foc_x86_64.mk | 24 +-- repos/base-foc/src/bootstrap/target.mk | 5 - repos/base-foc/src/core/foc/target.mk | 3 + repos/base-foc/src/kernel/foc/target.mk | 2 + .../src/kernel/spec/arndale/target.mk | 5 - .../base-foc/src/kernel/spec/imx53/target.mk | 4 - .../src/kernel/spec/odroid_x2/target.mk | 5 - .../base-foc/src/kernel/spec/panda/target.mk | 5 - .../base-foc/src/kernel/spec/pbxa9/target.mk | 4 - repos/base-foc/src/kernel/spec/rpi/target.mk | 5 - .../base-foc/src/kernel/spec/x86_32/target.mk | 4 - .../base-foc/src/kernel/spec/x86_64/target.mk | 4 - repos/base-foc/src/kernel/target.inc | 21 --- repos/base-foc/src/sigma0/target.mk | 5 - .../base-foc/src/test/cap_integrity/target.mk | 2 +- repos/base-hw/lib/import/import-core.mk | 8 - repos/base-hw/lib/mk/base-hw.mk | 2 +- .../lib/mk/{core-muen.mk => core-hw-muen.mk} | 2 +- ...erf_counter.mk => core-hw-perf_counter.mk} | 0 ...re-trustzone.inc => core-hw-trustzone.inc} | 0 ...core-trustzone.mk => core-hw-trustzone.mk} | 2 +- ...stzone_off.mk => core-hw-trustzone_off.mk} | 0 .../base-hw/lib/mk/{core.inc => core-hw.inc} | 6 +- repos/base-hw/lib/mk/core-trustzone.mk | 9 - .../lib/mk/spec/arm/{core.inc => core-hw.inc} | 2 +- repos/base-hw/lib/mk/spec/arm/startup-hw.mk | 1 + ...unter_on.mk => core-hw-perf_counter_on.mk} | 0 .../mk/spec/arm_v6/{core.inc => core-hw.inc} | 2 +- ...unter_on.mk => core-hw-perf_counter_on.mk} | 0 .../mk/spec/arm_v7/{core.inc => core-hw.inc} | 2 +- .../mk/spec/arndale/{core.mk => core-hw.mk} | 2 +- .../spec/cortex_a15/{core.inc => core-hw.inc} | 4 +- .../spec/cortex_a8/{core.inc => core-hw.inc} | 2 +- .../spec/cortex_a9/{core.inc => core-hw.inc} | 4 +- .../mk/spec/exynos5/{core.inc => core-hw.inc} | 2 +- ...re-trustzone.inc => core-hw-trustzone.inc} | 2 +- ...stzone_off.mk => core-hw-trustzone_off.mk} | 4 +- ...stzone_on.inc => core-hw-trustzone_on.inc} | 4 +- repos/base-hw/lib/mk/spec/imx53/core-hw.mk | 1 + repos/base-hw/lib/mk/spec/imx53/core.mk | 9 - ...rustzone_on.mk => core-hw-trustzone_on.mk} | 2 +- .../lib/mk/spec/imx6/{core.mk => core-hw.mk} | 2 +- .../lib/mk/spec/muen/base-hw-common.mk | 2 +- .../base-hw/lib/mk/spec/muen/core-hw-muen.mk | 1 + repos/base-hw/lib/mk/spec/muen/core-muen.mk | 8 - .../mk/spec/odroid_xu/{core.mk => core-hw.mk} | 2 +- .../lib/mk/spec/panda/{core.mk => core-hw.mk} | 2 +- .../lib/mk/spec/pbxa9/{core.mk => core-hw.mk} | 2 +- .../spec/perf_counter/core-hw-perf_counter.mk | 1 + .../mk/spec/perf_counter/core-perf_counter.mk | 8 - .../lib/mk/spec/riscv/{core.mk => core-hw.mk} | 2 +- .../spec/riscv/{startup.mk => startup-hw.mk} | 0 .../lib/mk/spec/rpi/{core.mk => core-hw.mk} | 2 +- .../lib/mk/spec/smp/{core.inc => core-hw.inc} | 0 .../mk/spec/trustzone/core-hw-trustzone.mk | 1 + ...rustzone_on.mk => core-hw-trustzone_on.mk} | 2 +- .../{core-muen_off.mk => core-hw-muen_off.mk} | 2 +- .../{core-muen_on.mk => core-hw-muen_on.mk} | 2 +- .../mk/spec/x86_64/{core.inc => core-hw.inc} | 2 +- .../mk/spec/x86_64/{core.mk => core-hw.mk} | 2 +- .../base-hw/lib/mk/spec/x86_64/startup-hw.mk | 1 + .../mk/spec/zynq/{core.inc => core-hw.inc} | 2 +- .../mk/spec/zynq_qemu/{core.mk => core-hw.mk} | 2 +- repos/base-hw/src/core/hw/target.mk | 3 + repos/base-linux/etc/specs.conf | 43 ++--- .../base-linux/lib/import/import-lx_hybrid.mk | 34 ++-- ...ort-syscall.mk => import-syscall-linux.mk} | 0 repos/base-linux/lib/mk/base-linux-common.mk | 2 +- repos/base-linux/lib/mk/base-linux.inc | 2 +- repos/base-linux/lib/mk/base-linux.mk | 2 +- .../lib/mk/spec/arm/startup-linux.mk | 1 + .../spec/arm/{syscall.mk => syscall-linux.mk} | 0 .../lib/mk/spec/x86_32/startup-linux.mk | 1 + .../x86_32/{syscall.mk => syscall-linux.mk} | 0 .../lib/mk/spec/x86_64/startup-linux.mk | 1 + .../x86_64/{syscall.mk => syscall-linux.mk} | 0 repos/base-linux/mk/spec/linux.mk | 21 --- repos/base-linux/mk/spec/linux_arm.mk | 23 --- repos/base-linux/mk/spec/linux_x86_32.mk | 19 --- repos/base-linux/mk/spec/linux_x86_64.mk | 20 --- .../base-linux/src/core/{ => linux}/target.mk | 10 +- repos/base-nova/etc/specs.conf | 6 +- repos/base-nova/lib/mk/base-nova-common.mk | 2 +- .../lib/mk/{core.inc => core-nova.inc} | 0 .../base-nova/lib/mk/spec/x86_32/core-nova.mk | 3 + repos/base-nova/lib/mk/spec/x86_32/core.mk | 3 - .../lib/mk/spec/x86_32/startup-nova.mk | 1 + .../base-nova/lib/mk/spec/x86_64/core-nova.mk | 3 + repos/base-nova/lib/mk/spec/x86_64/core.mk | 3 - .../lib/mk/spec/x86_64/startup-nova.mk | 1 + repos/base-nova/mk/spec/nova.mk | 14 -- repos/base-nova/mk/spec/nova_x86_32.mk | 8 +- repos/base-nova/mk/spec/nova_x86_64.mk | 8 +- repos/base-nova/src/core/nova/target.mk | 3 + .../base-nova/src/kernel/{ => nova}/target.mk | 1 + repos/base-okl4/etc/specs.conf | 2 +- .../lib/import/import-kernel-okl4-include.mk | 3 + .../lib/import/import-syscall-okl4.mk | 23 +++ repos/base-okl4/lib/mk/base-okl4-common.mk | 2 +- repos/base-okl4/lib/mk/base-okl4.mk | 2 +- .../lib/mk/{core.inc => core-okl4.inc} | 2 +- .../{kernel.inc => kernel-okl4-include.inc} | 16 +- .../target.inc => lib/mk/kernel-okl4.inc} | 18 +- .../mk/{boot_info.mk => okl4_boot_info.mk} | 2 + .../lib/mk/spec/x86/{core.mk => core-okl4.mk} | 4 +- .../x86/{kernel.mk => kernel-okl4-include.mk} | 15 +- .../mk/spec/x86/kernel-okl4.mk} | 9 +- repos/base-okl4/lib/mk/spec/x86/platform.mk | 16 -- .../base-okl4/lib/mk/spec/x86/syscall-okl4.mk | 9 + .../lib/mk/spec/x86_32/startup-okl4.mk | 3 + repos/base-okl4/lib/mk/startup-okl4.mk | 5 + .../lib/mk/{platform.inc => syscall-okl4.inc} | 19 +-- repos/base-okl4/mk/spec/okl4.mk | 53 ------ repos/base-okl4/mk/spec/okl4_x86.mk | 12 -- repos/base-okl4/src/core/okl4/target.mk | 3 + repos/base-okl4/src/kernel/okl4/target.mk | 11 ++ repos/base-pistachio/doc/pistachio.txt | 19 +-- repos/base-pistachio/etc/specs.conf | 2 +- .../lib/import/import-syscall-pistachio.mk | 1 + .../lib/mk/base-pistachio-common.mk | 2 +- repos/base-pistachio/lib/mk/base-pistachio.mk | 3 +- .../lib/mk/{core.inc => core-pistachio.inc} | 3 +- repos/base-pistachio/lib/mk/platform.mk | 26 --- .../{x86/core.mk => x86_32/core-pistachio.mk} | 9 +- .../lib/mk/spec/x86_32/startup-pistachio.mk | 3 + .../lib/mk/syscall-pistachio.mk | 24 +++ repos/base-pistachio/lib/mk/syscall.mk | 7 - repos/base-pistachio/mk/spec/pistachio.mk | 29 ---- repos/base-pistachio/mk/spec/pistachio_x86.mk | 9 - .../src/core/pistachio/target.mk | 3 + .../src/kernel/{ => pistachio}/target.mk | 40 +++-- repos/base-sel4/etc/specs.conf | 1 + .../lib/import/import-syscall-sel4.mk | 15 ++ repos/base-sel4/lib/import/import-syscall.mk | 13 -- repos/base-sel4/lib/mk/base-sel4-common.mk | 2 +- repos/base-sel4/lib/mk/base-sel4.mk | 2 +- .../lib/mk/{core.mk => core-sel4.mk} | 43 ++--- repos/base-sel4/lib/mk/core_log.mk | 6 - .../spec/x86_32/{kernel.mk => kernel-sel4.mk} | 0 .../x86_32/{startup.mk => startup-sel4.mk} | 2 + .../x86_32/{platform.mk => syscall-sel4.mk} | 31 ++-- repos/base-sel4/lib/mk/syscall.mk | 5 - repos/base-sel4/mk/spec/sel4.mk | 7 - repos/base-sel4/mk/spec/sel4_x86_32.mk | 8 +- repos/base-sel4/src/core/sel4/target.mk | 3 + repos/base-sel4/src/kernel/sel4/target.mk | 5 + repos/base-sel4/src/kernel/target.mk | 5 - .../mk/spec/arm/{startup.mk => startup.inc} | 0 .../spec/x86_32/{startup.mk => startup.inc} | 0 .../spec/x86_64/{startup.mk => startup.inc} | 0 repos/base/src/core/{target.mk => target.inc} | 1 - repos/dde_rump/src/server/rump_cgd/target.mk | 2 +- repos/dde_rump/src/server/rump_fs/target.mk | 2 +- repos/os/lib/mk/foc_cli_monitor.mk | 1 + .../os/lib/mk/spec/arndale/foc_cli_monitor.mk | 1 + repos/os/src/drivers/timer/fiasco/target.mk | 1 + repos/os/src/drivers/timer/foc/target.mk | 1 + repos/os/src/drivers/timer/linux/target.mk | 2 +- .../os/src/drivers/timer/pistachio/target.mk | 2 +- .../drivers/uart/kdb/spec/fiasco/target.mk | 2 + .../src/drivers/uart/kdb/spec/foc/target.mk | 2 + repos/os/src/drivers/uart/kdb/target.inc | 2 +- repos/os/src/test/timer_accuracy/target.mk | 2 +- repos/ports-foc/lib/mk/l4lx.mk | 2 +- repos/ports-foc/lib/mk/l4sys.mk | 4 +- repos/ports-foc/mk/l4lx.mk | 10 +- repos/ports-foc/src/l4linux/x86_32/target.mk | 2 +- .../lib/mk/spec/foc_arm/gdbserver_platform.mk | 2 + .../mk/spec/foc_x86_32/gdbserver_platform.mk | 2 + tool/builddir/build.mk | 20 ++- tool/run/boot_dir/fiasco | 73 ++------- tool/run/boot_dir/foc | 155 ++++++------------ tool/run/boot_dir/hw | 1 + tool/run/boot_dir/linux | 1 + tool/run/boot_dir/nova | 5 +- tool/run/boot_dir/okl4 | 16 +- tool/run/boot_dir/pistachio | 71 ++------ tool/run/boot_dir/sel4 | 3 +- tool/run/run | 6 +- 258 files changed, 902 insertions(+), 1489 deletions(-) delete mode 100644 repos/base-fiasco/etc/fiasco.conf create mode 100644 repos/base-fiasco/lib/import/import-syscall-fiasco.mk rename repos/base-fiasco/lib/mk/{core.inc => core-fiasco.inc} (98%) create mode 100644 repos/base-fiasco/lib/mk/kernel-fiasco.inc rename repos/base-fiasco/{mk/l4_pkg.mk => lib/mk/l4_pkg.inc} (67%) delete mode 100644 repos/base-fiasco/lib/mk/l4v2_support.mk delete mode 100644 repos/base-fiasco/lib/mk/platform.inc rename repos/base-fiasco/lib/mk/spec/{x86/core.mk => x86_32/core-fiasco.mk} (87%) create mode 100644 repos/base-fiasco/lib/mk/spec/x86_32/kernel-fiasco.mk create mode 100644 repos/base-fiasco/lib/mk/spec/x86_32/startup-fiasco.mk rename repos/base-fiasco/lib/mk/spec/{x86/platform.mk => x86_32/syscall-fiasco.mk} (74%) create mode 100644 repos/base-fiasco/lib/mk/syscall-fiasco.inc delete mode 100644 repos/base-fiasco/mk/spec/fiasco.mk delete mode 100644 repos/base-fiasco/mk/spec/fiasco_x86.mk delete mode 100644 repos/base-fiasco/src/bootstrap/target.mk create mode 100644 repos/base-fiasco/src/core/fiasco/target.mk create mode 100644 repos/base-fiasco/src/kernel/fiasco/target.mk delete mode 100644 repos/base-fiasco/src/kernel/spec/x86/target.mk delete mode 100644 repos/base-fiasco/src/kernel/target.inc delete mode 100644 repos/base-fiasco/src/sigma0/target.mk delete mode 100644 repos/base-foc/etc/foc.conf create mode 100644 repos/base-foc/lib/import/import-syscall-foc.mk rename repos/base-foc/lib/mk/{core.inc => core-foc.inc} (98%) create mode 100644 repos/base-foc/lib/mk/kernel-foc.inc rename repos/base-foc/{mk/l4_pkg.mk => lib/mk/l4_pkg.inc} (66%) delete mode 100644 repos/base-foc/lib/mk/l4re_support.mk delete mode 100644 repos/base-foc/lib/mk/platform.inc rename repos/base-foc/lib/mk/spec/arm/{core.mk => core-foc.mk} (84%) delete mode 100644 repos/base-foc/lib/mk/spec/arm/platform.inc create mode 100644 repos/base-foc/lib/mk/spec/arm/startup-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/arm/syscall-foc.inc delete mode 100644 repos/base-foc/lib/mk/spec/arm/syscall.mk create mode 100644 repos/base-foc/lib/mk/spec/arndale/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/arndale/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/arndale/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/imx53/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/imx53/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/imx53/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/odroid_x2/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/odroid_x2/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/odroid_x2/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/panda/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/panda/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/panda/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/pbxa9/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/pbxa9/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/pbxa9/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/rpi/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/rpi/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/rpi/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/x86/core-foc.inc delete mode 100644 repos/base-foc/lib/mk/spec/x86/core.inc create mode 100644 repos/base-foc/lib/mk/spec/x86/syscall-foc.inc delete mode 100644 repos/base-foc/lib/mk/spec/x86/syscall.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_32/core-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/x86_32/core.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_32/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/x86_32/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_32/startup-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_32/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_64/core-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/x86_64/core.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_64/kernel-foc.mk delete mode 100644 repos/base-foc/lib/mk/spec/x86_64/platform.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_64/startup-foc.mk create mode 100644 repos/base-foc/lib/mk/spec/x86_64/syscall-foc.mk create mode 100644 repos/base-foc/lib/mk/syscall-foc.inc delete mode 100644 repos/base-foc/mk/spec/foc.mk delete mode 100644 repos/base-foc/src/bootstrap/target.mk create mode 100644 repos/base-foc/src/core/foc/target.mk create mode 100644 repos/base-foc/src/kernel/foc/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/arndale/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/imx53/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/odroid_x2/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/panda/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/pbxa9/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/rpi/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/x86_32/target.mk delete mode 100644 repos/base-foc/src/kernel/spec/x86_64/target.mk delete mode 100644 repos/base-foc/src/kernel/target.inc delete mode 100644 repos/base-foc/src/sigma0/target.mk delete mode 100644 repos/base-hw/lib/import/import-core.mk rename repos/base-hw/lib/mk/{core-muen.mk => core-hw-muen.mk} (86%) rename repos/base-hw/lib/mk/{core-perf_counter.mk => core-hw-perf_counter.mk} (100%) rename repos/base-hw/lib/mk/{core-trustzone.inc => core-hw-trustzone.inc} (100%) rename repos/base-hw/lib/mk/{spec/trustzone/core-trustzone.mk => core-hw-trustzone.mk} (85%) rename repos/base-hw/lib/mk/{core-trustzone_off.mk => core-hw-trustzone_off.mk} (100%) rename repos/base-hw/lib/mk/{core.inc => core-hw.inc} (94%) delete mode 100644 repos/base-hw/lib/mk/core-trustzone.mk rename repos/base-hw/lib/mk/spec/arm/{core.inc => core-hw.inc} (90%) create mode 100644 repos/base-hw/lib/mk/spec/arm/startup-hw.mk rename repos/base-hw/lib/mk/spec/arm_v6/{core-perf_counter_on.mk => core-hw-perf_counter_on.mk} (100%) rename repos/base-hw/lib/mk/spec/arm_v6/{core.inc => core-hw.inc} (90%) rename repos/base-hw/lib/mk/spec/arm_v7/{core-perf_counter_on.mk => core-hw-perf_counter_on.mk} (100%) rename repos/base-hw/lib/mk/spec/arm_v7/{core.inc => core-hw.inc} (84%) rename repos/base-hw/lib/mk/spec/arndale/{core.mk => core-hw.mk} (92%) rename repos/base-hw/lib/mk/spec/cortex_a15/{core.inc => core-hw.inc} (81%) rename repos/base-hw/lib/mk/spec/cortex_a8/{core.inc => core-hw.inc} (87%) rename repos/base-hw/lib/mk/spec/cortex_a9/{core.inc => core-hw.inc} (84%) rename repos/base-hw/lib/mk/spec/exynos5/{core.inc => core-hw.inc} (82%) rename repos/base-hw/lib/mk/spec/imx53/{core-trustzone.inc => core-hw-trustzone.inc} (84%) rename repos/base-hw/lib/mk/spec/imx53/{core-trustzone_off.mk => core-hw-trustzone_off.mk} (76%) rename repos/base-hw/lib/mk/spec/imx53/{core-trustzone_on.inc => core-hw-trustzone_on.inc} (87%) create mode 100644 repos/base-hw/lib/mk/spec/imx53/core-hw.mk delete mode 100644 repos/base-hw/lib/mk/spec/imx53/core.mk rename repos/base-hw/lib/mk/spec/imx53_qsb/{core-trustzone_on.mk => core-hw-trustzone_on.mk} (79%) rename repos/base-hw/lib/mk/spec/imx6/{core.mk => core-hw.mk} (88%) create mode 100644 repos/base-hw/lib/mk/spec/muen/core-hw-muen.mk delete mode 100644 repos/base-hw/lib/mk/spec/muen/core-muen.mk rename repos/base-hw/lib/mk/spec/odroid_xu/{core.mk => core-hw.mk} (86%) rename repos/base-hw/lib/mk/spec/panda/{core.mk => core-hw.mk} (87%) rename repos/base-hw/lib/mk/spec/pbxa9/{core.mk => core-hw.mk} (88%) create mode 100644 repos/base-hw/lib/mk/spec/perf_counter/core-hw-perf_counter.mk delete mode 100644 repos/base-hw/lib/mk/spec/perf_counter/core-perf_counter.mk rename repos/base-hw/lib/mk/spec/riscv/{core.mk => core-hw.mk} (94%) rename repos/base-hw/lib/mk/spec/riscv/{startup.mk => startup-hw.mk} (100%) rename repos/base-hw/lib/mk/spec/rpi/{core.mk => core-hw.mk} (87%) rename repos/base-hw/lib/mk/spec/smp/{core.inc => core-hw.inc} (100%) create mode 100644 repos/base-hw/lib/mk/spec/trustzone/core-hw-trustzone.mk rename repos/base-hw/lib/mk/spec/usb_armory/{core-trustzone_on.mk => core-hw-trustzone_on.mk} (79%) rename repos/base-hw/lib/mk/spec/x86_64/{core-muen_off.mk => core-hw-muen_off.mk} (90%) rename repos/base-hw/lib/mk/spec/x86_64/{core-muen_on.mk => core-hw-muen_on.mk} (92%) rename repos/base-hw/lib/mk/spec/x86_64/{core.inc => core-hw.inc} (94%) rename repos/base-hw/lib/mk/spec/x86_64/{core.mk => core-hw.mk} (82%) create mode 100644 repos/base-hw/lib/mk/spec/x86_64/startup-hw.mk rename repos/base-hw/lib/mk/spec/zynq/{core.inc => core-hw.inc} (82%) rename repos/base-hw/lib/mk/spec/zynq_qemu/{core.mk => core-hw.mk} (85%) create mode 100644 repos/base-hw/src/core/hw/target.mk rename repos/base-linux/lib/import/{import-syscall.mk => import-syscall-linux.mk} (100%) create mode 100644 repos/base-linux/lib/mk/spec/arm/startup-linux.mk rename repos/base-linux/lib/mk/spec/arm/{syscall.mk => syscall-linux.mk} (100%) create mode 100644 repos/base-linux/lib/mk/spec/x86_32/startup-linux.mk rename repos/base-linux/lib/mk/spec/x86_32/{syscall.mk => syscall-linux.mk} (100%) create mode 100644 repos/base-linux/lib/mk/spec/x86_64/startup-linux.mk rename repos/base-linux/lib/mk/spec/x86_64/{syscall.mk => syscall-linux.mk} (100%) delete mode 100644 repos/base-linux/mk/spec/linux.mk delete mode 100644 repos/base-linux/mk/spec/linux_arm.mk delete mode 100644 repos/base-linux/mk/spec/linux_x86_32.mk delete mode 100644 repos/base-linux/mk/spec/linux_x86_64.mk rename repos/base-linux/src/core/{ => linux}/target.mk (87%) rename repos/base-nova/lib/mk/{core.inc => core-nova.inc} (100%) create mode 100644 repos/base-nova/lib/mk/spec/x86_32/core-nova.mk delete mode 100644 repos/base-nova/lib/mk/spec/x86_32/core.mk create mode 100644 repos/base-nova/lib/mk/spec/x86_32/startup-nova.mk create mode 100644 repos/base-nova/lib/mk/spec/x86_64/core-nova.mk delete mode 100644 repos/base-nova/lib/mk/spec/x86_64/core.mk create mode 100644 repos/base-nova/lib/mk/spec/x86_64/startup-nova.mk delete mode 100644 repos/base-nova/mk/spec/nova.mk create mode 100644 repos/base-nova/src/core/nova/target.mk rename repos/base-nova/src/kernel/{ => nova}/target.mk (97%) create mode 100644 repos/base-okl4/lib/import/import-kernel-okl4-include.mk create mode 100644 repos/base-okl4/lib/import/import-syscall-okl4.mk rename repos/base-okl4/lib/mk/{core.inc => core-okl4.inc} (97%) rename repos/base-okl4/lib/mk/{kernel.inc => kernel-okl4-include.inc} (83%) rename repos/base-okl4/{src/kernel/target.inc => lib/mk/kernel-okl4.inc} (84%) rename repos/base-okl4/lib/mk/{boot_info.mk => okl4_boot_info.mk} (65%) rename repos/base-okl4/lib/mk/spec/x86/{core.mk => core-okl4.mk} (89%) rename repos/base-okl4/lib/mk/spec/x86/{kernel.mk => kernel-okl4-include.mk} (86%) rename repos/base-okl4/{src/kernel/spec/x86/target.mk => lib/mk/spec/x86/kernel-okl4.mk} (93%) delete mode 100644 repos/base-okl4/lib/mk/spec/x86/platform.mk create mode 100644 repos/base-okl4/lib/mk/spec/x86/syscall-okl4.mk create mode 100644 repos/base-okl4/lib/mk/spec/x86_32/startup-okl4.mk create mode 100644 repos/base-okl4/lib/mk/startup-okl4.mk rename repos/base-okl4/lib/mk/{platform.inc => syscall-okl4.inc} (76%) delete mode 100644 repos/base-okl4/mk/spec/okl4.mk delete mode 100644 repos/base-okl4/mk/spec/okl4_x86.mk create mode 100644 repos/base-okl4/src/core/okl4/target.mk create mode 100644 repos/base-okl4/src/kernel/okl4/target.mk create mode 100644 repos/base-pistachio/lib/import/import-syscall-pistachio.mk rename repos/base-pistachio/lib/mk/{core.inc => core-pistachio.inc} (97%) delete mode 100644 repos/base-pistachio/lib/mk/platform.mk rename repos/base-pistachio/lib/mk/spec/{x86/core.mk => x86_32/core-pistachio.mk} (60%) create mode 100644 repos/base-pistachio/lib/mk/spec/x86_32/startup-pistachio.mk create mode 100644 repos/base-pistachio/lib/mk/syscall-pistachio.mk delete mode 100644 repos/base-pistachio/lib/mk/syscall.mk delete mode 100644 repos/base-pistachio/mk/spec/pistachio.mk delete mode 100644 repos/base-pistachio/mk/spec/pistachio_x86.mk create mode 100644 repos/base-pistachio/src/core/pistachio/target.mk rename repos/base-pistachio/src/kernel/{ => pistachio}/target.mk (64%) create mode 100644 repos/base-sel4/etc/specs.conf create mode 100644 repos/base-sel4/lib/import/import-syscall-sel4.mk delete mode 100644 repos/base-sel4/lib/import/import-syscall.mk rename repos/base-sel4/lib/mk/{core.mk => core-sel4.mk} (57%) delete mode 100644 repos/base-sel4/lib/mk/core_log.mk rename repos/base-sel4/lib/mk/spec/x86_32/{kernel.mk => kernel-sel4.mk} (100%) rename repos/base-sel4/lib/mk/spec/x86_32/{startup.mk => startup-sel4.mk} (94%) rename repos/base-sel4/lib/mk/spec/x86_32/{platform.mk => syscall-sel4.mk} (70%) delete mode 100644 repos/base-sel4/lib/mk/syscall.mk delete mode 100644 repos/base-sel4/mk/spec/sel4.mk create mode 100644 repos/base-sel4/src/core/sel4/target.mk create mode 100644 repos/base-sel4/src/kernel/sel4/target.mk delete mode 100644 repos/base-sel4/src/kernel/target.mk rename repos/base/lib/mk/spec/arm/{startup.mk => startup.inc} (100%) rename repos/base/lib/mk/spec/x86_32/{startup.mk => startup.inc} (100%) rename repos/base/lib/mk/spec/x86_64/{startup.mk => startup.inc} (100%) rename repos/base/src/core/{target.mk => target.inc} (93%) diff --git a/repos/base-fiasco/doc/fiasco.txt b/repos/base-fiasco/doc/fiasco.txt index 441503d82..d4429958f 100644 --- a/repos/base-fiasco/doc/fiasco.txt +++ b/repos/base-fiasco/doc/fiasco.txt @@ -59,12 +59,12 @@ with 'fiasco_x86' as argument: From within the new , the kernel can be compiled via -! make kernel +! make kernel/fiasco -When using Genode's run mechanism, there is no need to explicitly -build the kernel. The run environment (see 'base-fiasco/run/env') -takes care of it. So you can simple execute run scripts from within -the build directory, for example: +When using Genode's run mechanism, there is no need to explicitly build the +kernel. The run environment (see 'tool/run/boot_dir/fiasco') takes care of it. +So you can simple execute run scripts from within the build directory, for +example: ! make run/demo @@ -115,22 +115,5 @@ interest for using Genode: is used to create a single binary image containing all boot-time OS components. -To build all components under '3rd/fiasco' after extracting the -archive, issue the following commands: - -! mkdir -! make -C 3rd/fiasco BUILD_DIR=/3rd build - -The specified '' must be the absolute path to the -directory, which will contain the build directories for the third party -software and the Genode build directory. After the build, your compound -build directory contains the following subdirectories: - -:'fiasco_x86': - - All generated files and the final binary of Fiasco reside here. - -:'l4env': - - L4 environment binaries and header files. - +Those components are implicitly built by the Genode build system when +issuing 'make kernel/fiasco'. diff --git a/repos/base-fiasco/etc/fiasco.conf b/repos/base-fiasco/etc/fiasco.conf deleted file mode 100644 index 589873dca..000000000 --- a/repos/base-fiasco/etc/fiasco.conf +++ /dev/null @@ -1,11 +0,0 @@ -# -# Fiasco-specific default configuration options -# - -# -# Directory, where to search for L4 headers -# -# When using this file as template for a customized -# '/etc/fiasco.conf'. -# -#L4_DIR = $(HOME)/src/l4build.x86 diff --git a/repos/base-fiasco/etc/specs.conf b/repos/base-fiasco/etc/specs.conf index 91f1b0335..eafd6189f 100644 --- a/repos/base-fiasco/etc/specs.conf +++ b/repos/base-fiasco/etc/specs.conf @@ -1,15 +1 @@ -# -# Description of build platform -# - -# -# To build the Fiasco-specific Genode binaries, -# use one of the the following config options. -# -SPECS = genode fiasco_x86 - -# -# To build for the ARM integrator platform, -# use the following SPECS value. -# -#SPECS = genode platform_integrator fiasco_arm +SPECS += genode fiasco x86_32 vesa pci ps2 framebuffer diff --git a/repos/base-fiasco/lib/import/import-syscall-fiasco.mk b/repos/base-fiasco/lib/import/import-syscall-fiasco.mk new file mode 100644 index 000000000..527b5cdca --- /dev/null +++ b/repos/base-fiasco/lib/import/import-syscall-fiasco.mk @@ -0,0 +1,6 @@ +L4_SRC_DIR := $(call select_from_ports,fiasco)/src/kernel/fiasco/fiasco/snapshot + +INC_DIR += $(LIB_CACHE_DIR)/syscall-fiasco/include/x86/l4v2 \ + $(LIB_CACHE_DIR)/syscall-fiasco/include/x86 \ + $(LIB_CACHE_DIR)/syscall-fiasco/include \ + $(LIB_CACHE_DIR)/syscall-fiasco/include/l4v2 diff --git a/repos/base-fiasco/lib/mk/base-fiasco-common.mk b/repos/base-fiasco/lib/mk/base-fiasco-common.mk index 9d03d7f92..7d0a6a5fb 100644 --- a/repos/base-fiasco/lib/mk/base-fiasco-common.mk +++ b/repos/base-fiasco/lib/mk/base-fiasco-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += startup +LIBS += startup-fiasco syscall-fiasco SRC_CC += capability.cc capability_raw.cc SRC_CC += signal_submit.cc diff --git a/repos/base-fiasco/lib/mk/base-fiasco.mk b/repos/base-fiasco/lib/mk/base-fiasco.mk index eec5dc939..dfca0008e 100644 --- a/repos/base-fiasco/lib/mk/base-fiasco.mk +++ b/repos/base-fiasco/lib/mk/base-fiasco.mk @@ -1,5 +1,7 @@ include $(BASE_DIR)/lib/mk/base.inc +LIBS += syscall-fiasco + SRC_CC += thread_start.cc SRC_CC += cache.cc SRC_CC += capability_space.cc diff --git a/repos/base-fiasco/lib/mk/core.inc b/repos/base-fiasco/lib/mk/core-fiasco.inc similarity index 98% rename from repos/base-fiasco/lib/mk/core.inc rename to repos/base-fiasco/lib/mk/core-fiasco.inc index 94a3716d9..8aead27b8 100644 --- a/repos/base-fiasco/lib/mk/core.inc +++ b/repos/base-fiasco/lib/mk/core-fiasco.inc @@ -42,7 +42,7 @@ INC_DIR += $(REP_DIR)/src/core/include \ $(REP_DIR)/src/include \ $(BASE_DIR)/src/include -LIBS += base-fiasco-common +LIBS += base-fiasco-common syscall-fiasco include $(GEN_CORE_DIR)/version.inc diff --git a/repos/base-fiasco/lib/mk/kernel-fiasco.inc b/repos/base-fiasco/lib/mk/kernel-fiasco.inc new file mode 100644 index 000000000..cca65d55e --- /dev/null +++ b/repos/base-fiasco/lib/mk/kernel-fiasco.inc @@ -0,0 +1,53 @@ +L4_SRC_DIR = $(call select_from_ports,fiasco)/src/kernel/fiasco/fiasco/snapshot + +FIASCO_BUILD_DIR = $(shell pwd)/build +FIASCO = $(FIASCO_BUILD_DIR)/fiasco +FIASCO_SRC = $(L4_SRC_DIR)/kernel/fiasco + +KERNEL_BUILD_OUTPUT_FILTER = 2>&1 | sed "s/^/ [fiasco] /" + +$(FIASCO_BUILD_DIR): + $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + $(VERBOSE_DIR) -C $(FIASCO_SRC) BUILDDIR=$@ \ + $(KERNEL_BUILD_OUTPUT_FILTER) + $(VERBOSE)cp $(KERNEL_CONFIG) $@/globalconfig.out + $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + $(VERBOSE_DIR) -C $@ oldconfig \ + $(KERNEL_BUILD_OUTPUT_FILTER) + $(VERBOSE)cp $(KERNEL_CONFIG) $@/globalconfig.out + +$(FIASCO): $(FIASCO_BUILD_DIR) + $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + $(VERBOSE_DIR) -C $(FIASCO_BUILD_DIR) \ + $(KERNEL_BUILD_OUTPUT_FILTER) + +# +# Sigma0 and bootstrap are provided as L4 packages +# +# We build them within the L4 build directory created by the 'syscall-fiasco' +# library. +# + +LIBS += syscall-fiasco + +PKGS = l4sys/lib \ + uclibc/lib/uclibc \ + uclibc/lib/include \ + crtx \ + l4util/lib \ + cxx \ + sigma0/server \ + bootstrap + +L4_BUILD_DIR := $(LIB_CACHE_DIR)/syscall-fiasco + +include $(REP_DIR)/lib/mk/l4_pkg.inc + +# +# Execute the rules in this file only at the second build stage when we know +# about the complete build settings, e.g., 'CROSS_DEV_PREFIX'. +# +ifeq ($(called_from_lib_mk),yes) +all: $(FIASCO) +endif + diff --git a/repos/base-fiasco/mk/l4_pkg.mk b/repos/base-fiasco/lib/mk/l4_pkg.inc similarity index 67% rename from repos/base-fiasco/mk/l4_pkg.mk rename to repos/base-fiasco/lib/mk/l4_pkg.inc index 7ba396c70..0039d718e 100644 --- a/repos/base-fiasco/mk/l4_pkg.mk +++ b/repos/base-fiasco/lib/mk/l4_pkg.inc @@ -8,8 +8,6 @@ # the target # -LIBS += platform - ifeq ($(filter-out $(SPECS),x86_32),) L4_BUILD_ARCH := x86 endif @@ -19,19 +17,29 @@ ifeq ($(filter-out $(SPECS),arm),) endif ifeq ($(L4_BUILD_ARCH),) -all: l4_build_arch_undefined - $(VERBOSE)$(ECHO) "Error: L4_BUILD_ARCH undefined, architecture not supported" - $(VERBOSE)false +$(error L4_BUILD_ARCH undefined, architecture not supported) endif -L4_PKG_DIR = $(L4_SRC_DIR)/l4/pkg -PKG_TAGS = $(addsuffix .tag,$(PKGS)) +ifndef L4_BUILD_DIR +$(error L4_BUILD_DIR undefined) +endif + +L4_PKG_DIR = $(L4_SRC_DIR)/l4/pkg +PKG_TAGS = $(addsuffix .tag,$(PKGS)) + +BUILD_OUTPUT_FILTER = 2>&1 | sed "s~^~ [$*] ~" ifeq ($(VERBOSE),) L4_VERBOSE = V=1 endif -$(TARGET): $(PKG_TAGS) +# +# Execute the rules in this file only at the second build stage when we know +# about the complete build settings, e.g., 'CROSS_DEV_PREFIX'. +# +ifeq ($(called_from_lib_mk),yes) +all: $(PKG_TAGS) +endif # # We preserve the order of processing 'l4/pkg/' directories because of @@ -52,17 +60,7 @@ $(TARGET): $(PKG_TAGS) -C $(L4_PKG_DIR)/$* \ CC="$(CROSS_DEV_PREFIX)gcc" \ CXX="$(CROSS_DEV_PREFIX)g++" \ - LD="$(CROSS_DEV_PREFIX)ld" + LD="$(CROSS_DEV_PREFIX)ld" \ + $(BUILD_OUTPUT_FILTER) $(VERBOSE)mkdir -p $(dir $@) && touch $@ -clean cleanall: clean_tags - -# if (pseudo) target is named after a directory, remove the whole subtree -clean_prg_objects: clean_dir_named_as_target - -clean_dir_named_as_target: - $(VERBOSE)(test -d $(TARGET) && rm -rf $(TARGET)) || true - -clean_tags: - $(VERBOSE)rm -f $(PKG_TAGS) - diff --git a/repos/base-fiasco/lib/mk/l4v2_support.mk b/repos/base-fiasco/lib/mk/l4v2_support.mk deleted file mode 100644 index 8bda913f9..000000000 --- a/repos/base-fiasco/lib/mk/l4v2_support.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Build L4env base libraries, needed by sigma0 and bootstrap - - -# ignore stage one, visit the L4 build system at second build stage -ifeq ($(called_from_lib_mk),yes) - -# packages in 'l4/pkg/' -PKGS = l4sys/lib \ - uclibc/lib/uclibc \ - uclibc/lib/include \ - crtx \ - l4util/lib \ - cxx - -include $(REP_DIR)/mk/l4_pkg.mk -all: $(PKG_TAGS) - -endif diff --git a/repos/base-fiasco/lib/mk/platform.inc b/repos/base-fiasco/lib/mk/platform.inc deleted file mode 100644 index cb0f90e8b..000000000 --- a/repos/base-fiasco/lib/mk/platform.inc +++ /dev/null @@ -1,56 +0,0 @@ -# -# Create prerequisites for building Genode for Fiasco -# -# Prior building Genode programs for Fiasco, the kernel bindings must be -# generated. This is done by building a minimalistic subset of the original -# userland that comes with Fiasco. -# - -# -# Execute the rules in this file only at the second build stage when we know -# about the complete build settings, e.g., the 'CROSS_DEV_PREFIX'. -# -ifeq ($(called_from_lib_mk),yes) - -# -# Sanity checks -# -ifeq ($(L4_BUILD_DIR),$(BUILD_BASE_DIR)/l4) -all: $(L4_SRC_DIR) - -$(L4_SRC_DIR): - $(VERBOSE)$(ECHO) "--> Please, execute './tool/ports/prepare_port fiasco' in $(GENODE_DIR)" - $(VERBOSE)$(ECHO) "--> before compiling Genode apps for Fiasco." - $(VERBOSE)exit 1 -endif - -# -# Create L4 build directory -# -$(BUILD_BASE_DIR)/l4/.Makeconf.bid.old: - $(VERBOSE)mkdir -p $(dir $@) - $(VERBOSE)cp $(L4_CONFIG) $(@:.old=) - $(VERBOSE_MK) MAKEFLAGS= make $(VERBOSE_DIR) -C $(L4_SRC_DIR)/l4 \ - O=$(BUILD_BASE_DIR)/l4 SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" oldconfig - -$(BUILD_BASE_DIR)/l4/pkg/uclibc/lib/uclibc: - $(VERBOSE)mkdir -p $(BUILD_BASE_DIR)/l4/pkg/uclibc/lib/uclibc - $(VERBOSE)tar cf - --exclude .svn -C $(L4_SRC_DIR)/../uclibc ARCH-all ARCH-x86 \ - | tar xf - -C $(BUILD_BASE_DIR)/l4/pkg/uclibc/lib/uclibc - -PKGS = input/include \ - drivers/uart/include \ - l4sys/include \ - l4util/include \ - libc_support/include \ - libsigma0/include - -include $(REP_DIR)/mk/l4_pkg.mk - -all: $(PKG_TAGS) - -$(PKG_TAGS): $(BUILD_BASE_DIR)/l4/.Makeconf.bid.old -$(PKG_TAGS): $(BUILD_BASE_DIR)/l4/pkg/uclibc/lib/uclibc - -endif - diff --git a/repos/base-fiasco/lib/mk/spec/x86/core.mk b/repos/base-fiasco/lib/mk/spec/x86_32/core-fiasco.mk similarity index 87% rename from repos/base-fiasco/lib/mk/spec/x86/core.mk rename to repos/base-fiasco/lib/mk/spec/x86_32/core-fiasco.mk index dac89e98b..7a7faeb15 100644 --- a/repos/base-fiasco/lib/mk/spec/x86/core.mk +++ b/repos/base-fiasco/lib/mk/spec/x86_32/core-fiasco.mk @@ -1,4 +1,4 @@ -include $(REP_DIR)/lib/mk/core.inc +include $(REP_DIR)/lib/mk/core-fiasco.inc LIBS += base-fiasco-common SRC_CC += platform_x86.cc diff --git a/repos/base-fiasco/lib/mk/spec/x86_32/kernel-fiasco.mk b/repos/base-fiasco/lib/mk/spec/x86_32/kernel-fiasco.mk new file mode 100644 index 000000000..f3e748a8c --- /dev/null +++ b/repos/base-fiasco/lib/mk/spec/x86_32/kernel-fiasco.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG = $(REP_DIR)/config/kernel-config.x86 + +include $(REP_DIR)/lib/mk/kernel-fiasco.inc diff --git a/repos/base-fiasco/lib/mk/spec/x86_32/startup-fiasco.mk b/repos/base-fiasco/lib/mk/spec/x86_32/startup-fiasco.mk new file mode 100644 index 000000000..404766602 --- /dev/null +++ b/repos/base-fiasco/lib/mk/spec/x86_32/startup-fiasco.mk @@ -0,0 +1,3 @@ +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc + +LIBS += syscall-fiasco diff --git a/repos/base-fiasco/lib/mk/spec/x86/platform.mk b/repos/base-fiasco/lib/mk/spec/x86_32/syscall-fiasco.mk similarity index 74% rename from repos/base-fiasco/lib/mk/spec/x86/platform.mk rename to repos/base-fiasco/lib/mk/spec/x86_32/syscall-fiasco.mk index e53cdd8d1..590bbffb0 100644 --- a/repos/base-fiasco/lib/mk/spec/x86/platform.mk +++ b/repos/base-fiasco/lib/mk/spec/x86_32/syscall-fiasco.mk @@ -3,4 +3,4 @@ # L4_CONFIG = $(REP_DIR)/config/l4env-config.x86 -include $(REP_DIR)/lib/mk/platform.inc +include $(REP_DIR)/lib/mk/syscall-fiasco.inc diff --git a/repos/base-fiasco/lib/mk/syscall-fiasco.inc b/repos/base-fiasco/lib/mk/syscall-fiasco.inc new file mode 100644 index 000000000..646d1e95e --- /dev/null +++ b/repos/base-fiasco/lib/mk/syscall-fiasco.inc @@ -0,0 +1,38 @@ +# +# Create prerequisites for building Genode for Fiasco +# +# Prior building Genode programs for Fiasco, the kernel bindings must be +# generated. This is done by building a minimalistic subset of the original +# userland that comes with Fiasco. +# + +L4_SRC_DIR = $(call select_from_ports,fiasco)/src/kernel/fiasco/fiasco/snapshot +L4_BUILD_DIR := $(shell pwd) + +# +# Create L4 build directory +# +.Makeconf.bid.old: + $(VERBOSE)mkdir -p $(dir $@) + $(VERBOSE)cp $(L4_CONFIG) $(@:.old=) + $(VERBOSE_MK) MAKEFLAGS= make $(VERBOSE_DIR) -C $(L4_SRC_DIR)/l4 \ + O=$(L4_BUILD_DIR) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" oldconfig \ + 2>&1 | sed "s/^/ [l4build] /" + $(VERBOSE)touch $@ + +pkg/uclibc/lib/uclibc: + $(VERBOSE)mkdir -p pkg/uclibc/lib/uclibc + $(VERBOSE)tar cf - --exclude .svn -C $(L4_SRC_DIR)/../uclibc ARCH-all ARCH-x86 \ + | tar xf - -C pkg/uclibc/lib/uclibc + +PKGS = input/include \ + drivers/uart/include \ + l4sys/include \ + l4util/include \ + libc_support/include \ + libsigma0/include + +include $(REP_DIR)/lib/mk/l4_pkg.inc + +$(PKG_TAGS): .Makeconf.bid.old +$(PKG_TAGS): pkg/uclibc/lib/uclibc diff --git a/repos/base-fiasco/mk/spec/fiasco.mk b/repos/base-fiasco/mk/spec/fiasco.mk deleted file mode 100644 index d90220c79..000000000 --- a/repos/base-fiasco/mk/spec/fiasco.mk +++ /dev/null @@ -1,25 +0,0 @@ -# -# Specifics for the l4v2 kernel API -# - -# -# Read default and builddir-specific config files -# -# In these config files, we find the definition of L4_DIR -# --include $(call select_from_repositories,etc/fiasco.conf) --include $(BUILD_BASE_DIR)/etc/fiasco.conf - -L4_BUILD_DIR := $(BUILD_BASE_DIR)/l4 -L4_SRC_DIR := $(call select_from_ports,fiasco)/src/kernel/fiasco/fiasco/snapshot - -# -# L4/sys headers -# -L4_INC_DIR += $(L4_BUILD_DIR)/include \ - $(L4_BUILD_DIR)/include/l4v2 - -clean_contrib: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/l4 - -cleanall: clean_contrib diff --git a/repos/base-fiasco/mk/spec/fiasco_x86.mk b/repos/base-fiasco/mk/spec/fiasco_x86.mk deleted file mode 100644 index 012c51648..000000000 --- a/repos/base-fiasco/mk/spec/fiasco_x86.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Specifics for Fiasco L4v2 on x86 -# - -SPECS += x86_32 fiasco -SPECS += pci ps2 vesa framebuffer - -# -# x86-specific L4v2/sys headers -# -L4_INC_DIR += $(L4_BUILD_DIR)/include/x86/l4v2 \ - $(L4_BUILD_DIR)/include/x86 - -# -# Also include less-specific configuration last -# -include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/fiasco.mk) - -INC_DIR += $(L4_INC_DIR) diff --git a/repos/base-fiasco/src/bootstrap/target.mk b/repos/base-fiasco/src/bootstrap/target.mk deleted file mode 100644 index e2a41b44f..000000000 --- a/repos/base-fiasco/src/bootstrap/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = bootstrap -PKGS = bootstrap -LIBS = l4v2_support - -include $(REP_DIR)/mk/l4_pkg.mk diff --git a/repos/base-fiasco/src/core/fiasco/target.mk b/repos/base-fiasco/src/core/fiasco/target.mk new file mode 100644 index 000000000..a40a66a83 --- /dev/null +++ b/repos/base-fiasco/src/core/fiasco/target.mk @@ -0,0 +1,3 @@ +LIBS = core-fiasco + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-fiasco/src/kernel/fiasco/target.mk b/repos/base-fiasco/src/kernel/fiasco/target.mk new file mode 100644 index 000000000..6f2e194c5 --- /dev/null +++ b/repos/base-fiasco/src/kernel/fiasco/target.mk @@ -0,0 +1,18 @@ +TARGET = kernel-fiasco +LIBS = kernel-fiasco + +$(TARGET): sigma0 bootstrap kernel + +L4_BUILD_DIR = $(LIB_CACHE_DIR)/syscall-fiasco + +kernel: + $(VERBOSE)ln -sf $(LIB_CACHE_DIR)/kernel-fiasco/build/fiasco $@ + +sigma0: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/bin/x86_586/l4v2/sigma0 + +bootstrap: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/bin/x86_586/bootstrap + +clean cleanall: + $(VERBOSE)rm -f kernel sigma0 bootstrap diff --git a/repos/base-fiasco/src/kernel/spec/x86/target.mk b/repos/base-fiasco/src/kernel/spec/x86/target.mk deleted file mode 100644 index 7e5a59d43..000000000 --- a/repos/base-fiasco/src/kernel/spec/x86/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES = x86 32bit -KERNEL_CONFIG = $(REP_DIR)/config/kernel-config.x86 - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-fiasco/src/kernel/target.inc b/repos/base-fiasco/src/kernel/target.inc deleted file mode 100644 index e536962b8..000000000 --- a/repos/base-fiasco/src/kernel/target.inc +++ /dev/null @@ -1,22 +0,0 @@ -TARGET = fiasco -REQUIRES += fiasco -FIASCO_BUILD_DIR = $(BUILD_BASE_DIR)/kernel/$(TARGET) -FIASCO = $(FIASCO_BUILD_DIR)/fiasco -FIASCO_SRC = $(L4_SRC_DIR)/kernel/fiasco - -$(TARGET): $(FIASCO) - -$(FIASCO_BUILD_DIR): - $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ - $(VERBOSE_DIR) -C $(FIASCO_SRC) BUILDDIR=$@ - $(VERBOSE)cp $(KERNEL_CONFIG) $@/globalconfig.out - $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ - $(VERBOSE_DIR) -C $@ oldconfig - -$(FIASCO): $(FIASCO_BUILD_DIR) - $(VERBOSE_MK) MAKEFLAGS= $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ - $(VERBOSE_DIR) -C $(FIASCO_BUILD_DIR) - $(VERBOSE)ln -sf $@ $(BUILD_BASE_DIR)/bin/$(TARGET) - -clean cleanall: - $(VERBOSE)rm -rf $(FIASCO_BUILD_DIR) diff --git a/repos/base-fiasco/src/sigma0/target.mk b/repos/base-fiasco/src/sigma0/target.mk deleted file mode 100644 index b9c6271d9..000000000 --- a/repos/base-fiasco/src/sigma0/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = sigma0 -PKGS = sigma0/server -LIBS = l4v2_support - -include $(REP_DIR)/mk/l4_pkg.mk diff --git a/repos/base-foc/doc/foc.txt b/repos/base-foc/doc/foc.txt index 7b6a3de8a..ee2a810e8 100644 --- a/repos/base-foc/doc/foc.txt +++ b/repos/base-foc/doc/foc.txt @@ -111,26 +111,6 @@ to download the Genode project webpage via the 'wget' tool within the L4Linux environment. If all wents fine the run-script completes successfully. -Integration of Fiasco.OC with Genode -#################################### - -If you don't want the Genode build system to build the Fiasco.OC kernel for -you, but you want to provide your own version, you have to state in the -'etc/foc.conf' file within your build directory, where to find it: - -! L4_BUILD_DIR = -! KERNEL = - -The first variable states where to find the kernel bindings (the L4RE build -directory), the second one states where your kernel binary can be found. -After adding these variable to the file, you have to do a full cleanup -in your build directory to ensure, that the right bindings are used: - -! make cleanall - -From now on, run-scripts will use your provided kernel. - - Further Information ################### diff --git a/repos/base-foc/etc/foc.conf b/repos/base-foc/etc/foc.conf deleted file mode 100644 index 46c90d33e..000000000 --- a/repos/base-foc/etc/foc.conf +++ /dev/null @@ -1,20 +0,0 @@ -# -# Fiasco.OC-specific default configuration options -# - -# -# Directory, where to search for L4 headers -# -# When using this file as template for a customized -# '/etc/kernel.conf'. -# -#L4_BUILD_DIR = $(HOME)/src/l4build.x86 - -# -# Path to the Fiasco.OC kernel -# -# When using this file as template for a customized -# '/etc/kernel.conf'. -# -#KERNEL = $(HOME)/src/fiasco-build.x86/fiasco - diff --git a/repos/base-foc/etc/specs.conf b/repos/base-foc/etc/specs.conf index 81779dc15..b78640192 100644 --- a/repos/base-foc/etc/specs.conf +++ b/repos/base-foc/etc/specs.conf @@ -1,8 +1 @@ -# -# Description of build platform -# - -# -# By default, build Fiasco.OC binaries for ia32. -# -SPECS ?= genode foc_x86_32 +SPECS += genode foc diff --git a/repos/base-foc/lib/import/import-syscall-foc.mk b/repos/base-foc/lib/import/import-syscall-foc.mk new file mode 100644 index 000000000..cc9512c1c --- /dev/null +++ b/repos/base-foc/lib/import/import-syscall-foc.mk @@ -0,0 +1,23 @@ +L4_INCLUDE_DIR := $(LIB_CACHE_DIR)/syscall-foc/include + +ifeq ($(filter-out $(SPECS),x86_32),) + INC_DIR += $(L4_INCLUDE_DIR)/x86/l4f $(L4_INCLUDE_DIR)/x86 +endif # 32bit + +ifeq ($(filter-out $(SPECS),x86_64),) + INC_DIR += $(L4_INCLUDE_DIR)/amd64/l4f $(L4_INCLUDE_DIR)/amd64 +endif # 64bit + +ifeq ($(filter-out $(SPECS),arm),) + INC_DIR += $(L4_INCLUDE_DIR)/arm/l4f $(L4_INCLUDE_DIR)/arm + CC_OPT += -DARCH_arm +endif # ARM + +INC_DIR += $(L4_INCLUDE_DIR)/l4f $(L4_INCLUDE_DIR) +CC_OPT += -DCONFIG_L4_CALL_SYSCALLS + +# +# Use 'regparm=0' call instead of an inline function, when accessing +# the utcb. This is needed to stay compatible with L4linux +# +CC_OPT += -DL4SYS_USE_UTCB_WRAP=1 diff --git a/repos/base-foc/lib/mk/base-foc-common.inc b/repos/base-foc/lib/mk/base-foc-common.inc index bc07de1c6..231043134 100644 --- a/repos/base-foc/lib/mk/base-foc-common.inc +++ b/repos/base-foc/lib/mk/base-foc-common.inc @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += syscall startup +LIBS += syscall-foc startup-foc SRC_CC += spin_lock.cc cap_map.cc SRC_CC += signal_submit.cc diff --git a/repos/base-foc/lib/mk/base-foc.inc b/repos/base-foc/lib/mk/base-foc.inc index f7ad3ffba..621adba16 100644 --- a/repos/base-foc/lib/mk/base-foc.inc +++ b/repos/base-foc/lib/mk/base-foc.inc @@ -1,5 +1,6 @@ include $(BASE_DIR)/lib/mk/base.inc -LIBS += base-foc-common +LIBS += base-foc-common syscall-foc + SRC_CC += cap_map_remove.cc cap_alloc.cc SRC_CC += thread_start.cc diff --git a/repos/base-foc/lib/mk/core.inc b/repos/base-foc/lib/mk/core-foc.inc similarity index 98% rename from repos/base-foc/lib/mk/core.inc rename to repos/base-foc/lib/mk/core-foc.inc index a21216817..e125bd3de 100644 --- a/repos/base-foc/lib/mk/core.inc +++ b/repos/base-foc/lib/mk/core-foc.inc @@ -1,8 +1,6 @@ -REQUIRES += foc - GEN_CORE_DIR = $(BASE_DIR)/src/core -LIBS += base-foc-common +LIBS += base-foc-common syscall-foc SRC_CC += stack_area.cc \ core_log.cc \ diff --git a/repos/base-foc/lib/mk/kernel-foc.inc b/repos/base-foc/lib/mk/kernel-foc.inc new file mode 100644 index 000000000..420c4186d --- /dev/null +++ b/repos/base-foc/lib/mk/kernel-foc.inc @@ -0,0 +1,47 @@ +FOC_BUILD_DIR = $(shell pwd)/build +FOC = $(FOC_BUILD_DIR)/foc +FOC_SRC := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco + +KERNEL_BUILD_OUTPUT_FILTER = 2>&1 | sed "s/^/ [fiasco.oc] /" + +$(FOC_BUILD_DIR): + $(VERBOSE_MK) $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + $(VERBOSE_DIR) -C $(FOC_SRC) BUILDDIR=$@ \ + $(KERNEL_BUILD_OUTPUT_FILTER) + $(VERBOSE)cp $(KERNEL_CONFIG) $@/globalconfig.out + +$(FOC): $(FOC_BUILD_DIR) + $(VERBOSE_MK) $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + CC="$(CC)" CXX="$(CXX)" \ + $(VERBOSE_DIR) -C $(FOC_BUILD_DIR) \ + $(KERNEL_BUILD_OUTPUT_FILTER) + $(VERBOSE)touch $@ + +# +# Sigma0 and bootstrap are provided as L4 packages +# +# We build them within the L4 build directory created by the 'syscall-fiasco' +# library. +# + +LIBS += syscall-foc + +PKGS := uclibc-headers \ + uclibc-minimal \ + l4util \ + cxx \ + sigma0 \ + drivers-frst/include drivers-frst/of drivers-frst/uart \ + bootstrap + +L4_BUILD_DIR := $(LIB_CACHE_DIR)/syscall-foc/build + +include $(REP_DIR)/lib/mk/l4_pkg.inc + +# +# Execute the rules in this file only at the second build stage when we know +# about the complete build settings, e.g., 'CROSS_DEV_PREFIX'. +# +ifeq ($(called_from_lib_mk),yes) +all: $(FOC) +endif diff --git a/repos/base-foc/mk/l4_pkg.mk b/repos/base-foc/lib/mk/l4_pkg.inc similarity index 66% rename from repos/base-foc/mk/l4_pkg.mk rename to repos/base-foc/lib/mk/l4_pkg.inc index bfa0af13e..750d6a5d6 100644 --- a/repos/base-foc/mk/l4_pkg.mk +++ b/repos/base-foc/lib/mk/l4_pkg.inc @@ -8,8 +8,6 @@ # the target # -LIBS += platform - ifeq ($(filter-out $(SPECS),x86_32),) L4_BUILD_ARCH := x86_586 endif @@ -27,17 +25,22 @@ ifeq ($(filter-out $(SPECS),arm_v6),) endif ifeq ($(L4_BUILD_ARCH),) -all: l4_build_arch_undefined - $(VERBOSE)$(ECHO) "Error: L4_BUILD_ARCH undefined, architecture not supported" - $(VERBOSE)false +$(error L4_BUILD_ARCH undefined, architecture not supported) endif -L4_BUILD_DIR = $(BUILD_BASE_DIR)/l4 L4_BUILD_OPT = SYSTEM_TARGET=$(CROSS_DEV_PREFIX) L4_PKG_DIR := $(call select_from_ports,foc)/src/kernel/foc/l4/pkg PKG_TAGS = $(addsuffix .tag,$(PKGS)) -$(TARGET): $(PKG_TAGS) +BUILD_OUTPUT_FILTER = 2>&1 | sed "s~^~ [$*] ~" + +# +# Execute the rules in this file only at the second build stage when we know +# about the complete build settings, e.g., 'CROSS_DEV_PREFIX'. +# +ifeq ($(called_from_lib_mk),yes) +all: $(PKG_TAGS) +endif # # We preserve the order of processing 'l4/pkg/' directories because of @@ -47,17 +50,7 @@ $(TARGET): $(PKG_TAGS) .NOTPARALLEL: $(PKG_TAGS) %.tag: - $(VERBOSE_MK) $(MAKE) $(VERBOSE_DIR) O=$(L4_BUILD_DIR) -C $(L4_PKG_DIR)/$* "$(L4_BUILD_OPT)" + $(VERBOSE_MK) $(MAKE) $(VERBOSE_DIR) O=$(L4_BUILD_DIR) -C $(L4_PKG_DIR)/$* \ + "$(L4_BUILD_OPT)" $(BUILD_OUTPUT_FILTER) $(VERBOSE)mkdir -p $(dir $@) && touch $@ -clean cleanall: clean_tags - -# if (pseudo) target is named after a directory, remove the whole subtree -clean_prg_objects: clean_dir_named_as_target - -clean_dir_named_as_target: - $(VERBOSE)(test -d $(TARGET) && rm -rf $(TARGET)) || true - -clean_tags: - $(VERBOSE)rm -f $(PKG_TAGS) - diff --git a/repos/base-foc/lib/mk/l4re_support.mk b/repos/base-foc/lib/mk/l4re_support.mk deleted file mode 100644 index 805809386..000000000 --- a/repos/base-foc/lib/mk/l4re_support.mk +++ /dev/null @@ -1,14 +0,0 @@ -# -# Build L4re base libraries, needed by sigma0 and bootstrap - - -# ignore stage one, visit the L4 build system at second build stage -ifeq ($(called_from_lib_mk),yes) - -# packages in 'l4/pkg/' -PKGS = uclibc-headers uclibc-minimal l4util cxx - -include $(REP_DIR)/mk/l4_pkg.mk -all: $(PKG_TAGS) - -endif diff --git a/repos/base-foc/lib/mk/platform.inc b/repos/base-foc/lib/mk/platform.inc deleted file mode 100644 index 90a9cd4ea..000000000 --- a/repos/base-foc/lib/mk/platform.inc +++ /dev/null @@ -1,59 +0,0 @@ -# -# Create prerequisites for building Genode for Fiasco.OC -# -# Prior building Genode programs for Fiasco.OC, the kernel bindings must be -# generated. This is done by building a minimalistic subset of the original -# userland (L4re) that comes with Fiasco.OC. -# - -# -# We do this also in the first build stage to ensure that the kernel -# port, if missing, is added to the missing-ports list of this stage. -# -FOC_CONTRIB_DIR := $(call select_from_ports,foc)/src/kernel/foc - -# -# Execute the rules in this file only at the second build stage when we know -# about the complete build settings, e.g., the 'CROSS_DEV_PREFIX'. -# -ifeq ($(called_from_lib_mk),yes) - -# -# Create mirror for architecture-specific L4sys header files -# -L4_INC_TARGETS += l4/sys \ - l4f/l4/sys \ - l4/sigma0 \ - l4/vcpu - -all: $(addprefix $(BUILD_BASE_DIR)/include/,$(L4_INC_TARGETS)) - -$(BUILD_BASE_DIR)/include/%: - $(VERBOSE)mkdir -p $(dir $@) - $(VERBOSE)ln -sf $(L4_BUILD_DIR)/include/$* $@ - -# -# Create L4 build directory -# -# Resetting the 'MAKEFLAGS' is important because otherwise, the L4 -# build system will stuble over predefined variables, i.e., 'LIB' -# -$(BUILD_BASE_DIR)/l4/.kconfig: - $(VERBOSE_MK) MAKEFLAGS= $(MAKE) $(VERBOSE_DIR) -C $(FOC_CONTRIB_DIR)/l4 B=$(dir $@) \ - DROPSCONF_DEFCONFIG="$(L4_CONFIG)" \ - VERBOSE="$(VERBOSE)" SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" - -PKGS = ldscripts \ - libgcc-pure \ - l4sys \ - libgcc \ - libsigma0 \ - libvcpu/include - -include $(REP_DIR)/mk/l4_pkg.mk -all: $(PKG_TAGS) - -$(PKG_TAGS): $(BUILD_BASE_DIR)/l4/.kconfig - -endif - diff --git a/repos/base-foc/lib/mk/spec/arm/core.mk b/repos/base-foc/lib/mk/spec/arm/core-foc.mk similarity index 84% rename from repos/base-foc/lib/mk/spec/arm/core.mk rename to repos/base-foc/lib/mk/spec/arm/core-foc.mk index b489cb0bf..3408f26fb 100644 --- a/repos/base-foc/lib/mk/spec/arm/core.mk +++ b/repos/base-foc/lib/mk/spec/arm/core-foc.mk @@ -5,6 +5,6 @@ SRC_CC += spec/arm/platform_arm.cc \ # override default stack-area location INC_DIR += $(REP_DIR)/src/include/spec/arm -include $(REP_DIR)/lib/mk/core.inc +include $(REP_DIR)/lib/mk/core-foc.inc vpath platform_services.cc $(GEN_CORE_DIR) diff --git a/repos/base-foc/lib/mk/spec/arm/platform.inc b/repos/base-foc/lib/mk/spec/arm/platform.inc deleted file mode 100644 index d0bb4139f..000000000 --- a/repos/base-foc/lib/mk/spec/arm/platform.inc +++ /dev/null @@ -1,8 +0,0 @@ -# -# Create mirror for architecture-specific L4sys header files -# -L4_INC_TARGETS = arm/l4/sys \ - arm/l4f/l4/sys \ - arm/l4/vcpu - -include $(REP_DIR)/lib/mk/platform.inc diff --git a/repos/base-foc/lib/mk/spec/arm/startup-foc.mk b/repos/base-foc/lib/mk/spec/arm/startup-foc.mk new file mode 100644 index 000000000..0b84feb18 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/arm/startup-foc.mk @@ -0,0 +1,3 @@ +LIBS += syscall-foc + +include $(BASE_DIR)/lib/mk/spec/arm/startup.inc diff --git a/repos/base-foc/lib/mk/spec/arm/syscall-foc.inc b/repos/base-foc/lib/mk/spec/arm/syscall-foc.inc new file mode 100644 index 000000000..a61491387 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/arm/syscall-foc.inc @@ -0,0 +1,18 @@ +L4_INC_TARGETS = arm/l4/sys \ + arm/l4f/l4/sys \ + arm/l4/vcpu + +CC_OPT += -Iinclude/arm + +include $(REP_DIR)/lib/mk/syscall-foc.inc + +SRC_C += utcb.c +SRC_S += atomic_ops_s.S + +utcb.c: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/utcb.c + +atomic_ops_s.S: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/ARCH-arm/atomic_ops_s.S + +utcb.c atomic_ops_s.S: $(PKG_TAGS) diff --git a/repos/base-foc/lib/mk/spec/arm/syscall.mk b/repos/base-foc/lib/mk/spec/arm/syscall.mk deleted file mode 100644 index ff94d707d..000000000 --- a/repos/base-foc/lib/mk/spec/arm/syscall.mk +++ /dev/null @@ -1,5 +0,0 @@ -SRC_C += utcb.c -SRC_S += atomic_ops_s.S - -vpath atomic_ops_s.S $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/ARCH-arm -vpath utcb.c $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src diff --git a/repos/base-foc/lib/mk/spec/arndale/kernel-foc.mk b/repos/base-foc/lib/mk/spec/arndale/kernel-foc.mk new file mode 100644 index 000000000..c2d0f85ac --- /dev/null +++ b/repos/base-foc/lib/mk/spec/arndale/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/arndale.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/arndale/platform.mk b/repos/base-foc/lib/mk/spec/arndale/platform.mk deleted file mode 100644 index 4902c1ce5..000000000 --- a/repos/base-foc/lib/mk/spec/arndale/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/arndale.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/arndale/syscall-foc.mk b/repos/base-foc/lib/mk/spec/arndale/syscall-foc.mk new file mode 100644 index 000000000..f496abb1b --- /dev/null +++ b/repos/base-foc/lib/mk/spec/arndale/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/arndale.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/imx53/kernel-foc.mk b/repos/base-foc/lib/mk/spec/imx53/kernel-foc.mk new file mode 100644 index 000000000..373c58ffe --- /dev/null +++ b/repos/base-foc/lib/mk/spec/imx53/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/imx53.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/imx53/platform.mk b/repos/base-foc/lib/mk/spec/imx53/platform.mk deleted file mode 100644 index d16e4660f..000000000 --- a/repos/base-foc/lib/mk/spec/imx53/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/imx53.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/imx53/syscall-foc.mk b/repos/base-foc/lib/mk/spec/imx53/syscall-foc.mk new file mode 100644 index 000000000..683d2b8f2 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/imx53/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/imx53.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/odroid_x2/kernel-foc.mk b/repos/base-foc/lib/mk/spec/odroid_x2/kernel-foc.mk new file mode 100644 index 000000000..c9f370706 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/odroid_x2/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/odroid_x2.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/odroid_x2/platform.mk b/repos/base-foc/lib/mk/spec/odroid_x2/platform.mk deleted file mode 100644 index 37ec97cbf..000000000 --- a/repos/base-foc/lib/mk/spec/odroid_x2/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/odroid_x2.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/odroid_x2/syscall-foc.mk b/repos/base-foc/lib/mk/spec/odroid_x2/syscall-foc.mk new file mode 100644 index 000000000..feab02a72 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/odroid_x2/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/odroid_x2.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/panda/kernel-foc.mk b/repos/base-foc/lib/mk/spec/panda/kernel-foc.mk new file mode 100644 index 000000000..8c4898ace --- /dev/null +++ b/repos/base-foc/lib/mk/spec/panda/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/panda.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/panda/platform.mk b/repos/base-foc/lib/mk/spec/panda/platform.mk deleted file mode 100644 index 0a02bcadd..000000000 --- a/repos/base-foc/lib/mk/spec/panda/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/panda.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/panda/syscall-foc.mk b/repos/base-foc/lib/mk/spec/panda/syscall-foc.mk new file mode 100644 index 000000000..ec7ce9de1 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/panda/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/panda.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/pbxa9/kernel-foc.mk b/repos/base-foc/lib/mk/spec/pbxa9/kernel-foc.mk new file mode 100644 index 000000000..bcc379af7 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/pbxa9/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/pbxa9.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/pbxa9/platform.mk b/repos/base-foc/lib/mk/spec/pbxa9/platform.mk deleted file mode 100644 index f36ad9337..000000000 --- a/repos/base-foc/lib/mk/spec/pbxa9/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/pbxa9.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/pbxa9/syscall-foc.mk b/repos/base-foc/lib/mk/spec/pbxa9/syscall-foc.mk new file mode 100644 index 000000000..46f11ba87 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/pbxa9/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/pbxa9.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/rpi/kernel-foc.mk b/repos/base-foc/lib/mk/spec/rpi/kernel-foc.mk new file mode 100644 index 000000000..84fd104dd --- /dev/null +++ b/repos/base-foc/lib/mk/spec/rpi/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/rpi.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/rpi/platform.mk b/repos/base-foc/lib/mk/spec/rpi/platform.mk deleted file mode 100644 index f2cf8f796..000000000 --- a/repos/base-foc/lib/mk/spec/rpi/platform.mk +++ /dev/null @@ -1,6 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/rpi.user) - -include $(REP_DIR)/lib/mk/spec/arm/platform.inc diff --git a/repos/base-foc/lib/mk/spec/rpi/syscall-foc.mk b/repos/base-foc/lib/mk/spec/rpi/syscall-foc.mk new file mode 100644 index 000000000..8d424ec19 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/rpi/syscall-foc.mk @@ -0,0 +1,3 @@ +L4_CONFIG := $(call select_from_repositories,config/rpi.user) + +include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86/core-foc.inc b/repos/base-foc/lib/mk/spec/x86/core-foc.inc new file mode 100644 index 000000000..d8523ddc9 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86/core-foc.inc @@ -0,0 +1,10 @@ +SRC_CC += io_port_session_component.cc \ + io_port_session_support.cc \ + spec/x86/ipc_pager.cc \ + spec/x86/platform.cc + +vpath io_port_session_component.cc $(BASE_DIR)/src/core/spec/x86 +vpath io_port_session_support.cc $(BASE_DIR)/src/core/spec/x86 +vpath platform_services.cc $(BASE_DIR)/src/core/spec/x86 + +include $(REP_DIR)/lib/mk/core-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86/core.inc b/repos/base-foc/lib/mk/spec/x86/core.inc deleted file mode 100644 index 50db05df6..000000000 --- a/repos/base-foc/lib/mk/spec/x86/core.inc +++ /dev/null @@ -1,11 +0,0 @@ -REQUIRES += x86 -SRC_CC += io_port_session_component.cc \ - io_port_session_support.cc \ - spec/x86/ipc_pager.cc \ - spec/x86/platform.cc - -vpath io_port_session_component.cc $(BASE_DIR)/src/core/spec/x86 -vpath io_port_session_support.cc $(BASE_DIR)/src/core/spec/x86 -vpath platform_services.cc $(BASE_DIR)/src/core/spec/x86 - -include $(REP_DIR)/lib/mk/core.inc diff --git a/repos/base-foc/lib/mk/spec/x86/syscall-foc.inc b/repos/base-foc/lib/mk/spec/x86/syscall-foc.inc new file mode 100644 index 000000000..935d5cf2f --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86/syscall-foc.inc @@ -0,0 +1,12 @@ +SRC_C += utcb.c +SRC_S += syscalls_direct.S + +include $(REP_DIR)/lib/mk/syscall-foc.inc + +utcb.c: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/utcb.c + +syscalls_direct.S: + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/ARCH-x86/syscalls_direct.S + +utcb.c syscalls_direct.S: $(PKG_TAGS) diff --git a/repos/base-foc/lib/mk/spec/x86/syscall.mk b/repos/base-foc/lib/mk/spec/x86/syscall.mk deleted file mode 100644 index 80154535d..000000000 --- a/repos/base-foc/lib/mk/spec/x86/syscall.mk +++ /dev/null @@ -1,5 +0,0 @@ -SRC_C += utcb.c -SRC_S += syscalls_direct.S - -vpath syscalls_direct.S $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src/ARCH-x86 -vpath utcb.c $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src diff --git a/repos/base-foc/lib/mk/spec/x86_32/core-foc.mk b/repos/base-foc/lib/mk/spec/x86_32/core-foc.mk new file mode 100644 index 000000000..4ae3592ae --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_32/core-foc.mk @@ -0,0 +1,3 @@ +SRC_CC += spec/x86_32/ipc_pager.cc + +include $(REP_DIR)/lib/mk/spec/x86/core-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86_32/core.mk b/repos/base-foc/lib/mk/spec/x86_32/core.mk deleted file mode 100644 index 529c64ce2..000000000 --- a/repos/base-foc/lib/mk/spec/x86_32/core.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES += foc_x86_32 -SRC_CC += spec/x86_32/ipc_pager.cc - -include $(REP_DIR)/lib/mk/spec/x86/core.inc diff --git a/repos/base-foc/lib/mk/spec/x86_32/kernel-foc.mk b/repos/base-foc/lib/mk/spec/x86_32/kernel-foc.mk new file mode 100644 index 000000000..7879f0a52 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_32/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/x86_32.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86_32/platform.mk b/repos/base-foc/lib/mk/spec/x86_32/platform.mk deleted file mode 100644 index 9ef0be0ac..000000000 --- a/repos/base-foc/lib/mk/spec/x86_32/platform.mk +++ /dev/null @@ -1,13 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/x86_32.user) - -# -# Create mirror for architecture-specific L4sys header files -# -L4_INC_TARGETS = x86/l4/sys \ - x86/l4f/l4/sys \ - x86/l4/vcpu - -include $(REP_DIR)/lib/mk/platform.inc diff --git a/repos/base-foc/lib/mk/spec/x86_32/startup-foc.mk b/repos/base-foc/lib/mk/spec/x86_32/startup-foc.mk new file mode 100644 index 000000000..a184e43f6 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_32/startup-foc.mk @@ -0,0 +1,3 @@ +LIBS += syscall-foc + +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base-foc/lib/mk/spec/x86_32/syscall-foc.mk b/repos/base-foc/lib/mk/spec/x86_32/syscall-foc.mk new file mode 100644 index 000000000..b21f25491 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_32/syscall-foc.mk @@ -0,0 +1,9 @@ +L4_CONFIG := $(call select_from_repositories,config/x86_32.user) + +L4_INC_TARGETS := x86/l4/sys x86/l4f/l4/sys x86/l4/vcpu + +CC_OPT += -Iinclude/x86 + +include $(REP_DIR)/lib/mk/spec/x86/syscall-foc.inc + +vpath syscalls_direct.S $(L4_PKG_DIR)/l4sys/lib/src/ARCH-x86 diff --git a/repos/base-foc/lib/mk/spec/x86_64/core-foc.mk b/repos/base-foc/lib/mk/spec/x86_64/core-foc.mk new file mode 100644 index 000000000..ddf1d298f --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_64/core-foc.mk @@ -0,0 +1,3 @@ +SRC_CC += spec/x86_64/ipc_pager.cc + +include $(REP_DIR)/lib/mk/spec/x86/core-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86_64/core.mk b/repos/base-foc/lib/mk/spec/x86_64/core.mk deleted file mode 100644 index d73055232..000000000 --- a/repos/base-foc/lib/mk/spec/x86_64/core.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES += foc_x86_64 -SRC_CC += spec/x86_64/ipc_pager.cc - -include $(REP_DIR)/lib/mk/spec/x86/core.inc diff --git a/repos/base-foc/lib/mk/spec/x86_64/kernel-foc.mk b/repos/base-foc/lib/mk/spec/x86_64/kernel-foc.mk new file mode 100644 index 000000000..5526af2ac --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_64/kernel-foc.mk @@ -0,0 +1,3 @@ +KERNEL_CONFIG := $(REP_DIR)/config/x86_64.kernel + +include $(REP_DIR)/lib/mk/kernel-foc.inc diff --git a/repos/base-foc/lib/mk/spec/x86_64/platform.mk b/repos/base-foc/lib/mk/spec/x86_64/platform.mk deleted file mode 100644 index 883be3772..000000000 --- a/repos/base-foc/lib/mk/spec/x86_64/platform.mk +++ /dev/null @@ -1,13 +0,0 @@ -# -# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). -# -L4_CONFIG = $(call select_from_repositories,config/x86_64.user) - -# -# Create mirror for architecture-specific L4sys header files -# -L4_INC_TARGETS = amd64/l4/sys \ - amd64/l4f/l4/sys \ - amd64/l4/vcpu - -include $(REP_DIR)/lib/mk/platform.inc diff --git a/repos/base-foc/lib/mk/spec/x86_64/startup-foc.mk b/repos/base-foc/lib/mk/spec/x86_64/startup-foc.mk new file mode 100644 index 000000000..74a55e078 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_64/startup-foc.mk @@ -0,0 +1,3 @@ +LIBS += syscall-foc + +include $(BASE_DIR)/lib/mk/spec/x86_64/startup.inc diff --git a/repos/base-foc/lib/mk/spec/x86_64/syscall-foc.mk b/repos/base-foc/lib/mk/spec/x86_64/syscall-foc.mk new file mode 100644 index 000000000..627dfdc59 --- /dev/null +++ b/repos/base-foc/lib/mk/spec/x86_64/syscall-foc.mk @@ -0,0 +1,7 @@ +L4_CONFIG := $(call select_from_repositories,config/x86_64.user) + +L4_INC_TARGETS := amd64/l4/sys amd64/l4f/l4/sys amd64/l4/vcpu + +CC_OPT += -Iinclude/amd64 + +include $(REP_DIR)/lib/mk/spec/x86/syscall-foc.inc diff --git a/repos/base-foc/lib/mk/syscall-foc.inc b/repos/base-foc/lib/mk/syscall-foc.inc new file mode 100644 index 000000000..033bc0b74 --- /dev/null +++ b/repos/base-foc/lib/mk/syscall-foc.inc @@ -0,0 +1,59 @@ +# +# Create prerequisites for building Genode for Fiasco.OC +# +# Prior building Genode programs for Fiasco.OC, the kernel bindings must be +# generated. This is done by building a minimalistic subset of the original +# userland (L4re) that comes with Fiasco.OC. +# + +L4_SRC_DIR := $(call select_from_ports,foc)/src/kernel/foc +L4_BUILD_DIR := $(shell pwd)/build + +# +# Create mirror for architecture-specific L4sys header files +# +L4_INC_TARGETS += l4/sys \ + l4f/l4/sys \ + l4/sigma0 \ + l4/vcpu + +CC_OPT += -Iinclude + +include/%: + $(VERBOSE)mkdir -p $(dir $@) + $(VERBOSE)ln -sf $(L4_BUILD_DIR)/include/$* $@ + +# +# Use 'regparm=0' call instead of an inline function, when accessing +# the utcb. This is needed to stay compatible with L4linux +# +CC_OPT += -DL4SYS_USE_UTCB_WRAP=1 + +# +# Create L4 build directory +# +# Resetting the 'MAKEFLAGS' is important because otherwise, the L4 +# build system will stuble over predefined variables, i.e., 'LIB' +# +$(L4_BUILD_DIR)/.kconfig: + $(VERBOSE_MK) MAKEFLAGS= $(MAKE) $(VERBOSE_DIR) -C $(L4_SRC_DIR)/l4 \ + B=$(L4_BUILD_DIR) DROPSCONF_DEFCONFIG="$(L4_CONFIG)" \ + VERBOSE="$(VERBOSE)" SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ + 2>&1 | sed "s/^/ [l4build] /" + +PKGS := ldscripts \ + libgcc-pure \ + l4sys \ + libgcc \ + libsigma0 \ + libvcpu/include + +include $(REP_DIR)/lib/mk/l4_pkg.inc + +$(PKG_TAGS): $(L4_BUILD_DIR)/.kconfig +$(PKG_TAGS): $(addprefix include/,$(L4_INC_TARGETS)) + +# +# Compile 'syscall-foc.lib.a' not before the 'PKGS' are completely built +# +$(SRC_S) $(SRC_C) : $(PKG_TAGS) diff --git a/repos/base-foc/mk/spec/foc.mk b/repos/base-foc/mk/spec/foc.mk deleted file mode 100644 index 29404f7af..000000000 --- a/repos/base-foc/mk/spec/foc.mk +++ /dev/null @@ -1,46 +0,0 @@ -# -# Specifics for the Fiasco.OC kernel API -# - --include $(call select_from_repositories,etc/foc.conf) --include $(BUILD_BASE_DIR)/etc/foc.conf - -# -# L4/sys headers -# -L4_INC_DIR += $(BUILD_BASE_DIR)/include/ -L4F_INC_DIR += $(BUILD_BASE_DIR)/include/l4f - -# -# L4 build directory, if not defined by 'foc.conf', use directory local -# to the Genode build directory. -# -L4_BUILD_DIR ?= $(BUILD_BASE_DIR)/l4 - -# -# Build everything with -fPIC because the Fiasco.OC syscall bindings -# rely on 'ebx' (on x86) being handled with care. Without -fPIC enabled, -# the syscall bindings break. -# -CC_OPT += -fPIC - -# -# Use 'regparm=0' call instead of an inline function, when accessing -# the utcb. This is needed to stay compatible with L4linux -# -CC_OPT += -DL4SYS_USE_UTCB_WRAP=1 - -all: - -# -# Clean rules for removing the side effects of building the platform -# library -# -clean_includes: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/include - -clean_contrib: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/l4 - -cleanall: clean_contrib clean_includes - diff --git a/repos/base-foc/mk/spec/foc_arm.mk b/repos/base-foc/mk/spec/foc_arm.mk index c616e3e97..f5ae8ffc5 100644 --- a/repos/base-foc/mk/spec/foc_arm.mk +++ b/repos/base-foc/mk/spec/foc_arm.mk @@ -1,27 +1 @@ -# -# Specifics for Fiasco.OC on ARM -# - SPECS += foc - -# -# ARM-specific L4/sys headers -# -L4_INC_DIR = $(BUILD_BASE_DIR)/include/arm -L4F_INC_DIR = $(BUILD_BASE_DIR)/include/arm/l4f - -# -# Defines for L4/sys headers -# -CC_OPT += -DCONFIG_L4_CALL_SYSCALLS -DARCH_arm - -# -# Architecture-specific L4sys header files -# -L4_INC_TARGETS = arm/l4/sys \ - arm/l4f/l4/sys \ - arm/l4/vcpu - -include $(call select_from_repositories,mk/spec/foc.mk) - -INC_DIR += $(L4F_INC_DIR) $(L4_INC_DIR) diff --git a/repos/base-foc/mk/spec/foc_imx53.mk b/repos/base-foc/mk/spec/foc_imx53.mk index 936723a54..dced50930 100644 --- a/repos/base-foc/mk/spec/foc_imx53.mk +++ b/repos/base-foc/mk/spec/foc_imx53.mk @@ -1,6 +1,6 @@ SPECS += foc_arm imx53 imx53_qsb -# add repository relative include paths +# add repository-relative include paths REP_INC_DIR += include/spec/imx53_qsb include $(call select_from_repositories,mk/spec/imx53.mk) diff --git a/repos/base-foc/mk/spec/foc_x86_32.mk b/repos/base-foc/mk/spec/foc_x86_32.mk index ae9faba34..920757bce 100644 --- a/repos/base-foc/mk/spec/foc_x86_32.mk +++ b/repos/base-foc/mk/spec/foc_x86_32.mk @@ -1,20 +1,3 @@ -# -# Specifics for Fiasco.OC on x86 -# +SPECS += x86_32 foc pci ps2 vesa framebuffer -SPECS += x86_32 foc -SPECS += pci ps2 vesa framebuffer - -# -# L4/sys headers -# -L4_INC_DIR = $(BUILD_BASE_DIR)/include/x86 -L4F_INC_DIR = $(BUILD_BASE_DIR)/include/x86/l4f - -# -# Also include less-specific configuration last -# include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/foc.mk) - -INC_DIR += $(L4F_INC_DIR) $(L4_INC_DIR) diff --git a/repos/base-foc/mk/spec/foc_x86_64.mk b/repos/base-foc/mk/spec/foc_x86_64.mk index c9557cdaa..15560e161 100644 --- a/repos/base-foc/mk/spec/foc_x86_64.mk +++ b/repos/base-foc/mk/spec/foc_x86_64.mk @@ -1,25 +1,3 @@ -# -# Specifics for Fiasco.OC on x86 64-bit -# +SPECS += x86_64 foc pci ps2 vesa framebuffer -SPECS += x86_64 foc -SPECS += pci ps2 vesa framebuffer - -# -# L4/sys headers -# -L4_INC_DIR = $(BUILD_BASE_DIR)/include/amd64 -L4F_INC_DIR = $(BUILD_BASE_DIR)/include/amd64/l4f - -# -# Compile for 64-bit -# -CC_OPT += -m64 - -# -# Also include less-specific configuration last -# include $(call select_from_repositories,mk/spec/x86_64.mk) -include $(call select_from_repositories,mk/spec/foc.mk) - -INC_DIR += $(L4F_INC_DIR) $(L4_INC_DIR) diff --git a/repos/base-foc/src/bootstrap/target.mk b/repos/base-foc/src/bootstrap/target.mk deleted file mode 100644 index e98501b46..000000000 --- a/repos/base-foc/src/bootstrap/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = bootstrap -PKGS = drivers-frst/include drivers-frst/of drivers-frst/uart bootstrap -LIBS = l4re_support - -include $(REP_DIR)/mk/l4_pkg.mk diff --git a/repos/base-foc/src/core/foc/target.mk b/repos/base-foc/src/core/foc/target.mk new file mode 100644 index 000000000..960afad3c --- /dev/null +++ b/repos/base-foc/src/core/foc/target.mk @@ -0,0 +1,3 @@ +LIBS = core-foc + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-foc/src/kernel/foc/target.mk b/repos/base-foc/src/kernel/foc/target.mk new file mode 100644 index 000000000..e529384c8 --- /dev/null +++ b/repos/base-foc/src/kernel/foc/target.mk @@ -0,0 +1,2 @@ +TARGET = kernel-foc +LIBS = kernel-foc diff --git a/repos/base-foc/src/kernel/spec/arndale/target.mk b/repos/base-foc/src/kernel/spec/arndale/target.mk deleted file mode 100644 index 95e80cb51..000000000 --- a/repos/base-foc/src/kernel/spec/arndale/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -REQUIRES = arndale -FIASCO_DIR := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco -KERNEL_CONFIG = $(REP_DIR)/config/arndale.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/imx53/target.mk b/repos/base-foc/src/kernel/spec/imx53/target.mk deleted file mode 100644 index e0f081898..000000000 --- a/repos/base-foc/src/kernel/spec/imx53/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES = imx53 -KERNEL_CONFIG = $(REP_DIR)/config/imx53.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/odroid_x2/target.mk b/repos/base-foc/src/kernel/spec/odroid_x2/target.mk deleted file mode 100644 index bc2e49b8f..000000000 --- a/repos/base-foc/src/kernel/spec/odroid_x2/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -REQUIRES = odroid_x2 -FIASCO_DIR := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco -KERNEL_CONFIG = $(REP_DIR)/config/odroid_x2.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/panda/target.mk b/repos/base-foc/src/kernel/spec/panda/target.mk deleted file mode 100644 index 40103a9dc..000000000 --- a/repos/base-foc/src/kernel/spec/panda/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -REQUIRES = panda -FIASCO_DIR := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco -KERNEL_CONFIG = $(REP_DIR)/config/panda.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/pbxa9/target.mk b/repos/base-foc/src/kernel/spec/pbxa9/target.mk deleted file mode 100644 index cd1cee978..000000000 --- a/repos/base-foc/src/kernel/spec/pbxa9/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES = pbxa9 -KERNEL_CONFIG = $(REP_DIR)/config/pbxa9.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/rpi/target.mk b/repos/base-foc/src/kernel/spec/rpi/target.mk deleted file mode 100644 index 049f665fd..000000000 --- a/repos/base-foc/src/kernel/spec/rpi/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -REQUIRES = rpi -FIASCO_DIR := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco -KERNEL_CONFIG = $(REP_DIR)/config/rpi.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/x86_32/target.mk b/repos/base-foc/src/kernel/spec/x86_32/target.mk deleted file mode 100644 index 419015f24..000000000 --- a/repos/base-foc/src/kernel/spec/x86_32/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES = x86 32bit -KERNEL_CONFIG = $(REP_DIR)/config/x86_32.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/spec/x86_64/target.mk b/repos/base-foc/src/kernel/spec/x86_64/target.mk deleted file mode 100644 index 012a1a6bb..000000000 --- a/repos/base-foc/src/kernel/spec/x86_64/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -REQUIRES = x86 64bit -KERNEL_CONFIG = $(REP_DIR)/config/x86_64.kernel - --include $(PRG_DIR)/../../target.inc diff --git a/repos/base-foc/src/kernel/target.inc b/repos/base-foc/src/kernel/target.inc deleted file mode 100644 index 1bb0f0114..000000000 --- a/repos/base-foc/src/kernel/target.inc +++ /dev/null @@ -1,21 +0,0 @@ -TARGET = fiasco.oc -REQUIRES += foc -FOC_BUILD_DIR = $(BUILD_BASE_DIR)/kernel/$(TARGET) -FIASCO = $(FOC_BUILD_DIR)/fiasco -FIASCO_SRC := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco - -$(TARGET): $(FIASCO) - -$(FOC_BUILD_DIR): - $(VERBOSE_MK) $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ - $(VERBOSE_DIR) -C $(FIASCO_SRC) BUILDDIR=$@ - $(VERBOSE)cp $(KERNEL_CONFIG) $@/globalconfig.out - -$(FIASCO): $(FOC_BUILD_DIR) - $(VERBOSE_MK) $(MAKE) SYSTEM_TARGET="$(CROSS_DEV_PREFIX)" \ - CC="$(CC)" CXX="$(CXX)" \ - $(VERBOSE_DIR) -C $(FOC_BUILD_DIR) - $(VERBOSE)ln -sf $@ $(BUILD_BASE_DIR)/bin/$(TARGET) - -clean cleanall: - $(VERBOSE)rm -rf $(FOC_BUILD_DIR) diff --git a/repos/base-foc/src/sigma0/target.mk b/repos/base-foc/src/sigma0/target.mk deleted file mode 100644 index 81726b75a..000000000 --- a/repos/base-foc/src/sigma0/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = l4f/sigma0 -PKGS = sigma0 -LIBS = l4re_support - -include $(REP_DIR)/mk/l4_pkg.mk diff --git a/repos/base-foc/src/test/cap_integrity/target.mk b/repos/base-foc/src/test/cap_integrity/target.mk index 8b836382e..22c2c99ce 100644 --- a/repos/base-foc/src/test/cap_integrity/target.mk +++ b/repos/base-foc/src/test/cap_integrity/target.mk @@ -2,4 +2,4 @@ REQUIRES = foc TARGET = test-cap_integrity SRC_CC = main.cc INC_DIR += $(REP_DIR)/src/include -LIBS = base +LIBS = base-foc syscall-foc diff --git a/repos/base-hw/lib/import/import-core.mk b/repos/base-hw/lib/import/import-core.mk deleted file mode 100644 index 57cf3fd27..000000000 --- a/repos/base-hw/lib/import/import-core.mk +++ /dev/null @@ -1,8 +0,0 @@ -# -# \brief Automatically included by targets that depend on the core lib -# \author Martin Stein -# \date 2011-12-16 -# - -# add include paths -INC_DIR += $(REP_DIR)/src/core/include diff --git a/repos/base-hw/lib/mk/base-hw.mk b/repos/base-hw/lib/mk/base-hw.mk index dddbca13b..9657280da 100644 --- a/repos/base-hw/lib/mk/base-hw.mk +++ b/repos/base-hw/lib/mk/base-hw.mk @@ -5,4 +5,4 @@ SRC_CC += env.cc SRC_CC += capability.cc SRC_CC += cache.cc -LIBS += startup base-hw-common +LIBS += startup-hw base-hw-common diff --git a/repos/base-hw/lib/mk/core-muen.mk b/repos/base-hw/lib/mk/core-hw-muen.mk similarity index 86% rename from repos/base-hw/lib/mk/core-muen.mk rename to repos/base-hw/lib/mk/core-hw-muen.mk index cf4d32fa7..b9d6cfdb8 100644 --- a/repos/base-hw/lib/mk/core-muen.mk +++ b/repos/base-hw/lib/mk/core-hw-muen.mk @@ -7,4 +7,4 @@ REQUIRES = x86_64 # add library dependencies -LIBS += core-muen_off +LIBS += core-hw-muen_off diff --git a/repos/base-hw/lib/mk/core-perf_counter.mk b/repos/base-hw/lib/mk/core-hw-perf_counter.mk similarity index 100% rename from repos/base-hw/lib/mk/core-perf_counter.mk rename to repos/base-hw/lib/mk/core-hw-perf_counter.mk diff --git a/repos/base-hw/lib/mk/core-trustzone.inc b/repos/base-hw/lib/mk/core-hw-trustzone.inc similarity index 100% rename from repos/base-hw/lib/mk/core-trustzone.inc rename to repos/base-hw/lib/mk/core-hw-trustzone.inc diff --git a/repos/base-hw/lib/mk/spec/trustzone/core-trustzone.mk b/repos/base-hw/lib/mk/core-hw-trustzone.mk similarity index 85% rename from repos/base-hw/lib/mk/spec/trustzone/core-trustzone.mk rename to repos/base-hw/lib/mk/core-hw-trustzone.mk index 37832ff55..472e0b21e 100644 --- a/repos/base-hw/lib/mk/spec/trustzone/core-trustzone.mk +++ b/repos/base-hw/lib/mk/core-hw-trustzone.mk @@ -6,4 +6,4 @@ # # add library dependencies -LIBS += core-trustzone_on +LIBS += core-hw-trustzone_off diff --git a/repos/base-hw/lib/mk/core-trustzone_off.mk b/repos/base-hw/lib/mk/core-hw-trustzone_off.mk similarity index 100% rename from repos/base-hw/lib/mk/core-trustzone_off.mk rename to repos/base-hw/lib/mk/core-hw-trustzone_off.mk diff --git a/repos/base-hw/lib/mk/core.inc b/repos/base-hw/lib/mk/core-hw.inc similarity index 94% rename from repos/base-hw/lib/mk/core.inc rename to repos/base-hw/lib/mk/core-hw.inc index 3670b34b3..35f56c747 100644 --- a/repos/base-hw/lib/mk/core.inc +++ b/repos/base-hw/lib/mk/core-hw.inc @@ -4,11 +4,7 @@ # \date 2011-12-16 # -# add library dependencies -LIBS += core-perf_counter - -# add library dependencies -LIBS += base-hw-common +LIBS += core-hw-perf_counter base-hw-common # add include paths INC_DIR += $(BASE_DIR)/../base-hw/src/core/include diff --git a/repos/base-hw/lib/mk/core-trustzone.mk b/repos/base-hw/lib/mk/core-trustzone.mk deleted file mode 100644 index 3ec3c938c..000000000 --- a/repos/base-hw/lib/mk/core-trustzone.mk +++ /dev/null @@ -1,9 +0,0 @@ -# -# \brief Build config for parts of core that depend on Trustzone status -# \author Stefan Kalkowski -# \author Martin Stein -# \date 2012-10-24 -# - -# add library dependencies -LIBS += core-trustzone_off diff --git a/repos/base-hw/lib/mk/spec/arm/core.inc b/repos/base-hw/lib/mk/spec/arm/core-hw.inc similarity index 90% rename from repos/base-hw/lib/mk/spec/arm/core.inc rename to repos/base-hw/lib/mk/spec/arm/core-hw.inc index f9201afe4..a2c96e2db 100644 --- a/repos/base-hw/lib/mk/spec/arm/core.inc +++ b/repos/base-hw/lib/mk/spec/arm/core-hw.inc @@ -18,4 +18,4 @@ SRC_S += spec/arm/kernel/crt0.s SRC_S += spec/arm/crt0.s # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arm/startup-hw.mk b/repos/base-hw/lib/mk/spec/arm/startup-hw.mk new file mode 100644 index 000000000..6123496d8 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/arm/startup-hw.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/arm/startup.inc diff --git a/repos/base-hw/lib/mk/spec/arm_v6/core-perf_counter_on.mk b/repos/base-hw/lib/mk/spec/arm_v6/core-hw-perf_counter_on.mk similarity index 100% rename from repos/base-hw/lib/mk/spec/arm_v6/core-perf_counter_on.mk rename to repos/base-hw/lib/mk/spec/arm_v6/core-hw-perf_counter_on.mk diff --git a/repos/base-hw/lib/mk/spec/arm_v6/core.inc b/repos/base-hw/lib/mk/spec/arm_v6/core-hw.inc similarity index 90% rename from repos/base-hw/lib/mk/spec/arm_v6/core.inc rename to repos/base-hw/lib/mk/spec/arm_v6/core-hw.inc index 0cedb6ddd..c29b4afcb 100644 --- a/repos/base-hw/lib/mk/spec/arm_v6/core.inc +++ b/repos/base-hw/lib/mk/spec/arm_v6/core-hw.inc @@ -20,4 +20,4 @@ SRC_CC += kernel/kernel.cc SRC_S += spec/arm_v6/mode_transition.s # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/arm/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/arm/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arm_v7/core-perf_counter_on.mk b/repos/base-hw/lib/mk/spec/arm_v7/core-hw-perf_counter_on.mk similarity index 100% rename from repos/base-hw/lib/mk/spec/arm_v7/core-perf_counter_on.mk rename to repos/base-hw/lib/mk/spec/arm_v7/core-hw-perf_counter_on.mk diff --git a/repos/base-hw/lib/mk/spec/arm_v7/core.inc b/repos/base-hw/lib/mk/spec/arm_v7/core-hw.inc similarity index 84% rename from repos/base-hw/lib/mk/spec/arm_v7/core.inc rename to repos/base-hw/lib/mk/spec/arm_v7/core-hw.inc index e4ac63287..477bc7664 100644 --- a/repos/base-hw/lib/mk/spec/arm_v7/core.inc +++ b/repos/base-hw/lib/mk/spec/arm_v7/core-hw.inc @@ -14,4 +14,4 @@ SRC_CC += spec/arm_v7/cpu.cc SRC_S += spec/arm_v7/mode_transition.s # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/arm/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/arm/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arndale/core.mk b/repos/base-hw/lib/mk/spec/arndale/core-hw.mk similarity index 92% rename from repos/base-hw/lib/mk/spec/arndale/core.mk rename to repos/base-hw/lib/mk/spec/arndale/core-hw.mk index b90ca56e1..f6e5e33c5 100644 --- a/repos/base-hw/lib/mk/spec/arndale/core.mk +++ b/repos/base-hw/lib/mk/spec/arndale/core-hw.mk @@ -21,4 +21,4 @@ SRC_CC += spec/arm_v7/virtualization/vm_session_component.cc SRC_S += spec/arm_v7/virtualization/mode_transition.s # include less specific configuration -include $(REP_DIR)/lib/mk/spec/exynos5/core.inc +include $(REP_DIR)/lib/mk/spec/exynos5/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/cortex_a15/core.inc b/repos/base-hw/lib/mk/spec/cortex_a15/core-hw.inc similarity index 81% rename from repos/base-hw/lib/mk/spec/cortex_a15/core.inc rename to repos/base-hw/lib/mk/spec/cortex_a15/core-hw.inc index 70c3d136f..a28a5416f 100644 --- a/repos/base-hw/lib/mk/spec/cortex_a15/core.inc +++ b/repos/base-hw/lib/mk/spec/cortex_a15/core-hw.inc @@ -18,5 +18,5 @@ SRC_CC += spec/arm/smp/kernel/cpu.cc SRC_S += spec/arm/smp/kernel/crt0.s # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/smp/core.inc -include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/smp/core-hw.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/cortex_a8/core.inc b/repos/base-hw/lib/mk/spec/cortex_a8/core-hw.inc similarity index 87% rename from repos/base-hw/lib/mk/spec/cortex_a8/core.inc rename to repos/base-hw/lib/mk/spec/cortex_a8/core-hw.inc index 80f9c23d1..9de85ae85 100644 --- a/repos/base-hw/lib/mk/spec/cortex_a8/core.inc +++ b/repos/base-hw/lib/mk/spec/cortex_a8/core-hw.inc @@ -15,4 +15,4 @@ SRC_CC += spec/arm/kernel/thread_update_pd.cc SRC_CC += kernel/kernel.cc # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/cortex_a9/core.inc b/repos/base-hw/lib/mk/spec/cortex_a9/core-hw.inc similarity index 84% rename from repos/base-hw/lib/mk/spec/cortex_a9/core.inc rename to repos/base-hw/lib/mk/spec/cortex_a9/core-hw.inc index d51cbf8c2..e4a6391f9 100644 --- a/repos/base-hw/lib/mk/spec/cortex_a9/core.inc +++ b/repos/base-hw/lib/mk/spec/cortex_a9/core-hw.inc @@ -22,5 +22,5 @@ SRC_CC += kernel/vm_thread_off.cc SRC_S += spec/arm/smp/kernel/crt0.s # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/smp/core.inc -include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/smp/core-hw.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/exynos5/core.inc b/repos/base-hw/lib/mk/spec/exynos5/core-hw.inc similarity index 82% rename from repos/base-hw/lib/mk/spec/exynos5/core.inc rename to repos/base-hw/lib/mk/spec/exynos5/core-hw.inc index 640871168..2b3d53167 100644 --- a/repos/base-hw/lib/mk/spec/exynos5/core.inc +++ b/repos/base-hw/lib/mk/spec/exynos5/core-hw.inc @@ -12,4 +12,4 @@ SRC_CC += spec/exynos5/platform_support.cc SRC_CC += spec/exynos5/cpu.cc # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/cortex_a15/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/cortex_a15/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/imx53/core-trustzone.inc b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone.inc similarity index 84% rename from repos/base-hw/lib/mk/spec/imx53/core-trustzone.inc rename to repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone.inc index b47d45e10..b0721fb4f 100644 --- a/repos/base-hw/lib/mk/spec/imx53/core-trustzone.inc +++ b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone.inc @@ -10,4 +10,4 @@ INC_DIR += $(REP_DIR)/src/core/include/spec/imx53 INC_DIR += $(REP_DIR)/src/core/include/spec/imx # include less specific configuration -include $(REP_DIR)/lib/mk/spec/cortex_a8/core.inc +include $(REP_DIR)/lib/mk/spec/cortex_a8/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/imx53/core-trustzone_off.mk b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_off.mk similarity index 76% rename from repos/base-hw/lib/mk/spec/imx53/core-trustzone_off.mk rename to repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_off.mk index 0838f978b..ea4f1ee17 100644 --- a/repos/base-hw/lib/mk/spec/imx53/core-trustzone_off.mk +++ b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_off.mk @@ -12,5 +12,5 @@ SRC_CC += spec/imx53/pic.cc SRC_CC += platform_services.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/imx53/core-trustzone.inc -include $(REP_DIR)/lib/mk/core-trustzone.inc +include $(REP_DIR)/lib/mk/spec/imx53/core-hw-trustzone.inc +include $(REP_DIR)/lib/mk/core-hw-trustzone.inc diff --git a/repos/base-hw/lib/mk/spec/imx53/core-trustzone_on.inc b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_on.inc similarity index 87% rename from repos/base-hw/lib/mk/spec/imx53/core-trustzone_on.inc rename to repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_on.inc index 6f34c7830..03fcd6f61 100644 --- a/repos/base-hw/lib/mk/spec/imx53/core-trustzone_on.inc +++ b/repos/base-hw/lib/mk/spec/imx53/core-hw-trustzone_on.inc @@ -22,5 +22,5 @@ SRC_CC += spec/arm_v7/trustzone/vm_session_component.cc SRC_S += spec/arm_v7/trustzone/mode_transition.s # include less specific configuration -include $(REP_DIR)/lib/mk/spec/imx53/core-trustzone.inc -include $(REP_DIR)/lib/mk/core-trustzone.inc +include $(REP_DIR)/lib/mk/spec/imx53/core-hw-trustzone.inc +include $(REP_DIR)/lib/mk/core-hw-trustzone.inc diff --git a/repos/base-hw/lib/mk/spec/imx53/core-hw.mk b/repos/base-hw/lib/mk/spec/imx53/core-hw.mk new file mode 100644 index 000000000..c198188b4 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/imx53/core-hw.mk @@ -0,0 +1 @@ +LIBS += core-hw-trustzone diff --git a/repos/base-hw/lib/mk/spec/imx53/core.mk b/repos/base-hw/lib/mk/spec/imx53/core.mk deleted file mode 100644 index 60d13212b..000000000 --- a/repos/base-hw/lib/mk/spec/imx53/core.mk +++ /dev/null @@ -1,9 +0,0 @@ -# -# \brief Build config for Genodes core process -# \author Stefan Kalkowski -# \author Martin Stein -# \date 2012-10-24 -# - -# add library dependencies -LIBS += core-trustzone diff --git a/repos/base-hw/lib/mk/spec/imx53_qsb/core-trustzone_on.mk b/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw-trustzone_on.mk similarity index 79% rename from repos/base-hw/lib/mk/spec/imx53_qsb/core-trustzone_on.mk rename to repos/base-hw/lib/mk/spec/imx53_qsb/core-hw-trustzone_on.mk index 427062ae9..75b71130d 100644 --- a/repos/base-hw/lib/mk/spec/imx53_qsb/core-trustzone_on.mk +++ b/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw-trustzone_on.mk @@ -8,4 +8,4 @@ INC_DIR += $(REP_DIR)/src/core/include/spec/imx53_qsb/trustzone # include less specific configuration -include $(REP_DIR)/lib/mk/spec/imx53/core-trustzone_on.inc +include $(REP_DIR)/lib/mk/spec/imx53/core-hw-trustzone_on.inc diff --git a/repos/base-hw/lib/mk/spec/imx6/core.mk b/repos/base-hw/lib/mk/spec/imx6/core-hw.mk similarity index 88% rename from repos/base-hw/lib/mk/spec/imx6/core.mk rename to repos/base-hw/lib/mk/spec/imx6/core-hw.mk index 65fae17eb..9c965c80d 100644 --- a/repos/base-hw/lib/mk/spec/imx6/core.mk +++ b/repos/base-hw/lib/mk/spec/imx6/core-hw.mk @@ -15,4 +15,4 @@ SRC_CC += platform_services.cc SRC_CC += spec/imx6/platform_support.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/cortex_a9/core.inc +include $(REP_DIR)/lib/mk/spec/cortex_a9/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/muen/base-hw-common.mk b/repos/base-hw/lib/mk/spec/muen/base-hw-common.mk index 39a194160..2fb31c3c4 100644 --- a/repos/base-hw/lib/mk/spec/muen/base-hw-common.mk +++ b/repos/base-hw/lib/mk/spec/muen/base-hw-common.mk @@ -2,4 +2,4 @@ SRC_CC += sinfo.cc vpath %.cc $(REP_DIR)/src/base/muen -include $(REP_DIR)/lib/mk/spec/x86_64/base-hw-common.mk +include $(REP_DIR)/lib/mk/base-hw-common.mk diff --git a/repos/base-hw/lib/mk/spec/muen/core-hw-muen.mk b/repos/base-hw/lib/mk/spec/muen/core-hw-muen.mk new file mode 100644 index 000000000..01afde646 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/muen/core-hw-muen.mk @@ -0,0 +1 @@ +LIBS += core-hw-muen_on diff --git a/repos/base-hw/lib/mk/spec/muen/core-muen.mk b/repos/base-hw/lib/mk/spec/muen/core-muen.mk deleted file mode 100644 index bb4695faa..000000000 --- a/repos/base-hw/lib/mk/spec/muen/core-muen.mk +++ /dev/null @@ -1,8 +0,0 @@ -# -# \brief Build config for parts of core that depend on Muen status -# \author Stefan Kalkowski -# \date 2015-06-02 -# - -# add library dependencies -LIBS += core-muen_on diff --git a/repos/base-hw/lib/mk/spec/odroid_xu/core.mk b/repos/base-hw/lib/mk/spec/odroid_xu/core-hw.mk similarity index 86% rename from repos/base-hw/lib/mk/spec/odroid_xu/core.mk rename to repos/base-hw/lib/mk/spec/odroid_xu/core-hw.mk index 13bb65316..ece403130 100644 --- a/repos/base-hw/lib/mk/spec/odroid_xu/core.mk +++ b/repos/base-hw/lib/mk/spec/odroid_xu/core-hw.mk @@ -12,4 +12,4 @@ SRC_CC += kernel/vm_thread_off.cc SRC_CC += platform_services.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/exynos5/core.inc +include $(REP_DIR)/lib/mk/spec/exynos5/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/panda/core.mk b/repos/base-hw/lib/mk/spec/panda/core-hw.mk similarity index 87% rename from repos/base-hw/lib/mk/spec/panda/core.mk rename to repos/base-hw/lib/mk/spec/panda/core-hw.mk index 7fcd27682..5b2577241 100644 --- a/repos/base-hw/lib/mk/spec/panda/core.mk +++ b/repos/base-hw/lib/mk/spec/panda/core-hw.mk @@ -14,4 +14,4 @@ SRC_CC += platform_services.cc SRC_CC += spec/panda/platform_support.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/cortex_a9/core.inc +include $(REP_DIR)/lib/mk/spec/cortex_a9/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/pbxa9/core.mk b/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk similarity index 88% rename from repos/base-hw/lib/mk/spec/pbxa9/core.mk rename to repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk index 8327b6523..0bbc98b34 100644 --- a/repos/base-hw/lib/mk/spec/pbxa9/core.mk +++ b/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk @@ -15,4 +15,4 @@ SRC_CC += spec/pbxa9/platform_support.cc SRC_CC += spec/pbxa9/board.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/cortex_a9/core.inc +include $(REP_DIR)/lib/mk/spec/cortex_a9/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/perf_counter/core-hw-perf_counter.mk b/repos/base-hw/lib/mk/spec/perf_counter/core-hw-perf_counter.mk new file mode 100644 index 000000000..c6c31d61e --- /dev/null +++ b/repos/base-hw/lib/mk/spec/perf_counter/core-hw-perf_counter.mk @@ -0,0 +1 @@ +LIBS += core-hw-perf_counter_on diff --git a/repos/base-hw/lib/mk/spec/perf_counter/core-perf_counter.mk b/repos/base-hw/lib/mk/spec/perf_counter/core-perf_counter.mk deleted file mode 100644 index b0aafb005..000000000 --- a/repos/base-hw/lib/mk/spec/perf_counter/core-perf_counter.mk +++ /dev/null @@ -1,8 +0,0 @@ -# -# \brief Core build-config that depends on performance-counter status -# \author Josef Soentgen -# \date 2013-09-26 -# - -# add library dependencies -LIBS += core-perf_counter_on diff --git a/repos/base-hw/lib/mk/spec/riscv/core.mk b/repos/base-hw/lib/mk/spec/riscv/core-hw.mk similarity index 94% rename from repos/base-hw/lib/mk/spec/riscv/core.mk rename to repos/base-hw/lib/mk/spec/riscv/core-hw.mk index ecd15799c..60583069b 100644 --- a/repos/base-hw/lib/mk/spec/riscv/core.mk +++ b/repos/base-hw/lib/mk/spec/riscv/core-hw.mk @@ -20,4 +20,4 @@ SRC_S += spec/riscv/crt0.s # include less specific configuration -include $(REP_DIR)/lib/mk/core.inc +include $(REP_DIR)/lib/mk/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/riscv/startup.mk b/repos/base-hw/lib/mk/spec/riscv/startup-hw.mk similarity index 100% rename from repos/base-hw/lib/mk/spec/riscv/startup.mk rename to repos/base-hw/lib/mk/spec/riscv/startup-hw.mk diff --git a/repos/base-hw/lib/mk/spec/rpi/core.mk b/repos/base-hw/lib/mk/spec/rpi/core-hw.mk similarity index 87% rename from repos/base-hw/lib/mk/spec/rpi/core.mk rename to repos/base-hw/lib/mk/spec/rpi/core-hw.mk index 1abbf745e..aed02ed36 100644 --- a/repos/base-hw/lib/mk/spec/rpi/core.mk +++ b/repos/base-hw/lib/mk/spec/rpi/core-hw.mk @@ -13,4 +13,4 @@ SRC_CC += platform_services.cc SRC_CC += spec/rpi/platform_support.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/arm_v6/core.inc +include $(REP_DIR)/lib/mk/spec/arm_v6/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/smp/core.inc b/repos/base-hw/lib/mk/spec/smp/core-hw.inc similarity index 100% rename from repos/base-hw/lib/mk/spec/smp/core.inc rename to repos/base-hw/lib/mk/spec/smp/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/trustzone/core-hw-trustzone.mk b/repos/base-hw/lib/mk/spec/trustzone/core-hw-trustzone.mk new file mode 100644 index 000000000..d38613728 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/trustzone/core-hw-trustzone.mk @@ -0,0 +1 @@ +LIBS += core-hw-trustzone_on diff --git a/repos/base-hw/lib/mk/spec/usb_armory/core-trustzone_on.mk b/repos/base-hw/lib/mk/spec/usb_armory/core-hw-trustzone_on.mk similarity index 79% rename from repos/base-hw/lib/mk/spec/usb_armory/core-trustzone_on.mk rename to repos/base-hw/lib/mk/spec/usb_armory/core-hw-trustzone_on.mk index b0c90b1b3..5a3d407e5 100644 --- a/repos/base-hw/lib/mk/spec/usb_armory/core-trustzone_on.mk +++ b/repos/base-hw/lib/mk/spec/usb_armory/core-hw-trustzone_on.mk @@ -8,4 +8,4 @@ INC_DIR += $(REP_DIR)/src/core/include/spec/usb_armory # include less specific configuration -include $(REP_DIR)/lib/mk/spec/imx53/core-trustzone_on.inc +include $(REP_DIR)/lib/mk/spec/imx53/core-hw-trustzone_on.inc diff --git a/repos/base-hw/lib/mk/spec/x86_64/core-muen_off.mk b/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_off.mk similarity index 90% rename from repos/base-hw/lib/mk/spec/x86_64/core-muen_off.mk rename to repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_off.mk index 0ca30a7c6..ec2d80a0e 100644 --- a/repos/base-hw/lib/mk/spec/x86_64/core-muen_off.mk +++ b/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_off.mk @@ -16,4 +16,4 @@ SRC_CC += spec/x86_64/platform_support.cc SRC_CC += spec/x86/platform_services.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/x86_64/core.inc +include $(REP_DIR)/lib/mk/spec/x86_64/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/x86_64/core-muen_on.mk b/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_on.mk similarity index 92% rename from repos/base-hw/lib/mk/spec/x86_64/core-muen_on.mk rename to repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_on.mk index 3f29ce81b..a33e7ced1 100644 --- a/repos/base-hw/lib/mk/spec/x86_64/core-muen_on.mk +++ b/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen_on.mk @@ -21,4 +21,4 @@ SRC_CC += spec/x86_64/muen/platform_services.cc SRC_CC += kernel/vm_thread_on.cc # include less specific configuration -include $(REP_DIR)/lib/mk/spec/x86_64/core.inc +include $(REP_DIR)/lib/mk/spec/x86_64/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/x86_64/core.inc b/repos/base-hw/lib/mk/spec/x86_64/core-hw.inc similarity index 94% rename from repos/base-hw/lib/mk/spec/x86_64/core.inc rename to repos/base-hw/lib/mk/spec/x86_64/core-hw.inc index b8dd78cac..fa6638b9a 100644 --- a/repos/base-hw/lib/mk/spec/x86_64/core.inc +++ b/repos/base-hw/lib/mk/spec/x86_64/core-hw.inc @@ -30,4 +30,4 @@ SRC_CC += spec/x86_64/platform_support_common.cc SRC_CC += spec/x86_64/tss.cc # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/x86_64/core.mk b/repos/base-hw/lib/mk/spec/x86_64/core-hw.mk similarity index 82% rename from repos/base-hw/lib/mk/spec/x86_64/core.mk rename to repos/base-hw/lib/mk/spec/x86_64/core-hw.mk index 711d294fc..b3855903f 100644 --- a/repos/base-hw/lib/mk/spec/x86_64/core.mk +++ b/repos/base-hw/lib/mk/spec/x86_64/core-hw.mk @@ -4,4 +4,4 @@ # \date 2015-06-02 # -LIBS += core-muen +LIBS += core-hw-muen diff --git a/repos/base-hw/lib/mk/spec/x86_64/startup-hw.mk b/repos/base-hw/lib/mk/spec/x86_64/startup-hw.mk new file mode 100644 index 000000000..94807e215 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/x86_64/startup-hw.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/x86_64/startup.inc diff --git a/repos/base-hw/lib/mk/spec/zynq/core.inc b/repos/base-hw/lib/mk/spec/zynq/core-hw.inc similarity index 82% rename from repos/base-hw/lib/mk/spec/zynq/core.inc rename to repos/base-hw/lib/mk/spec/zynq/core-hw.inc index ccd0a0abc..bf8b7f653 100644 --- a/repos/base-hw/lib/mk/spec/zynq/core.inc +++ b/repos/base-hw/lib/mk/spec/zynq/core-hw.inc @@ -12,4 +12,4 @@ SRC_CC += platform_services.cc SRC_CC += spec/zynq/platform_support.cc # include less specific configuration -include $(BASE_DIR)/../base-hw/lib/mk/spec/cortex_a9/core.inc +include $(BASE_DIR)/../base-hw/lib/mk/spec/cortex_a9/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/zynq_qemu/core.mk b/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk similarity index 85% rename from repos/base-hw/lib/mk/spec/zynq_qemu/core.mk rename to repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk index 247268b3f..7402b8868 100644 --- a/repos/base-hw/lib/mk/spec/zynq_qemu/core.mk +++ b/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk @@ -9,4 +9,4 @@ INC_DIR += $(REP_DIR)/src/core/include/spec/xilinx_uartps_0 INC_DIR += $(REP_DIR)/src/core/include/spec/zynq_qemu # include less specific configuration -include $(REP_DIR)/lib/mk/spec/zynq/core.inc +include $(REP_DIR)/lib/mk/spec/zynq/core-hw.inc diff --git a/repos/base-hw/src/core/hw/target.mk b/repos/base-hw/src/core/hw/target.mk new file mode 100644 index 000000000..a96f38c03 --- /dev/null +++ b/repos/base-hw/src/core/hw/target.mk @@ -0,0 +1,3 @@ +LIBS = core-hw + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-linux/etc/specs.conf b/repos/base-linux/etc/specs.conf index c5cb82c97..e6290e022 100644 --- a/repos/base-linux/etc/specs.conf +++ b/repos/base-linux/etc/specs.conf @@ -1,30 +1,23 @@ -# -# Description of build platform -# + +SPECS += genode linux sdl # -# If you want to build the Linux-specific Genode -# binaries, use this config option. +# Detect host CPU architecture # -ifeq ($(shell uname -m),x86_64) -SPECS ?= genode linux_x86_64 sdl -else -ifeq ($(shell uname -m),armv6l) -SPECS ?= genode linux_arm sdl arm_v6 -else -ifeq ($(shell uname -m),armv7l) -SPECS ?= genode linux_arm sdl arm_v7a -else -SPECS ?= genode linux_x86_32 sdl -endif -endif +UNAME_MACHINE := $(shell uname -m) + +ifeq ($(UNAME_MACHINE),i686) +SPECS += x86_32 endif -# -# If you want to build for the host platform, -# use the following config option. -# You need to specify '32bit' additionally to 'host' -# to include the 32bit-specific Genode include path -# containing integer definitions. -# -#SPECS ?= host 32bit +ifeq ($(UNAME_MACHINE),x86_64) +SPECS += x86_64 +endif + +ifeq ($(UNAME_MACHINE),armv6l) +SPECS += arm_v6 +endif + +ifeq ($(UNAME_MACHINE),armv7l) +SPECS += arm_v7a +endif diff --git a/repos/base-linux/lib/import/import-lx_hybrid.mk b/repos/base-linux/lib/import/import-lx_hybrid.mk index 860ba8e3f..b6a67756b 100644 --- a/repos/base-linux/lib/import/import-lx_hybrid.mk +++ b/repos/base-linux/lib/import/import-lx_hybrid.mk @@ -1,7 +1,7 @@ # # Make Linux headers of the host platform available to the program # -include $(call select_from_repositories,lib/import/import-syscall.mk) +include $(call select_from_repositories,lib/import/import-syscall-linux.mk) # # Manually supply all library search paths of the host compiler to our tool @@ -65,31 +65,37 @@ endif # # Use the host's startup codes, linker script, and dynamic linker # -ifneq ($(filter hardening_tool_chain, $(SPECS)),) -EXT_OBJECTS += $(shell cc $(CC_MARCH) -print-file-name=Scrt1.o) -EXT_OBJECTS += $(shell cc $(CC_MARCH) -print-file-name=crti.o) -EXT_OBJECTS += $(shell $(CUSTOM_CC) $(CC_MARCH) -print-file-name=crtbeginS.o) -EXT_OBJECTS += $(shell $(CUSTOM_CC) $(CC_MARCH) -print-file-name=crtendS.o) -else +LD_TEXT_ADDR ?= +LD_SCRIPT_STATIC ?= + EXT_OBJECTS += $(shell cc $(CC_MARCH) -print-file-name=crt1.o) EXT_OBJECTS += $(shell cc $(CC_MARCH) -print-file-name=crti.o) EXT_OBJECTS += $(shell $(CUSTOM_CC) $(CC_MARCH) -print-file-name=crtbegin.o) EXT_OBJECTS += $(shell $(CUSTOM_CC) $(CC_MARCH) -print-file-name=crtend.o) -endif EXT_OBJECTS += $(shell cc $(CC_MARCH) -print-file-name=crtn.o) LX_LIBS_OPT += -lgcc -lgcc_s -lsupc++ -lc -lpthread USE_HOST_LD_SCRIPT = yes +# +# We need to manually add the default linker script on the command line in case +# of standard library use. Otherwise, we were not able to extend it by the +# stack area section. +# ifeq (x86_64,$(findstring x86_64,$(SPECS))) -CXX_LINK_OPT += -Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2 -else -ifeq (arm,$(findstring arm,$(SPECS))) -CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.3 -else -CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.2 +CXX_LINK_OPT += -Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2 +LD_SCRIPT_DEFAULT = ldscripts/elf_x86_64.xc endif + +ifeq (x86_32,$(findstring x86_32,$(SPECS))) +CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.2 +LD_SCRIPT_DEFAULT = ldscripts/elf_i386.xc +endif + +ifeq (arm,$(findstring arm,$(SPECS))) +CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.3 +LD_SCRIPT_STATIC = ldscripts/armelf_linux_eabi.xc endif # diff --git a/repos/base-linux/lib/import/import-syscall.mk b/repos/base-linux/lib/import/import-syscall-linux.mk similarity index 100% rename from repos/base-linux/lib/import/import-syscall.mk rename to repos/base-linux/lib/import/import-syscall-linux.mk diff --git a/repos/base-linux/lib/mk/base-linux-common.mk b/repos/base-linux/lib/mk/base-linux-common.mk index c45aaddcf..1227f67c2 100644 --- a/repos/base-linux/lib/mk/base-linux-common.mk +++ b/repos/base-linux/lib/mk/base-linux-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += syscall +LIBS += syscall-linux SRC_CC += region_map_mmap.cc debug.cc SRC_CC += signal_submit.cc diff --git a/repos/base-linux/lib/mk/base-linux.inc b/repos/base-linux/lib/mk/base-linux.inc index 6baebafa4..d68b3fea0 100644 --- a/repos/base-linux/lib/mk/base-linux.inc +++ b/repos/base-linux/lib/mk/base-linux.inc @@ -7,4 +7,4 @@ include $(BASE_DIR)/lib/mk/base.inc SRC_CC += platform_env.cc -LIBS += syscall cxx +LIBS += syscall-linux cxx diff --git a/repos/base-linux/lib/mk/base-linux.mk b/repos/base-linux/lib/mk/base-linux.mk index a1767a1a5..f020b24ae 100644 --- a/repos/base-linux/lib/mk/base-linux.mk +++ b/repos/base-linux/lib/mk/base-linux.mk @@ -6,7 +6,7 @@ include $(REP_DIR)/lib/mk/base-linux.inc -LIBS += startup base-linux-common +LIBS += startup-linux base-linux-common SRC_CC += thread.cc thread_myself.cc thread_linux.cc SRC_CC += capability_space.cc capability_raw.cc SRC_CC += attach_stack_area.cc diff --git a/repos/base-linux/lib/mk/spec/arm/startup-linux.mk b/repos/base-linux/lib/mk/spec/arm/startup-linux.mk new file mode 100644 index 000000000..6123496d8 --- /dev/null +++ b/repos/base-linux/lib/mk/spec/arm/startup-linux.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/arm/startup.inc diff --git a/repos/base-linux/lib/mk/spec/arm/syscall.mk b/repos/base-linux/lib/mk/spec/arm/syscall-linux.mk similarity index 100% rename from repos/base-linux/lib/mk/spec/arm/syscall.mk rename to repos/base-linux/lib/mk/spec/arm/syscall-linux.mk diff --git a/repos/base-linux/lib/mk/spec/x86_32/startup-linux.mk b/repos/base-linux/lib/mk/spec/x86_32/startup-linux.mk new file mode 100644 index 000000000..03c229de2 --- /dev/null +++ b/repos/base-linux/lib/mk/spec/x86_32/startup-linux.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base-linux/lib/mk/spec/x86_32/syscall.mk b/repos/base-linux/lib/mk/spec/x86_32/syscall-linux.mk similarity index 100% rename from repos/base-linux/lib/mk/spec/x86_32/syscall.mk rename to repos/base-linux/lib/mk/spec/x86_32/syscall-linux.mk diff --git a/repos/base-linux/lib/mk/spec/x86_64/startup-linux.mk b/repos/base-linux/lib/mk/spec/x86_64/startup-linux.mk new file mode 100644 index 000000000..94807e215 --- /dev/null +++ b/repos/base-linux/lib/mk/spec/x86_64/startup-linux.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/x86_64/startup.inc diff --git a/repos/base-linux/lib/mk/spec/x86_64/syscall.mk b/repos/base-linux/lib/mk/spec/x86_64/syscall-linux.mk similarity index 100% rename from repos/base-linux/lib/mk/spec/x86_64/syscall.mk rename to repos/base-linux/lib/mk/spec/x86_64/syscall-linux.mk diff --git a/repos/base-linux/mk/spec/linux.mk b/repos/base-linux/mk/spec/linux.mk deleted file mode 100644 index d920aab7a..000000000 --- a/repos/base-linux/mk/spec/linux.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# Specifics for the Linux-specific Genode components -# - -# -# Startup code to be used when building a program and linker script that is -# specific for Linux. We also reserve the stack area via a segment in -# the program under Linux to prevent clashes with vdso. -# -ifneq ($(USE_HOST_LD_SCRIPT),yes) -LD_TEXT_ADDR ?= 0x01000000 -LD_SCRIPT_STATIC = $(call select_from_repositories,src/ld/genode.ld) \ - $(call select_from_repositories,src/ld/stack_area.nostdlib.ld) -else -LD_TEXT_ADDR ?= -LD_SCRIPT_STATIC ?= -endif - -ifneq ($(filter hardening_tool_chain, $(SPECS)),) -CC_OPT += -fPIC -endif diff --git a/repos/base-linux/mk/spec/linux_arm.mk b/repos/base-linux/mk/spec/linux_arm.mk deleted file mode 100644 index 262db0186..000000000 --- a/repos/base-linux/mk/spec/linux_arm.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# Specifics for Linux on ARM -# -SPECS += linux arm - -ifeq ($(shell gcc -dumpmachine),arm-linux-gnueabihf) -CC_MARCH += -mfloat-abi=hard -endif - -# -# We need to manually add the default linker script on the command line in case -# of standard library use. Otherwise, we were not able to extend it by the -# stack area section. -# -ifeq ($(USE_HOST_LD_SCRIPT),yes) -LD_SCRIPT_STATIC = ldscripts/armelf_linux_eabi.xc -endif - -# -# Include less-specific configuration -# -include $(call select_from_repositories,mk/spec/arm.mk) -include $(call select_from_repositories,mk/spec/linux.mk) diff --git a/repos/base-linux/mk/spec/linux_x86_32.mk b/repos/base-linux/mk/spec/linux_x86_32.mk deleted file mode 100644 index dbea24d8a..000000000 --- a/repos/base-linux/mk/spec/linux_x86_32.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Specifics for Linux on 32-bit x86 -# -SPECS += linux x86_32 - -# -# We need to manually add the default linker script on the command line in case -# of standard library use. Otherwise, we were not able to extend it by the -# stack area section. -# -ifeq ($(USE_HOST_LD_SCRIPT),yes) -LD_SCRIPT_DEFAULT = ldscripts/elf_i386.xc -endif - -# -# Include less-specific configuration -# -include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/linux.mk) diff --git a/repos/base-linux/mk/spec/linux_x86_64.mk b/repos/base-linux/mk/spec/linux_x86_64.mk deleted file mode 100644 index b9f5cdfc0..000000000 --- a/repos/base-linux/mk/spec/linux_x86_64.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Specifics for Linux on 64-bit x86 -# -SPECS += linux x86_64 - -# -# We need to manually add the default linker script on the command line in case -# of standard library use. Otherwise, we were not able to extend it by the -# stack area section. -# -ifeq ($(USE_HOST_LD_SCRIPT),yes) -LD_SCRIPT_DEFAULT = ldscripts/elf_x86_64.xc -endif - -# -# Include less-specific configuration -# -include $(call select_from_repositories,mk/spec/x86_64.mk) -include $(call select_from_repositories,mk/spec/linux.mk) - diff --git a/repos/base-linux/src/core/target.mk b/repos/base-linux/src/core/linux/target.mk similarity index 87% rename from repos/base-linux/src/core/target.mk rename to repos/base-linux/src/core/linux/target.mk index 0234ffd24..6e0985bda 100644 --- a/repos/base-linux/src/core/target.mk +++ b/repos/base-linux/src/core/linux/target.mk @@ -1,6 +1,6 @@ -TARGET = core +TARGET = core-linux REQUIRES = linux -LIBS = cxx base-linux-common syscall startup +LIBS = cxx base-linux-common syscall-linux startup-linux GEN_CORE_DIR = $(BASE_DIR)/src/core @@ -38,7 +38,9 @@ INC_DIR += $(REP_DIR)/src/core/include \ $(REP_DIR)/src/include \ $(BASE_DIR)/src/include -HOST_INC_DIR += /usr/include +LD_TEXT_ADDR ?= 0x01000000 +LD_SCRIPT_STATIC = $(call select_from_repositories,src/ld/genode.ld) \ + $(call select_from_repositories,src/ld/stack_area.nostdlib.ld) include $(GEN_CORE_DIR)/version.inc @@ -59,4 +61,4 @@ vpath thread.cc $(BASE_DIR)/src/lib/base vpath thread_myself.cc $(BASE_DIR)/src/lib/base vpath trace.cc $(BASE_DIR)/src/lib/base vpath env_reinit.cc $(REP_DIR)/src/lib/base -vpath %.cc $(PRG_DIR) +vpath %.cc $(REP_DIR)/src/core diff --git a/repos/base-nova/etc/specs.conf b/repos/base-nova/etc/specs.conf index a1da9ef86..07749c890 100644 --- a/repos/base-nova/etc/specs.conf +++ b/repos/base-nova/etc/specs.conf @@ -1,5 +1 @@ -# -# Description of build platform -# - -SPECS ?= genode nova_x86_32 +SPECS += genode nova vesa acpi pci ps2 framebuffer diff --git a/repos/base-nova/lib/mk/base-nova-common.mk b/repos/base-nova/lib/mk/base-nova-common.mk index 3656e3a9e..29a55a50b 100644 --- a/repos/base-nova/lib/mk/base-nova-common.mk +++ b/repos/base-nova/lib/mk/base-nova-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += startup +LIBS += startup-nova SRC_CC += signal_submit.cc SRC_CC += thread.cc thread_myself.cc diff --git a/repos/base-nova/lib/mk/core.inc b/repos/base-nova/lib/mk/core-nova.inc similarity index 100% rename from repos/base-nova/lib/mk/core.inc rename to repos/base-nova/lib/mk/core-nova.inc diff --git a/repos/base-nova/lib/mk/spec/x86_32/core-nova.mk b/repos/base-nova/lib/mk/spec/x86_32/core-nova.mk new file mode 100644 index 000000000..7c08a9d1e --- /dev/null +++ b/repos/base-nova/lib/mk/spec/x86_32/core-nova.mk @@ -0,0 +1,3 @@ +SRC_CC += spec/x86_32/pager.cc + +include $(REP_DIR)/lib/mk/core-nova.inc diff --git a/repos/base-nova/lib/mk/spec/x86_32/core.mk b/repos/base-nova/lib/mk/spec/x86_32/core.mk deleted file mode 100644 index 123786d51..000000000 --- a/repos/base-nova/lib/mk/spec/x86_32/core.mk +++ /dev/null @@ -1,3 +0,0 @@ -SRC_CC += spec/x86_32/pager.cc - -include $(REP_DIR)/lib/mk/core.inc diff --git a/repos/base-nova/lib/mk/spec/x86_32/startup-nova.mk b/repos/base-nova/lib/mk/spec/x86_32/startup-nova.mk new file mode 100644 index 000000000..03c229de2 --- /dev/null +++ b/repos/base-nova/lib/mk/spec/x86_32/startup-nova.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base-nova/lib/mk/spec/x86_64/core-nova.mk b/repos/base-nova/lib/mk/spec/x86_64/core-nova.mk new file mode 100644 index 000000000..0424e85c4 --- /dev/null +++ b/repos/base-nova/lib/mk/spec/x86_64/core-nova.mk @@ -0,0 +1,3 @@ +SRC_CC += spec/x86_64/pager.cc + +include $(REP_DIR)/lib/mk/core-nova.inc diff --git a/repos/base-nova/lib/mk/spec/x86_64/core.mk b/repos/base-nova/lib/mk/spec/x86_64/core.mk deleted file mode 100644 index 9943890cd..000000000 --- a/repos/base-nova/lib/mk/spec/x86_64/core.mk +++ /dev/null @@ -1,3 +0,0 @@ -SRC_CC += spec/x86_64/pager.cc - -include $(REP_DIR)/lib/mk/core.inc diff --git a/repos/base-nova/lib/mk/spec/x86_64/startup-nova.mk b/repos/base-nova/lib/mk/spec/x86_64/startup-nova.mk new file mode 100644 index 000000000..94807e215 --- /dev/null +++ b/repos/base-nova/lib/mk/spec/x86_64/startup-nova.mk @@ -0,0 +1 @@ +include $(BASE_DIR)/lib/mk/spec/x86_64/startup.inc diff --git a/repos/base-nova/mk/spec/nova.mk b/repos/base-nova/mk/spec/nova.mk deleted file mode 100644 index c8547a420..000000000 --- a/repos/base-nova/mk/spec/nova.mk +++ /dev/null @@ -1,14 +0,0 @@ -# -# Specifics for the NOVA kernel API -# - -SPECS += nova -SPECS += pci ps2 vesa framebuffer - -# -# We would normally have to do this only in the kernel lib. We do it in -# general nonetheless to ensure that the kernel port, if missing, is added to -# the missing-ports list of the first build stage. The kernel lib is evaluated -# only at a later build stage. -# -NOVA_SRC_DIR := $(call select_from_ports,nova)/src/kernel/nova diff --git a/repos/base-nova/mk/spec/nova_x86_32.mk b/repos/base-nova/mk/spec/nova_x86_32.mk index 6dbadf00c..17b2b520b 100644 --- a/repos/base-nova/mk/spec/nova_x86_32.mk +++ b/repos/base-nova/mk/spec/nova_x86_32.mk @@ -1,8 +1,4 @@ -# -# Specifics for the NOVA kernel API x86 32 bit -# - -SPECS += nova x86_32 +# \deprecated +SPECS += x86_32 include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/nova.mk) diff --git a/repos/base-nova/mk/spec/nova_x86_64.mk b/repos/base-nova/mk/spec/nova_x86_64.mk index 7403c8e41..4aa51fa4e 100644 --- a/repos/base-nova/mk/spec/nova_x86_64.mk +++ b/repos/base-nova/mk/spec/nova_x86_64.mk @@ -1,8 +1,4 @@ -# -# Specifics for the NOVA kernel API x86 64 bit -# - -SPECS += nova x86_64 +# \deprecated +SPECS += x86_64 include $(call select_from_repositories,mk/spec/x86_64.mk) -include $(call select_from_repositories,mk/spec/nova.mk) diff --git a/repos/base-nova/src/core/nova/target.mk b/repos/base-nova/src/core/nova/target.mk new file mode 100644 index 000000000..7af8cfc60 --- /dev/null +++ b/repos/base-nova/src/core/nova/target.mk @@ -0,0 +1,3 @@ +LIBS = core-nova + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-nova/src/kernel/target.mk b/repos/base-nova/src/kernel/nova/target.mk similarity index 97% rename from repos/base-nova/src/kernel/target.mk rename to repos/base-nova/src/kernel/nova/target.mk index d078584b3..0b9d41ecb 100644 --- a/repos/base-nova/src/kernel/target.mk +++ b/repos/base-nova/src/kernel/nova/target.mk @@ -3,6 +3,7 @@ include $(call select_from_repositories,mk/spec/nova.mk) TARGET = hypervisor REQUIRES = x86 nova NOVA_BUILD_DIR = $(BUILD_BASE_DIR)/kernel +NOVA_SRC_DIR = $(call select_from_ports,nova)/src/kernel/nova SRC_CC = $(sort $(notdir $(wildcard $(NOVA_SRC_DIR)/src/*.cpp))) SRC_S = $(sort $(notdir $(wildcard $(NOVA_SRC_DIR)/src/*.S))) INC_DIR = $(NOVA_SRC_DIR)/include diff --git a/repos/base-okl4/etc/specs.conf b/repos/base-okl4/etc/specs.conf index 5fa30f2ff..901c175a4 100644 --- a/repos/base-okl4/etc/specs.conf +++ b/repos/base-okl4/etc/specs.conf @@ -1 +1 @@ -SPECS = genode okl4_x86 +SPECS += genode okl4 x86_32 vesa pci ps2 framebuffer diff --git a/repos/base-okl4/lib/import/import-kernel-okl4-include.mk b/repos/base-okl4/lib/import/import-kernel-okl4-include.mk new file mode 100644 index 000000000..a7274d404 --- /dev/null +++ b/repos/base-okl4/lib/import/import-kernel-okl4-include.mk @@ -0,0 +1,3 @@ +OKL4_SRC_DIR := $(call select_from_ports,okl4)/src/kernel/okl4 + +INC_DIR += $(LIB_CACHE_DIR)/kernel-okl4-include/include diff --git a/repos/base-okl4/lib/import/import-syscall-okl4.mk b/repos/base-okl4/lib/import/import-syscall-okl4.mk new file mode 100644 index 000000000..030693d8b --- /dev/null +++ b/repos/base-okl4/lib/import/import-syscall-okl4.mk @@ -0,0 +1,23 @@ +OKL4_DIR = $(call select_from_ports,okl4)/src/kernel/okl4 + +# +# Make sure that symlink modification times are handled correctly. +# Otherwise, the creation of symlinks that depend on their own directory +# behaves like a phony rule. This is because the directory mtime is +# determined by taking the mtimes of containing symlinks into account. +# Hence, all symlinks (except for the youngest) depend on a directory +# with a newer mtime. The make flag -L fixes the problem. Alternatively, +# we could use 'cp' instead of 'ln'. +# +MAKEFLAGS += -L + +# +# OKL4-specific headers +# +INC_DIR += $(LIB_CACHE_DIR)/syscall-okl4/include + +# +# Define maximum number of threads, needed by the OKL4 kernel headers +# +CC_OPT += -DCONFIG_MAX_THREAD_BITS=10 + diff --git a/repos/base-okl4/lib/mk/base-okl4-common.mk b/repos/base-okl4/lib/mk/base-okl4-common.mk index 9d03d7f92..6781caaf0 100644 --- a/repos/base-okl4/lib/mk/base-okl4-common.mk +++ b/repos/base-okl4/lib/mk/base-okl4-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += startup +LIBS += startup-okl4 syscall-okl4 SRC_CC += capability.cc capability_raw.cc SRC_CC += signal_submit.cc diff --git a/repos/base-okl4/lib/mk/base-okl4.mk b/repos/base-okl4/lib/mk/base-okl4.mk index abe953de6..b2b05fccb 100644 --- a/repos/base-okl4/lib/mk/base-okl4.mk +++ b/repos/base-okl4/lib/mk/base-okl4.mk @@ -1,6 +1,6 @@ include $(BASE_DIR)/lib/mk/base.inc -LIBS += base-okl4-common +LIBS += base-okl4-common syscall-okl4 SRC_CC += thread_start.cc SRC_CC += cache.cc SRC_CC += capability_space.cc diff --git a/repos/base-okl4/lib/mk/core.inc b/repos/base-okl4/lib/mk/core-okl4.inc similarity index 97% rename from repos/base-okl4/lib/mk/core.inc rename to repos/base-okl4/lib/mk/core-okl4.inc index 13a6e6662..ccda89f80 100644 --- a/repos/base-okl4/lib/mk/core.inc +++ b/repos/base-okl4/lib/mk/core-okl4.inc @@ -1,6 +1,6 @@ CC_OPT_PIC = -LIBS += boot_info base-okl4-common +LIBS += okl4_boot_info base-okl4-common syscall-okl4 GEN_CORE_DIR = $(BASE_DIR)/src/core diff --git a/repos/base-okl4/lib/mk/kernel.inc b/repos/base-okl4/lib/mk/kernel-okl4-include.inc similarity index 83% rename from repos/base-okl4/lib/mk/kernel.inc rename to repos/base-okl4/lib/mk/kernel-okl4-include.inc index 21495f2e2..a4ed74436 100644 --- a/repos/base-okl4/lib/mk/kernel.inc +++ b/repos/base-okl4/lib/mk/kernel-okl4-include.inc @@ -67,31 +67,33 @@ INC_SYMLINKS += atomic_ops/atomic_ops.h \ l4/macros.h \ l4/types.h -SYMLINK_TARGETS = $(addprefix $(OKL4_BUILD_DIR)/include/,$(INC_SYMLINKS)) +SYMLINK_TARGETS = $(addprefix include/,$(INC_SYMLINKS)) SYMLINK_DIRS = $(sort $(dir $(SYMLINK_TARGETS))) +ifeq ($(called_from_lib_mk),yes) all: $(SYMLINK_TARGETS) +endif $(SYMLINK_TARGETS): $(filter-out $(wildcard $(SYMLINK_DIRS)), $(SYMLINK_DIRS)) $(SYMLINK_DIRS): $(VERBOSE)mkdir -p $@ -$(OKL4_BUILD_DIR)/include/kernel/kdb/%.h: $(OKL4_SRC_DIR)/pistachio/kdb/include/%.h +include/kernel/kdb/%.h: $(OKL4_SRC_DIR)/pistachio/kdb/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/kdb/%.h: $(OKL4_SRC_DIR)/pistachio/kdb/include/%.h +include/kdb/%.h: $(OKL4_SRC_DIR)/pistachio/kdb/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/kernel/%.h: $(OKL4_SRC_DIR)/pistachio/include/%.h +include/kernel/%.h: $(OKL4_SRC_DIR)/pistachio/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/compat/%.h: $(OKL4_SRC_DIR)/libs/compat/include/compat/%.h +include/compat/%.h: $(OKL4_SRC_DIR)/libs/compat/include/compat/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/atomic_ops/%.h: $(OKL4_SRC_DIR)/libs/atomic_ops/include/%.h +include/atomic_ops/%.h: $(OKL4_SRC_DIR)/libs/atomic_ops/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/l4/%.h: $(OKL4_SRC_DIR)/libs/l4/include/%.h +include/l4/%.h: $(OKL4_SRC_DIR)/libs/l4/include/%.h $(VERBOSE)ln -s $< $@ diff --git a/repos/base-okl4/src/kernel/target.inc b/repos/base-okl4/lib/mk/kernel-okl4.inc similarity index 84% rename from repos/base-okl4/src/kernel/target.inc rename to repos/base-okl4/lib/mk/kernel-okl4.inc index 8d7914f40..36fcb1b6a 100644 --- a/repos/base-okl4/src/kernel/target.inc +++ b/repos/base-okl4/lib/mk/kernel-okl4.inc @@ -1,9 +1,5 @@ -TARGET = kernel -OKL4_SRC_DIR = $(call select_from_ports,okl4)/src/kernel/okl4 -OKL4_BUILD_DIR = $(BUILD_BASE_DIR)/kernel -REQUIRES += okl4 -LIBS = kernel -SRC_O += $(addprefix $(OKL4_BUILD_DIR)/asm/,$(addsuffix .o,$(basename $(SRC_SPP)))) +LIBS = kernel-okl4-include +SRC_O += $(addprefix asm/,$(addsuffix .o,$(basename $(SRC_SPP)))) SRC_CC += $(subst $(OKL4_SRC_DIR)/,,$(wildcard $(OKL4_SRC_DIR)/pistachio/kdb/src/*.cc)) \ $(subst $(OKL4_SRC_DIR)/,,$(wildcard $(OKL4_SRC_DIR)/pistachio/src/*.cc)) CONFIG += __API__=v4 \ @@ -44,8 +40,11 @@ CC_OPT += -Wno-write-strings -Wredundant-decls -Wundef \ -fno-asynchronous-unwind-tables \ -finline-limit=99999999 $(addprefix -D,$(CONFIG)) \ "-D__USER__=\"Genode Labs\"" +CC_OPT += -DCONFIG_MAX_THREAD_BITS=10 -CC_WARN = -Wall -Wno-unused-but-set-variable -Wno-uninitialized +CC_OPT_PIC = + +CC_WARN := -Wall -Wno-unused-but-set-variable -Wno-uninitialized # # Enforce building the kernel with -O3. Otherwise, the kernel build would fail @@ -54,13 +53,10 @@ CC_WARN = -Wall -Wno-unused-but-set-variable -Wno-uninitialized # override CC_OLEVEL = -O3 -$(OKL4_BUILD_DIR)/asm/%.o: $(OKL4_SRC_DIR)/%.spp +asm/%.o: $(OKL4_SRC_DIR)/%.spp $(MSG_COMP)$*.spp $(VERBOSE)$(CC) $(CC_MARCH) -x assembler-with-cpp -DASSEMBLY \ $(addprefix -D,$(CONFIG)) \ $(addprefix -I,$(INC_DIR)) -c $< -o $@ -clean cleanall: - $(VERBOSE)rm -rf $(OKL4_BUILD_DIR) - vpath %.cc $(OKL4_SRC_DIR) diff --git a/repos/base-okl4/lib/mk/boot_info.mk b/repos/base-okl4/lib/mk/okl4_boot_info.mk similarity index 65% rename from repos/base-okl4/lib/mk/boot_info.mk rename to repos/base-okl4/lib/mk/okl4_boot_info.mk index cb8f15929..74d9a4b07 100644 --- a/repos/base-okl4/lib/mk/boot_info.mk +++ b/repos/base-okl4/lib/mk/okl4_boot_info.mk @@ -1,5 +1,7 @@ SRC_C = bootinfo.c +LIBS += syscall-okl4 INC_DIR += $(REP_DIR)/src/include/bootinfo/internal CC_WARN = -Wall -Wno-attributes +OKL4_DIR = $(call select_from_ports,okl4)/src/kernel/okl4 vpath bootinfo.c $(OKL4_DIR)/libs/bootinfo/src diff --git a/repos/base-okl4/lib/mk/spec/x86/core.mk b/repos/base-okl4/lib/mk/spec/x86/core-okl4.mk similarity index 89% rename from repos/base-okl4/lib/mk/spec/x86/core.mk rename to repos/base-okl4/lib/mk/spec/x86/core-okl4.mk index 340df644c..02c1cd93a 100644 --- a/repos/base-okl4/lib/mk/spec/x86/core.mk +++ b/repos/base-okl4/lib/mk/spec/x86/core-okl4.mk @@ -1,6 +1,4 @@ -include $(REP_DIR)/lib/mk/core.inc - -REQUIRES += x86 +include $(REP_DIR)/lib/mk/core-okl4.inc SRC_CC += io_port_session_component.cc \ io_port_session_support.cc \ diff --git a/repos/base-okl4/lib/mk/spec/x86/kernel.mk b/repos/base-okl4/lib/mk/spec/x86/kernel-okl4-include.mk similarity index 86% rename from repos/base-okl4/lib/mk/spec/x86/kernel.mk rename to repos/base-okl4/lib/mk/spec/x86/kernel-okl4-include.mk index beb9635a9..23796b206 100644 --- a/repos/base-okl4/lib/mk/spec/x86/kernel.mk +++ b/repos/base-okl4/lib/mk/spec/x86/kernel-okl4-include.mk @@ -1,4 +1,3 @@ -OKL4_BUILD_DIR = $(BUILD_BASE_DIR)/kernel OKL4_SRC_DIR = $(call select_from_ports,okl4)/src/kernel/okl4 ARCH_DIR = $(OKL4_SRC_DIR)/arch/ia32 PLAT_DIR = $(OKL4_SRC_DIR)/platform/pc99 @@ -90,23 +89,23 @@ INC_SYMLINKS = arch/apic.h \ plat/nmi.h \ plat/rtc.h -include $(REP_DIR)/lib/mk/kernel.inc +include $(REP_DIR)/lib/mk/kernel-okl4-include.inc -$(OKL4_BUILD_DIR)/include/atomic_ops/arch/%.h: $(ARCH_DIR)/libs/atomic_ops/include/%.h +include/atomic_ops/arch/%.h: $(ARCH_DIR)/libs/atomic_ops/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/l4/arch/%.h: $(ARCH_DIR)/libs/l4/include/%.h +include/l4/arch/%.h: $(ARCH_DIR)/libs/l4/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/kernel/arch/%.h: $(ARCH_DIR)/pistachio/include/%.h +include/kernel/arch/%.h: $(ARCH_DIR)/pistachio/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/arch/%.h: $(ARCH_DIR)/pistachio/include/%.h +include/arch/%.h: $(ARCH_DIR)/pistachio/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/cpu/%.h: $(ARCH_DIR)/pistachio/cpu/idt/include/%.h +include/cpu/%.h: $(ARCH_DIR)/pistachio/cpu/idt/include/%.h $(VERBOSE)ln -s $< $@ -$(OKL4_BUILD_DIR)/include/plat/%.h: $(PLAT_DIR)/pistachio/include/%.h +include/plat/%.h: $(PLAT_DIR)/pistachio/include/%.h $(VERBOSE)ln -s $< $@ diff --git a/repos/base-okl4/src/kernel/spec/x86/target.mk b/repos/base-okl4/lib/mk/spec/x86/kernel-okl4.mk similarity index 93% rename from repos/base-okl4/src/kernel/spec/x86/target.mk rename to repos/base-okl4/lib/mk/spec/x86/kernel-okl4.mk index dc6bd4b84..bafba103c 100644 --- a/repos/base-okl4/src/kernel/spec/x86/target.mk +++ b/repos/base-okl4/lib/mk/spec/x86/kernel-okl4.mk @@ -1,4 +1,5 @@ -REQUIRES = x86 32bit +OKL4_SRC_DIR = $(call select_from_ports,okl4)/src/kernel/okl4 + CONFIG = ARCH_IA32 \ CONFIG_ARCH_IA32=1 \ CONFIG_CPU_IA32_I686 \ @@ -43,12 +44,12 @@ SRC_SPP = arch/ia32/pistachio/src/trap.spp \ arch/ia32/pistachio/src/gnu/bootmem-elf.spp \ platform/pc99/pistachio/src/smp.spp \ platform/pc99/pistachio/src/startup.spp -LD_TEXT_ADDR = 0xf0100000 +LD_TEXT_ADDR := 0xf0100000 --include $(REP_DIR)/src/kernel/target.inc +-include $(REP_DIR)/lib/mk/kernel-okl4.inc LD_SCRIPT_STATIC = $(REP_DIR)/contrib/generated/x86/linker.ld -INC_DIR = $(OKL4_BUILD_DIR)/include \ +INC_DIR = include \ $(REP_DIR)/contrib/generated/x86 \ $(OKL4_SRC_DIR)/pistachio/include diff --git a/repos/base-okl4/lib/mk/spec/x86/platform.mk b/repos/base-okl4/lib/mk/spec/x86/platform.mk deleted file mode 100644 index 577b721b4..000000000 --- a/repos/base-okl4/lib/mk/spec/x86/platform.mk +++ /dev/null @@ -1,16 +0,0 @@ -# -# Create prerequisites for building Genode for OKL4 -# -# Prior building Genode programs for OKL4, the kernel bindings needed are -# symlinked to the build directory. -# - -# -# Create mirror for architecture-specific L4 header files -# -OKL4_INCLUDE_SYMLINKS = $(BUILD_BASE_DIR)/include/l4/arch - -include $(REP_DIR)/lib/mk/platform.inc - -$(BUILD_BASE_DIR)/include/l4/arch: $(OKL4_DIR)/arch/ia32/libs/l4/include - $(VERBOSE)ln -sf $< $@ diff --git a/repos/base-okl4/lib/mk/spec/x86/syscall-okl4.mk b/repos/base-okl4/lib/mk/spec/x86/syscall-okl4.mk new file mode 100644 index 000000000..62fb830ad --- /dev/null +++ b/repos/base-okl4/lib/mk/spec/x86/syscall-okl4.mk @@ -0,0 +1,9 @@ +# +# Create mirror for architecture-specific L4 header files +# +OKL4_INCLUDE_SYMLINKS = include/l4/arch + +include $(REP_DIR)/lib/mk/syscall-okl4.inc + +include/l4/arch: $(OKL4_DIR)/arch/ia32/libs/l4/include + $(VERBOSE)ln -sf $< $@ diff --git a/repos/base-okl4/lib/mk/spec/x86_32/startup-okl4.mk b/repos/base-okl4/lib/mk/spec/x86_32/startup-okl4.mk new file mode 100644 index 000000000..cca09db60 --- /dev/null +++ b/repos/base-okl4/lib/mk/spec/x86_32/startup-okl4.mk @@ -0,0 +1,3 @@ +LIBS += syscall-okl4 + +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base-okl4/lib/mk/startup-okl4.mk b/repos/base-okl4/lib/mk/startup-okl4.mk new file mode 100644 index 000000000..39e14e764 --- /dev/null +++ b/repos/base-okl4/lib/mk/startup-okl4.mk @@ -0,0 +1,5 @@ +LIBS += syscall-okl4 + +include $(BASE_DIR)/lib/mk/startup.inc + +vpath crt0.s $(BASE_DIR)/src/lib/startup/spec/x86_32 diff --git a/repos/base-okl4/lib/mk/platform.inc b/repos/base-okl4/lib/mk/syscall-okl4.inc similarity index 76% rename from repos/base-okl4/lib/mk/platform.inc rename to repos/base-okl4/lib/mk/syscall-okl4.inc index 32b026a1c..2a3e0cc51 100644 --- a/repos/base-okl4/lib/mk/platform.inc +++ b/repos/base-okl4/lib/mk/syscall-okl4.inc @@ -1,16 +1,11 @@ -# -# Create prerequisites for building Genode for OKL4 -# -# Prior building Genode programs for OKL4, the kernel bindings needed are -# symlinked to the build directory. -# - # # Execute the rules in this file only at the second build stage when we know # about the complete build settings, e.g., the 'CROSS_DEV_PREFIX'. # ifeq ($(called_from_lib_mk),yes) +include $(REP_DIR)/lib/import/import-syscall-okl4.mk + # # Make OKL4 kernel API headers available to the Genode build system # @@ -25,8 +20,8 @@ OKL4_L4_INCLUDES = arch.h cache.h caps.h config.h interrupt.h ipc.h kdebug.h \ pagefault.h procdesc.h profile.h schedule.h security.h \ space.h thread.h time.h types.h utcb.h -OKL4_INCLUDE_SYMLINKS += $(addprefix $(BUILD_BASE_DIR)/include/l4/,$(OKL4_L4_INCLUDES)) -OKL4_INCLUDE_SYMLINKS += $(addprefix $(BUILD_BASE_DIR)/include/,compat bootinfo) +OKL4_INCLUDE_SYMLINKS += $(addprefix include/l4/,$(OKL4_L4_INCLUDES)) +OKL4_INCLUDE_SYMLINKS += $(addprefix include/,compat bootinfo) OKL4_INCLUDE_DIRS = $(sort $(dir $(OKL4_INCLUDE_SYMLINKS))) @@ -45,13 +40,13 @@ $(OKL4_DIR): $(OKL4_DIR)/%: $(filter-out $(wildcard $(OKL4_DIR)), $(OKL4_DIR)) -$(BUILD_BASE_DIR)/include/l4/%.h: $(OKL4_DIR)/libs/l4/include/%.h +include/l4/%.h: $(OKL4_DIR)/libs/l4/include/%.h $(VERBOSE)ln -sf $< $@ -$(BUILD_BASE_DIR)/include/compat: $(OKL4_DIR)/libs/compat/include/compat +include/compat: $(OKL4_DIR)/libs/compat/include/compat $(VERBOSE)ln -sf $< $@ -$(BUILD_BASE_DIR)/include/bootinfo: $(OKL4_DIR)/libs/bootinfo/include +include/bootinfo: $(OKL4_DIR)/libs/bootinfo/include $(VERBOSE)ln -sf $< $@ endif diff --git a/repos/base-okl4/mk/spec/okl4.mk b/repos/base-okl4/mk/spec/okl4.mk deleted file mode 100644 index 0770a7bf0..000000000 --- a/repos/base-okl4/mk/spec/okl4.mk +++ /dev/null @@ -1,53 +0,0 @@ -# -# Specifics for the OKL4 kernel API -# - -# -# Read default and builddir-specific config files -# --include $(call select_from_repositories,etc/okl4.conf) --include $(BUILD_BASE_DIR)/etc/okl4.conf - -# -# If no OKL4 source directory is set, we use the standard contrib directory. -# We do this with ifeq and := as ?= would be done lazy. Forcing the -# evaluation of $(call select_from_ports,okl4) ensures that the kernel -# port, if missing, is added to the missing-ports list of the first build -# stage. -# -ifeq ($(OKL4_DIR),) -OKL4_DIR := $(call select_from_ports,okl4)/src/kernel/okl4 -endif - -# -# Make sure that symlink modification times are handled correctly. -# Otherwise, the creation of symlinks that depend on their own directory -# behaves like a phony rule. This is because the directory mtime is -# determined by taking the mtimes of containing symlinks into account. -# Hence, all symlinks (except for the youngest) depend on a directory -# with a newer mtime. The make flag -L fixes the problem. Alternatively, -# we could use 'cp' instead of 'ln'. -# -MAKEFLAGS += -L - -# -# OKL4-specific Genode headers -# -INC_DIR += $(BUILD_BASE_DIR)/include - -# -# Define maximum number of threads, needed by the OKL4 kernel headers -# -CC_OPT += -DCONFIG_MAX_THREAD_BITS=10 - -# -# Clean rules for removing the side effects of building the platform -# library -# -clean_includes: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/include - -clean_tool_elfweaver: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/tool/okl4/elfweaver - -clean cleanall: clean_includes clean_tool_elfweaver diff --git a/repos/base-okl4/mk/spec/okl4_x86.mk b/repos/base-okl4/mk/spec/okl4_x86.mk deleted file mode 100644 index 86eac58aa..000000000 --- a/repos/base-okl4/mk/spec/okl4_x86.mk +++ /dev/null @@ -1,12 +0,0 @@ -# -# Specifics for OKL4 on x86 -# - -SPECS += x86_32 okl4 -SPECS += pci ps2 vesa framebuffer - -# -# Also include less-specific configuration last -# -include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/okl4.mk) diff --git a/repos/base-okl4/src/core/okl4/target.mk b/repos/base-okl4/src/core/okl4/target.mk new file mode 100644 index 000000000..5cc8f1d3b --- /dev/null +++ b/repos/base-okl4/src/core/okl4/target.mk @@ -0,0 +1,3 @@ +LIBS = core-okl4 + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-okl4/src/kernel/okl4/target.mk b/repos/base-okl4/src/kernel/okl4/target.mk new file mode 100644 index 000000000..ec5cc13c5 --- /dev/null +++ b/repos/base-okl4/src/kernel/okl4/target.mk @@ -0,0 +1,11 @@ +TARGET = okl4 +LIBS = kernel-okl4 +SRC_C = dummy.c + +LD_TEXT_ADDR := 0xf0100000 +LD_SCRIPT_STATIC = $(REP_DIR)/contrib/generated/x86/linker.ld + +$(TARGET): dummy.c + +dummy.c: + @touch $@ diff --git a/repos/base-pistachio/doc/pistachio.txt b/repos/base-pistachio/doc/pistachio.txt index eaa7dcf91..3f3ec6e51 100644 --- a/repos/base-pistachio/doc/pistachio.txt +++ b/repos/base-pistachio/doc/pistachio.txt @@ -64,22 +64,5 @@ This command will execute the steps described in the run script located at scenario, create a configuration, and start the scenario using Qemu. To inspect the individual steps more closely or learn the steps needed to manually integrate Genode with L4ka::Pistachio, please revisit the Pistachio-specific -run environment at 'base-pistachio/run/env'. - - -Using an externally supplied kernel -################################### - -It is possible to use a L4ka::Pistachio kernel that is manually downloaded -and built. To let Genode use an external kernel, create a file called -'/etc/pistachio.conf' with the following declarations: - -! PISTACHIO_USER_BUILD_DIR = - -The location of the Pistachio user-level build directory is the place where -Genode looks for the kernel-interface header files and the system bindings. - -! PISTACHIO_KERNEL = - -The specified kernel binary will be used when executing run scripts. +run environment at 'tool/run/boot_dir/pistachio'. diff --git a/repos/base-pistachio/etc/specs.conf b/repos/base-pistachio/etc/specs.conf index f426787da..9b6966ecc 100644 --- a/repos/base-pistachio/etc/specs.conf +++ b/repos/base-pistachio/etc/specs.conf @@ -1 +1 @@ -SPECS = genode pistachio_x86 +SPECS += genode pistachio x86_32 vesa pci ps2 framebuffer diff --git a/repos/base-pistachio/lib/import/import-syscall-pistachio.mk b/repos/base-pistachio/lib/import/import-syscall-pistachio.mk new file mode 100644 index 000000000..a44ed3ba1 --- /dev/null +++ b/repos/base-pistachio/lib/import/import-syscall-pistachio.mk @@ -0,0 +1 @@ +INC_DIR += $(LIB_CACHE_DIR)/syscall-pistachio/include diff --git a/repos/base-pistachio/lib/mk/base-pistachio-common.mk b/repos/base-pistachio/lib/mk/base-pistachio-common.mk index 28a975ee3..7aa17aaa8 100644 --- a/repos/base-pistachio/lib/mk/base-pistachio-common.mk +++ b/repos/base-pistachio/lib/mk/base-pistachio-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += startup syscall +LIBS += startup-pistachio syscall-pistachio SRC_CC += capability.cc capability_raw.cc SRC_CC += signal_submit.cc diff --git a/repos/base-pistachio/lib/mk/base-pistachio.mk b/repos/base-pistachio/lib/mk/base-pistachio.mk index 2dfbeaa26..9525cbb50 100644 --- a/repos/base-pistachio/lib/mk/base-pistachio.mk +++ b/repos/base-pistachio/lib/mk/base-pistachio.mk @@ -1,6 +1,7 @@ include $(BASE_DIR)/lib/mk/base.inc -LIBS += base-pistachio-common +LIBS += base-pistachio-common syscall-pistachio + SRC_CC += thread_start.cc SRC_CC += cache.cc SRC_CC += capability_space.cc diff --git a/repos/base-pistachio/lib/mk/core.inc b/repos/base-pistachio/lib/mk/core-pistachio.inc similarity index 97% rename from repos/base-pistachio/lib/mk/core.inc rename to repos/base-pistachio/lib/mk/core-pistachio.inc index 10e791386..681f34587 100644 --- a/repos/base-pistachio/lib/mk/core.inc +++ b/repos/base-pistachio/lib/mk/core-pistachio.inc @@ -1,5 +1,4 @@ -REQUIRES = pistachio -LIBS = base-pistachio-common +LIBS = base-pistachio-common syscall-pistachio GEN_CORE_DIR = $(BASE_DIR)/src/core diff --git a/repos/base-pistachio/lib/mk/platform.mk b/repos/base-pistachio/lib/mk/platform.mk deleted file mode 100644 index 82bcf24ae..000000000 --- a/repos/base-pistachio/lib/mk/platform.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# Create prerequisites for building Genode for Pistachio -# - -# -# Execute the rules in this file only at the second build stage when we know -# about the complete build settings, e.g., the 'CROSS_DEV_PREFIX'. -# -ifeq ($(called_from_lib_mk),yes) - -all: $(filter-out $(wildcard $(PISTACHIO_USER_BUILD_DIR)), $(PISTACHIO_USER_BUILD_DIR)) - -LD_PREFIX = "-Wl," -PISTACHIO_CONTRIB_DIR := $(call select_from_ports,pistachio)/src/kernel/pistachio - -$(PISTACHIO_USER_BUILD_DIR): - $(VERBOSE)mkdir $@ - $(VERBOSE)cd $@; \ - LIBGCCFLAGS="$(CC_MARCH)" \ - LDFLAGS="$(addprefix $(LD_PREFIX),$(LD_MARCH)) -nostdlib" \ - CFLAGS="$(CC_MARCH)" \ - $(PISTACHIO_CONTRIB_DIR)/user/configure --build=ia32 --host i686 \ - CC=$(CROSS_DEV_PREFIX)gcc - $(VERBOSE_MK) MAKEFLAGS= $(MAKE) $(VERBOSE_DIR) -C $@ - -endif diff --git a/repos/base-pistachio/lib/mk/spec/x86/core.mk b/repos/base-pistachio/lib/mk/spec/x86_32/core-pistachio.mk similarity index 60% rename from repos/base-pistachio/lib/mk/spec/x86/core.mk rename to repos/base-pistachio/lib/mk/spec/x86_32/core-pistachio.mk index 6cb90885b..be5b43f4d 100644 --- a/repos/base-pistachio/lib/mk/spec/x86/core.mk +++ b/repos/base-pistachio/lib/mk/spec/x86_32/core-pistachio.mk @@ -1,9 +1,8 @@ -include $(REP_DIR)/lib/mk/core.inc +include $(REP_DIR)/lib/mk/core-pistachio.inc -REQUIRES += x86 -SRC_CC += io_port_session_component.cc \ - io_port_session_support.cc \ - platform_x86.cc +SRC_CC += io_port_session_component.cc \ + io_port_session_support.cc \ + platform_x86.cc vpath io_port_session_component.cc $(GEN_CORE_DIR)/spec/x86 vpath io_port_session_support.cc $(GEN_CORE_DIR)/spec/x86 diff --git a/repos/base-pistachio/lib/mk/spec/x86_32/startup-pistachio.mk b/repos/base-pistachio/lib/mk/spec/x86_32/startup-pistachio.mk new file mode 100644 index 000000000..768cc26ac --- /dev/null +++ b/repos/base-pistachio/lib/mk/spec/x86_32/startup-pistachio.mk @@ -0,0 +1,3 @@ +include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc + +LIBS += syscall-pistachio diff --git a/repos/base-pistachio/lib/mk/syscall-pistachio.mk b/repos/base-pistachio/lib/mk/syscall-pistachio.mk new file mode 100644 index 000000000..787b3bb5b --- /dev/null +++ b/repos/base-pistachio/lib/mk/syscall-pistachio.mk @@ -0,0 +1,24 @@ +PISTACHIO_CONTRIB_DIR := $(call select_from_ports,pistachio)/src/kernel/pistachio +PISTACHIO_USER_SRC := $(PISTACHIO_CONTRIB_DIR)/user/lib/l4 + +LD_PREFIX := "-Wl," + +CC_WARN += -Wno-array-bounds -Wno-unused-but-set-variable \ + -Wno-parentheses -Wno-format + +user_build.tag: + LIBGCCFLAGS="$(CC_MARCH)" \ + LDFLAGS="$(addprefix $(LD_PREFIX),$(LD_MARCH)) -nostdlib" \ + CFLAGS="$(CC_MARCH) $(CC_WARN)" \ + $(PISTACHIO_CONTRIB_DIR)/user/configure --build=ia32 --host i686 \ + CC=$(CROSS_DEV_PREFIX)gcc + $(VERBOSE_MK) MAKEFLAGS= $(MAKE) -s $(VERBOSE_DIR) + @touch $@ + +SRC_CC := debug.cc ia32.cc +SRC_S := ia32-syscall-stubs.S +CC_OPT += -Iinclude + +$(SRC_CC:.cc=.o) $(SRC_S:.S:.o): user_build.tag + +vpath % $(PISTACHIO_USER_SRC) diff --git a/repos/base-pistachio/lib/mk/syscall.mk b/repos/base-pistachio/lib/mk/syscall.mk deleted file mode 100644 index ebc5bf5e7..000000000 --- a/repos/base-pistachio/lib/mk/syscall.mk +++ /dev/null @@ -1,7 +0,0 @@ -PISTACHIO_USER_SRC := $(call select_from_ports,pistachio)/src/kernel/pistachio/user/lib/l4 - -SRC_CC = debug.cc ia32.cc -SRC_S = ia32-syscall-stubs.S - -vpath %.cc $(PISTACHIO_USER_SRC) -vpath %.S $(PISTACHIO_USER_SRC) diff --git a/repos/base-pistachio/mk/spec/pistachio.mk b/repos/base-pistachio/mk/spec/pistachio.mk deleted file mode 100644 index b333db033..000000000 --- a/repos/base-pistachio/mk/spec/pistachio.mk +++ /dev/null @@ -1,29 +0,0 @@ -# -# Specifics for the pistachio kernel API -# - -# -# Read default and builddir-specific config files -# -# In these config files, we expect to find the definition of PISTACHIO_USER_BUILD_DIR -# --include $(call select_from_repositories,etc/pistachio.conf) --include $(BUILD_BASE_DIR)/etc/pistachio.conf - -PISTACHIO_USER_BUILD_DIR ?= $(BUILD_BASE_DIR)/l4 - -# -# Pistachio headers -# -INC_DIR += $(PISTACHIO_USER_BUILD_DIR)/include - -# -# Pistachio-specific Genode headers -# -REP_INC_DIR += include/pistachio - -clean_contrib: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/l4 - -cleanall: clean_contrib - diff --git a/repos/base-pistachio/mk/spec/pistachio_x86.mk b/repos/base-pistachio/mk/spec/pistachio_x86.mk deleted file mode 100644 index 2b84547a3..000000000 --- a/repos/base-pistachio/mk/spec/pistachio_x86.mk +++ /dev/null @@ -1,9 +0,0 @@ -# -# Specifics for Pistachio on 32-bit x86 -# - -SPECS += x86_32 pistachio -SPECS += pci ps2 vesa framebuffer - -include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/pistachio.mk) diff --git a/repos/base-pistachio/src/core/pistachio/target.mk b/repos/base-pistachio/src/core/pistachio/target.mk new file mode 100644 index 000000000..f000d8404 --- /dev/null +++ b/repos/base-pistachio/src/core/pistachio/target.mk @@ -0,0 +1,3 @@ +LIBS = core-pistachio + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-pistachio/src/kernel/target.mk b/repos/base-pistachio/src/kernel/pistachio/target.mk similarity index 64% rename from repos/base-pistachio/src/kernel/target.mk rename to repos/base-pistachio/src/kernel/pistachio/target.mk index 453bfca9c..38d9287ac 100644 --- a/repos/base-pistachio/src/kernel/target.mk +++ b/repos/base-pistachio/src/kernel/pistachio/target.mk @@ -1,15 +1,18 @@ TARGET = kernel REQUIRES += pistachio -KERNEL_BUILD_DIR = $(BUILD_BASE_DIR)/kernel/pistachio -KERNEL = $(KERNEL_BUILD_DIR)/x86-kernel +KERNEL_BUILD_DIR = $(BUILD_BASE_DIR)/kernel/pistachio/build KERNEL_SRC := $(call select_from_ports,pistachio)/src/kernel/pistachio/kernel LIBGCC_DIR = $(dir $(shell $(CC) $(CC_MARCH) -print-libgcc-file-name)) GCCINC_DIR = $(dir $(shell $(CC) -print-libgcc-file-name))include -$(TARGET): $(KERNEL) +KERNEL_CCFLAGS := $(CC_MARCH) +KERNEL_CCFLAGS += -Wno-unused-function -Wno-array-bounds -Wno-narrowing \ + -Wno-unused-but-set-variable -Wno-maybe-uninitialized \ + -Wno-unused-variable -.PHONY: $(KERNEL) +$(TARGET): $(KERNEL_BUILD_DIR)/x86-kernel + $(VERBOSE)ln -sf $< $@ $(KERNEL_BUILD_DIR)/Makefile: $(VERBOSE_MK) MAKEFLAGS= $(MAKE) $(VERBOSE_DIR) -C $(KERNEL_SRC) BUILDDIR=$(dir $@) @@ -43,18 +46,33 @@ $(KERNEL_BUILD_DIR)/Makefile: # $(KERNEL_BUILD_DIR)/config/.config: $(KERNEL_BUILD_DIR)/Makefile - $(VERBOSE_MK)CCFLAGS="$(CC_MARCH)" MAKEFLAGS= \ - $(MAKE) $(VERBOSE_DIR) -C $(KERNEL_BUILD_DIR) batchconfig \ + $(VERBOSE_MK)CCFLAGS="$(KERNEL_CCFLAGS)" MAKEFLAGS=-s \ + $(MAKE) -s $(VERBOSE_DIR) -C $(KERNEL_BUILD_DIR) batchconfig \ GCCINSTALLDIR=$(LIBGCC_DIR) -$(KERNEL): $(KERNEL_BUILD_DIR)/config/.config - $(VERBOSE_MK)CCFLAGS="$(CC_MARCH)" LDFLAGS="$(LD_MARCH)" ASMFLAGS="$(CC_MARCH)" MAKEFLAGS= \ - $(MAKE) $(VERBOSE_DIR) -C $(KERNEL_BUILD_DIR) \ +$(KERNEL_BUILD_DIR)/x86-kernel: $(KERNEL_BUILD_DIR)/config/.config + $(VERBOSE_MK)CCFLAGS="$(KERNEL_CCFLAGS)" LDFLAGS="$(LD_MARCH)" \ + ASMFLAGS="$(CC_MARCH)" MAKEFLAGS= \ + $(MAKE) -s $(VERBOSE_DIR) -C $(KERNEL_BUILD_DIR) \ TOOLPREFIX=$(CROSS_DEV_PREFIX) \ GCCINSTALLDIR=$(LIBGCC_DIR) \ LIBGCCINC=$(GCCINC_DIR) - $(VERBOSE)ln -sf $@ $(BUILD_BASE_DIR)/bin/$(TARGET) - $(VERBOSE)touch $@ clean cleanall: $(VERBOSE)rm -rf $(KERNEL_BUILD_DIR) + +# +# Install symlinks for sigma0 and kickstart at kernel/pistachio/ +# +# The 'LIBS' dependency ensures that the Pistachio userland is built before. +# +LIBS += syscall-pistachio + +$(TARGET): sigma0 kickstart + +sigma0: + $(VERBOSE)ln -sf $(LIB_CACHE_DIR)/syscall-pistachio/serv/sigma0/sigma0 + +kickstart: + $(VERBOSE)ln -sf $(LIB_CACHE_DIR)/syscall-pistachio/util/kickstart/kickstart + diff --git a/repos/base-sel4/etc/specs.conf b/repos/base-sel4/etc/specs.conf new file mode 100644 index 000000000..adfa3ddba --- /dev/null +++ b/repos/base-sel4/etc/specs.conf @@ -0,0 +1 @@ +SPECS += genode sel4 vesa acpi pci ps2 framebuffer diff --git a/repos/base-sel4/lib/import/import-syscall-sel4.mk b/repos/base-sel4/lib/import/import-syscall-sel4.mk new file mode 100644 index 000000000..bf94fa91a --- /dev/null +++ b/repos/base-sel4/lib/import/import-syscall-sel4.mk @@ -0,0 +1,15 @@ +SEL4_INCLUDE_DIR := $(LIB_CACHE_DIR)/syscall-sel4/include + +# +# Access kernel-interface headers that were installed when building the +# syscall-sel4 library. +# +INC_DIR += $(SEL4_INCLUDE_DIR) + +# +# Access to other sel4-specific headers such as 'autoconf.h'. +# +INC_DIR += $(SEL4_INCLUDE_DIR)/sel4 + +# required for seL4_DebugPutChar +CC_OPT += -DSEL4_DEBUG_KERNEL -DDEBUG diff --git a/repos/base-sel4/lib/import/import-syscall.mk b/repos/base-sel4/lib/import/import-syscall.mk deleted file mode 100644 index f86cdb385..000000000 --- a/repos/base-sel4/lib/import/import-syscall.mk +++ /dev/null @@ -1,13 +0,0 @@ -# -# Access to kernel-interface headers that were installed in the build directory -# when building the platform library. -# -INC_DIR += $(BUILD_BASE_DIR)/include - -# -# Access to other sel4-specific headers such as 'autoconf.h'. -# -INC_DIR += $(BUILD_BASE_DIR)/include/sel4 - -# required for seL4_DebugPutChar -CC_OPT += -DSEL4_DEBUG_KERNEL -DDEBUG diff --git a/repos/base-sel4/lib/mk/base-sel4-common.mk b/repos/base-sel4/lib/mk/base-sel4-common.mk index 3bf9e2a48..b1fefb171 100644 --- a/repos/base-sel4/lib/mk/base-sel4-common.mk +++ b/repos/base-sel4/lib/mk/base-sel4-common.mk @@ -6,7 +6,7 @@ include $(BASE_DIR)/lib/mk/base-common.inc -LIBS += startup syscall +LIBS += startup-sel4 syscall-sel4 SRC_CC += signal_submit.cc SRC_CC += rpc_dispatch_loop.cc diff --git a/repos/base-sel4/lib/mk/base-sel4.mk b/repos/base-sel4/lib/mk/base-sel4.mk index 22d17998d..e9faa7f35 100644 --- a/repos/base-sel4/lib/mk/base-sel4.mk +++ b/repos/base-sel4/lib/mk/base-sel4.mk @@ -4,4 +4,4 @@ SRC_CC += capability_space.cc SRC_CC += thread_start.cc thread_init.cc SRC_CC += cache.cc -LIBS += syscall base-sel4-common +LIBS += syscall-sel4 base-sel4-common diff --git a/repos/base-sel4/lib/mk/core.mk b/repos/base-sel4/lib/mk/core-sel4.mk similarity index 57% rename from repos/base-sel4/lib/mk/core.mk rename to repos/base-sel4/lib/mk/core-sel4.mk index cbf34386e..453089651 100644 --- a/repos/base-sel4/lib/mk/core.mk +++ b/repos/base-sel4/lib/mk/core-sel4.mk @@ -30,35 +30,38 @@ SRC_CC += \ core_region_map.cc \ core_mem_alloc.cc \ core_rpc_cap_alloc.cc \ + core_log.cc default_log.cc \ dump_alloc.cc \ stack_area.cc \ capability_space.cc \ pager.cc -LIBS += core_log base-sel4-common syscall +LIBS += base-sel4-common syscall-sel4 INC_DIR += $(REP_DIR)/src/core/include $(GEN_CORE_DIR)/include \ $(REP_DIR)/src/include $(BASE_DIR)/src/include include $(GEN_CORE_DIR)/version.inc -vpath main.cc $(GEN_CORE_DIR) -vpath ram_session_component.cc $(GEN_CORE_DIR) -vpath rom_session_component.cc $(GEN_CORE_DIR) -vpath cpu_session_component.cc $(GEN_CORE_DIR) -vpath cpu_session_support.cc $(GEN_CORE_DIR) -vpath cpu_thread_component.cc $(GEN_CORE_DIR) -vpath pd_session_component.cc $(GEN_CORE_DIR) -vpath pd_assign_pci.cc $(GEN_CORE_DIR) -vpath pd_upgrade_ram_quota.cc $(GEN_CORE_DIR) -vpath region_map_component.cc $(GEN_CORE_DIR) -vpath io_mem_session_component.cc $(GEN_CORE_DIR) -vpath io_mem_session_support.cc $(GEN_CORE_DIR) +vpath main.cc $(GEN_CORE_DIR) +vpath ram_session_component.cc $(GEN_CORE_DIR) +vpath rom_session_component.cc $(GEN_CORE_DIR) +vpath cpu_session_component.cc $(GEN_CORE_DIR) +vpath cpu_session_support.cc $(GEN_CORE_DIR) +vpath cpu_thread_component.cc $(GEN_CORE_DIR) +vpath pd_session_component.cc $(GEN_CORE_DIR) +vpath pd_assign_pci.cc $(GEN_CORE_DIR) +vpath pd_upgrade_ram_quota.cc $(GEN_CORE_DIR) +vpath region_map_component.cc $(GEN_CORE_DIR) +vpath io_mem_session_component.cc $(GEN_CORE_DIR) +vpath io_mem_session_support.cc $(GEN_CORE_DIR) vpath io_port_session_component.cc $(GEN_CORE_DIR)/spec/x86 -vpath platform_services.cc $(GEN_CORE_DIR)/spec/x86 -vpath trace_session_component.cc $(GEN_CORE_DIR) -vpath dataspace_component.cc $(GEN_CORE_DIR) -vpath core_mem_alloc.cc $(GEN_CORE_DIR) -vpath core_rpc_cap_alloc.cc $(GEN_CORE_DIR) -vpath dump_alloc.cc $(GEN_CORE_DIR) -vpath %.cc $(REP_DIR)/src/core +vpath platform_services.cc $(GEN_CORE_DIR)/spec/x86 +vpath trace_session_component.cc $(GEN_CORE_DIR) +vpath dataspace_component.cc $(GEN_CORE_DIR) +vpath core_mem_alloc.cc $(GEN_CORE_DIR) +vpath core_rpc_cap_alloc.cc $(GEN_CORE_DIR) +vpath dump_alloc.cc $(GEN_CORE_DIR) +vpath default_log.cc $(GEN_CORE_DIR) +vpath %.cc $(REP_DIR)/src/core + diff --git a/repos/base-sel4/lib/mk/core_log.mk b/repos/base-sel4/lib/mk/core_log.mk deleted file mode 100644 index 3bfb458da..000000000 --- a/repos/base-sel4/lib/mk/core_log.mk +++ /dev/null @@ -1,6 +0,0 @@ -SRC_CC = core_log.cc default_log.cc -INC_DIR += $(REP_DIR)/src/include $(BASE_DIR)/src/include $(BASE_DIR)/src/core/include -LIBS += syscall - -vpath core_log.cc $(REP_DIR)/src/core -vpath default_log.cc $(BASE_DIR)/src/core diff --git a/repos/base-sel4/lib/mk/spec/x86_32/kernel.mk b/repos/base-sel4/lib/mk/spec/x86_32/kernel-sel4.mk similarity index 100% rename from repos/base-sel4/lib/mk/spec/x86_32/kernel.mk rename to repos/base-sel4/lib/mk/spec/x86_32/kernel-sel4.mk diff --git a/repos/base-sel4/lib/mk/spec/x86_32/startup.mk b/repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk similarity index 94% rename from repos/base-sel4/lib/mk/spec/x86_32/startup.mk rename to repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk index 5b76cbfba..0df2e6101 100644 --- a/repos/base-sel4/lib/mk/spec/x86_32/startup.mk +++ b/repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk @@ -5,6 +5,8 @@ # INC_DIR += $(REP_DIR)/src/include $(BASE_DIR)/src/include +LIBS += syscall-sel4 + include $(BASE_DIR)/lib/mk/startup.inc vpath crt0.s $(BASE_DIR)/src/lib/startup/spec/x86_32 diff --git a/repos/base-sel4/lib/mk/spec/x86_32/platform.mk b/repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4.mk similarity index 70% rename from repos/base-sel4/lib/mk/spec/x86_32/platform.mk rename to repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4.mk index f24b91a4e..0c938ecbb 100644 --- a/repos/base-sel4/lib/mk/spec/x86_32/platform.mk +++ b/repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4.mk @@ -36,66 +36,66 @@ INCLUDES := objecttype.h types.h bootinfo.h bootinfo_types.h errors.h constants. invocation.h shared_types_gen.h debug_assert.h shared_types.h \ sel4.h deprecated.h autoconf.h -INCLUDE_SYMLINKS += $(addprefix $(BUILD_BASE_DIR)/include/sel4/, $(INCLUDES)) -INCLUDE_SYMLINKS += $(addprefix $(BUILD_BASE_DIR)/include/sel4/arch/, $(ARCH_INCLUDES)) -INCLUDE_SYMLINKS += $(addprefix $(BUILD_BASE_DIR)/include/sel4/sel4_arch/,$(SEL4_ARCH_INCLUDES)) -INCLUDE_SYMLINKS += $(BUILD_BASE_DIR)/include/interfaces/sel4_client.h +INCLUDE_SYMLINKS += $(addprefix include/sel4/, $(INCLUDES)) +INCLUDE_SYMLINKS += $(addprefix include/sel4/arch/, $(ARCH_INCLUDES)) +INCLUDE_SYMLINKS += $(addprefix include/sel4/sel4_arch/,$(SEL4_ARCH_INCLUDES)) +INCLUDE_SYMLINKS += include/interfaces/sel4_client.h all: $(INCLUDE_SYMLINKS) # # Plain symlinks to existing headers # -$(BUILD_BASE_DIR)/include/sel4/sel4_arch/%.h: $(LIBSEL4_DIR)/sel4_arch_include/ia32/sel4/sel4_arch/%.h +include/sel4/sel4_arch/%.h: $(LIBSEL4_DIR)/sel4_arch_include/ia32/sel4/sel4_arch/%.h $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)ln -sf $< $@ -$(BUILD_BASE_DIR)/include/sel4/arch/%.h: $(LIBSEL4_DIR)/arch_include/x86/sel4/arch/%.h +include/sel4/arch/%.h: $(LIBSEL4_DIR)/arch_include/x86/sel4/arch/%.h $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)ln -sf $< $@ -$(BUILD_BASE_DIR)/include/sel4/autoconf.h: $(LIBSEL4_AUTO)/autoconf.h +include/sel4/autoconf.h: $(LIBSEL4_AUTO)/autoconf.h $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)ln -sf $< $@ -$(BUILD_BASE_DIR)/include/sel4/%.h: $(LIBSEL4_DIR)/include/sel4/%.h +include/sel4/%.h: $(LIBSEL4_DIR)/include/sel4/%.h $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)ln -sf $< $@ # # Generated headers # -$(BUILD_BASE_DIR)/include/sel4/types_gen.h: $(LIBSEL4_DIR)/include/sel4/types_32.bf +include/sel4/types_gen.h: $(LIBSEL4_DIR)/include/sel4/types_32.bf $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/bitfield_gen.py \ --environment libsel4 "$<" $@ -$(BUILD_BASE_DIR)/include/sel4/shared_types_gen.h: $(LIBSEL4_DIR)/include/sel4/shared_types_32.bf +include/sel4/shared_types_gen.h: $(LIBSEL4_DIR)/include/sel4/shared_types_32.bf $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/bitfield_gen.py \ --environment libsel4 "$<" $@ -$(BUILD_BASE_DIR)/include/sel4/syscall.h: $(LIBSEL4_DIR)/include/api/syscall.xml +include/sel4/syscall.h: $(LIBSEL4_DIR)/include/api/syscall.xml $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/syscall_header_gen.py \ --xml $< --libsel4_header $@ -$(BUILD_BASE_DIR)/include/sel4/invocation.h: $(LIBSEL4_DIR)/include/interfaces/sel4.xml +include/sel4/invocation.h: $(LIBSEL4_DIR)/include/interfaces/sel4.xml $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/invocation_header_gen.py \ --xml $< --libsel4 --dest $@ -$(BUILD_BASE_DIR)/include/sel4/sel4_arch/invocation.h: $(LIBSEL4_DIR)/sel4_arch_include/ia32/interfaces/sel4arch.xml +include/sel4/sel4_arch/invocation.h: $(LIBSEL4_DIR)/sel4_arch_include/ia32/interfaces/sel4arch.xml $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/invocation_header_gen.py \ --xml $< --libsel4 --sel4_arch --dest $@ -$(BUILD_BASE_DIR)/include/sel4/arch/invocation.h: $(LIBSEL4_DIR)/arch_include/x86/interfaces/sel4arch.xml +include/sel4/arch/invocation.h: $(LIBSEL4_DIR)/arch_include/x86/interfaces/sel4arch.xml $(MSG_CONVERT)arch/$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/invocation_header_gen.py \ @@ -105,8 +105,7 @@ SEL4_CLIENT_H_SRC := $(LIBSEL4_DIR)/sel4_arch_include/ia32/interfaces/sel4arch.x $(LIBSEL4_DIR)/arch_include/x86/interfaces/sel4arch.xml \ $(LIBSEL4_DIR)/include/interfaces/sel4.xml - -$(BUILD_BASE_DIR)/include/interfaces/sel4_client.h: $(SEL4_CLIENT_H_SRC) +include/interfaces/sel4_client.h: $(SEL4_CLIENT_H_SRC) $(MSG_CONVERT)$(notdir $@) $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)python $(LIBSEL4_DIR)/tools/syscall_stub_gen.py \ diff --git a/repos/base-sel4/lib/mk/syscall.mk b/repos/base-sel4/lib/mk/syscall.mk deleted file mode 100644 index f5c670dc1..000000000 --- a/repos/base-sel4/lib/mk/syscall.mk +++ /dev/null @@ -1,5 +0,0 @@ -# -# Syscall library for accessing the seL4 kernel interface. This library is -# merely there to incorporate the corresponding 'import/syscall.mk' file -# in targets that need to issue seL4 system calls. -# diff --git a/repos/base-sel4/mk/spec/sel4.mk b/repos/base-sel4/mk/spec/sel4.mk deleted file mode 100644 index 0537e6b79..000000000 --- a/repos/base-sel4/mk/spec/sel4.mk +++ /dev/null @@ -1,7 +0,0 @@ -# -# Clean rule for removing the side effects of building the platform library -# -clean_includes: - $(VERBOSE)rm -rf $(BUILD_BASE_DIR)/include - -clean cleanall: clean_includes diff --git a/repos/base-sel4/mk/spec/sel4_x86_32.mk b/repos/base-sel4/mk/spec/sel4_x86_32.mk index c28cda6d4..17b2b520b 100644 --- a/repos/base-sel4/mk/spec/sel4_x86_32.mk +++ b/repos/base-sel4/mk/spec/sel4_x86_32.mk @@ -1,8 +1,4 @@ -# -# Specifics for the seL4 kernel API x86 32 bit -# - -SPECS += sel4 x86_32 ps2 vesa framebuffer pci +# \deprecated +SPECS += x86_32 include $(call select_from_repositories,mk/spec/x86_32.mk) -include $(call select_from_repositories,mk/spec/sel4.mk) diff --git a/repos/base-sel4/src/core/sel4/target.mk b/repos/base-sel4/src/core/sel4/target.mk new file mode 100644 index 000000000..69c83d8c3 --- /dev/null +++ b/repos/base-sel4/src/core/sel4/target.mk @@ -0,0 +1,3 @@ +LIBS = core-sel4 + +include $(BASE_DIR)/src/core/target.inc diff --git a/repos/base-sel4/src/kernel/sel4/target.mk b/repos/base-sel4/src/kernel/sel4/target.mk new file mode 100644 index 000000000..1f898c083 --- /dev/null +++ b/repos/base-sel4/src/kernel/sel4/target.mk @@ -0,0 +1,5 @@ +TARGET = sel4 +LIBS = kernel-sel4 + +$(INSTALL_DIR)/$(TARGET): + $(VERBOSE)ln -sf $(LIB_CACHE_DIR)/kernel-sel4/kernel.elf $@ diff --git a/repos/base-sel4/src/kernel/target.mk b/repos/base-sel4/src/kernel/target.mk deleted file mode 100644 index 9954b678b..000000000 --- a/repos/base-sel4/src/kernel/target.mk +++ /dev/null @@ -1,5 +0,0 @@ -TARGET = sel4 -LIBS = kernel - -$(INSTALL_DIR)/$(TARGET): - $(VERBOSE)ln -sf $(LIB_CACHE_DIR)/kernel/kernel.elf $@ diff --git a/repos/base/lib/mk/spec/arm/startup.mk b/repos/base/lib/mk/spec/arm/startup.inc similarity index 100% rename from repos/base/lib/mk/spec/arm/startup.mk rename to repos/base/lib/mk/spec/arm/startup.inc diff --git a/repos/base/lib/mk/spec/x86_32/startup.mk b/repos/base/lib/mk/spec/x86_32/startup.inc similarity index 100% rename from repos/base/lib/mk/spec/x86_32/startup.mk rename to repos/base/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base/lib/mk/spec/x86_64/startup.mk b/repos/base/lib/mk/spec/x86_64/startup.inc similarity index 100% rename from repos/base/lib/mk/spec/x86_64/startup.mk rename to repos/base/lib/mk/spec/x86_64/startup.inc diff --git a/repos/base/src/core/target.mk b/repos/base/src/core/target.inc similarity index 93% rename from repos/base/src/core/target.mk rename to repos/base/src/core/target.inc index 1cabfdcb4..bac8d28fa 100644 --- a/repos/base/src/core/target.mk +++ b/repos/base/src/core/target.inc @@ -1,5 +1,4 @@ TARGET = core -LIBS = core CORE_OBJ = core.o $(TARGET): $(CORE_OBJ) diff --git a/repos/dde_rump/src/server/rump_cgd/target.mk b/repos/dde_rump/src/server/rump_cgd/target.mk index 10cd53fd6..32d5cb765 100644 --- a/repos/dde_rump/src/server/rump_cgd/target.mk +++ b/repos/dde_rump/src/server/rump_cgd/target.mk @@ -1,4 +1,4 @@ TARGET = rump_cgd SRC_CC = cgd.cc main.cc random.cc -LIBS = rump rump_cgd startup jitterentropy +LIBS = rump rump_cgd jitterentropy diff --git a/repos/dde_rump/src/server/rump_fs/target.mk b/repos/dde_rump/src/server/rump_fs/target.mk index aea32b44c..e391ac4ab 100644 --- a/repos/dde_rump/src/server/rump_fs/target.mk +++ b/repos/dde_rump/src/server/rump_fs/target.mk @@ -1,5 +1,5 @@ TARGET = rump_fs SRC_CC = main.cc file_system.cc random.cc -LIBS = rump rump_fs startup +LIBS = rump rump_fs diff --git a/repos/os/lib/mk/foc_cli_monitor.mk b/repos/os/lib/mk/foc_cli_monitor.mk index 686ac7cbd..01e58a8d3 100644 --- a/repos/os/lib/mk/foc_cli_monitor.mk +++ b/repos/os/lib/mk/foc_cli_monitor.mk @@ -2,5 +2,6 @@ SRC_CC = extension.cc REQUIRES = foc INC_DIR += $(REP_DIR)/src/app/cli_monitor \ $(REP_DIR)/src/app/cli_monitor/spec/foc +LIBS += syscall-foc vpath extension.cc $(REP_DIR)/src/app/cli_monitor/spec/foc diff --git a/repos/os/lib/mk/spec/arndale/foc_cli_monitor.mk b/repos/os/lib/mk/spec/arndale/foc_cli_monitor.mk index c9087390c..9f7fed970 100644 --- a/repos/os/lib/mk/spec/arndale/foc_cli_monitor.mk +++ b/repos/os/lib/mk/spec/arndale/foc_cli_monitor.mk @@ -2,5 +2,6 @@ SRC_CC = extension.cc REQUIRES = foc_arndale INC_DIR += $(REP_DIR)/src/app/cli_monitor \ $(REP_DIR)/src/app/cli_monitor/spec/foc +LIBS += syscall-foc vpath extension.cc $(REP_DIR)/src/app/cli_monitor/spec/foc/arndale diff --git a/repos/os/src/drivers/timer/fiasco/target.mk b/repos/os/src/drivers/timer/fiasco/target.mk index fc93431c1..95d23b624 100644 --- a/repos/os/src/drivers/timer/fiasco/target.mk +++ b/repos/os/src/drivers/timer/fiasco/target.mk @@ -1,5 +1,6 @@ TARGET = fiasco_timer_drv REQUIRES = fiasco +LIBS += syscall-fiasco INC_DIR += $(REP_DIR)/src/drivers/timer/periodic SRC_CC += periodic/time_source.cc fiasco/time_source.cc diff --git a/repos/os/src/drivers/timer/foc/target.mk b/repos/os/src/drivers/timer/foc/target.mk index 5de0b4b5d..38b2cc8d5 100644 --- a/repos/os/src/drivers/timer/foc/target.mk +++ b/repos/os/src/drivers/timer/foc/target.mk @@ -1,5 +1,6 @@ TARGET = foc_timer_drv REQUIRES = foc +LIBS += syscall-foc INC_DIR += $(REP_DIR)/src/drivers/timer/periodic SRC_CC += periodic/time_source.cc fiasco/time_source.cc diff --git a/repos/os/src/drivers/timer/linux/target.mk b/repos/os/src/drivers/timer/linux/target.mk index 9aeefc511..6ab25b38c 100644 --- a/repos/os/src/drivers/timer/linux/target.mk +++ b/repos/os/src/drivers/timer/linux/target.mk @@ -2,6 +2,6 @@ TARGET = linux_timer_drv REQUIRES = linux INC_DIR += $(REP_DIR)/src/drivers/timer/periodic SRC_CC += periodic/time_source.cc linux/time_source.cc -LIBS += syscall +LIBS += syscall-linux include $(REP_DIR)/src/drivers/timer/target.inc diff --git a/repos/os/src/drivers/timer/pistachio/target.mk b/repos/os/src/drivers/timer/pistachio/target.mk index dc3d7cf8d..74f58aec2 100644 --- a/repos/os/src/drivers/timer/pistachio/target.mk +++ b/repos/os/src/drivers/timer/pistachio/target.mk @@ -3,6 +3,6 @@ REQUIRES = pistachio INC_DIR += $(REP_DIR)/src/drivers/timer/include INC_DIR += $(REP_DIR)/src/drivers/timer/periodic SRC_CC += periodic/time_source.cc pistachio/time_source.cc main.cc -LIBS += syscall base-pistachio timeout +LIBS += syscall-pistachio base-pistachio timeout vpath %.cc $(REP_DIR)/src/drivers/timer diff --git a/repos/os/src/drivers/uart/kdb/spec/fiasco/target.mk b/repos/os/src/drivers/uart/kdb/spec/fiasco/target.mk index 6a4aedbd6..4ae77d97f 100644 --- a/repos/os/src/drivers/uart/kdb/spec/fiasco/target.mk +++ b/repos/os/src/drivers/uart/kdb/spec/fiasco/target.mk @@ -1,3 +1,5 @@ REQUIRES = fiasco +LIBS += syscall-fiasco + include $(REP_DIR)/src/drivers/uart/kdb/target.inc diff --git a/repos/os/src/drivers/uart/kdb/spec/foc/target.mk b/repos/os/src/drivers/uart/kdb/spec/foc/target.mk index 745711d23..0212a7470 100644 --- a/repos/os/src/drivers/uart/kdb/spec/foc/target.mk +++ b/repos/os/src/drivers/uart/kdb/spec/foc/target.mk @@ -1,3 +1,5 @@ REQUIRES = foc +LIBS += syscall-foc + include $(REP_DIR)/src/drivers/uart/kdb/target.inc diff --git a/repos/os/src/drivers/uart/kdb/target.inc b/repos/os/src/drivers/uart/kdb/target.inc index 0dd3fc1af..a03f70423 100644 --- a/repos/os/src/drivers/uart/kdb/target.inc +++ b/repos/os/src/drivers/uart/kdb/target.inc @@ -1,6 +1,6 @@ TARGET = kdb_uart_drv SRC_CC = main.cc -LIBS = base config +LIBS += base config INC_DIR += $(REP_DIR)/src/drivers/uart $(REP_DIR)/src/drivers/uart/kdb vpath main.cc $(REP_DIR)/src/drivers/uart diff --git a/repos/os/src/test/timer_accuracy/target.mk b/repos/os/src/test/timer_accuracy/target.mk index fbaf2bec3..432ef55be 100644 --- a/repos/os/src/test/timer_accuracy/target.mk +++ b/repos/os/src/test/timer_accuracy/target.mk @@ -1,4 +1,4 @@ TARGET = test-timer_accuracy REQUIRES = linux SRC_CC = main.cc -LIBS = base syscall +LIBS = base syscall-linux diff --git a/repos/ports-foc/lib/mk/l4lx.mk b/repos/ports-foc/lib/mk/l4lx.mk index 7bb422c4a..588f4fe51 100644 --- a/repos/ports-foc/lib/mk/l4lx.mk +++ b/repos/ports-foc/lib/mk/l4lx.mk @@ -36,6 +36,6 @@ INC_DIR += $(REP_DIR)/include \ # for reusing the 'Expanding_rm_session' from the platform env in dataspace.h INC_DIR += $(BASE_DIR)/src/include -LIBS = base config +LIBS = base-foc config syscall-foc vpath %.cc $(REP_DIR)/src/lib/l4lx diff --git a/repos/ports-foc/lib/mk/l4sys.mk b/repos/ports-foc/lib/mk/l4sys.mk index d2581272d..b78cba9f2 100644 --- a/repos/ports-foc/lib/mk/l4sys.mk +++ b/repos/ports-foc/lib/mk/l4sys.mk @@ -1,3 +1,5 @@ SRC_C += errtostr.c -vpath errtostr.c $(L4_BUILD_DIR)/source/pkg/l4sys/lib/src +LIBS += syscall-foc + +vpath errtostr.c $(LIB_CACHE_DIR)/syscall-foc/build/source/pkg/l4sys/lib/src diff --git a/repos/ports-foc/mk/l4lx.mk b/repos/ports-foc/mk/l4lx.mk index 5c98aee09..eeeeef795 100644 --- a/repos/ports-foc/mk/l4lx.mk +++ b/repos/ports-foc/mk/l4lx.mk @@ -2,8 +2,8 @@ TARGET = vmlinux VERBOSE_LX_MK ?= 0 REQUIRES += foc INC_DIR += $(REP_DIR)/include -LIBS = l4lx l4sys -GENODE_LIBS := base-foc base-foc-common startup syscall cxx l4lx l4sys config +LIBS = l4lx l4sys syscall-foc +GENODE_LIBS := base-foc base-foc-common startup-foc syscall-foc cxx l4lx l4sys config GENODE_LIBS := $(foreach l,$(GENODE_LIBS),$(BUILD_BASE_DIR)/var/libcache/$l/$l.lib.a) GENODE_LIBS_SORTED = $(sort $(wildcard $(GENODE_LIBS))) @@ -15,6 +15,10 @@ L4LX_BINARY = $(L4LX_BUILD)/$(TARGET) L4LX_SYMLINK = $(BUILD_BASE_DIR)/bin/$(LX_TARGET) L4LX_CONFIG = $(L4LX_BUILD)/.config +L4_BUILD_DIR := $(LIB_CACHE_DIR)/syscall-foc/build + +BUILD_OUTPUT_FILTER = 2>&1 | sed "s/^/ [l4linux] /" + $(TARGET): $(L4LX_BINARY) $(L4LX_BINARY): $(L4LX_CONFIG) @@ -27,7 +31,7 @@ $(L4LX_BINARY): $(L4LX_CONFIG) V=$(VERBOSE_LX_MK) \ GENODE_INCLUDES="$(addprefix -I,$(INC_DIR))" \ GENODE_LIBS="$(GENODE_LIBS_SORTED)" \ - L4ARCH="$(L4LX_L4ARCH)" || false + L4ARCH="$(L4LX_L4ARCH)" $(BUILD_OUTPUT_FILTER) || false $(VERBOSE)ln -sf $@ $(L4LX_SYMLINK) $(L4LX_CONFIG): $(SRC_L4LX_CONFIG) diff --git a/repos/ports-foc/src/l4linux/x86_32/target.mk b/repos/ports-foc/src/l4linux/x86_32/target.mk index 018ec7dba..1896d0985 100644 --- a/repos/ports-foc/src/l4linux/x86_32/target.mk +++ b/repos/ports-foc/src/l4linux/x86_32/target.mk @@ -3,4 +3,4 @@ INC_DIR += $(REP_DIR)/include/32-bit LX_TARGET = l4linux SRC_L4LX_CONFIG = $(REP_DIR)/config/linux_config.x86_32 --include $(REP_DIR)/mk/l4lx.mk +include $(REP_DIR)/mk/l4lx.mk diff --git a/repos/ports/lib/mk/spec/foc_arm/gdbserver_platform.mk b/repos/ports/lib/mk/spec/foc_arm/gdbserver_platform.mk index 5ed1b416f..9d12cdff7 100644 --- a/repos/ports/lib/mk/spec/foc_arm/gdbserver_platform.mk +++ b/repos/ports/lib/mk/spec/foc_arm/gdbserver_platform.mk @@ -6,4 +6,6 @@ SRC_C = reg-arm.c \ CC_OPT_linux-arm-low += -Wno-unused-function +LIBS += syscall-foc + include $(REP_DIR)/lib/mk/gdbserver_platform.inc diff --git a/repos/ports/lib/mk/spec/foc_x86_32/gdbserver_platform.mk b/repos/ports/lib/mk/spec/foc_x86_32/gdbserver_platform.mk index 7d91ae743..6d0ff8d17 100644 --- a/repos/ports/lib/mk/spec/foc_x86_32/gdbserver_platform.mk +++ b/repos/ports/lib/mk/spec/foc_x86_32/gdbserver_platform.mk @@ -1,4 +1,6 @@ SRC_CC = spec/foc_x86_32/low.cc \ spec/foc/native_cpu.cc +LIBS += syscall-foc + include $(REP_DIR)/lib/mk/spec/x86_32/gdbserver_platform.inc diff --git a/tool/builddir/build.mk b/tool/builddir/build.mk index 5bbb93564..a3f3854f8 100644 --- a/tool/builddir/build.mk +++ b/tool/builddir/build.mk @@ -71,11 +71,25 @@ BASE_DIR := $(realpath $(shell echo $(BASE_DIR))) # export SHELL := $(shell which bash) -select_from_repositories = $(firstword $(foreach REP,$(REPOSITORIES),$(wildcard $(REP)/$(1)))) - --include $(call select_from_repositories,etc/specs.conf) +# +# Fetch SPECS configuration from all source repositories and the build directory +# +SPECS := +-include $(foreach REP,$(REPOSITORIES),$(wildcard $(REP)/etc/specs.conf)) -include $(BUILD_BASE_DIR)/etc/specs.conf +# +# \deprecated We include the repository-specific 'specs.conf' once again as the +# build-dir-local etc/specs.conf (as created by create_builddir) +# reassigns the 'SPECS' variable instead of appending it. +# We sort the 'SPECS' to remove duplicates. We should remove this +# once the old 'create_builddir' arguments are gone. +# +-include $(foreach REP,$(REPOSITORIES),$(wildcard $(REP)/etc/specs.conf)) +SPECS := $(sort $(SPECS)) + +select_from_repositories = $(firstword $(foreach REP,$(REPOSITORIES),$(wildcard $(REP)/$(1)))) + # # Determine the spec files to incorporate into the build configuration from the # repositories. Always consider the spec files present in BASE_DIR. This is diff --git a/tool/run/boot_dir/fiasco b/tool/run/boot_dir/fiasco index 4e68df41c..5bd2525fa 100644 --- a/tool/run/boot_dir/fiasco +++ b/tool/run/boot_dir/fiasco @@ -1,55 +1,11 @@ proc binary_name_ld_lib_so { } { return "ld-fiasco.lib.so" } +proc binary_name_core_o { } { return "fiasco/core.o" } proc binary_name_timer { } { return "fiasco_timer_drv" } -## -# Read the location of the Fiasco user directory from 'etc/fiasco.conf' -# -proc l4_dir { } { - global _l4_dir - - if {![info exists _l4_dir]} { - if {[file exists etc/fiasco.conf]} { - set _l4_dir [exec sed -n "/^L4_BUILD_DIR/s/^.*=\\s*//p" etc/fiasco.conf] - if {[file exists $_l4_dir]} { return $_l4_dir } - } - - set _l4_dir "[pwd]/l4" - if {![file exists $_l4_dir]} { - puts -nonewline stderr "Error: Could neither find the L4 build directory " - puts -nonewline stderr "within '/l4' nor at a location " - puts -nonewline stderr "specified via 'L4_BUILD_DIR = ' " - puts stderr "in /etc/fiasco.conf'." - exit 1 - } - } - return $_l4_dir -} - - -## -# Return the location of the Fiasco kernel -# -proc fiasco { } { - return [kernel_location_from_config_file etc/fiasco.conf [pwd]/kernel/fiasco/fiasco] -} - - -proc bin_dir { } { - if {[have_spec x86_32]} { return "[l4_dir]/bin/x86_586" } - - puts stderr "Error: Cannot determine bin directory" - exit 1 -} - -set fiasco_serial_esc_arg "-serial_esc " - - -proc run_boot_string { } { - return "\nL4 Bootstrapper" -} - -proc core_link_address { } { return "0x01000000" } +proc fiasco_serial_esc_arg { } { return "-serial_esc " } +proc run_boot_string { } { return "\nL4 Bootstrapper" } +proc core_link_address { } { return "0x01000000" } ## @@ -57,24 +13,17 @@ proc core_link_address { } { return "0x01000000" } # proc run_boot_dir {binaries} { - build { lib/ld/fiasco kernel bootstrap sigma0 } + build { lib/ld/fiasco kernel/fiasco } build_core_image $binaries - global fiasco_serial_esc_arg - exec mkdir -p [run_dir]/fiasco - - # assert existence of the L4 build directory - l4_dir - - puts "using fiasco kernel [fiasco]" - exec cp [fiasco] [run_dir]/fiasco/fiasco - puts "using sigma0/bootstrap at [l4_dir]" - exec cp [bin_dir]/l4v2/sigma0 [run_dir]/fiasco - exec cp [bin_dir]/bootstrap [run_dir]/fiasco + exec cp kernel/fiasco/kernel [run_dir]/fiasco + exec cp kernel/fiasco/sigma0 [run_dir]/fiasco + exec cp kernel/fiasco/bootstrap [run_dir]/fiasco if {[have_include "image/iso"] || [have_include "image/disk"]} { + # # Install isolinux/GRUB files and bender # @@ -92,7 +41,7 @@ proc run_boot_dir {binaries} { puts $fh "\ntitle Genode on L4/Fiasco" puts $fh " kernel /boot/bender" puts $fh " module /fiasco/bootstrap -serial" - puts $fh " module /fiasco/fiasco -serial -jdb_cmd=JH $fiasco_serial_esc_arg" + puts $fh " module /fiasco/kernel -serial -jdb_cmd=JH [fiasco_serial_esc_arg]" puts $fh " module /fiasco/sigma0" puts $fh " module /image.elf" puts $fh " vbeset 0x117 506070" @@ -113,7 +62,7 @@ proc run_boot_dir {binaries} { set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"] puts $fh " exec /boot/bender" puts $fh " load /fiasco/bootstrap -serial" - puts $fh " load /fiasco/fiasco -serial -serial_esc -jdb_cmd=JH" + puts $fh " load /fiasco/kernel -serial -serial_esc -jdb_cmd=JH" puts $fh " load /fiasco/sigma0" puts $fh " load /image.elf" close $fh diff --git a/tool/run/boot_dir/foc b/tool/run/boot_dir/foc index 4b8450d18..bb793c801 100644 --- a/tool/run/boot_dir/foc +++ b/tool/run/boot_dir/foc @@ -1,64 +1,28 @@ proc binary_name_ld_lib_so { } { return "ld-foc.lib.so" } +proc binary_name_core_o { } { return "foc/core.o" } proc binary_name_timer { } { return "foc_timer_drv" } -## -# Return the location of the Fiasco.OC user directory -# -proc l4_dir { } { - global _l4_dir +proc run_boot_string { } { return "\nL4 Bootstrapper" } - if {![info exists _l4_dir]} { - if {[file exists etc/foc.conf]} { - set _l4_dir [exec sed -n "/^L4_BUILD_DIR/s/^.*=\\s*//p" etc/foc.conf] - if {[file exists $_l4_dir]} { return $_l4_dir } - } - set _l4_dir "[pwd]/l4" - if {![file exists $_l4_dir]} { - puts -nonewline stderr "Error: Could neither find the L4 build directory " - puts -nonewline stderr "within '/l4' nor at a location " - puts -nonewline stderr "specified via 'L4_BUILD_DIR = ' " - puts stderr "in /etc/foc.conf'." - exit 1 - } - } - return $_l4_dir +proc core_link_address { } { + + if {[have_spec x86 ]} { return "0x01100000" } + if {[have_spec arndale ]} { return "0x80100000" } + if {[have_spec rpi ]} { return "0x00800000" } + if {[have_spec panda ]} { return "0xa0000000" } + if {[have_spec pbxa9 ]} { return "0x76000000" } + if {[have_spec odroid_x2]} { return "0x80100000" } + if {[have_spec imx53 ]} { return "0x70140000" } + + puts stderr "Error: platform not supported, core link address unknown" + exit 1 } -## -# Return whether the l4-buid-directory is provided from the outside -# -proc l4_dir_external { } { - if {[l4_dir] == "[pwd]/l4"} { return 0 } - return 1 -} -## -# Return the location of the Fiasco.OC kernel directory -# -proc fiasco { } { - global _fiasco +proc fiasco_serial_esc_arg { } { return "-serial_esc " } - if {![info exists _fiasco]} { - if {[file exists etc/foc.conf]} { - set _fiasco [exec sed -n "/^KERNEL/s/^.*=\\s*//p" etc/foc.conf] - if {[file exists $_fiasco]} { return $_fiasco } - } - - # try to fall back to version hosted with the Genode build directory - set _fiasco "[pwd]/kernel/fiasco.oc/fiasco" - } - return $_fiasco -} - -## -# Return whether fiasco kernel is provided from the outside -# -proc fiasco_external { } { - if {[fiasco] == "[pwd]/kernel/fiasco.oc/fiasco"} { return 0 } - return 1 -} ## # Reset the target system via the Fiasco.OC kernel debugger @@ -72,57 +36,37 @@ proc reset_target { {spawn_id_arg -1} } { } -proc bin_dir { } { - if {[have_spec x86_32]} { return "[l4_dir]/bin/x86_586" } - if {[have_spec x86_64]} { return "[l4_dir]/bin/amd64_K8" } - if {[have_spec arm_v7a]} { return "[l4_dir]/bin/arm_armv7a" } - if {[have_spec arm_v6]} { return "[l4_dir]/bin/arm_armv6" } +proc l4_build_dir { } { return "[pwd]/var/libcache/syscall-foc/build" } + + +proc kernel_binary { } { return "[pwd]/var/libcache/kernel-foc/build/fiasco" } + + +proc l4_bin_dir { } { + + if {[have_spec x86_32]} { return "[l4_build_dir]/bin/x86_586" } + if {[have_spec x86_64]} { return "[l4_build_dir]/bin/amd64_K8" } + if {[have_spec arm_v7a]} { return "[l4_build_dir]/bin/arm_armv7a" } + if {[have_spec arm_v6]} { return "[l4_build_dir]/bin/arm_armv6" } puts stderr "Error: Cannot determine bin directory" exit 1 } -set fiasco_serial_esc_arg "-serial_esc " - -proc core_link_address { } { - if {[have_spec x86 ]} { return "0x01100000" } - if {[have_spec arndale ]} { return "0x80100000" } - if {[have_spec rpi ]} { return "0x00800000" } - if {[have_spec panda ]} { return "0xa0000000" } - if {[have_spec pbxa9 ]} { return "0x76000000" } - if {[have_spec odroid_x2]} { return "0x80100000" } - if {[have_spec imx53 ]} { return "0x70140000" } - - puts stderr "Error: platform not supported, core link address unknown" - exit 1 -} proc run_boot_dir_x86 {binaries} { - global fiasco_serial_esc_arg - - exec mkdir -p [run_dir]/fiasco - - set foc_targets { lib/ld/foc } - if {![fiasco_external] && ![file exists kernel]} { lappend foc_targets kernel } - if {![l4_dir_external]} { - if {![file exists bootstrap]} { lappend foc_targets bootstrap } - if {![file exists sigma0]} { lappend foc_targets sigma0 } - } - if {[llength $foc_targets] > 0} { build $foc_targets } + build { lib/ld/foc kernel/foc } build_core_image $binaries - # assert existence of the L4 build directory - l4_dir - - puts "using fiasco kernel [fiasco]" - exec cp [fiasco] [run_dir]/fiasco - puts "using sigma0/bootstrap at [l4_dir]" - exec cp [bin_dir]/l4f/sigma0 [run_dir]/fiasco - exec cp [bin_dir]/bootstrap [run_dir]/fiasco + exec mkdir [run_dir]/foc + exec cp [kernel_binary] [run_dir]/foc/kernel + exec cp [l4_bin_dir]/l4f/sigma0 [run_dir]/foc + exec cp [l4_bin_dir]/bootstrap [run_dir]/foc if {[have_include "image/iso"] || [have_include "image/disk"]} { + # # Install isolinux/GRUB files and bender # @@ -139,9 +83,9 @@ proc run_boot_dir_x86 {binaries} { puts $fh "default 0" puts $fh "\ntitle Genode on Fiasco.OC" puts $fh " kernel /boot/bender" - puts $fh " module /fiasco/bootstrap" - puts $fh " module /fiasco/fiasco $fiasco_serial_esc_arg" - puts $fh " module /fiasco/sigma0" + puts $fh " module /foc/bootstrap" + puts $fh " module /foc/kernel [fiasco_serial_esc_arg]" + puts $fh " module /foc/sigma0" puts $fh " module /image.elf" close $fh } @@ -162,9 +106,9 @@ proc run_boot_dir_x86 {binaries} { # set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"] puts $fh " exec /boot/bender" - puts $fh " load /fiasco/bootstrap" - puts $fh " load /fiasco/fiasco -serial_esc" - puts $fh " load /fiasco/sigma0" + puts $fh " load /foc/bootstrap" + puts $fh " load /foc/kernel -serial_esc" + puts $fh " load /foc/sigma0" puts $fh " load /image.elf" close $fh @@ -179,12 +123,11 @@ proc run_boot_dir_x86 {binaries} { } -proc run_boot_dir_arm {binaries} { +proc run_boot_dir_arm { binaries } { global run_target - global fiasco_serial_esc_arg - build { lib/ld/foc kernel sigma0 bootstrap } + build { lib/ld/foc kernel/foc } build_core_image $binaries @@ -195,25 +138,24 @@ proc run_boot_dir_arm {binaries} { puts $fh "modaddr 0x01100000\n" puts $fh "entry genode" - puts $fh "kernel [fiasco] $fiasco_serial_esc_arg" + puts $fh "kernel [kernel_binary] [fiasco_serial_esc_arg]" puts $fh "roottask image.elf" close $fh - - set gen_img_cmd "make -C [l4_dir]/source O=[l4_dir] E=genode " + set gen_img_cmd "make -C [l4_build_dir]/source O=[l4_build_dir] E=genode " append gen_img_cmd "MODULES_LIST=[pwd]/[run_dir]/modules.list " - append gen_img_cmd "MODULE_SEARCH_PATH=[pwd]/[run_dir]:[file dirname [fiasco]]:[l4_dir] " + append gen_img_cmd "MODULE_SEARCH_PATH=[pwd]/[run_dir]:[pwd]:[l4_build_dir] " append gen_img_cmd "SYSTEM_TARGET=[cross_dev_prefix] elfimage" set pid [eval "spawn sh -c \"$gen_img_cmd\""] expect { eof { } } if {[lindex [wait $pid] end] != 0} { - puts stderr "Error: Single-image creation failed" + puts stderr "Error: single-image creation failed" exit -4 } exec cp [run_dir]/image.elf [run_dir]/core.elf - exec cp [bin_dir]/bootstrap.elf [run_dir]/image.elf + exec cp [l4_bin_dir]/bootstrap.elf [run_dir]/image.elf run_image [run_dir]/image.elf puts "\nboot image: [run_dir]/image.elf\n" @@ -231,11 +173,6 @@ proc run_boot_dir_arm {binaries} { } -proc run_boot_string { } { - return "\nL4 Bootstrapper" -} - - ## # Populate boot directory with binaries on fiasco.OC # diff --git a/tool/run/boot_dir/hw b/tool/run/boot_dir/hw index e686e0267..076bcef89 100644 --- a/tool/run/boot_dir/hw +++ b/tool/run/boot_dir/hw @@ -1,4 +1,5 @@ proc binary_name_ld_lib_so { } { return "ld-hw.lib.so" } +proc binary_name_core_o { } { return "hw/core.o" } proc binary_name_timer { } { return "hw_timer_drv" } diff --git a/tool/run/boot_dir/linux b/tool/run/boot_dir/linux index 11088bf1d..149271354 100644 --- a/tool/run/boot_dir/linux +++ b/tool/run/boot_dir/linux @@ -1,4 +1,5 @@ proc binary_name_ld_lib_so { } { return "ld-linux.lib.so" } +proc binary_name_core { } { return "core-linux" } proc binary_name_timer { } { return "linux_timer_drv" } diff --git a/tool/run/boot_dir/nova b/tool/run/boot_dir/nova index 9aad25886..bd62da936 100644 --- a/tool/run/boot_dir/nova +++ b/tool/run/boot_dir/nova @@ -1,4 +1,5 @@ proc binary_name_ld_lib_so { } { return "ld-nova.lib.so" } +proc binary_name_core_o { } { return "nova/core.o" } proc binary_name_timer { } { return "nova_timer_drv" } @@ -12,7 +13,7 @@ proc nova_kernel { } { if {[file exists etc/nova.conf]} { set _nova_kernel [exec sed -n "/^NOVA_KERNEL/s/^.*=\\s*//p" etc/nova.conf] } else { - set _nova_kernel "[pwd]/kernel/hypervisor" + set _nova_kernel "[pwd]/kernel/nova/hypervisor" } } return $_nova_kernel @@ -23,7 +24,7 @@ proc nova_kernel { } { # Return whether nova is provided from the outside # proc nova_external { } { - if {[nova_kernel] == "[pwd]/kernel/hypervisor"} { return 0 } + if {[nova_kernel] == "[pwd]/kernel/nova/hypervisor"} { return 0 } return 1 } diff --git a/tool/run/boot_dir/okl4 b/tool/run/boot_dir/okl4 index ff91e7f61..efc20cb1d 100644 --- a/tool/run/boot_dir/okl4 +++ b/tool/run/boot_dir/okl4 @@ -1,4 +1,5 @@ proc binary_name_ld_lib_so { } { return "ld-okl4.lib.so" } +proc binary_name_core_o { } { return "okl4/core.o" } proc binary_name_timer { } { return "pit_timer_drv" } @@ -27,15 +28,6 @@ proc okl4_dir { } { } -## -# Return the location of the OKL4 kernel -# -proc okl4 { } { - if {[okl4_external]} { return [okl4_dir]/build/pistachio/bin/kernel } - return bin/kernel -} - - ## # Return whether okl4 kernel is provided from the outside # @@ -129,8 +121,8 @@ proc run_boot_dir {binaries} { # the kernel does not stand in the way of the everyday's work flow of # executing run scripts as quick as possible. # - if {![okl4_external] && ![file exists [okl4]]} { - build { lib/ld/okl4 kernel } + if {![okl4_external] && ![file exists bin/okl4]} { + build { lib/ld/okl4 kernel/okl4 } } else { build { lib/ld/okl4 } } @@ -138,7 +130,7 @@ proc run_boot_dir {binaries} { build_core_image $binaries exec mv [run_dir]/image.elf [run_dir].image - exec cp [okl4] [run_dir]/kernel + exec cp bin/okl4 [run_dir]/kernel # # Generate ELF weaver config diff --git a/tool/run/boot_dir/pistachio b/tool/run/boot_dir/pistachio index 198520090..0e396e20f 100644 --- a/tool/run/boot_dir/pistachio +++ b/tool/run/boot_dir/pistachio @@ -1,7 +1,12 @@ proc binary_name_ld_lib_so { } { return "ld-pistachio.lib.so" } +proc binary_name_core_o { } { return "pistachio/core.o" } proc binary_name_timer { } { return "pistachio_timer_drv" } +proc run_boot_string { } { return "\n\r\033\\\[1m\033\\\[33mL4Ka::Pistachio -" } +proc core_link_address { } { return "0x02000000" } + + ## # Install files needed to boot via PXE # @@ -11,79 +16,23 @@ proc install_pxe_bootloader_to_run_dir { } { } -## -# Read the location of the Pistachio user directory from 'etc/pistachio.conf' -# -proc pistachio_user_dir { } { - global _pistachio_user_dir - - if {![info exists _pistachio_user_dir]} { - if {[file exists etc/pistachio.conf]} { - set _pistachio_user_dir [exec sed -n "/^PISTACHIO_USER_BUILD_DIR/s/^.*=\\s*//p" etc/pistachio.conf] - } else { - set _pistachio_user_dir "[pwd]/l4" - } - } - return $_pistachio_user_dir -} - - -## -# Read the location of the Pistachio kernel directory from 'etc/pistachio.conf' -# or return a good heuristic -# -proc pistachio_kernel { } { - global _pistachio_kernel - - if {![info exists _pistachio_kernel]} { - if {[file exists etc/pistachio.conf]} { - set _pistachio_kernel [exec sed -n "/^PISTACHIO_KERNEL/s/^.*=\\s*//p" etc/pistachio.conf] - if {$_pistachio_kernel == ""} { - set _pistachio_kernel [file dirname [file dirname [pistachio_user_dir]]]/kernel/build/x86-kernel - } - } else { - set _pistachio_kernel "[pwd]/bin/kernel" - } - } - return $_pistachio_kernel -} - - -## -# Return whether the kernel is provided from the outside -# -proc kernel_external { } { - if {[pistachio_kernel] == "[pwd]/bin/kernel"} { return 0 } - return 1 -} - - -proc run_boot_string { } { - return "\n\r\033\\\[1m\033\\\[33mL4Ka::Pistachio -" -} - -proc core_link_address { } { return "0x02000000" } - ## # Populdate boot directory with binaries on pistachio # proc run_boot_dir {binaries} { - if {![kernel_external] && ![file exists [pistachio_kernel]]} { - build { lib/ld/pistachio kernel } - } else { - build { lib/ld/pistachio } - } + build { lib/ld/pistachio kernel/pistachio } build_core_image $binaries exec mkdir -p [run_dir]/pistachio - exec cp [pistachio_kernel] [run_dir]/pistachio/kernel - exec cp [pistachio_user_dir]/serv/sigma0/sigma0 [run_dir]/pistachio - exec cp [pistachio_user_dir]/util/kickstart/kickstart [run_dir]/pistachio + exec cp kernel/pistachio/kernel [run_dir]/pistachio + exec cp kernel/pistachio/sigma0 [run_dir]/pistachio + exec cp kernel/pistachio/kickstart [run_dir]/pistachio if {[have_include "image/iso"] || [have_include "image/disk"]} { + # # Install isolinux/GRUB files and bender # diff --git a/tool/run/boot_dir/sel4 b/tool/run/boot_dir/sel4 index 6e72ee59d..b16bcc661 100644 --- a/tool/run/boot_dir/sel4 +++ b/tool/run/boot_dir/sel4 @@ -1,4 +1,5 @@ proc binary_name_ld_lib_so { } { return "ld-sel4.lib.so" } +proc binary_name_core_o { } { return "sel4/core.o" } proc binary_name_timer { } { return "pit_timer_drv" } @@ -12,7 +13,7 @@ proc core_link_address { } { return "0x02000000" } proc run_boot_dir {binaries} { # build sel4 kernel - build { lib/ld/sel4 kernel } + build { lib/ld/sel4 kernel/sel4 } exec cp bin/sel4 [run_dir]/sel4 build_core_image $binaries diff --git a/tool/run/run b/tool/run/run index 95a59c102..629c2dd73 100755 --- a/tool/run/run +++ b/tool/run/run @@ -775,11 +775,13 @@ proc build_core_image {binaries} { copy_and_strip_genode_binaries_to_run_dir $modules lappend modules "config" + set core_obj core/[kernel_specific_binary core.o] + # create core binary without modules for debugging - build_core core/core.o {} [run_dir].core + build_core $core_obj {} [run_dir].core # create core binary containing the boot modules - build_core core/core.o $modules [run_dir]/image.elf + build_core $core_obj $modules [run_dir]/image.elf exec [cross_dev_prefix]strip [run_dir]/image.elf }