Skip to content

Commit

Permalink
fix for ticket #2548. Added case for msvc for external library direct…
Browse files Browse the repository at this point in the history
…ory linker path

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@18822 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
niklwors committed Jan 28, 2014
1 parent d7c0e9c commit 3a339ce
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 9 deletions.
27 changes: 18 additions & 9 deletions Compiler/BackEnd/SimCodeUtil.mo
Expand Up @@ -9581,7 +9581,7 @@ protected function generateExtFunctionLibraryDirectoryFlags
algorithm
outLibs := matchcontinue (program, path, inMod, inLibs)
local
String str, str1, str2, str3, platform1, platform2;
String str, str1, str2, str3, platform1, platform2,target;
list<String> libs;
Boolean isLinux;
case (_, _, _, {}) then {};
Expand All @@ -9593,10 +9593,11 @@ algorithm
platform1 = System.openModelicaPlatform();
platform2 = System.modelicaPlatform();
isLinux = stringEq("linux",System.os());
target = Flags.getConfigString(Flags.TARGET);
// please, take care about ordering these libraries, the most specific should go first (in reverse here)
libs = generateExtFunctionLibraryDirectoryFlags2(true, str, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform2,""), str +& "/" +& platform2, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform1,""), str +& "/" +& platform1, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(true, str, isLinux, libs,target);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform2,""), str +& "/" +& platform2, isLinux, libs,target);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform1,""), str +& "/" +& platform1, isLinux, libs,target);
then libs;
case (_, _, _, libs)
equation
Expand All @@ -9605,10 +9606,11 @@ algorithm
platform1 = System.openModelicaPlatform();
platform2 = System.modelicaPlatform();
isLinux = stringEq("linux",System.os());
target = Flags.getConfigString(Flags.TARGET);
// please, take care about ordering these libraries, the most specific should go first (in reverse here)
libs = generateExtFunctionLibraryDirectoryFlags2(true, str, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform2,""), str +& "/" +& platform2, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform1,""), str +& "/" +& platform1, isLinux, libs);
libs = generateExtFunctionLibraryDirectoryFlags2(true, str, isLinux, libs,target);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform2,""), str +& "/" +& platform2, isLinux, libs,target);
libs = generateExtFunctionLibraryDirectoryFlags2(not stringEq(platform1,""), str +& "/" +& platform1, isLinux, libs,target);
then libs;
else inLibs;
end matchcontinue;
Expand All @@ -9619,12 +9621,19 @@ protected function generateExtFunctionLibraryDirectoryFlags2
input String dir;
input Boolean isLinux;
input list<String> inLibs;
input String target;
output list<String> libs;
algorithm
libs := match (add,dir,isLinux,inLibs)
libs := match (add,dir,isLinux,inLibs,target)
local
Boolean b;
case (true,_,_,libs)
case (true,_,_,libs,"msvc")
equation
b = System.directoryExists(dir);
libs = List.consOnTrue(b, "/LIBPATH:\"" +& dir +& "\"", libs);
libs = List.consOnTrue(b and isLinux, "-Wl,-rpath=\"" +& dir +& "\"", libs);
then libs;
case (true,_,_,libs,_)
equation
b = System.directoryExists(dir);
libs = List.consOnTrue(b, "\"-L" +& dir +& "\"", libs);
Expand Down
2 changes: 2 additions & 0 deletions Compiler/Template/CodegenCpp.tpl
Expand Up @@ -411,6 +411,8 @@ MAINFILE = OMCpp<%fileNamePrefix%>Main.cpp
MAINOBJ=OMCpp<%fileNamePrefix%>$(EXEEXT)
SYSTEMOBJ=OMCpp<%fileNamePrefix%>$(DLLEXT)



CPPFILES=$(SYSTEMFILE) $(FUNCTIONFILE) <%algloopcppfilenames(listAppend(allEquations,initialEquations),simCode)%>
OFILES=$(CPPFILES:.cpp=.o)

Expand Down

0 comments on commit 3a339ce

Please sign in to comment.