0b0df211c610cbd71eed0ecb0b09c9a759e63768
[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 # This file must be used under the terms of the CeCILL.
7 # This source file is licensed as described in the file COPYING, which
8 # you should have received as part of this distribution.  The terms
9 # are also available at
10 # http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11 #
12
13 ##########
14 ### Makefile included stuff
15 ### Target, variable, suffixes which are supposed to be usefull in every makefile.am
16 ##########
17
18 # Where all the Scilab stuff is installed (macros, help, ...)
19 mydatadir=$(pkgdatadir)/modules/$(modulename)
20
21 # This target enables tests for Scilab
22 check-local: $(top_builddir)/scilab-bin
23         @COMMAND="test_run('$(modulename)');quit";\
24         export LANG=C;\
25         $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"
26
27 # splint options
28 SPLINT_OPTIONS=-weak -booltype BOOL
29 check-code:
30         @if test -f build.xml; then \
31                 $(ANT) checkstyle; \
32         fi;\
33         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)
34
35
36 ########################### JAVA ######################################
37 #### We are delegating java compilation to ant... Thanks to that
38 #### the procedure will be the same with Microsoft Windows (C)
39 #### and Linux/Unix
40 #######################################################################
41
42 TARGETS_ALL=
43 if NEED_JAVA
44 TARGETS_ALL+=java
45 java:
46 # Some configurations needs to export JAVA_HOME in the current env
47         @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
48         if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
49         if test -f build.xml -a $$USEANT -eq 1; then \
50                 $(ANT); \
51         fi
52
53 clean-java:
54 # Some configurations needs to export JAVA_HOME in the current env
55         @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
56         if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
57         if test -f build.xml -a $$USEANT -eq 1; then \
58                 $(ANT) clean; \
59         fi;
60 endif
61
62 if SWIG
63
64 # If the user request for the SWIG generation of the wrappers Java => C/C++ 
65 # We call the target swig-build on the variable SWIG_WRAPPERS
66
67 ## build Swig Java => C wrappers
68 swig: $(SWIG_WRAPPERS)
69         @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
70         SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
71         if test ! -z "$(SWIG_WRAPPERS)"; then \
72                 for file in $(SWIG_WRAPPERS) ; do \
73                         echo "Swig process of $$file ..."; \
74                         $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME  -outdir $$SWIG_OUTDIR $$file; \
75                 done; \
76         fi
77
78 endif
79
80 if GIWS
81
82 # If the user request for the SWIG generation of the wrappers Java => C/C++ 
83 # We call the target swig-build on the variable SWIG_WRAPPERS
84
85 ## build Swig Java => C wrappers
86 giws: $(GIWS_WRAPPERS)
87         @GIWS_OUTPUTDIR=src/jni/;\
88         if test ! -z "$(GIWS_WRAPPERS)"; then \
89                 for file in $(GIWS_WRAPPERS) ; do \
90                         echo "GIWS process of $$file ..."; \
91                         $(GIWS_BIN) --output-dir $$GIWS_OUTPUTDIR --throws-exception-on-error --description-file $$file; \
92                 done; \
93         fi
94
95 endif
96
97
98 ## Build the macros of the module
99 macros:
100         -@( if test ! -x $(top_builddir)/scilab-bin; then \
101                 echo "Error : Cannot build $< : Scilab has not been built"; \
102         else \
103                 $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
104         fi)
105
106
107 # Removes the macros
108 clean-macros:
109 # Removes macros (*.bin generated from .sci)
110         @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
111                 echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
112                 rm -f $(builddir)/$$dir/$(MACROBINMASK); \
113         done
114
115
116 all-local: $(TARGETS_ALL)
117
118 ################ MACROS ######################
119 # Rule to build a macro
120 # NOT USED  AT THE MOMENT
121 SUFFIXES = .sci 
122
123 .sci.bin:
124         -@( if test ! -x $(top_builddir)/scilab-bin; then \
125         echo "Error : Cannot build $< : Scilab has not been build"; \
126         else \
127         echo "Creating $@"; \
128         $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
129         fi )
130
131 ########### INSTALL DOCUMENTATION ###################
132
133 # Install documentation files into the right target
134 # We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
135 # automake needs the html files to be present which is not the case when
136 # we are building Scilab
137
138 # Where it should be installed
139 pkgdocdir = $(mydatadir)
140
141 # What is the mask of the help source
142 DOCMASKXML = *.xml
143
144 # What is the mask of the MathML sources
145 DOCMASKMML = *.mml
146
147 install-html-local:
148 if INSTALL_HELP_XML
149 # If the user wants the help sources to be installed
150         @echo "-------- Install of XML sources of help files --------"; \
151         for lang in $(ALL_LINGUAS); do \
152          if test -d $(srcdir)/help/$$lang; then \
153           $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
154                 if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
155                   for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
156                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
157                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
158                   done ; \
159                 fi; \
160          fi; \
161         done; \
162         @echo "-------- Install of MathML sources --------"; \
163          if test -d $(srcdir)/help/mml/; then \
164           $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
165                 if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
166                   for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
167                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
168                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
169                   done ; \
170                 fi; \
171         fi
172 endif
173
174 ########### INSTALL DATA ###################
175 # Install macros, help & demos
176 # Where it should be installed
177 pkgmacrosdir = $(mydatadir)
178 # Which directory we process
179 MACRODIRS = macros/
180 # Mask of the Scilab sources macros
181 MACROMASK = *.sci
182 # Mask of the Scilab executable sources macros
183 MACROBUILDMASK = *.sce
184 # Mask of the Scilab compiled macros
185 MACROBINMASK = *.bin
186 # List of the standard directory for tests
187 TESTS_DIR=tests/benchmarks tests/nonreg_tests tests/unit_tests
188 # Where the demos should be installed
189 pkgdemosdir = $(mydatadir)
190 # List of the standard directory for demos
191 DEMOS_DIR=demos
192 # List of the standard directory for examples
193 EXAMPLES_DIR=examples
194 # Where to export JAVA archives (.jar)
195 JARDIR=jar/
196 # JAR files mask
197 JARMASK=*.jar
198 # Chapter file 
199 HELP_CHAPTERDIR=help/
200 HELP_CHAPTERFILE=addchapter.sce
201 HELP_CHAPTERLANG = en_US fr_FR pt_BR
202 install-data-local:
203 # Install the tests
204         @echo "-------- Install tests (if any) --------"; \
205         for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
206           if test -d $(srcdir)/$$dir/; then \
207             $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
208                   for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
209                     if test -d "$(srcdir)/$$dir/$$file"; then \
210                           echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
211                           $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
212                     else \
213                       echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
214                   $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
215                     fi \
216                   done; \
217           fi; \
218         done
219 # Install the help chapter
220         @echo "-------- Install the help chapter (if any) --------"; \
221         for lang in $(HELP_CHAPTERLANG); do \
222                 HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
223                 if test -f $$HELPFILE; then \
224                         echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
225                         $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
226                         echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
227                         $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
228                 fi; \
229         done
230 # Install the demos & examples
231         @echo "-------- Install demos & examples (if any) --------"; \
232         for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
233           if test -d $(srcdir)/$$dir/; then \
234             $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
235                   for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
236                     if test -d "$(srcdir)/$$dir/$$file"; then \
237                           echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
238                           $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
239                     else \
240                       echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
241                   $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
242                     fi \
243                   done; \
244           fi; \
245         done
246 # Install the macros
247         @echo "-------- Install macros (if any) --------"; \
248         for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
249           $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
250                 if test -d $(srcdir)/$$dir/; then \
251                         FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
252                         for specialExt in $(MACROSSPECIALEXT); do \
253                                 specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
254                         done; \
255                         FILELIST="$$FILELIST $$specialExtDir"; \
256                   for file in `ls -1 $$FILELIST 2>/dev/null`; do \
257                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
258                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
259                   done; \
260                 fi; \
261         done
262 # Install java files (.jar)
263         @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
264         echo "-------- Install jar files --------"; \
265     $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
266           for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
267                     echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
268                 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
269           done ; \
270         fi
271
272 ########### CLEAN ###################
273 # Clean macros and help (generated automatically by Scilab)
274 if NEED_JAVA
275 clean-local: clean-java clean-macros
276 else
277 clean-local: clean-macros
278 endif
279
280 distclean-local:
281         rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
282
283 .PHONY: macros java swig giws