Skip to content
This repository was archived by the owner on Mar 23, 2023. It is now read-only.

Commit e7e4c3c

Browse files
committed
Update Makefile for native Markdown support
1 parent 8e0355f commit e7e4c3c

6 files changed

Lines changed: 54 additions & 79 deletions

File tree

Makefile

Lines changed: 46 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Settings
22
# --------
33

4-
deps_dir := deps
5-
wasm_submodule := $(deps_dir)/wasm-semantics
6-
eei_submodule := $(deps_dir)/eei-semantics
7-
k_submodule := $(wasm_submodule)/deps/k
4+
deps_dir := deps
5+
KWASM_SUBMODULE := $(deps_dir)/wasm-semantics
6+
eei_submodule := $(deps_dir)/eei-semantics
7+
k_submodule := $(KWASM_SUBMODULE)/deps/k
88

99
ifneq (,$(wildcard $(k_submodule)/k-distribution/target/release/k/bin/*))
1010
K_RELEASE ?= $(abspath $(k_submodule)/k-distribution/target/release/k)
@@ -15,17 +15,17 @@ K_BIN := $(K_RELEASE)/bin
1515
K_LIB := $(K_RELEASE)/lib/kframework
1616
export K_RELEASE
1717

18-
PATH:=$(K_BIN):$(abspath $(wasm_submodule)):$(PATH)
18+
PATH:=$(K_BIN):$(abspath $(KWASM_SUBMODULE)):$(PATH)
1919
export PATH
2020

2121
build_dir := .build
22-
defn_dir := $(build_dir)/defn
22+
DEFN_DIR := $(build_dir)/defn
2323
kompiled_dir_name := ewasm-test
2424

25-
wasm_make := make --directory $(wasm_submodule) DEFN_DIR=../../$(defn_dir)
26-
eei_make := make --directory $(eei_submodule) DEFN_DIR=../../$(defn_dir)
25+
KWASM_MAKE := make --directory $(KWASM_SUBMODULE) BUILD_DIR=../../$(BUILD_DIR) RELEASE=$(RELEASE)
26+
eei_make := make --directory $(eei_submodule) DEFN_DIR=../../$(DEFN_DIR)
2727

28-
pandoc_tangle_submodule := $(wasm_submodule)/deps/pandoc-tangle
28+
pandoc_tangle_submodule := $(KWASM_SUBMODULE)/deps/pandoc-tangle
2929
tangler := $(pandoc_tangle_submodule)/tangle.lua
3030
LUA_PATH := $(pandoc_tangle_submodule)/?.lua;;
3131
export LUA_PATH
@@ -34,104 +34,80 @@ export LUA_PATH
3434
deps haskell-deps \
3535
defn defn-llvm defn-haskell \
3636
definition-deps wasm-definitions eei-definitions \
37-
build build-llvm build-haskell \
37+
build \
3838
test test-execution test-simple test-prove \
3939
media presentations reports
4040

4141
all: build
4242

4343
clean:
4444
rm -rf $(build_dir)
45-
rm -f $(wasm_submodule)/make.timestamp
45+
rm -f $(KWASM_SUBMODULE)/make.timestamp
4646
rm -f $(eei_submodule)/make.timestamp
4747
git submodule update --init --recursive
48-
$(MAKE) clean -C $(wasm_submodule)
48+
$(MAKE) clean -C $(KWASM_SUBMODULE)
4949
$(MAKE) clean -C $(eei_submodule)
5050

5151
# Build Dependencies (K Submodule)
5252
# --------------------------------
5353

54-
wasm_files=test.k wasm.k wasm-text.k data.k kwasm-lemmas.k
55-
wasm_source_files:=$(patsubst %, $(wasm_submodule)/%, $(patsubst %.k, %.md, $(wasm_files)))
56-
eei_files:=eei.k
57-
eei_source_files:=$(patsubst %, $(eei_submodule)/%, $(patsubst %.k, %.md, $(eei_files)))
58-
ewasm_files:=ewasm-test.k driver.k ewasm.k kewasm-lemmas.k
54+
wasm_files=test.md wasm.md wasm-text.md data.md kwasm-lemmas.md
55+
wasm_source_files:=$(patsubst %, $(KWASM_SUBMODULE)/%, $(wasm_files))
56+
eei_files:=eei.md
57+
eei_source_files:=$(patsubst %, $(eei_submodule)/%, $(eei_files))
58+
ewasm_files:=ewasm-test.md driver.md ewasm.md kewasm-lemmas.md
59+
ewasm_source_files:=$(ewasm_files)
5960
all_k_files:=$(ewasm_files) $(wasm_files) $(eei_files)
6061

61-
deps: $(wasm_submodule)/make.timestamp $(eei_submodule)/make.timestamp definition-deps
62+
llvm_dir:=$(DEFN_DIR)/llvm
63+
llvm_defn:=$(patsubst %, $(llvm_dir)/%, $(all_k_files))
64+
65+
haskell_dir:=$(DEFN_DIR)/haskell
66+
haskell_defn:=$(patsubst %, $(haskell_dir)/%, $(all_k_files))
6267

63-
definition-deps: wasm-definitions eei-definitions
68+
definition-deps: eei-definitions
69+
deps: $(KWASM_SUBMODULE)/make.timestamp $(eei_submodule)/make.timestamp definition-deps
6470

6571
wasm-definitions:
66-
$(wasm_make) -B defn-llvm
67-
$(wasm_make) -B defn-haskell
72+
$(KWASM_MAKE) -B defn-llvm
73+
$(KWASM_MAKE) -B defn-haskell
6874

6975
eei-definitions: $(eei_source_files)
7076
$(eei_make) -B defn-llvm
7177
$(eei_make) -B defn-haskell
7278

73-
$(wasm_submodule)/make.timestamp: $(wasm_source_files)
74-
git submodule update --init --recursive
75-
$(wasm_make) deps
76-
touch $(wasm_submodule)/make.timestamp
79+
$(KWASM_SUBMODULE)/make.timestamp: $(wasm_source_files)
80+
$(KWASM_MAKE) deps
81+
touch $(KWASM_SUBMODULE)/make.timestamp
7782

7883
$(eei_submodule)/make.timestamp: $(eei_source_files)
79-
git submodule update --init --recursive
8084
touch $(eei_submodule)/make.timestamp
8185

8286
# Building Definition
8387
# -------------------
8488

85-
llvm_dir:=$(defn_dir)/llvm
86-
llvm_defn:=$(patsubst %, $(llvm_dir)/%, $(all_k_files))
87-
llvm_kompiled:=$(llvm_dir)/ewasm-test-kompiled/interpreter
88-
89-
haskell_dir:=$(defn_dir)/haskell
90-
haskell_defn:=$(patsubst %, $(haskell_dir)/%, $(all_k_files))
91-
haskell_kompiled:=$(haskell_dir)/ewasm-test-kompiled/definition.kore
92-
93-
main_module=EWASM-TEST
94-
syntax_module=EWASM-TEST-SYNTAX
95-
96-
# Tangle definition from *.md files
97-
98-
defn: defn-llvm defn-haskell
99-
defn-llvm: $(llvm_defn)
100-
defn-haskell: $(haskell_defn)
101-
102-
$(llvm_dir)/%.k: %.md $(tangler)
103-
@echo "== tangle: $@"
104-
mkdir -p $(dir $@)
105-
pandoc --from markdown --to $(tangler) --metadata=code:.k $< > $@
106-
107-
$(haskell_dir)/%.k: %.md $(tangler)
108-
@echo "== tangle: $@"
109-
mkdir -p $(dir $@)
110-
pandoc --from markdown --to $(tangler) --metadata=code:.k $< > $@
89+
MAIN_MODULE=EWASM-TEST
90+
MAIN_SYNTAX_MODULE=EWASM-TEST-SYNTAX
91+
MAIN_DEFN_FILE=ewasm-test
11192

11293
# Build definitions
11394

11495
KOMPILE_OPTS :=
11596

11697
build: build-llvm build-haskell
117-
build-llvm: $(llvm_kompiled)
118-
build-haskell: $(haskell_kompiled)
119-
120-
$(llvm_kompiled): $(llvm_defn)
121-
@echo "== kompile: $@"
122-
kompile --backend llvm \
123-
--directory $(llvm_dir) -I $(llvm_dir) \
124-
--main-module $(main_module) \
125-
--syntax-module $(syntax_module) $< \
126-
$(KOMPILE_OPTS)
127-
128-
$(haskell_kompiled): $(haskell_defn)
129-
@echo "== kompile: $@"
130-
kompile --backend haskell \
131-
--directory $(haskell_dir) -I $(haskell_dir) \
132-
--main-module $(main_module) \
133-
--syntax-module $(syntax_module) $< \
134-
$(KOMPILE_OPTS)
98+
99+
build-%:
100+
cp $(eei_source_files) $(ewasm_source_files) $(KWASM_SUBMODULE)
101+
$(KWASM_MAKE) build-$* \
102+
DEFN_DIR=../../$(DEFN_DIR) \
103+
llvm_main_module=$(MAIN_MODULE) \
104+
llvm_syntax_module=$(MAIN_SYNTAX_MODULE) \
105+
llvm_main_file=$(MAIN_DEFN_FILE) \
106+
haskell_main_module=$(MAIN_MODULE) \
107+
haskell_syntax_module=$(MAIN_SYNTAX_MODULE) \
108+
haskell_main_file=$(MAIN_DEFN_FILE) \
109+
EXTRA_SOURCE_FILES="$(eei_files) $(ewasm_files)" \
110+
KOMPILE_OPTS="$(KOMPILE_OPTS)"
135111

136112
# Testing
137113
# -------

driver.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ Ethereum Simulation
22
===================
33

44
```k
5-
require "ewasm.k"
6-
require "data.k"
5+
require "ewasm.md"
6+
require "data.md"
77
88
module DRIVER-SYNTAX
99
imports EWASM-SYNTAX

ewasm-test.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Testing
44
We make use of the testing module for Wasm, which will let us make assertions about the Wasm runtime state.
55

66
```k
7-
requires "test.k" // WASM-TEST
8-
requires "driver.k"
7+
requires "test.md" // WASM-TEST
8+
requires "driver.md"
99
1010
module EWASM-TEST-SYNTAX
1111
imports WASM-TEST-SYNTAX

ewasm.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ Ewasm Specification
22
=================
33

44
```k
5-
require "wasm.k"
6-
require "eei.k"
5+
require "wasm.md"
6+
require "eei.md"
77
88
module EWASM-SYNTAX
99
imports WASM-TEXT-SYNTAX

kewasm-lemmas.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ These lemmas aid in verifying Ewasm programs behavior.
55
They are part of the *trusted* base, and so should be scrutinized carefully.
66

77
```k
8-
requires "kwasm-lemmas.k"
9-
requires "kewasm-lemmas.k"
8+
requires "kwasm-lemmas.md"
109
1110
module KEWASM-LEMMAS
1211
imports EWASM-TEST

tests/proofs/invoke-contract-spec.k

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
requires "kewasm-lemmas.k"
1+
requires "kewasm-lemmas.md"
22

33
module INVOKE-CONTRACT-SPEC
44
imports KEWASM-LEMMAS

0 commit comments

Comments
 (0)