1# BEGIN LICENSE BLOCK
2# Version: CMPL 1.1
3#
4# The contents of this file are subject to the Cisco-style Mozilla Public
5# License Version 1.1 (the "License"); you may not use this file except
6# in compliance with the License.  You may obtain a copy of the License
7# at www.eclipse-clp.org/license.
8# 
9# Software distributed under the License is distributed on an "AS IS"
10# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See
11# the License for the specific language governing rights and limitations
12# under the License. 
13# 
14# The Original Code is  ECLiPSe link to CPViz Constraint Visualization System
15# The Initial Developer of the Original Code is  Joachim Schimpf
16# Portions created by the Initial Developer are
17# Copyright (C) 2013 Joachim Schimpf
18# 
19# END LICENSE BLOCK
20
21# Makefile for CP-Viz Interface
22
23
24ARCH = @ARCH@
25top_srcdir = @top_srcdir@
26PREFIX = @prefix@
27ECLIPSEDIR = $(PREFIX)
28THIRDPARTY=@ECLIPSETHIRDPARTY@
29
30MAKEFILE = Makefile.$(ARCH)
31ECLIPSE = $(ECLIPSEDIR)/bin/$(ARCH)/eclipse
32
33
34JAVA_HOME = @JAVA_HOME@
35JRE_HOME = @JRE_HOME@
36PATHSEP = @JAVA_PATH_SEP@
37
38JAVAC = $(JAVA_HOME)/bin/javac
39JAR = $(JAVA_HOME)/bin/jar
40JAVADOC = $(JAVA_HOME)/bin/javadoc
41JAVAFLAGS = -J-mx256m
42CLASSPATH = $(JRE_HOME)/lib/rt.jar
43
44
45ECL_ECO_FILES =
46ECL_ECL_FILES = cpviz.ecl vis_options.ecl vis_structures.ecl \
47		visualization.ecl visualize_tree.ecl node_cnt.ecl
48ECL_ECI_FILES = cpviz.ecl vis_structures.ecl \
49		visualization.ecl visualize_tree.ecl
50
51ECI_FILES = $(ECL_ECI_FILES:%.ecl=%.eci)
52
53ECO_FILES = $(ECL_ECO_FILES:%.ecl=%.eco)
54
55JAR_FILES = viz viztool \
56	batik-anim batik-awt-util batik-bridge batik-css batik-dom \
57	batik-ext batik-gvt batik-gui-util batik-parser batik-script \
58	batik-svg-dom batik-swing batik-util batik-xml xml-apis-ext jhall
59
60DOC_FILE = CP\ Visualizer\ Format.pdf
61
62EXAMPLES = bibd bin bridge car costas mix nqueen party \
63		rooms sbno sendmore sonet sudoku wave
64
65
66DESTDIR = $(ECLIPSEDIR)/lib_public
67DOCDIR = $(ECLIPSEDIR)/doc
68EXAMPLEDIR = $(ECLIPSEDIR)/doc/examples
69
70ECO_DEST = $(ECO_FILES:%.eco=$(DESTDIR)/%.eco)
71
72ECI_DEST = $(ECI_FILES:%.eci=$(DESTDIR)/%.eci)
73
74ECL_DEST = $(ECL_ECL_FILES:%.ecl=$(DESTDIR)/%.ecl) \
75	$(ECL_ECO_FILES:%.ecl=$(DESTDIR)/%.ecl)
76
77JAR_DEST = $(JAR_FILES:%=$(DESTDIR)/%.jar)
78
79DOC_DEST = $(DOCDIR)/$(DOC_FILE)
80
81EXAMPLE_DEST = $(EXAMPLEDIR)/cpviz
82
83PERM = a+r,u+w,go-w
84
85
86# ---------------
87# Targets
88# ---------------
89
90# ALL_CPVIZ is configured as all_cpviz or empty
91install:		@ALL_CPVIZ@
92# MAKE_TARGET is configured as install_all or install_cross
93all_cpviz:		@MAKE_TARGET@
94
95install_cross:		$(ECL_DEST) $(JAR_DEST) $(DOC_DEST) $(EXAMPLE_DEST)
96install_all:		install_cross $(ECO_DEST) $(ECI_DEST)
97
98
99ecoclean:
100	rm -f $(ECO_FILES) $(ECO_DEST)
101
102archclean:
103
104clean:	ecoclean archclean
105	rm -rf $(ECL_DEST) $(ECI_DEST) $(JAR_DEST)
106	rm -rf $(DOC_DEST) $(EXAMPLE_DEST)
107	rm -rf $(VIZ_CLASSES) $(VIZTOOL_CLASSES) $(VIZ_JDOC) jars
108
109
110# ---------------
111# Eclipse files
112# ---------------
113
114$(DESTDIR)/%.eci:       %.ecl 
115	@mkdir -p $(@D)
116	$(ECLIPSE) -e 'lib(document),icompile("$(*F)","$(@D)")'
117	-@/bin/chmod $(PERM) $@
118
119$(DESTDIR)/%.eco:       %.ecl 
120	@mkdir -p $(@D)
121	$(ECLIPSE) -e 'lib(fcompile),fcompile("$(*F)", [outdir:"$(@D)"])'
122	-@/bin/chmod $(PERM) $@
123
124$(DESTDIR)/%.ecl:       %.ecl 
125	@mkdir -p $(@D)
126	/bin/cp $< $@
127	-@/bin/chmod $(PERM) $@
128
129$(DESTDIR)/%.ecl:	viz/examples/%.ecl 
130	@mkdir -p $(@D)
131	/bin/cp $< $@
132	-@/bin/chmod $(PERM) $@
133
134$(DESTDIR)/%.eci:       viz/examples/%.ecl 
135	@mkdir -p $(@D)
136	$(ECLIPSE) -e 'lib(document),icompile("$<","$(@D)")'
137	-@/bin/chmod $(PERM) $@
138
139
140# ---------------
141# docs and examples
142# ---------------
143
144$(DOC_DEST):	viz/documentation/$(DOC_FILE)
145	@mkdir -p $(@D)
146	/bin/cp "$<" $(DOC_DEST)
147	-@/bin/chmod $(PERM) "$@"
148
149
150$(EXAMPLE_DEST):
151	@mkdir -p $@
152	( cd viz/examples; tar cf - --exclude=CVS $(EXAMPLES)) \
153	    | (cd $@ ; tar xf - )
154	-@/bin/chmod -R $(PERM) $@
155
156
157# ---------------
158# viz
159# ---------------
160
161VIZ_SRC = viz/src
162VIZ_PKG = ie/ucc/cccc/viz
163VIZ_JAVAS = $(VIZ_SRC)/$(VIZ_PKG)/*.java
164VIZ_RESS = $(VIZ_SRC)/$(VIZ_PKG)/resources
165VIZ_HELP = $(VIZ_SRC)/javahelp
166VIZ_CLASSES = viz/classes
167VIZ_JDOC = viz/doc
168VIZ_JAR = viz.jar
169
170$(VIZ_CLASSES)/stamp:
171	mkdir -p $(VIZ_CLASSES)
172	"$(JAVAC)" $(JAVAFLAGS) -classpath "$(CLASSPATH)" \
173                 -d $(VIZ_CLASSES) \
174                 -sourcepath $(VIZ_SRC) \
175                 $(VIZ_JAVAS) && touch $@
176
177
178$(DESTDIR)/$(VIZ_JAR): $(VIZ_CLASSES)/stamp
179	"$(JAR)" cf $(@) -C $(VIZ_CLASSES) .
180
181
182$(VIZ_JDOC)/stamp:	$(VIZ_JAVAS)
183	@mkdir -p $(@D)
184	"$(JAVADOC)" -private -d $(VIZ_JDOC) \
185                   -classpath "$(CLASSPATH)" \
186                   -sourcepath $(VIZ_SRC) \
187		   $(VIZ_JAVAS) && \
188       touch $@
189
190
191# ---------------
192# viztool
193# ---------------
194
195# Batik (for viztool)
196BATIK_LIBDIR = @BATIK_LIBDIR@
197BATIK_JARS = batik-util.jar batik-script.jar batik-gvt.jar batik-bridge.jar\
198		batik-gui-util.jar batik-swing.jar xml-apis-ext.jar
199BATIK_COPY = $(BATIK_JARS:%=jars/batik/%)
200
201# Javahelp (for viztool)
202JHELP_LIBDIR = @JHELP_LIBDIR@
203JHELP_JAR = jhall.jar
204JHELP_COPY = $(JHELP_JAR:%=jars/jhelp/%)
205
206
207VIZTOOL_SRC = viztool/src
208VIZTOOL_PKG = components
209VIZTOOL_JAVAS = $(VIZTOOL_SRC)/$(VIZTOOL_PKG)/*.java
210VIZTOOL_RESS = $(VIZTOOL_SRC)/$(VIZTOOL_PKG)/resources
211VIZTOOL_HELP = $(VIZTOOL_SRC)/javahelp
212VIZTOOL_CLASSES = viztool/classes
213VIZTOOL_JAR = viztool.jar
214
215
216# Copy thirdparty files to avoid pathname syntax issues,
217# e.g. when using a Windows java under cygwin
218
219jars/batik/%.jar:	$(BATIK_LIBDIR)/%.jar
220	@mkdir -p $(@D)
221	/bin/cp $< $@
222	-@/bin/chmod $(PERM) $@
223
224jars/jhelp/%.jar:	$(JHELP_LIBDIR)/%.jar
225	@mkdir -p $(@D)
226	/bin/cp $< $@
227	-@/bin/chmod $(PERM) $@
228
229
230$(VIZTOOL_CLASSES)/stamp: $(BATIK_COPY) $(JHELP_COPY)
231	@mkdir -p $(VIZTOOL_CLASSES)
232	CP="$(CLASSPATH)$(PATHSEP)jars/jhelp/$(JHELP_JAR)" && \
233	for jar in $(BATIK_JARS); do \
234	    CP="$$CP$(PATHSEP)jars/batik/$$jar"; \
235	done && \
236	"$(JAVAC)" $(JAVAFLAGS) -classpath "$$CP" -d $(VIZTOOL_CLASSES) \
237                 -sourcepath $(VIZTOOL_SRC) $(VIZTOOL_JAVAS) && \
238	cp -pr $(VIZTOOL_RESS) $(VIZTOOL_CLASSES)/$(VIZTOOL_PKG) && \
239	cp -pr $(VIZTOOL_HELP) $(VIZTOOL_CLASSES) && \
240	touch $@
241
242
243$(DESTDIR)/$(VIZTOOL_JAR): $(VIZTOOL_CLASSES)/stamp
244	"$(JAR)" cf $(@) -C $(VIZTOOL_CLASSES) .
245
246
247$(DESTDIR)/%.jar:	jars/batik/%.jar
248	@mkdir -p $(@D)
249	/bin/cp $< $@
250	-@/bin/chmod $(PERM) $@
251
252$(DESTDIR)/%.jar:	jars/jhelp/%.jar
253	@mkdir -p $(@D)
254	/bin/cp $< $@
255	-@/bin/chmod $(PERM) $@
256
257