diff --git a/source/dub/compilers/dmd.d b/source/dub/compilers/dmd.d index e2fb472..b77bc6e 100644 --- a/source/dub/compilers/dmd.d +++ b/source/dub/compilers/dmd.d @@ -134,6 +134,11 @@ settings.lflags = null; } + version (Posix) { + if (settings.targetType == TargetType.dynamicLibrary) + settings.addDFlags("-fPIC"); + } + assert(fields & BuildSetting.dflags); assert(fields & BuildSetting.copyFiles); } @@ -167,7 +172,7 @@ break; case TargetType.dynamicLibrary: version (Windows) settings.addDFlags("-shared"); - else settings.addDFlags("-shared", "-fPIC"); + else settings.addDFlags("-shared", "-defaultlib=libphobos2.so"); break; case TargetType.object: settings.addDFlags("-c"); diff --git a/test/issue613-dynlib-pic/.gitignore b/test/issue613-dynlib-pic/.gitignore new file mode 100644 index 0000000..433d266 --- /dev/null +++ b/test/issue613-dynlib-pic/.gitignore @@ -0,0 +1,5 @@ +.dub +docs.json +__dummy.html +*.o +*.obj diff --git a/test/issue613-dynlib-pic/.no_run b/test/issue613-dynlib-pic/.no_run new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue613-dynlib-pic/.no_run diff --git a/test/issue613-dynlib-pic/.no_test b/test/issue613-dynlib-pic/.no_test new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/issue613-dynlib-pic/.no_test diff --git a/test/issue613-dynlib-pic/dub.sdl b/test/issue613-dynlib-pic/dub.sdl new file mode 100644 index 0000000..4e79125 --- /dev/null +++ b/test/issue613-dynlib-pic/dub.sdl @@ -0,0 +1,4 @@ +name "issue613-dynlib-pic" +targetType "dynamicLibrary" + +// TODO: instead of just testing build success, test if -shared, -fPIC and -defaultlib have all been specified correctly \ No newline at end of file diff --git a/test/issue613-dynlib-pic/source/app.d b/test/issue613-dynlib-pic/source/app.d new file mode 100644 index 0000000..26a3f4d --- /dev/null +++ b/test/issue613-dynlib-pic/source/app.d @@ -0,0 +1,4 @@ +void test() +{ + +} \ No newline at end of file