source: branches/dev-jk-2471-2/MakefileCasadi.am @ 13722

Last change on this file since 13722 was 13722, checked in by Jonathan Kämpe, 2 months ago

#5844 Moved casadi related make targets to its own file.

File size: 12.7 KB
Line 
1#
2#    Copyright (C) 2009 Modelon AB
3#
4#    This program is free software: you can redistribute it and/or modify
5#    it under the terms of the Common Public License as published by
6#    IBM, version 1.0 of the License.
7#
8#    This program is distributed in the hope that it will be useful,
9#    but WITHOUT ANY WARRANTY. See the Common Public License for more details.
10#
11#    You should have received a copy of the Common Public License
12#    along with this program.  If not, see
13#     <http://www.ibm.com/developerworks/library/os-cpl.html/>.
14
15casadi:
16if COMPILE_WITH_IPOPT
17        cd $(abs_builddir)/ThirdParty/CasADi; \
18        make -f Makefile  "SWIGCHECK_BUILD_DIR=$(SWIGCHECK_BUILD_DIR)" "CASADI_BUILD_DIR=$(CASADI_BUILD_DIR)" "IPOPT_HOME=$(IPOPT_HOME)" "CASADI_PYTHON_INST_DIR=${CASADI_PYTHON_INST_DIR}" "CASADI_INST_DIR=${CASADI_INST_DIR}" "CASADI_PLUGIN_INST_DIR=${CASADI_PLUGIN_INST_DIR}" "CMAKE_CASADI_ARGS=${CMAKE_CASADI_ARGS}" "CMAKE_CASADI_COMPILER_ARGS=${CMAKE_CASADI_COMPILER_ARGS}" "CMAKE_CASADI_CXX_FLAG=${CMAKE_CASADI_CXX_FLAG}" "CMAKE_PYTHON_LIB=${CMAKE_PYTHON_LIB}"
19endif
20if COMPILE_WITH_IPOPT64
21        export PATH=$(PYTHON64_HOME):$(PYTHON64_HOME)/Scripts:$(PYTHON64_HOME)/Lib:"${PATH}"; \
22        export PYTHONHOME=$(PYTHON64_HOME); \
23        cd $(abs_builddir)/ThirdParty/CasADi; \
24        make -f Makefile  "SWIGCHECK_BUILD_DIR=$(SWIGCHECK_BUILD_DIR64)" "CASADI_BUILD_DIR=$(CASADI_BUILD_DIR64)" "IPOPT_HOME=$(IPOPT64_HOME)" "CASADI_PYTHON_INST_DIR=${CASADI_PYTHON_INST_DIR64}" "CASADI_INST_DIR=${CASADI_INST_DIR64}" "CASADI_PLUGIN_INST_DIR=${CASADI_PLUGIN_INST_DIR64}" "CMAKE_CASADI_ARGS=${CMAKE_CASADI_ARGS64}" "CMAKE_CASADI_COMPILER_ARGS=${CMAKE_CASADI_COMPILER_ARGS64}" "CMAKE_CASADI_CXX_FLAG=${CMAKE_CASADI_CXX_FLAG64}" "CMAKE_PYTHON_LIB=${CMAKE_PYTHON64_LIB}" "CMAKE_PYTHON_INCLUDE=${CMAKE_PYTHON64_INCLUDE}"
25        export PYTHONHOME=$(ORIG_PYTHON_HOME); \
26        export PATH="$(ORIG_PATH)";
27endif
28
29install_casadi: casadi
30if COMPILE_WITH_IPOPT
31        cd $(abs_builddir)/ThirdParty/CasADi; \
32        make -f Makefile install "SWIGCHECK_BUILD_DIR=$(SWIGCHECK_BUILD_DIR)" "CASADI_BUILD_DIR=$(CASADI_BUILD_DIR)" "IPOPT_HOME=$(IPOPT_HOME)"
33        mkdir -p $(DESTDIR)$(prefix)/Python/
34        cp -r $(CASADI_PYTHON_INST_DIR)/casadi $(DESTDIR)$(prefix)/Python/
35        ## temp fix
36        cp $(CASADI_BUILD_DIR)/swig/casadi_core.py $(DESTDIR)$(prefix)/Python/casadi
37endif
38if COMPILE_WITH_IPOPT64 
39        export PATH=$(PYTHON64_HOME):$(PYTHON64_HOME)/Scripts:$(PYTHON64_HOME)/Lib:"${PATH}"; \
40        export PYTHONHOME=$(PYTHON64_HOME); 
41        cd $(abs_builddir)/ThirdParty/CasADi; \
42        make -f Makefile install "SWIGCHECK_BUILD_DIR=$(SWIGCHECK_BUILD_DIR)" "CASADI_BUILD_DIR=$(CASADI_BUILD_DIR64)" "IPOPT_HOME=$(IPOPT64_HOME)"
43        mkdir -p $(DESTDIR)$(prefix)/Python/
44        cp -r $(CASADI_PYTHON_INST_DIR64)/casadi $(DESTDIR)$(prefix)/Python_64/
45        ## temp fix
46        cp $(CASADI_BUILD_DIR64)/swig/casadi_core.py $(DESTDIR)$(prefix)/Python_64/casadi
47        export PYTHONHOME=$(ORIG_PYTHON_HOME); \
48        export PATH="$(ORIG_PATH)";
49endif
50## Install for CasADiInterface, Variables and targets.
51## MC_interface installs the system with Python.
52## If C++ compilation/tests are wanted there is the target MC_interface_cplusplus
53
54MC_INTERFACE=$(abs_top_srcdir)/ModelicaCasADiInterface
55
56CASADI_HOME=$(abs_top_srcdir)/ThirdParty/CasADi/CasADi
57MC_SRC=$(JAVA_CASADI_BASE_DIR)/ModelicaCompilerCasADi
58OC_SRC=$(JAVA_CASADI_BASE_DIR)/OptimicaCompilerCasADi
59MC_SRC_SWIG=$(abs_top_srcdir)/Compiler/ModelicaCompilerCasADi/src/swig
60
61MC_CASADI_BUILD=$(abs_builddir)/ModelicaCompilerCasADi
62OC_CASADI_BUILD=$(abs_builddir)/OptimicaCompilerCasADi
63
64# The modelica casadi interface is built into a build folder
65MC_BUILD=$(abs_builddir)/ModelicaCasADiInterfaceBuild
66MC_BUILD64=$(abs_builddir)/ModelicaCasADiInterfaceBuild64
67# Jars from the modified modelica and optimica compilers are put into the JModelica folder
68MC_COMPILERS_DIR=$(MC_BUILD)/JModelica.org
69MC_LIB=$(DESTDIR)$(prefix)/lib/casadi_interface
70MC_LIB64=$(DESTDIR)$(prefix)/lib/casadi_interface64
71
72CASADI_BUILD_DIR=$(abs_builddir)/casadi_build
73CASADI_BUILD_DIR64=$(abs_builddir)/casadi_build64
74SWIGCHECK_BUILD_DIR=$(abs_builddir)/swig_check
75SWIGCHECK_BUILD_DIR64=$(abs_builddir)/swig_check64
76CASADI_PYTHON_INST_DIR=$(abs_builddir)/casadi_install
77CASADI_INST_DIR=$(prefix)/ThirdParty/CasADi
78CASADI_PLUGIN_INST_DIR=$(CASADI_INST_DIR)/lib
79CASADI_PYTHON_INST_DIR64=$(abs_builddir)/casadi_install64
80CASADI_INST_DIR64=$(prefix)/ThirdParty/CasADi64
81CASADI_PLUGIN_INST_DIR64=$(CASADI_INST_DIR64)/lib
82CMAKE_CASADI_CXX_FLAG=-m32
83CMAKE_CASADI_COMPILER_ARGS=-m32 -mincoming-stack-boundary=2
84CMAKE_CASADI_CXX_FLAG64=-m64
85CMAKE_CASADI_COMPILER_ARGS64=-m64 -fpermissive
86
87casadi_interface: install_casadi_interface
88build_casadi_interface: casadi modelicacasadi_wrapper
89install_casadi_interface: install_casadi $(MC_LIB) $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/__init__.py $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper/__init__.py $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py
90        if [ "$(INSTALL_EXTRA_CASADI)" ]; then exec "$(INSTALL_EXTRA_CASADI)" "$(abs_top_srcdir)" "$(DESTDIR)$(prefix)"; fi
91
92ifcasadi: casadi
93if COMPILE_WITH_IPOPT
94        mkdir -p $(MC_BUILD)/ifcasadi; \
95        cd $(MC_BUILD)/ifcasadi; \
96        case $(build) in \
97        *-cygwin*|*-mingw*) \
98        cmake $(MC_SRC_SWIG) -G "MSYS Makefiles" -DCMAKE_CXX_COMPILER_ARG1="-m32" -DCMAKE_CXX_FLAGS="-m32" \
99            -DIFCASADI_OUTDIR="$(MC_CASADI_BUILD)" -DCASADI_HOME="$(CASADI_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR)";; \
100        *) \
101        cmake $(MC_SRC_SWIG) \
102            -DIFCASADI_OUTDIR="$(MC_CASADI_BUILD)" -DCASADI_HOME="$(CASADI_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR)";; \
103        esac
104        cd $(MC_BUILD)/ifcasadi;  make
105endif
106if COMPILE_WITH_IPOPT64
107        export PATH=$(PYTHON64_HOME):$(PYTHON64_HOME)/Scripts:$(PYTHON64_HOME)/Lib:"${PATH}";
108        export PYTHONHOME=$(PYTHON64_HOME);
109        mkdir -p $(MC_BUILD64)/ifcasadi; \
110        cd $(MC_BUILD64)/ifcasadi; \
111        cmake $(MC_SRC_SWIG) -G "MSYS Makefiles" -DCMAKE_CXX_COMPILER_ARG1="-m64" -DCMAKE_CXX_FLAGS="-m64" \
112            -DIFCASADI_OUTDIR="$(MC_CASADI_BUILD)" -DCASADI_HOME="$(CASADI_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR64)"; \
113        cd $(MC_BUILD64)/ifcasadi;  make
114        export PYTHONHOME=$(ORIG_PYTHON_HOME); \
115        export PATH="$(ORIG_PATH)";
116endif
117
118$(MC_LIB): $(MC_CASADI_BUILD)/bin/ModelicaCompiler.jar $(OC_CASADI_BUILD)/bin/OptimicaCompiler.jar $(MC_CASADI_BUILD)/bin/util.jar ifcasadi
119if COMPILE_WITH_IPOPT
120        rm -rf $(MC_LIB)
121        mkdir -p $(MC_LIB)
122        cp $(MC_CASADI_BUILD)/bin/ModelicaCompiler.jar $(MC_LIB)
123        cp $(OC_CASADI_BUILD)/bin/OptimicaCompiler.jar $(MC_LIB)
124        cp $(MC_CASADI_BUILD)/bin/util.jar $(MC_LIB)
125        case $(build) in \
126        *-cygwin*) \
127        cp $(MC_BUILD)/ifcasadi/ifcasadi.dll $(MC_LIB) ;; \
128        *-mingw*) \
129        cp $(MC_BUILD)/ifcasadi/ifcasadi.dll $(MC_LIB) ;; \
130        *) \
131        cp $(MC_BUILD)/ifcasadi/libifcasadi.so $(MC_LIB) ;; \
132        esac
133endif
134if COMPILE_WITH_IPOPT64
135        rm -rf $(MC_LIB64)
136        mkdir -p $(MC_LIB64)
137        cp $(MC_CASADI_BUILD)/bin/ModelicaCompiler.jar $(MC_LIB64)
138        cp $(OC_CASADI_BUILD)/bin/OptimicaCompiler.jar $(MC_LIB64)
139        cp $(MC_CASADI_BUILD)/bin/util.jar $(MC_LIB64)
140        cp $(MC_BUILD64)/ifcasadi/ifcasadi.dll $(MC_LIB64)
141endif
142
143mc_modelica: ifcasadi
144        cd $(MC_CASADI_BUILD); $(ANT_OPTS) $(ANT) -f "$(JAVA_MC_CASADI_ANT_FILE)" "-Dcompiler=$(COMPILER_DIR)" "-Dtarget=$(MC_CASADI_BUILD)"
145
146mc_optimica: ifcasadi
147        mkdir -p $(OC_CASADI_BUILD)/src/generated/optimica/java
148        cp -pr $(MC_CASADI_BUILD)/src/generated/modelica/java/ifcasadi $(OC_CASADI_BUILD)/src/generated/optimica/java
149        cd $(OC_CASADI_BUILD); $(ANT_OPTS) $(ANT) -f "$(JAVA_OC_CASADI_ANT_FILE)" "-Dcompiler=$(COMPILER_DIR)" "-Dtarget=$(OC_CASADI_BUILD)"
150
151$(MC_CASADI_BUILD)/bin/ModelicaCompiler.jar: mc_modelica
152$(MC_CASADI_BUILD)/bin/util.jar:             mc_modelica
153$(MC_CASADI_BUILD)/bin/separateProcess.jar:  mc_modelica
154
155$(OC_CASADI_BUILD)/bin/OptimicaCompiler.jar: mc_optimica
156$(OC_CASADI_BUILD)/bin/util.jar:             mc_optimica
157$(OC_CASADI_BUILD)/bin/separateProcess.jar:  mc_optimica
158
159$(MC_BUILD)/modelicacasadi_wrapper/swig/modelicacasadi_wrapper.py: modelicacasadi_wrapper
160
161
162modelicacasadi_wrapper: $(MC_CASADI_BUILD)/bin/ModelicaCompiler.jar $(OC_CASADI_BUILD)/bin/OptimicaCompiler.jar $(MC_CASADI_BUILD)/bin/util.jar ifcasadi # $(MC_LIB)
163if COMPILE_WITH_IPOPT
164        mkdir -p $(MC_BUILD)/modelicacasadi_wrapper; \
165        cd $(MC_BUILD)/modelicacasadi_wrapper; \
166        case $(build) in \
167        *-cygwin*|*-mingw*) \
168        cmake $(MC_INTERFACE) -G "MSYS Makefiles" -DCMAKE_CXX_COMPILER_ARG1="-m32" -DCMAKE_CXX_FLAGS="-m32" \
169            -DMC_BUILD="$(MC_BUILD)" -DIPOPT_HOME="$(IPOPT_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR)" \
170            -DIFCASADI_JAR_BASE="$(JAVA_CASADI_BUILD_DIR)" -DCASADI_HOME="$(CASADI_HOME)" \
171            "$(CMAKE_PYTHON_LIB)" "$(CMAKE_PYTHON_INCLUDE)" ;; \
172        *) \
173        cmake $(MC_INTERFACE) \
174            -DMC_BUILD="$(MC_BUILD)" -DIPOPT_HOME="$(IPOPT_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR)" \
175            -DIFCASADI_JAR_BASE="$(JAVA_CASADI_BUILD_DIR)" -DCASADI_HOME="$(CASADI_HOME)" \
176            "$(CMAKE_PYTHON_LIB)" "$(CMAKE_PYTHON_INCLUDE)" ;; \
177        esac
178        cd $(MC_BUILD)/modelicacasadi_wrapper;  make modelicacasadi_wrapper
179endif
180if COMPILE_WITH_IPOPT64
181        export PATH=$(PYTHON64_HOME):$(PYTHON64_HOME)/Scripts:$(PYTHON64_HOME)/Lib:"${PATH}"; \
182        export PYTHONHOME=$(PYTHON64_HOME); \
183        mkdir -p $(MC_BUILD64)/modelicacasadi_wrapper; \
184        cd $(MC_BUILD64)/modelicacasadi_wrapper; \
185        cmake $(MC_INTERFACE) -G "MSYS Makefiles" -DCMAKE_CXX_COMPILER_ARG1="-m64" -DCMAKE_CXX_FLAGS="-m64" \
186            -DMC_BUILD="$(MC_BUILD64)" -DIPOPT_HOME="$(IPOPT64_HOME)" -DCASADI_BUILD_DIR="$(CASADI_BUILD_DIR64)" \
187            -DIFCASADI_JAR_BASE="$(JAVA_CASADI_BUILD_DIR)" -DCASADI_HOME="$(CASADI_HOME)" \
188            "$(CMAKE_PYTHON64_LIB)" "$(CMAKE_PYTHON64_INCLUDE)"; \
189        cd $(MC_BUILD64)/modelicacasadi_wrapper;  make modelicacasadi_wrapper
190        export PYTHONHOME=$(ORIG_PYTHON_HOME);
191        export PATH="$(ORIG_PATH)";
192endif
193
194 $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/__init__.py: install_modelicacasadi_transfer
195 $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/modelica_casadi_transfer_wrapper.py: install_modelicacasadi_transfer
196 
197 $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper/__init__.py: install_modelicacasadi_wrapper
198 
199 install_modelicacasadi_wrapper: $(MC_BUILD)/modelicacasadi_wrapper/swig/modelicacasadi_wrapper.py
200if COMPILE_WITH_IPOPT
201        mkdir -p $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper
202        cp $(MC_BUILD)/modelicacasadi_wrapper/swig/*modelicacasadi_wrapper* $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper
203        rm -f $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper/__init__.py
204        touch $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper/__init__.py
205        echo "from modelicacasadi_wrapper import *" >> $(DESTDIR)$(prefix)/Python/modelicacasadi_wrapper/__init__.py
206endif
207if COMPILE_WITH_IPOPT64
208        export PATH=$(PYTHON64_HOME):$(PYTHON64_HOME)/Scripts:$(PYTHON64_HOME)/Lib:"${PATH}"; \
209        export PYTHONHOME=$(PYTHON64_HOME);
210        mkdir -p $(DESTDIR)$(prefix)/Python_64/modelicacasadi_wrapper
211        cp $(MC_BUILD64)/modelicacasadi_wrapper/swig/*modelicacasadi_wrapper* $(DESTDIR)$(prefix)/Python_64/modelicacasadi_wrapper
212        rm -f $(DESTDIR)$(prefix)/Python_64/modelicacasadi_wrapper/__init__.py
213        touch $(DESTDIR)$(prefix)/Python_64/modelicacasadi_wrapper/__init__.py
214        echo "from modelicacasadi_wrapper import *" >> $(DESTDIR)$(prefix)/Python_64/modelicacasadi_wrapper/__init__.py
215        export PYTHONHOME=$(ORIG_PYTHON_HOME)
216        export PATH="$(ORIG_PATH)"
217endif
218
219 install_modelicacasadi_transfer: $(MC_INTERFACE)/python/modelica_casadi_transfer_wrapper.py
220if COMPILE_WITH_IPOPT
221        mkdir -p $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer
222        rm -f $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/__init__.py
223        touch $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/__init__.py
224        echo "from modelica_casadi_transfer_wrapper import *" >> $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer/__init__.py
225        cp $(MC_INTERFACE)/python/modelica_casadi_transfer_wrapper.py $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer
226endif
227if COMPILE_WITH_IPOPT64   
228        mkdir -p $(DESTDIR)$(prefix)/Python_64/modelicacasadi_transfer
229        rm -f $(DESTDIR)$(prefix)/Python_64/modelicacasadi_transfer/__init__.py
230        touch $(DESTDIR)$(prefix)/Python_64/modelicacasadi_transfer/__init__.py
231        echo "from modelica_casadi_transfer_wrapper import *" >> $(DESTDIR)$(prefix)/Python_64/modelicacasadi_transfer/__init__.py
232        cp $(MC_INTERFACE)/python/modelica_casadi_transfer_wrapper.py $(DESTDIR)$(prefix)/Python_64/modelicacasadi_transfer
233endif
234       
235clean-casadi-interface:
236        rm -rf $(MC_BUILD)
237        rm -rf $(MC_BUILD64)
238#       rm -rf $(DESTDIR)$(prefix)/Python/casadi
239#       rm -rf $(DESTDIR)$(prefix)/Python/modelicacasadi_transfer
240if HAVE_ANT
241        cd $(JAVA_CASADI_BUILD_DIR)/ModelicaCompilerCasADi; \
242        $(ANT_OPTS) $(ANT) clean ; rm -rf $(MC_CASADI_BUILD)/src/cpp-generated $(MC_CASADI_BUILD)/src/generated/modelica/java/ifcasadi
243        cd $(JAVA_CASADI_BUILD_DIR)/OptimicaCompilerCasADi; \
244        $(ANT_OPTS) $(ANT) clean ; rm -rf $(OC_CASADI_BUILD)/src/cpp-generated $(OC_CASADI_BUILD)/src/generated/optimica/java/ifcasadi
245endif
246       
247
248.PHONY: modelicacasadi_wrapper ifcasadi install_modelicacasadi_transfer install_modelicacasadi_wrapper
Note: See TracBrowser for help on using the repository browser.