2 # Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 # Copyright (C) INRIA - 2006-2008 - Sylvestre Ledru
4 # Copyright (C) DIGITEO - 2009 - Sylvestre Ledru
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
13 ## Process this file with automake to produce Makefile.in (which will be changed by the ./configure)
15 AUTOMAKE_OPTIONS = 1.11 dist-zip dist-bzip2
21 ACLOCAL_AMFLAGS = -I m4/
23 # Set AM_* SCI detected settings
24 AM_CPPFLAGS = $(SCI_CPPFLAGS)
25 AM_CFLAGS = $(SCI_CFLAGS)
26 AM_CXXFLAGS = $(SCI_CXXFLAGS)
27 AM_FFLAGS = $(SCI_FFLAGS)
28 AM_LDFLAGS = $(SCI_LDFLAGS)
30 changelogs = CHANGES CHANGES_5.1.X CHANGES_5.2.X CHANGES_5.3.X CHANGES_5.4.X
32 bin_PROGRAMS = scilab-bin scilab-cli-bin
34 bin_SCRIPTS = bin/scilab bin/scilab-adv-cli bin/scilab-cli
37 bin_SCRIPTS += bin/checkmacosx.applescript
40 scilab_bin_LDFLAGS = $(AM_LDFLAGS)
41 scilab_cli_bin_LDFLAGS = $(AM_LDFLAGS)
44 scilab_bin_LDFLAGS += -framework Cocoa
47 scilab_bin_CPPFLAGS = -I$(top_srcdir)/modules/io/includes/ \
48 -I$(top_srcdir)/modules/console/includes/ \
49 -I$(top_srcdir)/modules/localization/includes/ \
51 # --no-undefined --relax
53 # Localization dep already exists because of the `exportLocaleToSystem' symbol
54 # (causing issues on some platform)
55 COMMON_LIBS = $(LTLIBINTL)
57 scilab_bin_SOURCES = $(top_srcdir)/modules/console/src/c/others/mainscic.c
59 scilab_bin_LDADD = $(COMMON_LIBS) $(top_builddir)/modules/libscilab.la $(FLIBS)
61 # Match scilab -nwni (ie command line without graphics)
62 scilab_cli_bin_SOURCES = $(top_srcdir)/modules/console/src/c/others/mainscic.c
64 scilab_cli_bin_CPPFLAGS = -DWITHOUT_GUI $(scilab_bin_CPPFLAGS)
65 scilab_cli_bin_LDADD = $(COMMON_LIBS) $(top_builddir)/modules/libscilab-cli.la $(FLIBS)
69 # Don't do it for scilab_cli_bin. We want to be able to call it without
71 scilab_bin_LDADD += $(JAVA_JNI_LIBS)
75 # The binary itself needs this dep
76 scilab_bin_LDADD += $(BLAS_LIBS)
80 scilab_static_bin_LDFLAGS = -static -static-libgcc --start-group $(AM_LDFLAGS)
81 scilab_static_bin_CFLAGS = -Wl,--start-group `$(CXX) -print-file-name=libstdc++.a` $(AM_CFLAGS)
84 bin_PROGRAMS += scilab-static-bin
85 scilab_static_bin_LDADD = $(top_builddir)/modules/libscilab.la
87 scilab_static_bin_SOURCES = $(scilab_bin_SOURCES)
94 # The user wants to compile the localization files
95 if GENERATE_LOCALIZATION_FILES
96 TARGETS_ALL+=localization
100 TARGETS_ALL+=check-java
103 # check is performed with scilab
104 TESTS_ENVIRONMENT = LANG=C $(top_builddir)/bin/scilab-cli -nb -noatomsautoload -f
105 TESTS = $(top_srcdir)/modules/development_tools/tests/unit_tests/test_run_level_1.tst
107 all-local: $(TARGETS_ALL)
109 rootdir=$(pkgdatadir)/etc/
110 root_DATA = $(top_srcdir)/etc/scilab.start \
111 $(top_srcdir)/etc/scilab.quit \
112 $(top_srcdir)/etc/toolboxes.xml \
113 $(top_builddir)/etc/jvm_options.xml \
114 $(top_builddir)/etc/modules.xml \
115 $(top_builddir)/etc/classpath.xml \
116 $(top_builddir)/etc/logging.properties \
117 $(top_builddir)/etc/librarypath.xml
119 infofilesdir=$(pkgdatadir)/
120 infofiles_DATA = $(top_srcdir)/CHANGES_2.X \
121 $(top_srcdir)/CHANGES_3.X \
122 $(top_srcdir)/CHANGES_4.X \
123 $(top_srcdir)/CHANGES_5.0.X \
124 $(top_srcdir)/CHANGES_5.1.X \
125 $(top_srcdir)/CHANGES_5.2.X \
126 $(top_srcdir)/CHANGES_5.3.X \
127 $(top_srcdir)/CHANGES_5.4.X \
128 $(top_srcdir)/ACKNOWLEDGEMENTS \
129 $(top_srcdir)/COPYING \
130 $(top_srcdir)/COPYING-BSD \
131 $(top_srcdir)/COPYING-FR \
132 $(top_srcdir)/README_Unix \
133 $(top_srcdir)/RELEASE_NOTES_5.0.X \
134 $(top_srcdir)/RELEASE_NOTES_5.1.X \
135 $(top_srcdir)/RELEASE_NOTES_5.2.X \
136 $(top_srcdir)/RELEASE_NOTES_5.3.X \
137 $(top_srcdir)/Readme_Visual.txt \
138 $(top_srcdir)/README_Windows.txt \
139 $(top_builddir)/Version.incl
141 valgrinddir=$(pkgdatadir)/tools/profiling
142 valgrind_DATA = $(top_srcdir)/tools/profiling/valgrind.supp
144 macros: $(top_builddir)/scilab-cli-bin $(top_builddir)/bin/scilab-cli check-jvm-dep
145 -@( cd $(top_builddir) ; \
146 echo "$(top_builddir)/bin/scilab-cli -ns -noatomsautoload -f modules/functions/scripts/buildmacros/buildmacros.sce" ; \
147 $(top_builddir)/bin/scilab-cli -ns -noatomsautoload -f modules/functions/scripts/buildmacros/buildmacros.sce) || exit 1
151 # Check that scilab-cli does not have a dependency on libjvm
153 @ldd .libs/scilab-cli-bin|grep libjvm > /dev/null; \
154 if test $$? == 0; then \
155 echo "Found dependency from scilab-cli-bin to libjvm found"; exit 2;\
159 # Build the public Javadoc (javasci v2 and Java/Scilab types)
160 # This is not done in the module itself because its needs also the "types"
163 $(JAVADOC) -noindex -nohelp -nonavbar -notree \
164 -d $(top_builddir)/modules/javasci/javadoc \
165 -sourcepath $(top_srcdir)/modules/javasci/src/java:$(top_srcdir)/modules/types/src/java::$(top_srcdir)/modules/localization/src/java \
166 org.scilab.modules.javasci org.scilab.modules.types
169 MASK="$(top_srcdir)/modules/*/src/java/"; \
170 MODULES=`ls -d $$MASK`; \
171 for M in $$MODULES; do \
172 LISTMODULES="$$M:$$LISTMODULES"; \
173 MODULE=$$(echo $$M|cut -d/ -f3); \
174 LISTPKG="$$LISTPKG org.scilab.modules.$$MODULE"; \
177 -d $(top_builddir)/javadocall \
178 -sourcepath $$LISTMODULES \
182 @$(MAKE) $(AM_MAKEFLAGS) doc ALL_LINGUAS_DOC=fr_FR
185 @$(MAKE) $(AM_MAKEFLAGS) doc ALL_LINGUAS_DOC=en_US
188 @$(MAKE) $(AM_MAKEFLAGS) doc ALL_LINGUAS_DOC=pt_BR
191 @$(MAKE) $(AM_MAKEFLAGS) doc ALL_LINGUAS_DOC=ru_RU
194 @$(MAKE) $(AM_MAKEFLAGS) doc ALL_LINGUAS_DOC=ja_JP
196 # Regenerate all images
198 rm -rf $(top_srcdir)/modules/helptools/images/
199 mkdir $(top_srcdir)/modules/helptools/images/
202 doc: javadoc $(top_builddir)/scilab-bin $(top_builddir)/bin/scilab-adv-cli
204 @if test -x $(top_builddir)/scilab-bin; then \
206 for l in $(ALL_LINGUAS_DOC); do \
207 echo "-- Building documentation ($$l) --"; \
208 COMMAND="try xmltojar([],[],'$$l');catch disp(lasterror()); exit(-1);end;exit(0);"; \
209 echo "LANG=C SCI_DISABLE_TK=1 SCI_JAVA_ENABLE_HEADLESS=1 $(top_builddir)/bin/scilab-adv-cli -noatomsautoload -nb -nouserstartup -e \"$$COMMAND\"";\
210 LANG=C SCI_DISABLE_TK=1 SCI_JAVA_ENABLE_HEADLESS=1 $(top_builddir)/bin/scilab-adv-cli -noatomsautoload -nb -l $$l -nouserstartup -e "$$COMMAND" || exit 1;\
213 echo "Cannot find Scilab-adv-cli binary"; \
216 @echo "Cannot buid help. Add --enable-build-help to the ./configure if you want to build it."
219 doc-web: javadoc $(top_builddir)/scilab-bin $(top_builddir)/bin/scilab-adv-cli
221 @if test -x $(top_builddir)/scilab-bin; then \
223 for l in $(ALL_LINGUAS_DOC); do \
224 echo "-- Building documentation ($$l) --"; \
225 COMMAND="try xmltoweb([],[],'$$l');catch exit(-1);end;exit(0);";\
226 echo "LANG=C SCI_DISABLE_TK=1 SCI_JAVA_ENABLE_HEADLESS=1 $(top_builddir)/bin/scilab-adv-cli -nb -l $$l -noatomsautoload -nouserstartup -e \"$$COMMAND\"";\
227 LANG=C SCI_DISABLE_TK=1 SCI_JAVA_ENABLE_HEADLESS=1 $(top_builddir)/bin/scilab-adv-cli -nb -l $$l -noatomsautoload -nouserstartup -e "$$COMMAND" || exit 1;\
228 JAVADOC_TARGET=$(top_builddir)/modules/helptools/web/$$l/javasci; \
229 if test ! -d $$JAVADOC_TARGET; then \
230 mkdir $$JAVADOC_TARGET; \
231 ln -s ../../../../javasci/javadoc/ $$JAVADOC_TARGET/; \
235 echo "Cannot find Scilab-adv-cli binary"; \
238 @echo "Cannot buid help. Add --enable-build-help to the ./configure if you want to build it."
241 doxygen: modules/development_tools/etc/doxyfile
243 mkdir $(top_builddir)/reports/
244 $(DOXYGEN_BIN) modules/development_tools/etc/doxyfile
247 check-help:$(top_builddir)/scilab-cli-bin $(top_builddir)/bin/scilab-cli
248 @if test -x $(top_builddir)/scilab-cli-bin; then \
249 for l in $(ALL_LINGUAS_DOC); do \
250 echo "-- Checking documentation ($$l) --"; \
251 COMMAND="try check_help();catch exit(-1);end;exit(0);";\
252 echo "$(top_builddir)/bin/scilab-cli -nb -l $$l -noatomsautoload -e \"$$COMMAND\"";\
253 $(top_builddir)/bin/scilab-cli -nb -l $$l -noatomsautoload -e "$$COMMAND" || exit 1;\
256 echo "Cannot find Scilab binary"; \
261 @if test ! -d $(top_builddir)/coverage/; then \
262 mkdir $(top_builddir)/coverage/; \
264 touch $(top_srcdir)/modules/differential_equations/callinter.h $(top_srcdir)/modules/linear_algebra/callinter.h $(top_srcdir)/modules/scicos/callinter.h $(top_srcdir)/modules/scicos_blocks/callinter.h; \
265 $(LCOV) --directory $(top_builddir) --capture --ignore-errors source --output-file $(top_builddir)/coverage/scilab-code-coverage.info; \
266 echo -e "genhtml_hi_limit = 85\ngenhtml_med_limit = 70" > $(top_builddir)/coverage/lcovrc; \
267 $(GENHTML) -o $(top_builddir)/coverage/results/ --config-file $(top_builddir)/coverage/lcovrc --show-details --highlight --legend $(top_builddir)/coverage/scilab-code-coverage.info; \
268 echo "To open the result: firefox $(top_builddir)/coverage/results/index.html"; \
269 rm -f $(top_srcdir)/modules/differential_equations/callinter.h $(top_srcdir)/modules/linear_algebra/callinter.h $(top_srcdir)/modules/scicos/callinter.h $(top_srcdir)/modules/scicos_blocks/callinter.h
270 #--frames is disable because of : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607206
272 @echo "Cannot start the code coverage. Add --enable-code-coverage to the ./configure and 'make clean all'."
275 distclean-recursive: distclean-generated clean-recursive
277 clean-recursive: clean-help clean-localization clean-macros clean-generated
280 # Find is necessary because of subdirs...
281 -@echo "-- Cleaning macros (*.bin) --"; \
282 find $(top_builddir) -name "*.bin" | xargs --no-run-if-empty rm 2> /dev/null; \
283 echo "-- Cleaning names files (names) --"; \
284 find $(top_builddir)/modules/*/macros -name "names" | xargs --no-run-if-empty rm 2> /dev/null; \
285 echo "-- Cleaning lib files (lib) --"; \
286 find $(top_builddir)/modules/*/macros -name "lib" | xargs --no-run-if-empty rm 2> /dev/null
288 # To ensure previous compatibility
289 clean-doc: clean-help
292 -@if test -x $(top_builddir)/scilab-cli-bin; then \
293 COMMAND="try clean_help();catch exit(-1);end;exit(0)"; \
294 for l in $(ALL_LINGUAS_DOC); do \
295 echo "$(top_builddir)/bin/scilab-cli -nb -l $$l -noatomsautoload -e '$$COMMAND'"; \
296 $(top_builddir)/bin/scilab-cli -nb -l $$l -noatomsautoload -e "$$COMMAND" || exit 1; \
299 echo "Cannot find Scilab binary"; \
301 echo "rmdir $(top_builddir)/modules/helptools/javaHelp/"; \
302 rm -rf $(top_builddir)/modules/helptools/javaHelp/; \
303 echo "rm -rf $(top_builddir)/modules/scicos/help/*/scilab_*_help"; \
304 rm -rf $(top_builddir)/modules/scicos/help/*/scilab_*_help; \
305 echo "rm -f $(top_builddir)/modules/scicos/help/en_US/master_help.xml"; \
306 rm -f $(top_builddir)/modules/scicos/help/en_US/master_help.xml; \
307 echo "rm -f $(top_builddir)/modules/scicos/jar/"; \
308 rm -rf $(top_builddir)/modules/scicos/jar/; \
309 echo "rm -rf $(top_builddir)/modules/javasci/javadoc"; \
310 rm -rf $(top_builddir)/modules/javasci/javadoc; \
311 echo "rm -rf $(top_builddir)/html"; \
312 rm -rf $(top_builddir)/html;
315 @if test -x $(top_builddir)/scilab-cli-bin; then \
316 $(top_builddir)/bin/scilab-cli -nb -noatomsautoload -l fr -e 'try test_clean();catch exit(-1);end;exit(0);' || exit 1; \
318 echo "Cannot find Scilab binary"; \
322 rm -rf $(top_srcdir)/locale/*
325 # Deleted junit + code coverage
326 rm -rf $(top_builddir)/reports/
327 rm -rf $(top_builddir)/modules/scicos_blocks/build/ 2> /dev/null
330 rm -f $(top_builddir)/modules/core/includes/stack.h 2> /dev/null
334 # Used for mac os x because it needs to remove the charset=UTF-8 because it is breaking the accents.
339 rm -f reports/xml/TEST-org.scilab.*.xml
341 # For each module, build and call Java unitary tests
342 # If fails, stops the call
343 check-java: clean-reports
344 @echo "-- Launch all Junit (Java) unitary tests"; \
345 MASK="$(top_srcdir)/modules/*/tests/java/"; \
346 MODULES=`ls -d $$MASK`; \
347 for M in $$MODULES; do \
348 BASE=`echo $$M|sed -e "s|tests/java/$$||g"`; \
349 $(ANT) -buildfile $$BASE/build.xml test || exit $$?; \
351 rm -f reports/xml/TEST-org.scilab.*.xml
353 codecoverage-java: clean-reports
354 @echo "Check if --enable-debug-java has been set"; \
355 grep "build.debug=on" $(top_srcdir)/scilab.properties > /dev/null || exit 10; \
356 echo "-- Launch all Junit (Java) unitary tests + code coverage"; \
357 MASK="$(top_srcdir)/modules/*/tests/java/"; \
358 MODULES=`ls -d $$MASK`; \
359 for M in $$MODULES; do \
360 BASE=`echo $$M|sed -e "s|tests/java/$$||g"`; \
361 $(ANT) -buildfile $$BASE/build.xml codecoverage || exit $$?; \
363 rm -f reports/xml/TEST-org.scilab.*.xml
365 # The user wants to compile the localization files
366 # Please note that ALL_LINGUAS is defined in configure.ac
367 if GENERATE_LOCALIZATION_FILES
369 @echo "-- Build localization (.mo from .po) --"; \
370 MASK="modules/*/locales/"; \
372 MSGFMT_OPTS="$MSGFMT_OPTS --check"; \
374 rm modules/*/locales/*~ 2> /dev/null; \
375 for LOCALE in $(ALL_LINGUAS); do \
376 echo " -- Building for $$LOCALE --"; \
377 if test "$$LOCALE" == "en_US"; then \
378 LOCFILE=$$MASK/*.pot; \
380 LOCFILE=$$MASK/$$LOCALE$$EXTENSION; \
382 FILES=`ls $$LOCFILE`; \
383 PATHTO=$(top_builddir)/locale/$$LOCALE/$$LC/; \
384 if test ! -d $$PATHTO; then \
385 echo " Creating $$PATHTO"; \
388 POFILE=$$PATHTO/$(LANG_DOMAIN).po; \
389 $(MSGCAT) --use-first -o $$POFILE $$FILES || exit 2; \
390 if test "$(MACOSX)" = "1"; then sed -i -e '/charset=UTF-8/d' $$POFILE; fi; \
391 $(MSGFMT) $(MSGFMT_OPTS) --statistics -o $$PATHTO/$(LANG_DOMAIN).mo $$POFILE || exit 2; \
396 @for LOCALE in $(ALL_LINGUAS_DOC); do \
397 if test "$$LOCALE" != "en_US"; then \
398 PATHTO=$(top_builddir)/locale-status/$$LOCALE/; \
399 if test ! -d $$PATHTO; then \
400 echo " Creating $$PATHTO"; \
403 echo "Building status for $$LOCALE"; \
404 echo "SCI=$(top_srcdir) php tools/localization/revcheck.php $$LOCALE > $$PATHTO/index.html"; \
405 SCI=$(top_srcdir) php tools/localization/revcheck.php $$LOCALE > $$PATHTO/index.html; \
411 # Misc variable for the documentation installation
413 # How help files look like.
414 DOCMASK=scilab_*_help.jar
415 DOCIMAGES=scilab_images.jar
417 # Path to builded files
418 PATHTOHELPFILES = modules/helptools/jar/
420 # Path javasci to builded files
421 PATHTOJAVASCIDOC = modules/javasci/javadoc/
422 JAVASCI_DIRS = . resources \
423 org/scilab/modules/javasci/ \
424 org/scilab/modules/types/
426 if GENERATE_LOCALIZATION_FILES
428 @$(mkinstalldirs) $(DESTDIR)$(localedir); \
429 echo $(mkinstalldirs) $(DESTDIR)$(localedir); \
430 for lang in $(ALL_LINGUAS); do \
431 LANG_PATH_DIST=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/; \
432 echo $(mkinstalldirs) $$LANG_PATH_DIST; \
433 $(mkinstalldirs) $$LANG_PATH_DIST; \
434 echo $(INSTALL_DATA) $(top_builddir)/locale/$$lang/LC_MESSAGES/$(LANG_DOMAIN).mo $$LANG_PATH_DIST/; \
435 $(INSTALL_DATA) $(top_builddir)/locale/$$lang/LC_MESSAGES/$(LANG_DOMAIN).mo $$LANG_PATH_DIST/; \
439 ################ INSTALL DOCUMENTATION #################
440 # Starting from Scilab 5, documentation file are provided by Docbook
441 # In the Scilab application we are generating a JavaHelp file.
443 @$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOHELPFILES); \
444 echo $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOHELPFILES); \
445 if ls -lLd $(top_builddir)/$(PATHTOHELPFILES)/$(DOCMASK) >/dev/null 2>&1; then \
446 for file in $(top_builddir)/$(PATHTOHELPFILES)/$(DOCMASK) $(top_builddir)/$(PATHTOHELPFILES)/$(DOCIMAGES); do \
447 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/$(PATHTOHELPFILES)" ; \
448 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdatadir)/$(PATHTOHELPFILES) ; \
451 ## Install Javasci documentation (javadoc)
452 ## See target javadoc in this file to see how it is build
453 @if test -d $(PATHTOJAVASCIDOC); then \
454 $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC); \
455 echo $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC); \
456 for dir in $(JAVASCI_DIRS) ; do \
457 $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC)/$$dir; \
458 echo $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC)/$$dir; \
459 for file in $(top_builddir)/$(PATHTOJAVASCIDOC)/$(dir)/*; do \
460 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC)/$$dir" ; \
461 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdatadir)/$(PATHTOJAVASCIDOC)/$$dir ; \
467 # Pkgconfig directory
468 pkgconfigdir = $(libdir)/pkgconfig
470 # Files to install in Pkgconfig directory
471 pkgconfig_DATA = scilab.pc
473 .PHONY: macros localization doc
475 .NOTPARALLEL: macros doc
477 include $(top_srcdir)/Makefile.call_scilab.am