Skip to content

Commit

Permalink
- try to fix Ticket #3232
Browse files Browse the repository at this point in the history
- Paths in ModelicaConfig.inc - file are now relative to OMHOME-Makefile variable
- Boost-Header files that are required for windows-cpp-runtime simulations are now copied into build/include/omc/cpp 
- msvc-build on windows not testet at the moment

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@25209 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Marcus Walther committed Mar 23, 2015
1 parent 1211dd8 commit 04a519d
Show file tree
Hide file tree
Showing 15 changed files with 489 additions and 129 deletions.
21 changes: 10 additions & 11 deletions Compiler/Template/CodegenCpp.tpl
Expand Up @@ -2778,9 +2778,9 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
# /DNOMINMAX - Define NOMINMAX (does what it says)
# /TP - Use C++ Compiler
!IF "$(PCH_FILE)" == ""
CFLAGS= $(SYSTEM_CFLAGS) /I"<%makefileParams.omhome%>/include/omc/cpp/Core/" /I"<%makefileParams.omhome%>/include/omc/cpp/" /I. <%makefileParams.includes%> /I"$(BOOST_INCLUDE)" /I"$(SUITESPARSE_INCLUDE)" /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY <%additionalCFlags_MSVC%>
CFLAGS= $(SYSTEM_CFLAGS) /I"<%makefileParams.omhome%>/include/omc/cpp/Core/" /I"<%makefileParams.omhome%>/include/omc/cpp/" /I. <%makefileParams.includes%> /I"$(BOOST_INCLUDE)" /I"$(UMFPACK_INCLUDE)" /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY <%additionalCFlags_MSVC%>
!ELSE
CFLAGS= $(SYSTEM_CFLAGS) /I"<%makefileParams.omhome%>/include/omc/cpp/Core/" /I"<%makefileParams.omhome%>/include/omc/cpp/" /I. <%makefileParams.includes%> /I"$(BOOST_INCLUDE)" /I"$(SUITESPARSE_INCLUDE)" /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY /Fp<%makefileParams.omhome%>/include/omc/cpp/Core/$(PCH_FILE) /YuCore/$(H_FILE) <%additionalCFlags_MSVC%>
CFLAGS= $(SYSTEM_CFLAGS) /I"<%makefileParams.omhome%>/include/omc/cpp/Core/" /I"<%makefileParams.omhome%>/include/omc/cpp/" /I. <%makefileParams.includes%> /I"$(BOOST_INCLUDE)" /I"$(UMFPACK_INCLUDE)" /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY /Fp<%makefileParams.omhome%>/include/omc/cpp/Core/$(PCH_FILE) /YuCore/$(H_FILE) <%additionalCFlags_MSVC%>
!ENDIF
CPPFLAGS =
# /ZI enable Edit and Continue debug info
Expand Down Expand Up @@ -2833,15 +2833,14 @@ case "gcc" then
let libsStr = (makefileParams.libs |> lib => lib ;separator=" ")
let libsPos1 = if not dirExtra then libsStr //else ""
let libsPos2 = if dirExtra then libsStr // else ""
let staticLibs = '$(LIBOMCPPOMCFACTORY) $(LIBOMCPPSIMCONTROLLER) $(LIBOMCPPSIMULATIONSETTINGS) $(LIBOMCPPSYSTEM) $(LIBOMCPPDATAEXCHANGE) $(LIBOMCPPNEWTON) $(LIBOMCPPUMFPACK) $(LIBOMCPPIDA) $(LIBOMCPPKINSOL) $(LIBOMCPPCVODE) $(LIBOMCPPSOLVER) $(LIBOMCPPMATH) $(LIBOMCPPMODELICAUTILITIES) $(SUNDIALS_LIBS) $(UMFPACK_LIBS) $(LAPACK_LIBS)'
let staticLibs = '$(LIBOMCPPOMCFACTORY) $(LIBOMCPPSIMCONTROLLER) $(LIBOMCPPSIMULATIONSETTINGS) $(LIBOMCPPSYSTEM) $(LIBOMCPPDATAEXCHANGE) $(LIBOMCPPNEWTON) $(LIBOMCPPUMFPACK) $(LIBOMCPPIDA) $(LIBOMCPPKINSOL) $(LIBOMCPPCVODE) $(LIBOMCPPSOLVER) $(LIBOMCPPMATH) $(LIBOMCPPMODELICAUTILITIES) -L$(SUNDIALS_LIB_DIR) $(SUNDIALS_LIBS) $(UMFPACK_LIBS) $(LAPACK_LIBS)'
let staticIncludes = '-I"$(SUNDIALS_INCLUDE)" -I"$(SUNDIALS_INCLUDE)/kinsol" -I"$(SUNDIALS_INCLUDE)/nvector"'
let _extraCflags = match sopt case SOME(s as SIMULATION_SETTINGS(__)) then ""
let extraCflags = '<%_extraCflags%><% if Flags.isSet(Flags.GEN_DEBUG_SYMBOLS) then " -g"%>'
let omHome = makefileParams.omhome
let &timeMeasureLink +=
match(getConfigString(PROFILING_LEVEL))
case("all_perf") then ' -Wl,-rpath,"<%omHome%>/lib/omc/cpp" -lOMCppExtensionUtilities -lOMCppExtensionUtilities_papi -lpapi'
else ' -Wl,-rpath,"<%omHome%>/lib/omc/cpp" -lOMCppExtensionUtilities'
case("all_perf") then ' -Wl,-rpath,"$(OMHOME)/lib/omc/cpp" -lOMCppExtensionUtilities -lOMCppExtensionUtilities_papi -lpapi'
else ' -Wl,-rpath,"$(OMHOME)/lib/omc/cpp" -lOMCppExtensionUtilities'
end match
let CC = if (compileForMPI) then "mpicc" else '<%makefileParams.ccompiler%>'
let CXX = if (compileForMPI) then "mpicxx" else '<%makefileParams.cxxcompiler%>'
Expand All @@ -2851,8 +2850,8 @@ case "gcc" then
<<
# Makefile generated by OpenModelica
OMHOME=<%makefileParams.omhome%>
include <%makefileParams.omhome%>/include/omc/cpp/ModelicaConfig.inc
include <%makefileParams.omhome%>/include/omc/cpp/ModelicaLibraryConfig.inc
include $(OMHOME)/include/omc/cpp/ModelicaConfig.inc
include $(OMHOME)/include/omc/cpp/ModelicaLibraryConfig.inc
# Simulations use -O0 by default
SIM_OR_DYNLOAD_OPT_LEVEL=-O0
CC=<%CC%>
Expand All @@ -2862,11 +2861,11 @@ case "gcc" then
EXEEXT=<%makefileParams.exeext%>
DLLEXT=<%makefileParams.dllext%>
CFLAGS_BASED_ON_INIT_FILE=<%extraCflags%>
CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) -Winvalid-pch $(SYSTEM_CFLAGS) -I"<%makefileParams.omhome%>/include/omc/cpp/Core" -I"<%makefileParams.omhome%>/include/omc/cpp/" -I. <%makefileParams.includes%> -I"$(BOOST_INCLUDE)" -I"$(SUITESPARSE_INCLUDE)" <%makefileParams.includes ; separator=" "%> <%match sopt case SOME(s as SIMULATION_SETTINGS(__)) then s.cflags %> <%additionalCFlags_GCC%>
CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) -Winvalid-pch $(SYSTEM_CFLAGS) -I"$(OMHOME)/include/omc/cpp/Core" -I"$(OMHOME)/include/omc/cpp/" -I. <%makefileParams.includes%> -I"$(BOOST_INCLUDE)" -I"$(UMFPACK_INCLUDE)" <%makefileParams.includes ; separator=" "%> <%match sopt case SOME(s as SIMULATION_SETTINGS(__)) then s.cflags %> <%additionalCFlags_GCC%>
CFLAGS_STATIC=$(CFLAGS) <%staticIncludes%>
LDSYSTEMFLAGS=-L"<%makefileParams.omhome%>/lib/omc/cpp" $(BASE_LIB) -lOMCppOMCFactory -lOMCppSystem -lOMCppModelicaUtilities -lOMCppMath <%additionalLinkerFlags_GCC%> <%timeMeasureLink%> -L"$(BOOST_LIBS)" $(BOOST_LOG_LIB) $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_PROGRAM_OPTIONS_LIB) $(LINUX_LIB_DL)
LDSYSTEMFLAGS=-L"$(OMHOME)/lib/omc/cpp" $(BASE_LIB) -lOMCppOMCFactory -lOMCppSystem -lOMCppModelicaUtilities -lOMCppMath <%additionalLinkerFlags_GCC%> <%timeMeasureLink%> -L"$(BOOST_LIBS)" $(BOOST_LIBRARIES) $(LINUX_LIB_DL)
LDSYSTEMFLAGS_STATIC=<%staticLibs%> $(LDSYSTEMFLAGS)
LDMAINFLAGS=-L"<%makefileParams.omhome%>/lib/omc/cpp" -L"<%makefileParams.omhome%>/bin" -lOMCppOMCFactory -lOMCppModelicaUtilities -L"$(BOOST_LIBS)" $(BOOST_LOG_LIB) $(BOOST_THREAD_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_PROGRAM_OPTIONS_LIB) $(LINUX_LIB_DL) <%additionalLinkerFlags_GCC%> <%timeMeasureLink%>
LDMAINFLAGS=-L"$(OMHOME)/lib/omc/cpp" -L"$(OMHOME)/bin" -lOMCppOMCFactory -lOMCppModelicaUtilities -L"$(BOOST_LIBS)" $(BOOST_LIBRARIES) $(LINUX_LIB_DL) <%additionalLinkerFlags_GCC%> <%timeMeasureLink%>
LDMAINFLAGS_STATIC=<%staticLibs%> $(LDMAINFLAGS)
CPPFLAGS = $(CFLAGS) <%extraCppFlags%>
SYSTEMFILE=OMCpp<%fileNamePrefix%><% if acceptMetaModelicaGrammar() then ".conv"%>.cpp
Expand Down
41 changes: 22 additions & 19 deletions Compiler/Template/CodegenFMUCpp.tpl
Expand Up @@ -510,7 +510,8 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
let mkdir = match makefileParams.platform case "win32" then '"mkdir.exe"' else 'mkdir'
<<
# Makefile generated by OpenModelica
include <%makefileParams.omhome%>/include/omc/cpp/ModelicaConfig.inc
OMHOME=<%makefileParams.omhome%>
include $(OMHOME)/include/omc/cpp/ModelicaConfig.inc
# Simulations use -O0 by default
SIM_OR_DYNLOAD_OPT_LEVEL=-O0
CC=<%makefileParams.ccompiler%>
Expand All @@ -520,32 +521,34 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
DLLEXT=<%makefileParams.dllext%>
CFLAGS_BASED_ON_INIT_FILE=<%extraCflags%>

CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) -Winvalid-pch $(SYSTEM_CFLAGS) -I"<%makefileParams.omhome%>/include/omc/cpp" -I"$(SUITESPARSE_INCLUDE)" -I"<%makefileParams.omhome%>/include/omc/cpp/Core" -I"<%makefileParams.omhome%>/include/omc/cpp/SimCoreFactory" -I"$(BOOST_INCLUDE)" <%makefileParams.includes ; separator=" "%>
LDFLAGS=-L"<%makefileParams.omhome%>/lib/omc/cpp" -L$(BOOST_LIBS) -L"$(BOOST_LIBS)"
CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) -Winvalid-pch $(SYSTEM_CFLAGS) -I"$(OMHOME)/include/omc/cpp" -I"$(UMFPACK_INCLUDE)" -I"$(OMHOME)/include/omc/cpp/Core" -I"$(OMHOME)/include/omc/cpp/SimCoreFactory" -I"$(BOOST_INCLUDE)" <%makefileParams.includes ; separator=" "%>
CPPFLAGS = $(CFLAGS)
LDFLAGS=-L"$(OMHOME)/lib/omc/cpp" -L$(BOOST_LIBS) -L"$(BOOST_LIBS)"
PLATFORM="<%platformstr%>"
SRC=OMCpp<%fileNamePrefix%>.cpp
SRC+= OMCpp<%fileNamePrefix%>FMU.cpp
SRC+= OMCpp<%fileNamePrefix%>CalcHelperMain.cpp
SRC+= OMCpp<%fileNamePrefix%>CalcHelperMain2.cpp
SRC+= OMCpp<%fileNamePrefix%>CalcHelperMain3.cpp
SRC+= OMCpp<%fileNamePrefix%>CalcHelperMain4.cpp
SRC+= OMCpp<%fileNamePrefix%>CalcHelperMain5.cpp
SRC+= OMCpp<%fileNamePrefix%>AlgLoopMain.cpp
LIBS= -lOMCppSystem_FMU -lOMCppDataExchange_static -lOMCppOMCFactory $(BASE_LIB)
LIBS+= $(BOOST_SYSTEM_LIB) $(BOOST_FILESYSTEM_LIB) $(BOOST_SERIALIZATION_LIB)
LIBS+= $(BOOST_PROGRAM_OPTIONS_LIB)
LIBS+= $(LINUX_LIB_DL)

<%modelName%>.fmu: $(SRC)
<%\t%>$(CXX) -shared -I. -o <%modelName%>$(DLLEXT) $(SRC) $(CFLAGS) $(LDFLAGS) $(LIBS)

CALCHELPERMAINFILE=OMCpp<%fileNamePrefix%>CalcHelperMain.cpp
CALCHELPERMAINFILE2=OMCpp<%fileNamePrefix%>CalcHelperMain2.cpp
CALCHELPERMAINFILE3=OMCpp<%fileNamePrefix%>CalcHelperMain3.cpp
CALCHELPERMAINFILE4=OMCpp<%fileNamePrefix%>CalcHelperMain4.cpp
CALCHELPERMAINFILE5=OMCpp<%fileNamePrefix%>CalcHelperMain5.cpp
ALGLOOPSMAINFILE=OMCpp<%fileNamePrefix%>AlgLoopMain.cpp

LIBS= -lOMCppSystem_FMU -lOMCppDataExchange_static -lOMCppOMCFactory $(BASE_LIB) $(LINUX_LIB_DL)

CPPFILES=OMCpp<%fileNamePrefix%>.cpp OMCpp<%fileNamePrefix%>FMU.cpp $(CALCHELPERMAINFILE) $(CALCHELPERMAINFILE2) $(CALCHELPERMAINFILE3) $(CALCHELPERMAINFILE4) $(CALCHELPERMAINFILE5) $(ALGLOOPSMAINFILE)
OFILES=$(CPPFILES:.cpp=.o)

.PHONY: <%modelName%>.fmu $(CPPFILES) clean

<%modelName%>.fmu: $(OFILES)
<%\t%>$(CXX) -shared -I. -o <%modelName%>$(DLLEXT) $(OFILES) $(CFLAGS) $(LDFLAGS) $(LIBS)
<%\t%>rm -rf binaries
<%\t%><%mkdir%> -p "binaries/$(PLATFORM)"
<%\t%>cp <%modelName%>$(DLLEXT) "binaries/$(PLATFORM)/"
<%\t%>rm -f <%modelName%>.fmu
<%\t%>zip -r "<%modelName%>.fmu" modelDescription.xml binaries binaries/$(PLATFORM) binaries/$(PLATFORM)/<%modelName%>$(DLLEXT)
<%\t%>rm -rf binaries

.PHONY: clean
clean:
<%\t%>rm $(SRC) <%modelName%>$(DLLEXT)

Expand Down
2 changes: 1 addition & 1 deletion Makefile.common
Expand Up @@ -163,7 +163,7 @@ runtimeCPP: libraries/msl-external-libs CMinpack
CMAKE_ARGS=$(filter CMAKE_%, $(MAKEFLAGS))


runtimeCPPinstall: libraries/msl-external-libs CMinpack
runtimeCPPinstall: libraries/msl-external-libs CMinpack copycppheader
$(MAKE) -C SimulationRuntime/cpp/ -f $(defaultMakefileTarget) CC="$(CC)" CXX="$(CXX)" install ANALYZATION_MODE="$(ANALYZATION_MODE)" $(CMAKE_ARGS)
test ! `uname` = Darwin || install_name_tool -id @rpath/cpp/libOMCppCVode.dylib build/lib/omc/cpp/libOMCppCVode.dylib
test ! `uname` = Darwin || install_name_tool -id @rpath/cpp/libOMCppDataExchange.dylib build/lib/omc/cpp/libOMCppDataExchange.dylib
Expand Down
2 changes: 2 additions & 0 deletions Makefile.in
Expand Up @@ -238,3 +238,5 @@ emcc: msl-external-libs-emcc emcc-simulationruntime
emcc-simulationruntime:
mkdir -p build/lib/omc/emcc/
$(MAKE) -C SimulationRuntime/c emcc

copycppheader:

0 comments on commit 04a519d

Please sign in to comment.