build: Remove make.
* GNUmakefile: trivial convenience-frontend to ./make.scm * make/*.make: Remove. * */*.make: Remove.
This commit is contained in:
parent
83a43b81b3
commit
fa4fdad623
65
GNUmakefile
65
GNUmakefile
|
@ -1,61 +1,10 @@
|
|||
SHELL:=bash
|
||||
export SHELL
|
||||
.export: SHELL
|
||||
QUIET:=@
|
||||
GUILE:=guile
|
||||
GUILE_FLAGS:=--no-auto-compile -L guile -C guile
|
||||
|
||||
default: all
|
||||
include .config.make
|
||||
|
||||
MES_DEBUG:=1
|
||||
CFLAGS:=--std=gnu99 -O0 -g --include libc-gcc.c
|
||||
HEX2_FLAGS:=--LittleEndian --Architecture 1 --BaseAddress 0x1000000
|
||||
OUT:=out
|
||||
PHONY_TARGETS:= all check clean default help
|
||||
.PHONY: $(PHONY_TARGETS)
|
||||
|
||||
SUBDIRS:=\
|
||||
module\
|
||||
src\
|
||||
scaffold\
|
||||
scripts\
|
||||
stage0\
|
||||
tests\
|
||||
tinycc\
|
||||
#
|
||||
|
||||
include make/common.make
|
||||
-include .local.make
|
||||
|
||||
build-scripts:
|
||||
make --dry-run MES=$(OUT)/mes CC= CC32= GUILE= MES_BOOTSTRAP=1 > $(OUT)/make.sh
|
||||
make --dry-run MES=$(OUT)/mes CC= CC32= GUILE= MES_BOOTSTRAP=1 | tail +$(wc -l make.sh) > $(OUT)/make-check.sh
|
||||
make --dry-run MES=$(OUT)/mes CC= CC32= GUILE= MES_BOOTSTRAP=1 | tail +$(wc -l make.sh) > $(OUT)/make-install.sh
|
||||
|
||||
make --dry-run > $(OUT)/make-dev.sh
|
||||
make --dry-run | tail +$(wc -l make.sh) > $(OUT)/make-dev-check.sh
|
||||
make --dry-run | tail +$(wc -l make.sh) > $(OUT)/make-dev-install.sh
|
||||
|
||||
help: help-top
|
||||
|
||||
install: all
|
||||
release: all
|
||||
|
||||
help:
|
||||
@echo
|
||||
|
||||
define HELP_TOP
|
||||
Usage: make [OPTION]... [TARGET]...
|
||||
|
||||
Targets:
|
||||
all update everything
|
||||
build-scripts generate build scripts
|
||||
check run unit tests
|
||||
clean remove all generated stuff
|
||||
dist create tarball in $(TARBALL)
|
||||
distclean also clean configuration
|
||||
maintainer-clean also clean expensive targets [$(strip $(MAINTAINER-CLEAN))]
|
||||
mescc compile cc/main.c to a.out
|
||||
install install in $$(DESTDIR)$$(PREFIX) [$(DESTDIR)$(PREFIX)]
|
||||
release make a release
|
||||
update-hash update hash in guix.scm
|
||||
endef
|
||||
export HELP_TOP
|
||||
help-top:
|
||||
@echo "$$HELP_TOP"
|
||||
$(PHONY_TARGETS):
|
||||
$(GUILE) $(GUILE_FLAGS) -s make.scm $@
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
ifneq ($(CC32),)
|
||||
C_FLAGS:=-nostdinc -fno-builtin
|
||||
LD_FLAGS:=-nostdlib
|
||||
CROSS:=$(CC32:%gcc=%)
|
||||
|
||||
include make/bin.make
|
||||
endif
|
|
@ -1,27 +0,0 @@
|
|||
ifneq ($(CC),)
|
||||
O_FILES := $(C_FILES:%.c=$(OUT)/%.$(CROSS)o)
|
||||
D_FILES := $(O_FILES:%o=%d)
|
||||
|
||||
ifneq ($(DEBUG),)
|
||||
$(info TARGET=$(TARGET))
|
||||
$(info C_FILES=$(C_FILES))
|
||||
$(info O_FILES=$(O_FILES))
|
||||
$(info D_FILES=$(D_FILES))
|
||||
endif
|
||||
|
||||
CLEAN+=$(O_FILES) $(OUT)/$(TARGET)
|
||||
DIST-CLEAN+=$(D_FILES)
|
||||
|
||||
INCLUDES+=mlibc/include mlibc $(OUT)/$(DIR)
|
||||
|
||||
$(OUT)/$(TARGET): ld:=$(CROSS)LD
|
||||
$(OUT)/$(TARGET): LD:=$(CROSS)$(LD)
|
||||
$(OUT)/$(TARGET): CC:=$(CROSS)$(CC)
|
||||
$(OUT)/$(TARGET): LDFLAGS:=$(LDFLAGS) $(LD_FLAGS) $(LINK)
|
||||
$(OUT)/$(TARGET): O_FILES:=$(O_FILES)
|
||||
$(OUT)/$(TARGET): $(O_FILES)
|
||||
@echo " $(ld) $(notdir $^) -> $(notdir $@)"
|
||||
$(QUIET)$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
|
||||
|
||||
include make/compile.make
|
||||
endif
|
|
@ -1,3 +0,0 @@
|
|||
ifneq ($(CC),)
|
||||
include make/check.make
|
||||
endif
|
|
@ -1,3 +0,0 @@
|
|||
ifneq ($(CC32),)
|
||||
include make/check.make
|
||||
endif
|
|
@ -1,21 +0,0 @@
|
|||
ifeq ($(TEST),)
|
||||
TEST:=$(TARGET)-check
|
||||
$(TEST): EXT:=$(EXT)
|
||||
$(TEST): EXPECT:=$(EXPECT)
|
||||
$(TEST): SHELL:=$(SHELL)
|
||||
$(TEST): $(OUT)/$(TARGET)
|
||||
@export SHELL=$(SHELL)
|
||||
ifeq ($(EXPECT),)
|
||||
$< - arg1 arg2 arg3 arg4 > $(<:.$(EXT)=.stdout)
|
||||
else
|
||||
$<; r=$$?; [ $$r = $(EXPECT) ]
|
||||
endif
|
||||
$(QUIETx)if diff -bu $(TINYCC_TEST2)/$(<F:.$(EXT)=.expect) $(<:.$(EXT)=.stdout); \
|
||||
then rm -f $(<:.$(EXT)=.stdout); \
|
||||
else exit 1; \
|
||||
fi
|
||||
endif
|
||||
CHECK+=$(TEST)
|
||||
$(TEST): TEST:=$(TEST)
|
||||
$(DIR)-check: $(TEST)
|
||||
include make/reset.make
|
|
@ -1,16 +0,0 @@
|
|||
ifeq ($(TEST),)
|
||||
TEST:=$(TARGET)-check
|
||||
$(TEST): EXPECT:=$(EXPECT)
|
||||
$(TEST): SHELL:=$(SHELL)
|
||||
$(TEST): $(OUT)/$(TARGET)
|
||||
@export SHELL=$(SHELL)
|
||||
ifeq ($(EXPECT),)
|
||||
$<
|
||||
else
|
||||
$<; r=$$?; [ $$r = $(EXPECT) ]
|
||||
endif
|
||||
endif
|
||||
CHECK+=$(TEST)
|
||||
$(TEST): TEST:=$(TEST)
|
||||
$(DIR)-check: $(TEST)
|
||||
include make/reset.make
|
|
@ -1,17 +0,0 @@
|
|||
$(OUT):
|
||||
$(QUIET)mkdir -p $@
|
||||
|
||||
clean:
|
||||
$(QUIET)rm -rf $(CLEAN)
|
||||
$(QUIET)mkdir -p $(OUT)
|
||||
|
||||
dist-clean: clean
|
||||
$(QUIET)rm -rf $(DIST-CLEAN)
|
||||
distclean: dist-clean
|
||||
|
||||
mostly-clean: dist-clean
|
||||
mostlyclean: mostly-clean
|
||||
|
||||
maintainer-clean: dist-clean
|
||||
$(QUIET)rm -rf $(MAINTAINER-CLEAN)
|
||||
maintainerclean: maintainer-clean
|
|
@ -1,49 +0,0 @@
|
|||
.PHONY: all check clean distclean mostlyclean maintainer-clean install
|
||||
|
||||
cleaning?:=$(filter clean,$(MAKECMDGOALS))
|
||||
ifeq ($(cleaning?),)
|
||||
.config.make: configure $(filter-out .config.make,$(MAKEFILE_LIST))
|
||||
./configure
|
||||
endif
|
||||
|
||||
CC32:=arch-gcc
|
||||
-include .config.make
|
||||
|
||||
CLEAN:=$(OUT)
|
||||
DIST-CLEAN:=.config.make
|
||||
MAINTAINER-CLEAN:=
|
||||
CHECK:=
|
||||
all: $(OUT)
|
||||
|
||||
include make/install.make
|
||||
|
||||
define subdir
|
||||
ifneq ($(DEBUG),)
|
||||
$$(info SUBDIR $(1))
|
||||
endif
|
||||
DIR:=$(patsubst %/,%,$(dir $(1)))
|
||||
DOUT:=$(OUT)/$$(DIR)
|
||||
include $(1)
|
||||
endef
|
||||
|
||||
$(foreach dir,$(SUBDIRS),$(eval $(call subdir,$(dir)/$(dir).make)))
|
||||
|
||||
all: $(CLEAN)
|
||||
|
||||
ifneq ($(DEBUG),)
|
||||
$(info CLEAN=$(CLEAN))
|
||||
endif
|
||||
|
||||
subdirs: $(CLEAN)
|
||||
|
||||
check: $(CLEAN) $(CHECK)
|
||||
|
||||
include make/clean.make
|
||||
|
||||
CROSS_PREFIX:=$(CC32:%gcc=%)
|
||||
ifeq ($(findstring clean,$(MAKECMDGOALS)),)
|
||||
ifneq ($(DEBUG),)
|
||||
$(info DEPS:=$(filter %.d %.$(CROSS_PREFIX)d,$(DIST-CLEAN)))
|
||||
endif
|
||||
-include $(filter %.d %.$(CROSS_PREFIX)d,$(DIST-CLEAN))
|
||||
endif
|
|
@ -1,17 +0,0 @@
|
|||
define c-compile
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CROSS:=$(CROSS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CC:=$(CC)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): cc:=$(CROSS)CC
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CC:=$(CROSS)$(CC)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CPPFLAGS:=$(CPPFLAGS) $(CPP_FLAGS) $(2:%=-D%) $(3:%=-I%)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CFLAGS:=$(CFLAGS) $(C_FLAGS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): COMPILE.c:=$$(CC) $$(CFLAGS) $$(CPPFLAGS) $(TARGET_ARCH) -c
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(1)
|
||||
@echo " $$(cc) $$(notdir $$<) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(COMPILE.c) $$(OUTPUT_OPTION) -MMD -MF $$(@:%.$(CROSS)o=%.$(CROSS)d) -MT '$$(@:.%$(CROSS)o=%.$(CROSS)d)' $$<
|
||||
endef
|
||||
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call c-compile,$(c-file),$(DEFINES),$(INCLUDES))))
|
||||
include make/reset.make
|
|
@ -1,33 +0,0 @@
|
|||
GO_FILES:=$(SCM_FILES:%.scm=%.go)
|
||||
CLEAN+=$(GO_FILES)
|
||||
|
||||
clean-go: GO_FILES:=$(GO_FILES)
|
||||
clean-go:
|
||||
@$(QUIET)rm -f $(GO_FILES)
|
||||
|
||||
INSTALL_SCM_FILES+=$(SCM_FILES)
|
||||
INSTALL_GO_FILES+=$(GO_FILES)
|
||||
INSTALL_MES_FILES+=$(MES_FILES)
|
||||
|
||||
GUILE_FLAGS:=\
|
||||
--no-auto-compile\
|
||||
-L guile\
|
||||
-C guile\
|
||||
#
|
||||
|
||||
all-go: DIR:=$(DIR)
|
||||
all-go: SCM_FILES:=$(SCM_FILES)
|
||||
all-go: GUILE_FLAGS:=$(GUILE_FLAGS)
|
||||
all-go: $(SCM_FILES)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET)cd guile && srcdir=$(srcdir) host=$(host) $(GUILE) $(GUILE_FLAGS:guile=.) -s ../build-aux/compile-all.scm $(SCM_FILES:$(DIR)/%=%)
|
||||
|
||||
$(GO_FILES): all-go
|
||||
|
||||
# these .scm files include its .mes counterpart; must add dependency to be be remade
|
||||
SCM_BASES:=$(SCM_FILES:%.scm=%)
|
||||
SCM_MES_FILES:=$(filter $(SCM_BASES:%=%.mes),$(MES_FILES))
|
||||
$(foreach scm_mes,$(SCM_MES_FILES),$(eval $(scm_mes:%.mes=%.go): $(scm_mes)))
|
||||
|
||||
CHECK := $(CHECK) $(TEST)
|
||||
include make/reset.make
|
|
@ -1,125 +0,0 @@
|
|||
.PHONY: tree-clean-p
|
||||
|
||||
READMES:=\
|
||||
AUTHORS\
|
||||
COPYING\
|
||||
HACKING\
|
||||
INSTALL\
|
||||
NEWS\
|
||||
README\
|
||||
#
|
||||
|
||||
COMMIT:=$(shell test -d .git && (git show 2>/dev/null | head -1 | cut -d' ' -f 2) || cat .tarball-version)
|
||||
GUIX-HASH:=out/guix-hash
|
||||
TARBALL_DIR:=$(PACKAGE)-$(VERSION)
|
||||
TARBALL:=$(OUT)/$(TARBALL_DIR).tar.gz
|
||||
|
||||
OPT_CLEAN:=$(OPT_CLEAN) $(TARBALL) .tarball-version
|
||||
|
||||
GIT_ARCHIVE_HEAD:=git archive HEAD --
|
||||
GIT_LS_FILES:=git ls-files
|
||||
ifeq ($(wildcard .git/HEAD),)
|
||||
GIT_ARCHIVE_HEAD:=tar -cf-
|
||||
GIT_LS_FILES:=find
|
||||
endif
|
||||
|
||||
ifeq ($(GUIX),)
|
||||
DATADIR:=$(PREFIX)/share/mes
|
||||
DOCDIR:=$(DATADIR)/doc/mes
|
||||
else
|
||||
DATADIR:=$(PREFIX)/share
|
||||
DOCDIR:=$(DATADIR)/doc
|
||||
endif
|
||||
LIBDIR:=$(PREFIX)/lib
|
||||
|
||||
GODIR:=$(LIBDIR)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
|
||||
GUILEDIR:=$(PREFIX)/share/guile/site/$(GUILE_EFFECTIVE_VERSION)
|
||||
MODULEDIR:=$(DATADIR)/module/
|
||||
|
||||
.tarball-version: tree-clean-p
|
||||
echo $(COMMIT) > $@
|
||||
|
||||
dist: $(TARBALL)
|
||||
|
||||
tree-clean-p:
|
||||
test ! -d .git || git diff --exit-code > /dev/null
|
||||
test ! -d .git || git diff --cached --exit-code > /dev/null
|
||||
@echo commit:$(COMMIT)
|
||||
|
||||
$(TARBALL): tree-clean-p .tarball-version ChangeLog
|
||||
mkdir -p $(OUT)
|
||||
($(GIT_LS_FILES) --exclude=$(OUT);\
|
||||
echo $^ | tr ' ' '\n' | grep -Ev 'tree-clean-p')\
|
||||
| tar --transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
|
||||
|
||||
ChangeLog:
|
||||
build-aux/gitlog-to-changelog > $@
|
||||
|
||||
|
||||
#FIXME: INSTALL like CLEAN
|
||||
INSTALL_SCM_FILES:=
|
||||
INSTALL_GO_FILES:=
|
||||
install: $(CLEAN) ChangeLog
|
||||
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
||||
install $(OUT)/mes $(DESTDIR)$(PREFIX)/bin/mes
|
||||
ifneq ($(MES_BOOTSTRAP),)
|
||||
install $(OUT)/mes.mes $(DESTDIR)$(PREFIX)/bin/mes.mes
|
||||
endif
|
||||
install scripts/mescc.mes $(DESTDIR)$(PREFIX)/bin/mescc.mes
|
||||
install scripts/repl.mes $(DESTDIR)$(PREFIX)/bin/repl.mes
|
||||
install guile/mescc.scm $(DESTDIR)$(PREFIX)/bin/mescc.scm
|
||||
mkdir -p $(DESTDIR)$(DATADIR)
|
||||
$(GIT_ARCHIVE_HEAD) module\
|
||||
| tar -C $(DESTDIR)$(DATADIR) -xf-
|
||||
$(GIT_ARCHIVE_HEAD) guile\
|
||||
| tar -C $(DESTDIR)$(DATADIR) -xf-
|
||||
sed -i \
|
||||
-e 's,module/,$(DATADIR)/module/,' \
|
||||
-e 's,@DATADIR@,$(DATADIR)/,g' \
|
||||
-e 's,@DOCDIR@,$(DOCDIR)/,g' \
|
||||
-e 's,@GODIR@,$(GODIR)/,g' \
|
||||
-e 's,@GUILEDIR@,$(GUILEDIR)/,g' \
|
||||
-e 's,@MODULEDIR@,$(MODULEDIR),g' \
|
||||
-e 's,@PREFIX@,$(PREFIX)/,g' \
|
||||
-e 's,@VERSION@,$(VERSION),g' \
|
||||
$(DESTDIR)$(DATADIR)/module/mes/base-0.mes \
|
||||
$(DESTDIR)$(DATADIR)/module/language/c99/compiler.mes \
|
||||
$(DESTDIR)$(PREFIX)/bin/mescc.mes \
|
||||
$(DESTDIR)$(PREFIX)/bin/mescc.scm \
|
||||
$(DESTDIR)$(PREFIX)/bin/repl.mes
|
||||
mkdir -p $(DESTDIR)$(DOCDIR)
|
||||
$(GIT_ARCHIVE_HEAD) $(READMES) \
|
||||
| tar -C $(DESTDIR)$(DOCDIR) -xf-
|
||||
$(GIT_ARCHIVE_HEAD) doc \
|
||||
| tar -C $(DESTDIR)$(DOCDIR) --strip=1 -xf-
|
||||
cp ChangeLog $(DESTDIR)$(DOCDIR)
|
||||
mkdir -p $(DESTDIR)$(GUILEDIR)
|
||||
tar -cf- -C module $(INSTALL_SCM_FILES:module/%=%)\
|
||||
| tar -C $(DESTDIR)$(GUILEDIR) -xf-
|
||||
mkdir -p $(DESTDIR)$(GODIR)
|
||||
tar -cf- -C module $(INSTALL_GO_FILES:module/%=%)\
|
||||
| tar -C $(DESTDIR)$(GODIR) -xf-
|
||||
mkdir -p $(DESTDIR)$(PREFIX)/lib
|
||||
$(GIT_ARCHIVE_HEAD) mlibc/include \
|
||||
| tar -C $(DESTDIR)$(PREFIX)/share -xf-
|
||||
cp out/mlibc/libc-mes.guile-o $(DESTDIR)$(PREFIX)/lib/libc-mes.o
|
||||
|
||||
release: tree-clean-p check dist
|
||||
git tag v$(VERSION)
|
||||
git push --tags origin master
|
||||
git push origin master
|
||||
|
||||
$(GUIX-HASH): tree-clean-p
|
||||
rm -rf out/mes && mkdir -p out && git clone . out/mes && guix hash -rx out/mes > $@
|
||||
|
||||
update-hash: $(GUIX-HASH) .tarball-version
|
||||
@echo -n hash:
|
||||
cat $^
|
||||
sed -i \
|
||||
-e 's,(base32 "[^"]*"),(base32 "$(shell cat $<)"),'\
|
||||
-e 's,(commit "[^"]*"),(commit "$(shell cat .tarball-version)"),'\
|
||||
-e 's,(version "[^g][^"]*"),(version "$(VERSION)"),'\
|
||||
guix.scm
|
||||
! git diff --exit-code
|
||||
git commit -m 'guix hash: $(shell cat $<)' guix.scm
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
ifneq ($(GUILE),)
|
||||
CROSS:=guile-
|
||||
C_FILES:=mlibc/libc-mes.c $(C_FILES)
|
||||
#C_FILES:=mlibc/mini-libc-mes.c $(C_FILES)
|
||||
O_FILES:=$(C_FILES:%.c=$(OUT)/%.$(CROSS)o)
|
||||
|
||||
ifneq ($(DEBUG),)
|
||||
$(info TARGET=$(TARGET))
|
||||
$(info C_FILES=$(C_FILES))
|
||||
$(info O_FILES=$(O_FILES))
|
||||
endif
|
||||
|
||||
CLEAN+=$(O_FILES) $(OUT)/$(TARGET)
|
||||
|
||||
CLEAN+=$(OUT)/$(TARGET)
|
||||
|
||||
INCLUDES+=mlibc/include mlibc $(OUT)/$(DIR)
|
||||
MESCC.scm:=guile/mescc.scm -g
|
||||
LINK.hex2:=$(HEX2)
|
||||
#ELF_HEADER:=stage0/elf32-0header.hex2
|
||||
#ELF_FOOTER:=stage0/elf-0footer.hex2
|
||||
ELF_HEADER:=stage0/elf32-header.hex2
|
||||
ELF_FOOTER:=stage0/elf32-footer-single-main.hex2
|
||||
|
||||
|
||||
$(OUT)/$(TARGET): ld:=$(LINK.hex2)
|
||||
$(OUT)/$(TARGET): LD:=$(MESLD.scm)
|
||||
$(OUT)/$(TARGET): CC:=$(MESCC.scm)
|
||||
$(OUT)/$(TARGET): CFLAGS:=
|
||||
$(OUT)/$(TARGET): LDFLAGS:=
|
||||
$(OUT)/$(TARGET): O_FILES:=$(O_FILES)
|
||||
$(OUT)/$(TARGET): $(O_FILES)
|
||||
@echo " $(ld) $(notdir $(O_FILES)) -> $(notdir $@)"
|
||||
$(QUIET)$(LINK.hex2) $(HEX2_FLAGS) -f $(ELF_HEADER) $(O_FILES:%=-f %) $(LOADLIBES:%=-f %) $(LDLIBS:%=-f %) -f $(ELF_FOOTER) > $@ || { rm -f $@; exit 1;}
|
||||
@chmod +x $@
|
||||
|
||||
define mescc.scm-c-compile
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CROSS:=$(CROSS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): cc:=MESCC.scm
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CC:=$(MESCC.scm)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): COMPILE.c:=$(MESCC.scm) -c $(CPPFLAGS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(INSTALL_GO_FILES)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(COMPILE.c) $$(CPPFLAGS) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
define mescc.scm-c-preprocess
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CROSS:=$(CROSS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): cc:=MESCC.scm
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CC:=$(MESCC.scm)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): PREPROCESS.c:=$(MESCC.scm) -E $(CPPFLAGS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(INSTALL_GO_FILES)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(PREPROCESS.c) $$(CPPFLAGS) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
define mescc.scm-c-compile-E
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CROSS:=$(CROSS)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): cc:=MESCC.scm
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CC:=$(MESCC.scm)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): COMPILE.c:=$(MESCC.scm) -c $(CPPFLAGS)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(MAKEFILE_LIST)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(INSTALL_GO_FILES)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(COMPILE.c) $$(CPPFLAGS) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
ifeq ($(MLIBC.scm),)
|
||||
MLIBC.scm:=DONE
|
||||
else
|
||||
C_FILES:=$(filter-out mlibc/libc-mes.c,$(C_FILES))
|
||||
C_FILES:=$(filter-out mlibc/mini-libc-mes.c,$(C_FILES))
|
||||
endif
|
||||
|
||||
ifneq ($(MESC_DIRECT),)
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.scm-c-compile,$(c-file),$(DEFINES),$(INCLUDES))))
|
||||
else
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.scm-c-preprocess,$(c-file),$(DEFINES),$(INCLUDES))))
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.scm-c-compile-E,$(c-file:%.c=$(OUT)/%.$(CROSS)E),$(DEFINES),$(INCLUDES))))
|
||||
endif
|
||||
|
||||
endif
|
||||
include make/reset.make
|
|
@ -1,104 +0,0 @@
|
|||
ifneq ($(MES),)
|
||||
CROSS:=mes-
|
||||
C_FILES:=mlibc/libc-mes.c $(C_FILES)
|
||||
O_FILES:=$(C_FILES:%.c=$(OUT)/%.$(CROSS)o)
|
||||
|
||||
ifneq ($(DEBUG),)
|
||||
$(info TARGET=$(TARGET))
|
||||
$(info C_FILES=$(C_FILES))
|
||||
$(info O_FILES=$(O_FILES))
|
||||
endif
|
||||
|
||||
CLEAN+=$(O_FILES) $(OUT)/$(TARGET)
|
||||
|
||||
CLEAN+=$(OUT)/$(TARGET)
|
||||
|
||||
INCLUDES+=mlibc/include mlibc $(OUT)/$(DIR)
|
||||
MESCC.mes:=scripts/mescc.mes -g
|
||||
MESLD.mes:=scripts/mescc.mes -g
|
||||
LINK.hex2:=$(HEX2)
|
||||
#ELF_HEADER:=stage0/elf32-0header.hex2
|
||||
#ELF_FOOTER:=stage0/elf-0footer.hex2
|
||||
ELF_HEADER:=stage0/elf32-header.hex2
|
||||
ELF_FOOTER:=stage0/elf32-footer-single-main.hex2
|
||||
|
||||
$(OUT)/$(TARGET): ld:=MESLD.mes
|
||||
$(OUT)/$(TARGET): LD:=$(MESLD.mes)
|
||||
$(OUT)/$(TARGET): CC:=$(MESCC.mes)
|
||||
$(OUT)/$(TARGET): CFLAGS:=
|
||||
$(OUT)/$(TARGET): LDFLAGS:=
|
||||
$(OUT)/$(TARGET): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(TARGET): scripts/mes
|
||||
$(OUT)/$(TARGET): O_FILES:=$(O_FILES)
|
||||
$(OUT)/$(TARGET): $(O_FILES)
|
||||
@echo " $(ld) $(notdir $(O_FILES)) -> $(notdir $@)"
|
||||
$(QUIET)$(LINK.hex2) $(HEX2_FLAGS) -f $(ELF_HEADER) $(O_FILES:%=-f %) $(LOADLIBES:%=-f %) $(LDLIBS:%=-f %) -f $(ELF_FOOTER) > $@ || { rm -f $@; exit 1;}
|
||||
@chmod +x $@
|
||||
|
||||
define mescc.mes-c-compile
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CROSS:=$(CROSS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): cc:=MESCC.mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CC:=$(MESCC.mes)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): COMPILE.c:=$(MESCC.mes) -c
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): COMPILE.c:=$(MESCC.mes) -c $(CPPFLAGS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): OUT:=$(OUT)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(OUT)/mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): scripts/mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(INSTALL_MES_FILES)
|
||||
$(OUT)/$(1:.c=.$(CROSS)o): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(COMPILE.c) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
define mescc.mes-c-preprocess
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CROSS:=$(CROSS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): cc:=MESCC.mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CC:=$(MESCC.mes)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): OUT:=$(OUT)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): PREPROCESS.c:=$(MESCC.mes) -E $(CPPFLAGS)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(MAKEFILE_LIST)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(OUT)/mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): scripts/mes
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(INSTALL_MES_FILES)
|
||||
$(OUT)/$(1:.c=.$(CROSS)E): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(PREPROCESS.c) $$(CPPFLAGS) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
define mescc.mes-c-compile-E
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CROSS:=$(CROSS)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): cc:=MESCC.mes
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CC:=$(MESCC.mes)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): CPPFLAGS:=$(2:%=-D %) $(3:%=-I %)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): COMPILE.c:=$(MESCC.mes) -c $(CPPFLAGS)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): OUT:=$(OUT)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(MAKEFILE_LIST)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(OUT)/mes
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): scripts/mes
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(INSTALL_MES_FILES)
|
||||
$(1:.$(CROSS)E=.$(CROSS)o): $(1)
|
||||
@echo " $$(cc) $$(notdir $(1)) -> $$(notdir $$@)"
|
||||
@mkdir -p $$(dir $$@)
|
||||
$$(QUIET)$$(COMPILE.c) $$(CPPFLAGS) $$(OUTPUT_OPTION) $(1)
|
||||
endef
|
||||
|
||||
ifeq ($(MLIBC.mes),)
|
||||
MLIBC.mes:=DONE
|
||||
else
|
||||
C_FILES:=$(filter-out mlibc/libc-mes.c,$(C_FILES))
|
||||
endif
|
||||
|
||||
ifneq ($(MESC_DIRECT),)
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.mes-c-compile,$(c-file),$(DEFINES),$(INCLUDES))))
|
||||
else
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.mes-c-preprocess,$(c-file),$(DEFINES),$(INCLUDES))))
|
||||
$(foreach c-file,$(strip $(filter %.c,$(C_FILES))),$(eval $(call mescc.mes-c-compile-E,$(c-file:%.c=$(OUT)/%.$(CROSS)E),$(DEFINES),$(INCLUDES))))
|
||||
endif
|
||||
|
||||
endif
|
||||
include make/reset.make
|
|
@ -1,16 +0,0 @@
|
|||
C_FILES:=
|
||||
C_FLAGS:=
|
||||
CPP_FLAGS:=
|
||||
CROSS:=
|
||||
DEFINES:=
|
||||
EXPECT:=
|
||||
EXT:=
|
||||
GO_FILES:=
|
||||
INCLUDES:=
|
||||
LD_FLAGS:=
|
||||
MES_FILES:=
|
||||
O_FILES:=
|
||||
SCM_FILES:=
|
||||
TARGET:=
|
||||
TEST:=
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
MES_FILES:=$(shell $(GIT_LS_FILES) module/*.mes)
|
||||
SCM_FILES:=$(shell $(GIT_LS_FILES) module/language/ module/nyacc/ module/mes/)
|
||||
SCM_FILES:=$(filter %.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out %match.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out %mes/lalr.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out %optargs.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out %pretty-print.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out %syntax.scm, $(SCM_FILES))
|
||||
SCM_FILES:=$(filter-out module/mes/peg/%.scm, $(SCM_FILES))
|
||||
include make/guile.make
|
||||
|
||||
# FIXME: https://gitlab.com/janneke/guile/commits/1.8
|
||||
# Include patches here
|
||||
GUILE_GIT:=../guile-1.8
|
||||
GUILE_COMMIT:=ba8a7097699f69b206c9f28c546fa6da88b8656f
|
||||
psyntax-import: module/mes/psyntax.ss module/mes/psyntax.pp
|
||||
|
||||
module/mes/psyntax.%: $(GUILE_GIT)/ice-9/psyntax.%
|
||||
git --git-dir=$(GUILE_GIT)/.git --work-tree=$(GUILE_GIT) show $(GUILE_COMMIT):ice-9/$(@F > $@
|
||||
|
||||
MAINTAINER-CLEAN+=module/mes/psyntax.pp
|
|
@ -1,159 +0,0 @@
|
|||
TARGET:=m
|
||||
C_FILES:=$(DIR)/m.c
|
||||
DEFINES:=POSIX=1
|
||||
INCLUDES:=mlibc
|
||||
include make/bin.make
|
||||
|
||||
TARGET:=m
|
||||
EXPECT:=255
|
||||
include make/check-cc.make
|
||||
|
||||
TARGET:=hello
|
||||
C_FILES:=$(DIR)/hello.c
|
||||
DEFINES:=POSIX=1
|
||||
INCLUDES:=mlibc
|
||||
include make/bin.make
|
||||
|
||||
TARGET:=hello
|
||||
EXPECT:=42
|
||||
include make/check-cc.make
|
||||
|
||||
TARGET:=t
|
||||
C_FILES:=$(DIR)/t.c
|
||||
DEFINES:=POSIX=1
|
||||
INCLUDES:=mlibc
|
||||
include make/bin.make
|
||||
|
||||
TARGET:=t
|
||||
include make/check-cc.make
|
||||
|
||||
TARGET:=t-tcc
|
||||
C_FILES:=$(DIR)/t-tcc.c
|
||||
DEFINES:=POSIX=1
|
||||
INCLUDES:=mlibc
|
||||
include make/bin.make
|
||||
|
||||
TARGET:=t-tcc
|
||||
include make/check-cc.make
|
||||
|
||||
TARGET:=m.mlibc
|
||||
C_FILES:=$(DIR)/m.c
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TARGET:=m.mlibc
|
||||
EXPECT:=255
|
||||
include make/check-mlibc.make
|
||||
|
||||
TARGET:=hello.mlibc
|
||||
C_FILES:=$(DIR)/hello.c
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TARGET:=hello.mlibc
|
||||
EXPECT:=42
|
||||
include make/check-mlibc.make
|
||||
|
||||
TARGET:=micro-mes.mlibc
|
||||
C_FILES:=$(DIR)/micro-mes.c
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TEST:=micro-mes.mlibc-check
|
||||
$(TEST): $(OUT)/micro-mes.mlibc
|
||||
$< 2 3; r=$$?; [ $$r = 3 ]
|
||||
include make/check-mlibc.make
|
||||
|
||||
TARGET:=t.mlibc
|
||||
C_FILES:=$(DIR)/t.c
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TARGET:=t.mlibc
|
||||
include make/check-mlibc.make
|
||||
|
||||
TARGET:=t-tcc.mlibc
|
||||
C_FILES:=$(DIR)/t-tcc.c
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TARGET:=t-tcc.mlibc
|
||||
include make/check-mlibc.make
|
||||
|
||||
CROSS:=$(CC32:%gcc=%)
|
||||
#$(OUT)/$(DIR)/mini-mes.$(CROSS)o: $(SNARF.MES)
|
||||
$(OUT)/mini-mes: $(SNARF.MES)
|
||||
|
||||
TARGET:=mini-mes.mlibc
|
||||
# guile/mescc.scm
|
||||
|
||||
TARGET:=m.guile
|
||||
C_FILES:=$(DIR)/m.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
TARGET:=m.guile
|
||||
EXPECT:=255
|
||||
include make/check.make
|
||||
|
||||
TARGET:=hello.guile
|
||||
C_FILES:=$(DIR)/hello.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
TARGET:=hello.guile
|
||||
EXPECT:=42
|
||||
include make/check.make
|
||||
|
||||
TARGET:=micro-mes.guile
|
||||
C_FILES:=$(DIR)/micro-mes.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
TEST:=micro-mes.guile-check
|
||||
$(TEST): $(OUT)/micro-mes.guile
|
||||
$< 2 3; r=$$?; [ $$r = 3 ]
|
||||
include make/check.make
|
||||
|
||||
TARGET:=t.guile
|
||||
C_FILES:=$(DIR)/t.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
TARGET:=t.guile
|
||||
include make/check.make
|
||||
|
||||
TARGET:=t-tcc.guile
|
||||
C_FILES:=$(DIR)/t-tcc.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
TARGET:=t-tcc.guile
|
||||
include make/check.make
|
||||
|
||||
# scripts/mescc.mes
|
||||
ifneq ($(MES),)
|
||||
TARGET:=m.mes
|
||||
C_FILES:=$(DIR)/m.c
|
||||
include make/mescc-mes.make
|
||||
|
||||
TARGET:=m.mes
|
||||
EXPECT:=255
|
||||
include make/check.make
|
||||
|
||||
ifneq ($(MES_SCAFFOLD),)
|
||||
TARGET:=hello.mes
|
||||
C_FILES:=$(DIR)/hello.c
|
||||
include make/mescc-mes.make
|
||||
|
||||
TARGET:=hello.mes
|
||||
EXPECT:=42
|
||||
include make/check.make
|
||||
|
||||
TARGET:=micro-mes.mes
|
||||
C_FILES:=$(DIR)/micro-mes.c
|
||||
include make/mescc-mes.make
|
||||
|
||||
TEST:=micro-mes.mes-check
|
||||
$(TEST): $(OUT)/micro-mes.mes
|
||||
$< 2 3; r=$$?; [ $$r = 3 ]
|
||||
include make/check.make
|
||||
endif # !SCAFFOLD
|
||||
|
||||
TARGET:=t.mes
|
||||
C_FILES:=$(DIR)/t.c
|
||||
include make/mescc-mes.make
|
||||
|
||||
TARGET:=t.mes
|
||||
include make/check.make
|
||||
endif
|
|
@ -1,6 +0,0 @@
|
|||
ifneq ($(CC),)
|
||||
CLEAN+=$(DIR)/mes
|
||||
|
||||
$(DIR)/mes: $(OUT)/mes
|
||||
ln -sf ../$< $@
|
||||
endif
|
70
src/src.make
70
src/src.make
|
@ -1,70 +0,0 @@
|
|||
MODULES:=\
|
||||
src/gc.c\
|
||||
src/lib.c\
|
||||
src/math.c\
|
||||
src/mes.c\
|
||||
src/posix.c\
|
||||
src/reader.c\
|
||||
src/vector.c
|
||||
#
|
||||
|
||||
$(OUT)/%.h $(OUT)/%.i $(OUT)/%.environment.i $(OUT)/%.symbols.i: DIR:=$(DIR)
|
||||
$(OUT)/%.h $(OUT)/%.i $(OUT)/%.environment.i $(OUT)/%.symbols.i: %.c build-aux/mes-snarf.scm
|
||||
@echo " SNARF $(notdir $<) -> $(notdir $@)"
|
||||
@mkdir -p $(dir $@)
|
||||
$(QUIET)OUT=$(dir $@) build-aux/mes-snarf.scm $<
|
||||
|
||||
SNARF.GCC:=$(MODULES:%.c=$(OUT)/%.h) $(MODULES:%.c=$(OUT)/%.i) $(MODULES:%.c=$(OUT)/%.environment.i)
|
||||
SNARF.GCC+=$(OUT)/$(DIR)/mes.symbols.i
|
||||
CLEAN+=$(SNARF.GCC)
|
||||
snarf-gcc: $(SNARF.GCC)
|
||||
|
||||
$(OUT)/$(DIR)/mes.o: $(SNARF.GCC)
|
||||
|
||||
DEFINES:=FIXED_PRIMITIVES=1 MES_FULL=1 POSIX=1 VERSION='"$(VERSION)"' MODULEDIR='"$(MODULEDIR)"' PREFIX='"$(PREFIX)"'
|
||||
INCLUDES:=mlibc $(OUT)/$(DIR)
|
||||
TARGET:=mes
|
||||
C_FILES:=$(DIR)/mes.c
|
||||
include make/bin.make
|
||||
|
||||
$(OUT)/%.mes.h $(OUT)/%.mes.i $(OUT)/%.mes.environment.i $(OUT)/%.mes.symbols.i: DIR:=$(DIR)
|
||||
$(OUT)/%.mes.h $(OUT)/%.mes.i $(OUT)/%.mes.environment.i $(OUT)/%.mes.symbols.i: %.c build-aux/mes-snarf.scm
|
||||
@echo " SNARF $(notdir $<) -> $(notdir $@)"
|
||||
@mkdir -p $(dir $@)
|
||||
$(QUIET)OUT=$(dir $@) build-aux/mes-snarf.scm --mes $<
|
||||
|
||||
SNARF.MES:=$(MODULES:%.c=$(OUT)/%.mes.h) $(MODULES:%.c=$(OUT)/%.mes.i) $(MODULES:%.c=$(OUT)/%.mes.environment.i)
|
||||
SNARF.MES+=$(OUT)/$(DIR)/mes.mes.symbols.i
|
||||
CLEAN+=$(SNARF.MES)
|
||||
snarf-mes: $(SNARF.MES)
|
||||
|
||||
include make/reset.make
|
||||
|
||||
CROSS:=$(CC32:%gcc=%)
|
||||
$(OUT)/$(CROSS)%: $(OUT)/%.mlibc
|
||||
@ln -sf $(<F) $@
|
||||
|
||||
TARGET:=mes.mlibc
|
||||
$(OUT)/$(DIR)/mes.$(CROSS)o: $(SNARF.MES)
|
||||
C_FILES:=$(DIR)/mes.c
|
||||
DEFINES:=FIXED_PRIMITIVES=1 MES_FULL=1 VERSION='"$(VERSION)"' MODULEDIR='"$(MODULEDIR)"' PREFIX='"$(PREFIX)"'
|
||||
include make/bin-mlibc.make
|
||||
|
||||
TARGET:=mes.guile
|
||||
$(OUT)/$(DIR)/mes.guile-E: $(SNARF.MES)
|
||||
$(OUT)/mes.guile: $(SNARF.MES)
|
||||
C_FILES:=$(DIR)/mes.c
|
||||
include make/mescc-guile.make
|
||||
|
||||
ifneq ($(MES_BOOTSTRAP),)
|
||||
safe-MES_MAX_ARENA:=$(MES_MAX_ARENA)
|
||||
MES_MAX_ARENA:=80000000
|
||||
TARGET:=mes.mes
|
||||
$(OUT)/$(DIR)/mes.mes-E: $(SNARF.MES)
|
||||
$(OUT)/mes.mes: $(SNARF.MES)
|
||||
mes.mes: $(OUT)/mes.mes
|
||||
cp $< $@
|
||||
C_FILES:=$(DIR)/mes.c
|
||||
include make/mescc-mes.make
|
||||
MES_MAX_ARENA=$(safe-MES_MAX_ARENA)
|
||||
endif
|
|
@ -1,37 +0,0 @@
|
|||
ifneq ($(HEX2),)
|
||||
|
||||
CLEAN+=$(OUT)/0exit-42
|
||||
$(OUT)/0exit-42: stage0/elf32-0header.hex2 stage0/elf32-body-exit-42.hex2 stage0/elf-0footer.hex2 | $(OUT)
|
||||
@echo " HEX2 $(notdir $^) -> $(notdir $@)"
|
||||
$(QUIET)$(HEX2) $(HEX2_FLAGS) $(^:%=-f %) > $@ || rm -f $@
|
||||
chmod +x $@
|
||||
TARGET:=0exit-42
|
||||
EXPECT:=42
|
||||
include make/check.make
|
||||
|
||||
CLEAN+=$(OUT)/exit-42
|
||||
$(OUT)/exit-42: stage0/elf32-header.hex2 stage0/elf32-body-exit-42.hex2 stage0/elf32-footer-single-main.hex2 | $(OUT)
|
||||
@echo " HEX2 $(notdir $^) -> $(notdir $@)"
|
||||
$(QUIET)$(HEX2) $(HEX2_FLAGS) $(^:%=-f %) > $@ || rm -f $@
|
||||
chmod +x $@
|
||||
TARGET:=exit-42
|
||||
EXPECT:=42
|
||||
include make/check.make
|
||||
|
||||
CLEAN+=$(OUT)/exit-42.guile
|
||||
$(OUT)/exit-42.guile: stage0/elf32-header.hex2 $(OUT)/mlibc/mini-libc-mes.hex2 $(OUT)/stage0/exit-42.hex2 stage0/elf32-footer-single-main.hex2 | $(OUT)
|
||||
@echo " HEX2 $(notdir $^) -> $(notdir $@)"
|
||||
$(QUIET)$(HEX2) $(HEX2_FLAGS) $(^:%=-f %) > $@ || rm -f $@
|
||||
chmod +x $@
|
||||
|
||||
MESCC.scm:=guile/mescc.scm
|
||||
$(OUT)/%.hex2: %.c | all-go
|
||||
@echo " MESCC.scm $(notdir $<) -> $(notdir $@)"
|
||||
@mkdir -p $(dir $@)
|
||||
$(QUIET) $(MESCC.scm) -c -o $@ $^
|
||||
|
||||
TARGET:=exit-42.guile
|
||||
EXPECT:=42
|
||||
include make/check.make
|
||||
|
||||
endif
|
|
@ -1,38 +0,0 @@
|
|||
TESTS:=\
|
||||
tests/read.test\
|
||||
tests/base.test\
|
||||
tests/closure.test\
|
||||
tests/quasiquote.test\
|
||||
tests/let.test\
|
||||
tests/scm.test\
|
||||
tests/display.test\
|
||||
tests/cwv.test\
|
||||
tests/math.test\
|
||||
tests/vector.test\
|
||||
tests/srfi-1.test\
|
||||
tests/srfi-13.test\
|
||||
tests/srfi-14.test\
|
||||
tests/optargs.test\
|
||||
tests/fluids.test\
|
||||
tests/catch.test\
|
||||
tests/psyntax.test\
|
||||
tests/pmatch.test\
|
||||
tests/let-syntax.test\
|
||||
tests/guile.test\
|
||||
tests/record.test\
|
||||
tests/match.test\
|
||||
tests/peg.test\
|
||||
#
|
||||
|
||||
MES-0:=guile/mes-0.scm
|
||||
TEST:=guile-check
|
||||
$(TEST):
|
||||
set -e; for i in $(TESTS); do\
|
||||
$(GUILE) -s <(cat $(MES-0) module/mes/test.mes $$i);\
|
||||
done
|
||||
include make/check.make
|
||||
|
||||
TEST:=mes-check
|
||||
$(TEST): $(OUT)/mes
|
||||
set -e; for i in $(TESTS); do MES_MAX_ARENA=20000000 ./$$i; done
|
||||
include make/check.make
|
|
@ -1,104 +0,0 @@
|
|||
TINYCC_ROOT:=../tinycc
|
||||
TINYCC_TEST2:=$(TINYCC_ROOT)/tests/tests2
|
||||
|
||||
TINYCC_TESTS:=\
|
||||
00_assignment\
|
||||
01_comment\
|
||||
02_printf\
|
||||
03_struct\
|
||||
04_for\
|
||||
05_array\
|
||||
06_case\
|
||||
07_function\
|
||||
08_while\
|
||||
09_do_while\
|
||||
10_pointer\
|
||||
11_precedence\
|
||||
12_hashdefine\
|
||||
13_integer_literals\
|
||||
14_if\
|
||||
15_recursion\
|
||||
16_nesting\
|
||||
17_enum\
|
||||
18_include\
|
||||
19_pointer_arithmetic\
|
||||
20_pointer_comparison\
|
||||
21_char_array\
|
||||
25_quicksort\
|
||||
29_array_address\
|
||||
33_ternary_op\
|
||||
35_sizeof\
|
||||
41_hashif\
|
||||
43_void_param\
|
||||
44_scoped_declarations\
|
||||
47_switch_return\
|
||||
48_nested_break\
|
||||
54_goto\
|
||||
#
|
||||
|
||||
TINYCC_NYACC:=\
|
||||
26_character_constants\
|
||||
#
|
||||
|
||||
TINYCC_FLOAT:=\
|
||||
22_floating_point\
|
||||
23_type_coercion\
|
||||
24_math_library\
|
||||
27_sizeof\
|
||||
#
|
||||
|
||||
# Does not compile/run with GCC
|
||||
TINYCC_GCC:=\
|
||||
30_hanoi\
|
||||
34_array_assignment\
|
||||
#
|
||||
|
||||
TINYCC_REST:=\
|
||||
28_strings\
|
||||
31_args\
|
||||
32_led\
|
||||
36_array_initialisers\
|
||||
37_sprintf\
|
||||
38_multiple_array_index\
|
||||
39_typedef\
|
||||
40_stdio\
|
||||
42_function_pointer\
|
||||
45_empty_for\
|
||||
46_grep\
|
||||
49_bracket_evaluation\
|
||||
50_logical_second_arg\
|
||||
51_static\
|
||||
52_unnamed_enum\
|
||||
55_lshift_type\
|
||||
#
|
||||
|
||||
define tinycc-test
|
||||
ifneq ($(CC32),)
|
||||
EXT:=mlibc
|
||||
TARGET:=$(1).mlibc
|
||||
C_FILES:=$$(TINYCC_TEST2)/$(1).c
|
||||
INCLUDES:=$$(TINYCC_TEST2)
|
||||
include make/bin-mlibc.make
|
||||
|
||||
EXT:=mlibc
|
||||
TARGET:=$(1).mlibc
|
||||
include make/check-tinycc.make
|
||||
endif
|
||||
|
||||
EXT:=guile
|
||||
TARGET:=$(1).guile
|
||||
C_FILES:=$$(TINYCC_TEST2)/$(1).c
|
||||
INCLUDES:=$$(TINYCC_TEST2)
|
||||
include make/mescc-guile.make
|
||||
|
||||
EXT:=guile
|
||||
TARGET:=$(1).guile
|
||||
include make/check-tinycc.make
|
||||
endef
|
||||
|
||||
ifeq ($(wildcard $(TINYCC_TEST2)/00_assignment.c),$(TINYCC_TEST2)/00_assignment.c)
|
||||
$(foreach t,$(TINYCC_TESTS),$(eval $(call tinycc-test,$(t))))
|
||||
else
|
||||
tinycc-check:
|
||||
@echo skipping tinycc tests: $(TINYCC_TEST2)/00_assignment.c not available
|
||||
endif
|
Loading…
Reference in a new issue