Skip to content

Commit

Permalink
- cmake should now select the correct libraries (either debug or rele…
Browse files Browse the repository at this point in the history
…ase) for the c++-runtime

- fixed fmu export for windows (c++-runtime)
- changed default cmake_build_type to debug
  • Loading branch information
Marcus Walther committed Jun 1, 2015
1 parent dbce347 commit c537d6e
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 48 deletions.
2 changes: 1 addition & 1 deletion Compiler/Template/CodegenFMUCpp.tpl
Expand Up @@ -783,7 +783,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
OMCPP_LIBS= -lOMCppSystem_static -lOMCppDataExchange_static -lOMCppOMCFactory_static -lOMCppMath_static -lOMCppModelicaUtilities_static
OMCPP_SOLVER_LIBS=-Wl,-rpath,"$(OMHOME)/lib/<%getTriple()%>/omc/cpp"
MODELICA_EXTERNAL_LIBS=-lModelicaExternalC -lModelicaStandardTables -L$(LAPACK_LIBS) $(LAPACK_LIBRARIES)
BOOST_LIBRARIES = -lboost_system -lboost_filesystem -lboost_program_options
BOOST_LIBRARIES = -l$(BOOST_SYSTEM_LIB) -l$(BOOST_FILESYSTEM_LIB) -l$(BOOST_PROGRAM_OPTIONS_LIB)
LIBS= $(OMCPP_LIBS) $(OMCPP_SOLVER_LIBS) $(MODELICA_EXTERNAL_LIBS) $(BASE_LIB) $(BOOST_LIBRARIES) $(LINUX_LIB_DL)

CPPFILES=$(CALCHELPERMAINFILE)
Expand Down
73 changes: 36 additions & 37 deletions SimulationRuntime/cpp/Core/Modelica/CMakeLists.txt
Expand Up @@ -50,63 +50,62 @@ set (MODELICA_SYSTEM_LIB_EXT ${libModelicaSystemNameExt})
#Maybe someone with more cmake-experience can write a better solution for the issue.
#mwalther

list(GET Boost_SERIALIZATION_LIBRARY -1 Boost_SERIALIZATION_LIBRARY)
string(STRIP Boost_SERIALIZATION_LIBRARY ${Boost_SERIALIZATION_LIBRARY})
list(GET Boost_FILESYSTEM_LIBRARY -1 Boost_FILESYSTEM_LIBRARY)
string(STRIP Boost_FILESYSTEM_LIBRARY ${Boost_FILESYSTEM_LIBRARY})
list(GET Boost_SERIALIZATION_LIB -1 Boost_SERIALIZATION_LIB)
string(STRIP Boost_SERIALIZATION_LIB ${Boost_SERIALIZATION_LIB})
list(GET Boost_SYSTEM_LIBRARY -1 Boost_SYSTEM_LIBRARY)
string(STRIP Boost_SYSTEM_LIBRARY ${Boost_SYSTEM_LIBRARY})

IF(Boost_THREAD_LIBRARY)
list(GET Boost_THREAD_LIBRARY -1 Boost_THREAD_LIBRARY)
string(STRIP Boost_THREAD_LIBRARY ${Boost_THREAD_LIBRARY})
ENDIF(Boost_THREAD_LIBRARY)

list(GET Boost_PROGRAM_OPTIONS_LIBRARY -1 Boost_PROGRAM_OPTIONS_LIBRARY)
string(STRIP Boost_PROGRAM_OPTIONS_LIBRARY ${Boost_PROGRAM_OPTIONS_LIBRARY})

IF(Boost_LOG_LIBRARY)
list(GET Boost_LOG_LIBRARY -1 Boost_LOG_LIBRARY)
string(STRIP Boost_LOG_LIBRARY ${Boost_LOG_LIBRARY})
ENDIF(Boost_LOG_LIBRARY)
STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)

FUNCTION(prepareBoostVar targetVar releaseVar debugVar)
IF(CMAKE_BUILD_TYPE MATCHES "RELEASE")
SET(targetVar_ ${releaseVar})
ELSE()
SET(targetVar_ ${debugVar})
ENDIF(CMAKE_BUILD_TYPE MATCHES "RELEASE")
GET_FILENAME_COMPONENT(${targetVar_} "${${targetVar_}}" NAME_WE)
STRING(REGEX REPLACE "^lib" "" ${targetVar_} ${${targetVar_}})
SET(${targetVar} ${${targetVar_}} PARENT_SCOPE)
ENDFUNCTION()

prepareBoostVar(Boost_FILESYSTEM_LIBRARY Boost_FILESYSTEM_LIBRARY_RELEASE Boost_FILESYSTEM_LIBRARY_DEBUG)
prepareBoostVar(Boost_SERIALIZATION_LIBRARY Boost_SERIALIZATION_LIBRARY_RELEASE Boost_SERIALIZATION_LIBRARY_DEBUG)
prepareBoostVar(Boost_SYSTEM_LIBRARY Boost_SYSTEM_LIBRARY_RELEASE Boost_SYSTEM_LIBRARY_DEBUG)
prepareBoostVar(Boost_THREAD_LIBRARY Boost_THREAD_LIBRARY_RELEASE Boost_THREAD_LIBRARY_DEBUG)
prepareBoostVar(Boost_PROGRAM_OPTIONS_LIBRARY Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG)
prepareBoostVar(Boost_LOG_LIBRARY Boost_LOG_LIBRARY_RELEASE Boost_LOG_LIBRARY_DEBUG)

IF(CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
set (Boost_LIBRARIES_NEW "")
set (SKIP_ENTRY FALSE)

IF((CMAKE_BUILD_TYPE MATCHES DEBUG) OR (CMAKE_BUILD_TYPE MATCHES RELWITHDEBINFO))
set (SKIP_ENTRY OFF)
IF((CMAKE_BUILD_TYPE MATCHES "DEBUG") OR (CMAKE_BUILD_TYPE MATCHES "RELWITHDEBINFO"))
foreach(f ${Boost_LIBRARIES})
IF(SKIP_ENTRY MATCHES FALSE)
IF(NOT SKIP_ENTRY)
IF(${f} MATCHES "optimized")
SET(${SKIP_ENTRY} TRUE)
SET(SKIP_ENTRY ON)
ELSEIF(${f} MATCHES "debug")

ELSE(${f} MATCHES "optimized")
LIST(APPEND Boost_LIBRARIES_NEW ${f})
ENDIF(${f} MATCHES "optimized")
ELSE(SKIP_ENTRY MATCHES FALSE)
SET(${SKIP_ENTRY} FALSE)
ENDIF(SKIP_ENTRY MATCHES FALSE)
ELSE(NOT SKIP_ENTRY)
IF(${f} MATCHES "debug")
SET(SKIP_ENTRY OFF)
ENDIF(${f} MATCHES "debug")
ENDIF(NOT SKIP_ENTRY)
endforeach(f ${Boost_LIBRARIES})
ELSE()
foreach(f ${Boost_LIBRARIES})
IF(SKIP_ENTRY MATCHES FALSE)
IF(NOT SKIP_ENTRY)
IF(${f} MATCHES "debug")
SET(${SKIP_ENTRY} TRUE)
SET(SKIP_ENTRY ON)
ELSEIF(${f} MATCHES "optimized")

ELSE(${f} MATCHES "optimized")
ELSE(${f} MATCHES "debug")
LIST(APPEND Boost_LIBRARIES_NEW ${f})
ENDIF(${f} MATCHES "debug")
ELSE(SKIP_ENTRY MATCHES FALSE)
SET(${SKIP_ENTRY} FALSE)
ENDIF(SKIP_ENTRY MATCHES FALSE)
ELSE(NOT SKIP_ENTRY)
IF(${f} MATCHES "optimized")
SET(SKIP_ENTRY OFF)
ENDIF(${f} MATCHES "optimized")
ENDIF(NOT SKIP_ENTRY)
endforeach(f ${Boost_LIBRARIES})
ENDIF()

SET(Boost_LIBRARIES ${Boost_LIBRARIES_NEW})
ENDIF(CMAKE_BUILD_TYPE)

Expand Down
4 changes: 4 additions & 0 deletions SimulationRuntime/cpp/Core/Modelica/ModelicaConfig_gcc.inc.in
Expand Up @@ -2,6 +2,10 @@ BOOST_LIBS=@Boost_LIBS_@
BOOST_INCLUDE=@Boost_INCLUDE_@
BOOST_LIBRARIES=@Boost_LIBRARIES_@

BOOST_SYSTEM_LIB=@Boost_SYSTEM_LIBRARY@
BOOST_FILESYSTEM_LIB=@Boost_FILESYSTEM_LIBRARY@
BOOST_PROGRAM_OPTIONS_LIB=@Boost_PROGRAM_OPTIONS_LIBRARY@

SUNDIALS_LIBS=@SUNDIALS_LIBS_@
SUNDIALS_INCLUDE=@SUNDIALS_INCLUDE_DIR_@
SUNDIALS_LIBRARIES=@SUNDIALS_LIBRARIES_@
Expand Down
Expand Up @@ -2,6 +2,10 @@ BOOST_LIBS = @Boost_LIBS_@
BOOST_INCLUDE = @Boost_INCLUDE_@
BOOST_LIBRARIES = @Boost_LIBRARIES_@

BOOST_SYSTEM_LIB = @Boost_SYSTEM_LIBRARY@
BOOST_FILESYSTEM_LIB = @Boost_FILESYSTEM_LIBRARY@
BOOST_PROGRAM_OPTIONS_LIB = @Boost_PROGRAM_OPTIONS_LIBRARY@

SUNDIALS_LIBS=@SUNDIALS_LIBS_@
SUNDIALS_INCLUDE= @SUNDIALS_INCLUDE_DIR_@
SUNDIALS_LIBRARIES = @SUNDIALS_LIBRARIES_@
Expand Down
20 changes: 10 additions & 10 deletions SimulationRuntime/cpp/Makefile.omdev.mingw
Expand Up @@ -9,24 +9,24 @@ builddir_lib=$(OMBUILDDIR)/lib/omc
builddir_inc=$(OMBUILDDIR)/include/omc

#use this call to use precompiled headers
#BUILDTPYE = Release
#BUILDTYPE = Release
#use this call if you want to debug the cpp runtime
BUILDTPYE = Debug
BUILDTYPE = Debug

CMAKE = $(OMDEV)/bin/cmake/bin/cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON

runtimeCpp: clean
ifeq ("$(RUNTIME_STATIC_LINKING)","true")
cd ./Build; echo "change to Build"; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=RelWithDebInfo -DRUNTIME_STATIC_LINKING=ON -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=$(BUILDTYPE) -DRUNTIME_STATIC_LINKING=ON -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
make;
else ifeq ("$(BUILD_DOCUMENTATION)","true")
cd ./Build; echo "change to Build"; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_DOCUMENTATION=ON -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=$(BUILDTYPE) -DBUILD_DOCUMENTATION=ON -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
make;
else
cd ./Build; echo "change to Build"; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
$(CMAKE) -G "MSYS Makefiles" -D CMAKE_BUILD_TYPE=$(BUILDTYPE) -D CMAKE_INSTALL_PREFIX:PATH="$(OMBUILDDIR)" MAKE_CXX_COMPILER=g++ ../; \
make;
endif

Expand All @@ -37,12 +37,12 @@ runtimeCPPmsvc: clean
rm -rf build_msvc
mkdir -p build_msvc
echo call '"%VS100COMNTOOLS%\\..\\..\\VC\\vcvarsall.bat"' > build_msvc/build.bat
#echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "Visual Studio 10"' >> build_msvc/build.bat
ifeq ($(BUILDTPYE),Debug)
#echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=$(BUILDTYPE) -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "Visual Studio 10"' >> build_msvc/build.bat
ifeq ($(BUILDTYPE),Debug)
echo echo Running CMake from '%OMDEV%\\bin\\cmake\\bin\\cmake' >> build_msvc/build.bat
echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "NMake Makefiles"' >> build_msvc/build.bat
echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=$(BUILDTYPE) -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "NMake Makefiles"' >> build_msvc/build.bat
else
echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "NMake Makefiles"' >> build_msvc/build.bat
echo '%OMDEV%\\bin\\cmake\\bin\\cmake -DCMAKE_VERBOSE_MAKEFILE:Bool=ON -DCMAKE_BUILD_TYPE=$(BUILDTYPE) -DCMAKE_INSTALL_PREFIX=./tmp ../ -G "NMake Makefiles"' >> build_msvc/build.bat
endif
# for some reason, the environment variable 'MAKEFLAGS' was set to 'w' on my and Niklas' machine?!
echo set MAKEFLAGS="" >> build_msvc/build.bat
Expand All @@ -58,7 +58,7 @@ endif


# copy pdb files
ifneq ($(BUILDTPYE),Release)
ifneq ($(BUILDTYPE),Release)
cp -u build_msvc/Solver/Newton/*.pdb build_msvc/tmp/lib/omc/cpp/msvc
cp -u build_msvc/Solver/Euler/*.pdb build_msvc/tmp/lib/omc/cpp/msvc
cp -u build_msvc/Core/SimController/*.pdb build_msvc/tmp/lib/omc/cpp/msvc
Expand Down

0 comments on commit c537d6e

Please sign in to comment.