convert AnalysisVisitor into a Singleton
[scilab.git] / scilab / Makefile.incl.am
1
2 # Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 # Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
4 # Copyright (C) 2008      - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
5 #
6 # Copyright (C) 2012 - 2016 - Scilab Enterprises
7 #
8 # This file is hereby licensed under the terms of the GNU GPL v2.0,
9 # pursuant to article 5.3.4 of the CeCILL v.2.1.
10 # This file was originally licensed under the terms of the CeCILL v2.1,
11 # and continues to be available under such terms.
12 # For more information, see the COPYING file which you should have received
13 # along with this program.
14 #
15
16 ##########
17 ### Makefile included stuff
18 ### Target, variable, suffixes which are supposed to be useful in every makefile.am
19 ##########
20
21 # Where all the Scilab stuff is installed (macros, help, ...)
22 mydatadir=$(pkgdatadir)/modules/$(modulename)
23
24 # Set AM_* SCI detected settings
25 AM_CPPFLAGS = $(SCI_CPPFLAGS)
26 AM_CFLAGS   = $(SCI_CFLAGS)
27 AM_CXXFLAGS = $(SCI_CXXFLAGS)
28 AM_FFLAGS   = $(SCI_FFLAGS)
29 AM_LDFLAGS  = $(SCI_LDFLAGS)
30
31 # Tag shared libraries with the Scilab version
32 AM_LDFLAGS += -version-number $(SCILAB_LIBRARY_VERSION)
33 # append includes to AM_FFLAGS to manage fortran includes
34 AM_FFLAGS  += -I$(top_srcdir)/modules/core/includes/
35
36 # This target enables tests for Scilab
37 check-local: $(top_builddir)/scilab-bin test
38         if test -d $(mydatadir)/tests; then \
39           @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
40         fi
41
42 # splint options
43 SPLINT_OPTIONS=-weak -booltype BOOL
44 check-code:
45         if test -f build.xml; then \
46                 $(ANT) checkstyle; \
47         fi
48         if test -x "$(SPLINT)"; then \
49                 $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
50         fi
51
52 ########################### JAVA ######################################
53 #### We are delegating java compilation to ant... Thanks to that
54 #### the procedure will be the same with Microsoft Windows (C)
55 #### and Linux/Unix
56 #######################################################################
57
58 TARGETS_ALL=
59 if NEED_JAVA
60 TARGETS_ALL+=java
61 java:
62 # Some configurations needs to export JAVA_HOME in the current env
63         @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
64         if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
65         if test -f build.xml -a $$USEANT -eq 1; then \
66                 $(ANT); \
67         fi
68
69 clean-java:
70 # Some configurations needs to export JAVA_HOME in the current env
71         @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
72         if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
73         if test -f build.xml -a $$USEANT -eq 1; then \
74                 $(ANT) clean; \
75         fi;
76 endif
77
78 if SWIG
79
80 # If the user request for the SWIG generation of the wrappers Java => C/C++ 
81 # We call the target swig-build on the variable SWIG_WRAPPERS
82
83 ## build Swig Java => C wrappers
84 swig: $(SWIG_WRAPPERS)
85         @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
86         SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
87         if test -n "$(SWIG_WRAPPERS)"; then \
88                 for file in $(SWIG_WRAPPERS) ; do \
89                         echo "Swig process of $$file (Java) ..."; \
90                         $(SWIG_BIN) $(SWIG_OPTIONS) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME  -outdir $$SWIG_OUTDIR $$file; \
91                 done; \
92         fi
93
94 ## build Swig C => Scilab wrappers
95 swig-scilab: $(SWIG_SCILAB_WRAPPERS)
96         @SWIG_OUTDIR=src/swig/; \
97         if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
98                 for file in $(SWIG_SCILAB_WRAPPERS) ; do \
99                         echo "Swig process of $$file (Scilab) ..."; \
100                         $(SWIG_BIN) $(SWIG_OPTIONS) $(SWIG_SCILAB)  -outdir $$SWIG_OUTDIR $$file; \
101                 done; \
102         fi
103
104 endif
105
106 if GIWS
107 # If the user request for the SWIG generation of the wrappers Java => C/C++ 
108 # We call the target swig-build on the variable SWIG_WRAPPERS
109
110 ## build Swig Java => C wrappers
111 giws: $(GIWS_WRAPPERS)
112         @GIWS_OUTPUTDIR=src/jni/; \
113         MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
114         if test -n "$(GIWS_WRAPPERS)"; then \
115                 for file in $(GIWS_WRAPPERS) ; do \
116                         echo "GIWS process of $$file ..."; \
117                         if test -z "$(GIWS_OPTIONS)"; then \
118                                 $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
119                         else \
120                                 echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
121                                 $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
122                         fi \
123                 done; \
124         fi
125
126 ## build GIWS Exception
127 giws-exception:
128         @GIWS_OUTPUTDIR=src/jni/;\
129         echo "GIWS: Generation of exception class ..."; \
130         $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR 
131
132 endif
133
134
135 ## Build the macros of the module
136 macros:
137         -@( if test ! -x $(top_builddir)/scilab-bin; then \
138                 echo "Error : Cannot build $< : Scilab has not been built"; \
139         else \
140                 $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
141         fi)
142
143
144 # Removes the macros
145 clean-macros:
146 # Removes macros (*.bin generated from .sci)
147         @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
148                 echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
149                 rm -f $(builddir)/$$dir/$(MACROBINMASK); \
150         done
151
152 test:
153 # More tests could be added here
154         @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
155         if test -f build.xml -a $$USEANT -eq 1; then \
156                 $(ANT) test; \
157         fi
158
159
160
161 all-local: $(TARGETS_ALL)
162
163 ################ MACROS ######################
164 # Rule to build a macro
165 # NOT USED  AT THE MOMENT
166 SUFFIXES = .sci 
167
168 .sci.bin:
169         -@( if test ! -x $(top_builddir)/scilab-bin; then \
170         echo "Error : Cannot build $< : Scilab has not been build"; \
171         else \
172         echo "Creating $@"; \
173         $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
174         fi )
175
176 ########### INSTALL DOCUMENTATION ###################
177
178 # Install documentation files into the right target
179 # We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
180 # automake needs the html files to be present which is not the case when
181 # we are building Scilab
182
183 # Where it should be installed
184 pkgdocdir = $(mydatadir)
185
186 # What is the mask of the help source
187 DOCMASKXML = *.xml
188
189 # What is the mask of the MathML sources
190 DOCMASKMML = *.mml
191
192 install-html-local:
193
194 install-data-local-local:
195 # Mainly for javasci
196         @if test -d $(srcdir)/javadoc; then \
197                 cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
198         fi
199 if INSTALL_HELP_XML
200 # If the user wants the help sources to be installed
201         @echo "-------- Install of XML sources of help files --------"; \
202         for lang in $(ALL_LINGUAS); do \
203          if test -d $(srcdir)/help/$$lang; then \
204           $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
205                 if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
206                   for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
207                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
208                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
209                   done ; \
210                 fi; \
211          fi; \
212         done; \
213         @echo "-------- Install of MathML sources --------"; \
214          if test -d $(srcdir)/help/mml/; then \
215           $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
216                 if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
217                   for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
218                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
219                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
220                   done ; \
221                 fi; \
222         fi
223 endif
224
225 ########### INSTALL DATA ###################
226 # Install macros, help & demos
227 # Where it should be installed
228 pkgmacrosdir = $(mydatadir)
229 # Which directory we process
230 MACRODIRS = macros/
231 # Mask of the Scilab sources macros
232 MACROMASK = *.sci
233 # Mask of the Scilab executable sources macros
234 MACROBUILDMASK = *.sce
235 # Mask of the Scilab compiled macros
236 MACROBINMASK = *.bin
237 # List of the standard directory for tests
238 TESTS_DIR=tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
239 # Where the demos should be installed
240 pkgdemosdir = $(mydatadir)
241 # List of the standard directory for demos
242 DEMOS_DIR=demos
243 # List of the standard directory for examples
244 EXAMPLES_DIR=examples
245 # Where to export JAVA archives (.jar)
246 JARDIR=jar/
247 # JAR files mask
248 JARMASK=*.jar
249 # Chapter file 
250 HELP_CHAPTERDIR=help/
251 HELP_CHAPTERFILE=addchapter.sce
252 HELP_CHAPTERLANG = en_US fr_FR pt_BR
253 install-data-local:
254 # Install the tests
255         @echo "-------- Install tests (if any) --------"; \
256         for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
257           if test -d $(srcdir)/$$dir/; then \
258             $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
259                   for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
260                     if test -d "$(srcdir)/$$dir/$$file"; then \
261                           echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
262                           $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
263                     else \
264                       echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
265                   $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
266                     fi \
267                   done; \
268           fi; \
269         done
270 # Install the help chapter
271         @echo "-------- Install the help chapter (if any) --------"; \
272         for lang in $(HELP_CHAPTERLANG); do \
273                 HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
274                 if test -f $$HELPFILE; then \
275                         echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
276                         $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
277                         echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
278                         $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
279                 fi; \
280         done
281 # Install the demos & examples
282         @echo "-------- Install demos & examples (if any) --------"; \
283         for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
284           if test -d $(srcdir)/$$dir/; then \
285             $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
286                   for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
287                     if test -d "$(srcdir)/$$dir/$$file"; then \
288                           echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
289                           $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
290                     else \
291                       echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
292                   $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
293                     fi \
294                   done; \
295           fi; \
296         done
297 # Install the macros
298         @echo "-------- Install macros (if any) --------"; \
299         for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
300           $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
301                 if test -d $(srcdir)/$$dir/; then \
302                         FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
303                         if test -n "$(MACROSSPECIALEXT)"; then \
304                                 specialExtDir=""; \
305                                 for specialExt in $(MACROSSPECIALEXT); do \
306                                         specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
307                                 done; \
308                                 FILELIST="$$FILELIST $$specialExtDir"; \
309                         fi; \
310                   for file in `ls -1 $$FILELIST 2>/dev/null`; do \
311                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
312                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
313                   done; \
314                 fi; \
315         done
316 # Install java files (.jar)
317         @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
318         echo "-------- Install jar files --------"; \
319     $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
320           for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
321                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
322                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
323           done ; \
324         fi
325
326 ########### CLEAN ###################
327 # Clean help (generated automatically by Scilab)
328 # It used to clean the macro (clean-macros) but this was causing
329 # make clean && make to fail Scilab startup
330 if NEED_JAVA
331 clean-local: clean-java
332 else
333 clean-local:
334 endif
335
336 distclean-local:
337         rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
338
339 .PHONY: macros java swig giws