-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.Guile-Logiki
72 lines (44 loc) · 1.66 KB
/
Makefile.Guile-Logiki
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# example of Makefile for Scheme+ for Guile
# Makefile for λογικι program
# author: Damien Mattei
# tree structure directories:
# .
# Makefile
# guile/
# guile/module_directory
# program to build (note: not used, will be recompiled by Guile if necessary when loaded)
#MYPROGRAM=start-λογικι-guile+.scm
# path to Scheme+ for Guile directory
SCHEME_PLUS_FOR_GUILE=../Scheme-PLUS-for-Guile
SRC_DIR=guile
# Scheme+ for Guile parser
PARSER:=$(SCHEME_PLUS_FOR_GUILE)/curly-infix2prefix4guile.scm
# sub directory where parsed module files will be generated
MODULE_DIRECTORY=$(SRC_DIR)/module_directory
# Guile modules to build
MODULES_NAME=minterms+.scm operation+.scm regex+.scm set+.scm subscript+.scm
# create full module names with path
MODULES=$(addprefix $(MODULE_DIRECTORY)/,$(MODULES_NAME))
# files that are simply included in source code
INCLUDED_FILES=$(SRC_DIR)/logiki-.scm
# files to parse
OBJECT= $(MODULES) $(INCLUDED_FILES)
# find the system directory for Guile modules
SITE_DIR=$(shell guile -c '(begin (display (%site-dir)) (newline))')
# create directory, build objects
# note: object modules have the same name than module source but are in different directories
all: $(MODULE_DIRECTORY) $(OBJECT)
# create the sub directory where parsed module files will be
$(MODULE_DIRECTORY) :
mkdir $@
# create Scheme files (*.scm and *-.scm) by parsing Scheme+ files (*+.scm)
# if the file is empty it will stop further Makefile call so i remove it:
.DELETE_ON_ERROR:
$(MODULE_DIRECTORY)/%+.scm $(SRC_DIR)/%-.scm: $(SRC_DIR)/%+.scm
@echo PARSING $< :
$(PARSER) $< > $@
clean:
rm -rf $(OBJECT)
rm -rf $(MODULE_DIRECTORY)
install:
cp $(MODULES) $(SITE_DIR)