diff --git a/.gitignore b/.gitignore index 72ba34d8..9959d890 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # GNU Mes --- Maxwell Equations of Software -# Copyright © 2016,2017,2019,2020,2022 Jan (janneke) Nieuwenhuizen +# Copyright © 2016,2017,2019,2020,2022,2023 Jan (janneke) Nieuwenhuizen # # This file is part of GNU Mes. # @@ -80,6 +80,7 @@ /scaffold/tiny-mes /scaffold/argv-m2 +/scaffold/env-m2 /scaffold/hello-m2 /scaffold/main-m2 /scaffold/micro-mes-m2 diff --git a/build-aux/build.sh.in b/build-aux/build.sh.in index 2a2cb3d0..c1cb04f3 100644 --- a/build-aux/build.sh.in +++ b/build-aux/build.sh.in @@ -1,7 +1,7 @@ #! /bin/sh # GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019,2022 Jan (janneke) Nieuwenhuizen +# Copyright © 2018,2019,2022,2023 Jan (janneke) Nieuwenhuizen # # This file is part of GNU Mes. # @@ -114,6 +114,7 @@ if test -n "$M2_PLANET" && (test "$mes_cpu" == "x86" \ trace "KAEM scaffold/main.kaem" kaem --strict $__verbose -f scaffold/main.kaem trace "KAEM scaffold/hello.kaem" kaem --strict $__verbose -f scaffold/hello.kaem trace "KAEM scaffold/argv.kaem" kaem --strict $__verbose -f scaffold/argv.kaem + trace "KAEM scaffold/env.kaem" kaem --strict $__verbose -f scaffold/env.kaem trace "KAEM scaffold/read.kaem" kaem --strict $__verbose -f scaffold/read.kaem trace "KAEM kaem.run" kaem --strict $__verbose ) diff --git a/scaffold/env.c b/scaffold/env.c new file mode 100644 index 00000000..c412ab5f --- /dev/null +++ b/scaffold/env.c @@ -0,0 +1,31 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2016,2017,2023 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include + +int +main (int argc, char **argv) +{ + eputs ("SHELL="); + eputs (getenv ("SHELL")); + eputs ("\n"); + return 0; +} diff --git a/scaffold/env.kaem b/scaffold/env.kaem new file mode 100644 index 00000000..13aeaaaf --- /dev/null +++ b/scaffold/env.kaem @@ -0,0 +1,64 @@ +#! /bin/sh +# Copyright © 2019,2022,2023 Jan (janneke) Nieuwenhuizen +# +# This file is part of GNU Mes. +# +# GNU Mes is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Mes is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Mes. If not, see . + +# Usage: +# kaem --verbose --strict --file scaffold/env.kaem +# scaffold/env-m2 + +cc_cpu=${cc_cpu:-i386} +mes_cpu=${mes_cpu:-x86} +stage0_cpu=${stage0_cpu:-x86} + +M2-Planet \ + --debug \ + --architecture ${stage0_cpu} \ + -D __${cc_cpu}__=1 \ + -D __linux__=1 \ + -f include/mes/lib-mini.h \ + -f lib/linux/${mes_cpu}-mes-m2/crt1.c \ + -f lib/linux/${mes_cpu}-mes-m2/_exit.c \ + -f lib/linux/${mes_cpu}-mes-m2/_write.c \ + -f lib/string/strlen.c \ + -f lib/string/strncmp.c \ + -f lib/posix/getenv.c \ + -f lib/mes/write.c \ + -f lib/mes/eputs.c \ + -f scaffold/env.c \ + -o scaffold/env.M1 + +blood-elf --little-endian -f scaffold/env.M1 -o scaffold/env.blood-elf-M1 + +M1 \ + --architecture ${stage0_cpu} \ + --little-endian \ + -f lib/m2/${mes_cpu}/${mes_cpu}_defs.M1 \ + -f lib/${mes_cpu}-mes/${mes_cpu}.M1 \ + -f lib/linux/${mes_cpu}-mes-m2/crt1.M1 \ + -f scaffold/env.M1 \ + -f scaffold/env.blood-elf-M1 \ + -o scaffold/env.hex2 + +hex2 \ + --architecture ${stage0_cpu} \ + --little-endian \ + --base-address 0x1000000 \ + -f lib/m2/${mes_cpu}/ELF-${mes_cpu}.hex2 \ + -f scaffold/env.hex2 \ + -o scaffold/env-m2 + +echo Now run: scaffold/env-m2