# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab # Copyright (C) 2008 - INRIA - Sylvestre Ledru # Copyright (C) 2010 - DIGITEO - Sylvestre Ledru # Copyright (C) 2014 - Scilab Enterprises - Clement DAVID # # This file must be used under the terms of the CeCILL. # This source file is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms # are also available at # http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt # TODO: # * see if we can do more factorization (on the lexer for example) ######### Common Modelica elements ############# if XCOS if OCAML TARGET = modelicac XML2Modelica modelicat BASE_PATH = $(srcdir)/src/ bin_PROGRAMS = $(TARGET) OCAMLLIBS=nums.cma ### XML2Modelica XML2Modelica_SOURCES = \ $(srcdir)/src/xml2modelica/xMLTree.ml \ $(srcdir)/src/xml2modelica/linenum.mll \ $(srcdir)/src/xml2modelica/stringParser.ml \ $(srcdir)/src/xml2modelica/stringLexer.ml \ $(srcdir)/src/xml2modelica/xMLParser.ml \ $(srcdir)/src/xml2modelica/xMLLexer.ml \ $(srcdir)/src/xml2modelica/modelicaCodeGenerator.ml \ $(srcdir)/src/xml2modelica/xML2Modelica.ml XML2Modelica_SOURCES_mly = $(XML2Modelica_SOURCES:.mly=.ml) MLS_XML2Modelica = $(XML2Modelica_SOURCES_mly:.mll=.ml) MLIS_XML2Modelica = $(MLS_XML2Modelica:.ml=.mli) BASE_PATH_XML2Modelica = $(srcdir)/src/xml2modelica ### Translator modelicat_SOURCES = \ $(srcdir)/src/translator/parsing/syntax.ml \ $(srcdir)/src/translator/parsing/parser.mly \ $(srcdir)/src/translator/parsing/lexer.mll \ $(srcdir)/src/translator/parsing/linenum.mll \ $(srcdir)/src/translator/compilation/types.ml \ $(srcdir)/src/translator/compilation/nameResolve.ml \ $(srcdir)/src/translator/instantiation/instantiation.ml \ $(srcdir)/src/translator/exceptionHandling/msgDico.ml \ $(srcdir)/src/translator/exceptionHandling/errorDico.ml \ $(srcdir)/src/translator/exceptionHandling/exceptHandler.ml \ $(srcdir)/src/translator/translation/libraryManager.ml \ $(srcdir)/src/translator/translation/codeGeneration.ml \ $(srcdir)/src/translator/translation/versiondate.ml \ $(srcdir)/src/translator/translation/translator.ml modelicat_SOURCES_mly = $(modelicat_SOURCES:.mly=.ml) MLS_modelicat = $(modelicat_SOURCES_mly:.mll=.ml) MLIS_modelicat = $(MLS_modelicat:.ml=.mli) INCLUDE_modelicat = -I $(srcdir)/src/translator/compilation \ -I $(srcdir)/src/translator/exceptionHandling \ -I $(srcdir)/src/translator/parsing \ -I $(srcdir)/src/translator/instantiation \ -I $(srcdir)/src/translator/translation ### Modelicac modelicac_SOURCES = \ $(srcdir)/src/modelica_compiler/parseTree.ml \ $(srcdir)/src/modelica_compiler/linenum.mll \ $(srcdir)/src/modelica_compiler/parser.mly \ $(srcdir)/src/modelica_compiler/lexer.mll \ $(srcdir)/src/modelica_compiler/precompilation.ml \ $(srcdir)/src/modelica_compiler/compilation.ml \ $(srcdir)/src/modelica_compiler/instantiation.ml \ $(srcdir)/src/modelica_compiler/graphNodeSet.ml \ $(srcdir)/src/modelica_compiler/symbolicExpression.ml \ $(srcdir)/src/modelica_compiler/squareSparseMatrix.ml \ $(srcdir)/src/modelica_compiler/bipartiteGraph.ml \ $(srcdir)/src/modelica_compiler/hungarianMethod.ml \ $(srcdir)/src/modelica_compiler/causalityGraph.ml \ $(srcdir)/src/modelica_compiler/optimization.ml \ $(srcdir)/src/modelica_compiler/xMLCodeGeneration.ml \ $(srcdir)/src/modelica_compiler/optimizingCompiler.ml \ $(srcdir)/src/modelica_compiler/scicosCodeGeneration.ml \ $(srcdir)/src/modelica_compiler/scicosOptimizingCompiler.ml modelicac_SOURCES_mly = $(modelicac_SOURCES:.mly=.ml) MLS_modelicac = $(modelicac_SOURCES_mly:.mll=.ml) MLIS_modelicac = $(MLS:.ml=.mli) BASE_PATH_MODELICAC = $(srcdir)/src/modelica_compiler INCLUDE = -I $(BASE_PATH_MODELICAC) -I $(BASE_PATH_XML2Modelica) ########## COMMON SUFFIXES += .ml .mli .mll .mly .cmo .cmi .cmx # @TODO check how to avoid the rebuild of the parser/lexer .cmi.cmo: @if echo "$<"|grep src/translator; then \ echo $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -c $*.ml; \ $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -c $*.ml; \ else \ echo $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -c $*.ml; \ $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -c $*.ml; \ fi .cmi.cmx: @if echo "$<"|grep src/translator; then \ echo $(OCAMLOPT) $(INCLUDE_modelicat) $(OCAMLOPTFLAGS) -c $*.ml; \ $(OCAMLOPT) $(INCLUDE_modelicat) $(OCAMLOPTFLAGS) -c $*.ml; \ else \ echo $(OCAMLOPT) $(INCLUDE) $(OCAMLOPTFLAGS) -c $*.ml; \ $(OCAMLOPT) $(INCLUDE) $(OCAMLOPTFLAGS) -c $*.ml; \ fi .mli.cmi: @if echo "$<"|grep src/translator; then \ echo $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -c $<; \ $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -c $<; \ else \ echo $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -c $<; \ $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -c $<; \ fi .ml.mli: @if echo "$<"|grep src/translator; then \ echo $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -i $< > $@; \ $(OCAMLC) $(INCLUDE_modelicat) $(OCAMLCFLAGS) -i $< > $@; \ else \ echo $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -i $< > $@; \ $(OCAMLC) $(INCLUDE) $(OCAMLCFLAGS) -i $< > $@; \ fi .mll.ml: $(OCAMLLEX) $< .mly.ml: $(OCAMLYACC) $< @rm $*.mli # Build the binaries, disabling parallel building modelicac: $(modelicac_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_modelicac:.ml=.cmx) $(OCAMLOPT) -o $@ $(INCLUDE) $(OCAMLOPTFLAGS) $(OCAMLLIBS:.cma=.cmxa) $(MLS_modelicac:.ml=.cmx) modelicac.ocamlc: $(modelicac_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_modelicac:.ml=.cmo) $(OCAMLC) -o $@ $(INCLUDE) $(OCAMLOPTFLAGS) $(OCAMLLIBS) $(MLS_modelicac:.ml=.cmo) XML2Modelica: $(XML2Modelica_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_XML2Modelica:.ml=.cmx) $(OCAMLOPT) -o $@ $(INCLUDE) $(OCAMLCFLAGS) $(OCAMLLIBS:.cma=.cmxa) $(MLS_XML2Modelica:.ml=.cmx) XML2Modelica.ocamlc: $(XML2Modelica_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_XML2Modelica:.ml=.cmo) $(OCAMLC) -o $@ $(INCLUDE) $(OCAMLCFLAGS) $(OCAMLLIBS) $(MLS_XML2Modelica:.ml=.cmo) modelicat: $(modelicat_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_modelicat:.ml=.cmx) $(OCAMLOPT) -o $@ $(INCLUDE_modelicat) $(OCAMLOPTFLAGS) $(OCAMLLIBS:.cma=.cmxa) $(MLS_modelicat:.ml=.cmx) modelicat.ocamlc: $(modelicat_SOURCES) $(MAKE) MAKEFLAGS=-j1 $(MLS_modelicat:.ml=.cmo) $(OCAMLC) -o $@ $(INCLUDE_modelicat) $(OCAMLOPTFLAGS) $(OCAMLLIBS) $(MLS_modelicat:.ml=.cmo) CLEANFILES = $(BASE_PATH)/*/*.cmi \ $(BASE_PATH)/*/*.o \ $(BASE_PATH)/*/*.cmo \ $(BASE_PATH)/*/*.cm[aiox] \ $(BASE_PATH)/*/parser.mli \ $(BASE_PATH)/*/lexer.mli \ $(BASE_PATH)/*/linenum.mli \ $(BASE_PATH)/*/parser.ml \ $(BASE_PATH)/*/lexer.ml \ $(BASE_PATH)/*/linenum.ml \ $(BASE_PATH)/translator/*/*.cmi \ $(BASE_PATH)/translator/*/*.o \ $(BASE_PATH)/translator/*/*.a \ $(BASE_PATH)/translator/*/*.cmo \ $(BASE_PATH)/translator/*/*.cmxa \ $(BASE_PATH)/translator/*/*.cm[aiox] \ $(BASE_PATH)/translator/*/parser.mli \ $(BASE_PATH)/translator/*/lexer.mli \ $(BASE_PATH)/translator/*/parser.ml \ $(BASE_PATH)/translator/*/linenum.ml \ $(BASE_PATH)/translator/*/lexer.ml \ $(TARGET) \ $(BASE_PATH)/modelica_compiler/linenum.mli \ $(BASE_PATH)/modelica_compiler/scicosOptimizingCompiler.mli \ $(BASE_PATH)/translator/compilation/nameResolve.mli \ $(BASE_PATH)/translator/compilation/types.mli \ $(BASE_PATH)/translator/exceptionHandling/errorDico.mli \ $(BASE_PATH)/translator/exceptionHandling/exceptHandler.mli \ $(BASE_PATH)/translator/exceptionHandling/msgDico.mli \ $(BASE_PATH)/translator/instantiation/instantiation.mli \ $(BASE_PATH)/translator/parsing/linenum.mli \ $(BASE_PATH)/translator/parsing/syntax.mli \ $(BASE_PATH)/translator/translation/codeGeneration.mli \ $(BASE_PATH)/translator/translation/libraryManager.mli \ $(BASE_PATH)/translator/translation/translator.mli \ $(BASE_PATH)/translator/translation/versiondate.mli #BUILT_SOURCES = depend depend: $(MLS_XML2Modelica) $(MLS_modelicac) $(MLS_modelicat) $(OCAMLDEP) -all $(INCLUDE) $(MLS_XML2Modelica) $(MLIS_XML2Modelica) > .depend $(OCAMLDEP) -all $(INCLUDE_modelicat) $(MLS_modelicat) $(MLIS_modelicat) >> .depend $(OCAMLDEP) -all $(INCLUDE) $(MLS_modelicac) $(MLIS_modelicac) >> .depend include .depend endif # OCAML endif # XCOS