2021-01-10 14:32:42 +00:00
|
|
|
|
## Copyright (C) 2017 Jeremiah Orians
|
|
|
|
|
## Copyright (C) 2020 deesix <deesix@tuta.io>
|
|
|
|
|
## This file is part of M2-Mesoplanet.
|
|
|
|
|
##
|
|
|
|
|
## M2-Mesoplanet 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.
|
|
|
|
|
##
|
|
|
|
|
## M2-Mesoplanet 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 M2-Mesoplanet. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
# Prevent rebuilding
|
2021-11-21 22:16:42 +00:00
|
|
|
|
VPATH = bin
|
|
|
|
|
PACKAGE = m2-mesoplanet
|
2021-01-10 14:32:42 +00:00
|
|
|
|
|
|
|
|
|
# C compiler settings
|
|
|
|
|
CC?=gcc
|
|
|
|
|
CFLAGS:=$(CFLAGS) -D_GNU_SOURCE -O0 -std=c99 -ggdb
|
2022-01-21 02:35:14 +00:00
|
|
|
|
ARCH:=$(shell get_machine)
|
|
|
|
|
BLOOD_FLAG:=$(shell get_machine --blood)
|
|
|
|
|
ENDIAN_FLAG:=$(shell get_machine --endian)
|
|
|
|
|
BASE_ADDRESS:=$(shell get_machine --hex2)
|
2021-01-10 14:32:42 +00:00
|
|
|
|
|
|
|
|
|
all: M2-Mesoplanet
|
|
|
|
|
|
2021-11-23 02:41:11 +00:00
|
|
|
|
M2-Mesoplanet: bin results cc.h cc_reader.c cc_core.c cc_macro.c cc_env.c cc_spawn.c cc.c cc_globals.c cc_globals.h
|
2021-01-10 14:32:42 +00:00
|
|
|
|
$(CC) $(CFLAGS) \
|
2021-11-21 21:09:14 +00:00
|
|
|
|
M2libc/bootstrappable.c \
|
2021-01-10 14:32:42 +00:00
|
|
|
|
cc_reader.c \
|
|
|
|
|
cc_core.c \
|
|
|
|
|
cc_macro.c \
|
2021-11-21 22:47:58 +00:00
|
|
|
|
cc_env.c \
|
2021-11-23 02:41:11 +00:00
|
|
|
|
cc_spawn.c \
|
2021-01-10 14:32:42 +00:00
|
|
|
|
cc.c \
|
|
|
|
|
cc.h \
|
|
|
|
|
cc_globals.c \
|
|
|
|
|
gcc_req.h \
|
|
|
|
|
-o bin/M2-Mesoplanet
|
|
|
|
|
|
2022-01-21 02:35:14 +00:00
|
|
|
|
M2-boot: bin results cc.h cc_reader.c cc_core.c cc_macro.c cc_env.c cc_spawn.c cc.c cc_globals.c cc_globals.h
|
|
|
|
|
echo $(ARCH)
|
|
|
|
|
echo $(BLOOD_FLAG)
|
|
|
|
|
echo $(ENDIAN_FLAG)
|
|
|
|
|
echo $(BASE_ADDRESS)
|
|
|
|
|
M2-Planet --architecture ${ARCH} \
|
|
|
|
|
-f M2libc/sys/types.h \
|
|
|
|
|
-f M2libc/stddef.h \
|
|
|
|
|
-f M2libc/${ARCH}/linux/fcntl.c \
|
|
|
|
|
-f M2libc/${ARCH}/linux/unistd.c \
|
|
|
|
|
-f M2libc/${ARCH}/linux/sys/stat.c \
|
|
|
|
|
-f M2libc/stdlib.c \
|
|
|
|
|
-f M2libc/stdio.c \
|
|
|
|
|
-f M2libc/string.c \
|
|
|
|
|
-f M2libc/bootstrappable.c \
|
|
|
|
|
-f cc.h \
|
|
|
|
|
-f cc_globals.c \
|
|
|
|
|
-f cc_env.c \
|
|
|
|
|
-f cc_reader.c \
|
|
|
|
|
-f cc_spawn.c \
|
|
|
|
|
-f cc_core.c \
|
|
|
|
|
-f cc_macro.c \
|
|
|
|
|
-f cc.c \
|
|
|
|
|
--debug \
|
|
|
|
|
-o ./bin/M2-Mesoplanet-1.M1
|
|
|
|
|
blood-elf ${ENDIAN_FLAG} ${BLOOD_FLAG} -f ./bin/M2-Mesoplanet-1.M1 -o ./bin/M2-Mesoplanet-1-footer.M1
|
|
|
|
|
M1 --architecture ${ARCH} \
|
|
|
|
|
${ENDIAN_FLAG} \
|
|
|
|
|
-f M2libc/${ARCH}/${ARCH}_defs.M1 \
|
|
|
|
|
-f M2libc/${ARCH}/libc-full.M1 \
|
|
|
|
|
-f ./bin/M2-Mesoplanet-1.M1 \
|
|
|
|
|
-f ./bin/M2-Mesoplanet-1-footer.M1 \
|
|
|
|
|
-o ./bin/M2-Mesoplanet-1.hex2
|
|
|
|
|
hex2 --architecture ${ARCH} \
|
|
|
|
|
${ENDIAN_FLAG} \
|
|
|
|
|
--base-address ${BASE_ADDRESS} \
|
|
|
|
|
-f ../M2libc/${ARCH}/ELF-${ARCH}-debug.hex2 \
|
|
|
|
|
-f ./bin/M2-Mesoplanet-1.hex2 \
|
|
|
|
|
-o ./bin/M2-Mesoplanet
|
|
|
|
|
|
|
|
|
|
|
2021-01-10 14:32:42 +00:00
|
|
|
|
# Clean up after ourselves
|
|
|
|
|
.PHONY: clean
|
|
|
|
|
clean:
|
2021-11-21 22:16:42 +00:00
|
|
|
|
rm -rf bin/
|
2021-01-10 14:32:42 +00:00
|
|
|
|
# ./test/test0000/cleanup.sh
|
|
|
|
|
|
2022-01-22 21:31:38 +00:00
|
|
|
|
.PHONY: clean-tmp
|
2022-01-21 02:35:14 +00:00
|
|
|
|
clean-tmp:
|
|
|
|
|
rm -vf /tmp/M2-Mesoplanet-*
|
|
|
|
|
rm -vf /tmp/M2-Planet-*
|
|
|
|
|
rm -vf /tmp/M1-macro-*
|
|
|
|
|
rm -vf /tmp/blood-elf-*
|
|
|
|
|
|
2021-01-10 14:32:42 +00:00
|
|
|
|
# Directories
|
|
|
|
|
bin:
|
|
|
|
|
mkdir -p bin
|
|
|
|
|
|
|
|
|
|
results:
|
|
|
|
|
mkdir -p test/results
|
|
|
|
|
|
|
|
|
|
# tests
|
2021-11-21 22:16:42 +00:00
|
|
|
|
test: M2-Mesoplanet
|
|
|
|
|
./test/test0000/run_test.sh
|
2021-11-21 22:20:32 +00:00
|
|
|
|
./test/test0001/run_test.sh
|
2021-11-21 22:16:42 +00:00
|
|
|
|
# sha256sum -c test/test.answers
|
2021-01-10 14:32:42 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Generate test answers
|
|
|
|
|
.PHONY: Generate-test-answers
|
|
|
|
|
Generate-test-answers:
|
|
|
|
|
sha256sum test/results/* >| test/test.answers
|
|
|
|
|
|
|
|
|
|
DESTDIR:=
|
|
|
|
|
PREFIX:=/usr/local
|
|
|
|
|
bindir:=$(DESTDIR)$(PREFIX)/bin
|
|
|
|
|
.PHONY: install
|
|
|
|
|
install: M2-Mesoplanet
|
|
|
|
|
mkdir -p $(bindir)
|
|
|
|
|
cp $^ $(bindir)
|
|
|
|
|
|
|
|
|
|
### dist
|
|
|
|
|
.PHONY: dist
|
|
|
|
|
|
|
|
|
|
COMMIT=$(shell git describe --dirty)
|
|
|
|
|
TARBALL_VERSION=$(COMMIT:Release_%=%)
|
|
|
|
|
TARBALL_DIR:=$(PACKAGE)-$(TARBALL_VERSION)
|
|
|
|
|
TARBALL=$(TARBALL_DIR).tar.gz
|
|
|
|
|
# Be friendly to Debian; avoid using EPOCH
|
|
|
|
|
MTIME=$(shell git show HEAD --format=%ct --no-patch)
|
|
|
|
|
# Reproducible tarball
|
|
|
|
|
TAR_FLAGS=--sort=name --mtime=@$(MTIME) --owner=0 --group=0 --numeric-owner --mode=go=rX,u+rw,a-s
|
|
|
|
|
|
|
|
|
|
$(TARBALL):
|
|
|
|
|
(git ls-files \
|
|
|
|
|
--exclude=$(TARBALL_DIR); \
|
|
|
|
|
echo $^ | tr ' ' '\n') \
|
|
|
|
|
| tar $(TAR_FLAGS) \
|
|
|
|
|
--transform=s,^,$(TARBALL_DIR)/,S -T- -cf- \
|
|
|
|
|
| gzip -c --no-name > $@
|
|
|
|
|
|
|
|
|
|
dist: $(TARBALL)
|