source: trunk/MakefileCasadi.am @ 13730

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

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