File: user.mk

package info (click to toggle)
theme-d 7.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,036 kB
  • sloc: lisp: 9,625; sh: 5,321; makefile: 715; ansic: 477
file content (129 lines) | stat: -rw-r--r-- 3,288 bytes parent folder | download
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

.PHONY : all clean compile link-modules link-clean

THEME_D_COMPILE ?= theme-d-compile
THEME_D_LINK ?= theme-d-link

EXTRA_COMP_OPTIONS ?=
EXTRA_LINK_OPTIONS ?=

ifdef PRETTY_PRINT
	EXTRA_COMP_OPTIONS += --pretty-print
	EXTRA_LINK_OPTIONS += --pretty-print
endif

ifdef NO_LINK_OPTIMIZATION
	EXTRA_LINK_OPTIONS += --no-factorization --no-strip
endif

ifndef INSTALL_DIR
  INSTALL_DIR := /tmp
endif

MODULES := \
  sequence list-as-sequence vector-as-sequence \
  sequence-sgn sequence-sgn-simple \
  sequence-list-impl sequence-vector-impl \
  assoc-sgn assoc-list-impl hash-table \
  module1 module2

PROGRAMS := hello-world sequence-test \
  sequence-sgn-test sequence-sgn-test2 \
  assoc-test assoc-test2 objects1 objects2 module-test1 \
  statprof-demo command-line-demo \
  orientation1 orientation2 \
  iterator-example nonpure-iterator-example \
  bits fold

INTERFACE_SRC := $(patsubst %,%.thi,$(MODULES))
BODY_SRC := $(patsubst %,%.thb,$(MODULES))
PROGRAM_SRC := $(patsubst %,%.thp,$(PROGRAMS))
INTERFACE_TARGET := $(patsubst %,%.tci,$(MODULES))
BODY_TARGET := $(patsubst %,%.tcb,$(MODULES))
COMP_PROGRAM_TARGET := $(patsubst %,%.tcp,$(PROGRAMS))
PROGRAM_TARGET := $(patsubst %,%.go,$(PROGRAMS))
MODULE_TARGET := $(patsubst %,__intf_%.go,$(MODULES))
IMPL_TARGET := $(patsubst %,__impl_%.go,$(MODULES))
PROGRAM_INTERMEDIATE := $(patsubst %,%.tree-il,$(PROGRAMS)) \
  $(patsubst %,%.scm,$(PROGRAMS)) 

PROGRAMS0 := $(filter-out statprof-demo,$(PROGRAMS))
PROGRAM_TARGET0 := $(patsubst %,%.go,$(PROGRAMS0))

MODULEPATH := -m ..:

ifdef LINK_MODULES

GUILE_MODULES := $(MODULES:%=__intf_%.go) $(MODULES:%=__impl_%.go) $(PROGRAMS:%=%.go)

FULLMODULEPATH := -M ..:

all : $(GUILE_MODULES)

$(PROGRAM_TARGET0): %.go : %.tcp
	$(THEME_D_LINK) --module $(FULLMODULEPATH) $(EXTRA_LINK_OPTIONS) -o $@ $<

$(MODULE_TARGET): __intf_%.go : %.tci
	$(THEME_D_LINK) --module $(FULLMODULEPATH) $(EXTRA_LINK_OPTIONS) -o $@ $<

$(IMPL_TARGET): __impl_%.go : %.tcb
	$(THEME_D_LINK) --module $(FULLMODULEPATH) $(EXTRA_LINK_OPTIONS) -o $@ $<

statprof-demo.go : statprof-demo.tcp
	$(THEME_D_LINK) --module $(FULLMODULEPATH) -x "(statprof)" $(EXTRA_LINK_OPTIONS) -o $@ $<

else

all : $(PROGRAM_TARGET) $(COMP_PROGRAM_TARGET) \
  $(INTERFACE_TARGET) $(BODY_TARGET)

$(PROGRAM_TARGET0): %.go : %.tcp
	$(THEME_D_LINK) $(MODULEPATH) $(EXTRA_LINK_OPTIONS) -o $@ $<

statprof-demo.go : statprof-demo.tcp
	$(THEME_D_LINK) $(MODULEPATH) $(EXTRA_LINK_OPTIONS) -x \
	"(statprof)" -o $@ $<

endif

clean :
	-rm -f $(INTERFACE_TARGET)
	-rm -f $(BODY_TARGET)
	-rm -f $(COMP_PROGRAM_TARGET)
	-rm -f $(PROGRAM_TARGET)
	-rm -f $(PROGRAM_RACKET_TARGET)
	-rm -f $(PROGRAM_INTERMEDIATE)
	-rm -f *.go
	-rm -f *.aux
	-rm -f *.scm
	-rm -f *.tree-il

link-clean :
	-rm -f *.go
	-rm -f *.aux
	-rm -f *.scm
	-rm -f *.tree-il

compile : $(COMP_PROGRAM_TARGET) $(INTERFACE_TARGET) $(BODY_TARGET)

link-modules: $(GUILE_MODULES)

%.tcp : %.thp
	$(THEME_D_COMPILE) $(MODULEPATH) $(EXTRA_COMP_OPTIONS) -o $@ $<

%.tci : %.thi
	$(THEME_D_COMPILE) $(MODULEPATH) $(EXTRA_COMP_OPTIONS) -o $@ $<

%.tcb : %.thb
	$(THEME_D_COMPILE) $(MODULEPATH) $(EXTRA_COMP_OPTIONS) -o $@ $<

# Compiled body depends on the compiled interface.
%.tcb : %.tci

include deps.mk

ifdef LINK_MODULES
include module-deps.mk
else
include program-deps.mk
endif