diff --git a/libphobos/Makefile.in b/libphobos/Makefile.in index d42248405a2..eab12688867 100644 --- a/libphobos/Makefile.in +++ b/libphobos/Makefile.in @@ -298,6 +298,8 @@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ exec_prefix = @exec_prefix@ gcc_version = @gcc_version@ gdc_include_dir = @gdc_include_dir@ @@ -327,6 +329,7 @@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ phobos_compiler_pic_flag = @phobos_compiler_pic_flag@ phobos_compiler_shared_flag = @phobos_compiler_shared_flag@ +phobos_lt_pic_flag = @phobos_lt_pic_flag@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ diff --git a/libphobos/configure b/libphobos/configure index c940a404be4..59ca64aa1e0 100755 --- a/libphobos/configure +++ b/libphobos/configure @@ -705,6 +705,9 @@ libphobos_builddir get_gcc_base_ver phobos_compiler_shared_flag phobos_compiler_pic_flag +phobos_lt_pic_flag +enable_static +enable_shared OTOOL64 OTOOL LIPO @@ -11746,7 +11749,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11749 "configure" +#line 11752 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11852,7 +11855,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11855 "configure" +#line 11858 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13997,8 +14000,14 @@ CFLAGS=$lt_save_CFLAGS GDCFLAGS=$gdc_save_DFLAGS + + # libtool variables for Phobos shared and position-independent compiles. # +# Use phobos_lt_pic_flag to designate the automake variable +# used to encapsulate the default libtool approach to creating objects +# with position-independent code. Default: -prefer-pic. +# # Use phobos_compiler_shared_flag to designate the compile-time flags for # creating shared objects. Default: -fversion=Shared. # @@ -14010,26 +14019,23 @@ CFLAGS=$lt_save_CFLAGS # libtool, and so we make it here. How it is handled is that in shared # compilations the `lt_prog_compiler_pic_D' variable is used to instead # ensure that conditional compilation of shared runtime code is compiled in. -# The original PIC flags are then used in the compilation of every object. -# -# Why are objects destined for libgphobos.a compiled with -fPIC? -# Because -fPIC is not harmful to use for objects destined for static -# libraries. In addition, using -fPIC will allow the use of static -# libgphobos.a in the creation of other D shared libraries. if test "$enable_shared" = yes; then + phobos_lt_pic_flag="-prefer-pic" phobos_compiler_pic_flag="$lt_prog_compiler_pic_D" phobos_compiler_shared_flag="-fversion=Shared" else + phobos_lt_pic_flag= phobos_compiler_pic_flag= phobos_compiler_shared_flag= fi + # Override the libtool's pic_flag and pic_mode. # Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT. # NB: this impacts --with-pic and --without-pic. -lt_prog_compiler_pic_D="$phobos_compiler_shared_flag" +lt_prog_compiler_pic_D="$phobos_compiler_pic_flag $phobos_compiler_shared_flag" pic_mode='default' # Determine what GCC version number to use in filesystem paths. diff --git a/libphobos/configure.ac b/libphobos/configure.ac index cc9af29754f..248d0ebbc19 100644 --- a/libphobos/configure.ac +++ b/libphobos/configure.ac @@ -91,9 +91,15 @@ AC_SUBST(CFLAGS_FOR_BUILD) LT_INIT(dlopen) AM_PROG_LIBTOOL WITH_LOCAL_DRUNTIME([LT_LANG([D])], []) +AC_SUBST(enable_shared) +AC_SUBST(enable_static) # libtool variables for Phobos shared and position-independent compiles. # +# Use phobos_lt_pic_flag to designate the automake variable +# used to encapsulate the default libtool approach to creating objects +# with position-independent code. Default: -prefer-pic. +# # Use phobos_compiler_shared_flag to designate the compile-time flags for # creating shared objects. Default: -fversion=Shared. # @@ -105,26 +111,23 @@ WITH_LOCAL_DRUNTIME([LT_LANG([D])], []) # libtool, and so we make it here. How it is handled is that in shared # compilations the `lt_prog_compiler_pic_D' variable is used to instead # ensure that conditional compilation of shared runtime code is compiled in. -# The original PIC flags are then used in the compilation of every object. -# -# Why are objects destined for libgphobos.a compiled with -fPIC? -# Because -fPIC is not harmful to use for objects destined for static -# libraries. In addition, using -fPIC will allow the use of static -# libgphobos.a in the creation of other D shared libraries. if test "$enable_shared" = yes; then + phobos_lt_pic_flag="-prefer-pic" phobos_compiler_pic_flag="$lt_prog_compiler_pic_D" phobos_compiler_shared_flag="-fversion=Shared" else + phobos_lt_pic_flag= phobos_compiler_pic_flag= phobos_compiler_shared_flag= fi +AC_SUBST(phobos_lt_pic_flag) AC_SUBST(phobos_compiler_pic_flag) AC_SUBST(phobos_compiler_shared_flag) # Override the libtool's pic_flag and pic_mode. # Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT. # NB: this impacts --with-pic and --without-pic. -lt_prog_compiler_pic_D="$phobos_compiler_shared_flag" +lt_prog_compiler_pic_D="$phobos_compiler_pic_flag $phobos_compiler_shared_flag" pic_mode='default' # Determine what GCC version number to use in filesystem paths. diff --git a/libphobos/libdruntime/Makefile.am b/libphobos/libdruntime/Makefile.am index 945271e028f..535ca26e860 100644 --- a/libphobos/libdruntime/Makefile.am +++ b/libphobos/libdruntime/Makefile.am @@ -23,7 +23,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) -I . # D flags for compilation AM_DFLAGS= \ - $(phobos_compiler_pic_flag) \ + $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \ $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS) # Flags for other kinds of sources diff --git a/libphobos/libdruntime/Makefile.in b/libphobos/libdruntime/Makefile.in index 06c02961c86..7960add41d8 100644 --- a/libphobos/libdruntime/Makefile.in +++ b/libphobos/libdruntime/Makefile.in @@ -659,6 +659,8 @@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ exec_prefix = @exec_prefix@ gcc_version = @gcc_version@ gdc_include_dir = @gdc_include_dir@ @@ -688,6 +690,7 @@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ phobos_compiler_pic_flag = @phobos_compiler_pic_flag@ phobos_compiler_shared_flag = @phobos_compiler_shared_flag@ +phobos_lt_pic_flag = @phobos_lt_pic_flag@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ @@ -720,7 +723,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) -I . # D flags for compilation AM_DFLAGS = \ - $(phobos_compiler_pic_flag) \ + $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \ $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS) diff --git a/libphobos/src/Makefile.am b/libphobos/src/Makefile.am index 2de8ab951b4..0dc2a2625a9 100644 --- a/libphobos/src/Makefile.am +++ b/libphobos/src/Makefile.am @@ -24,7 +24,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) \ # D flags for compilation AM_DFLAGS= \ - $(phobos_compiler_pic_flag) \ + $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \ $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS) # Flags for other kinds of sources diff --git a/libphobos/src/Makefile.in b/libphobos/src/Makefile.in index 2e721783d06..33453517153 100644 --- a/libphobos/src/Makefile.in +++ b/libphobos/src/Makefile.in @@ -414,6 +414,8 @@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ exec_prefix = @exec_prefix@ gcc_version = @gcc_version@ gdc_include_dir = @gdc_include_dir@ @@ -443,6 +445,7 @@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ phobos_compiler_pic_flag = @phobos_compiler_pic_flag@ phobos_compiler_shared_flag = @phobos_compiler_shared_flag@ +phobos_lt_pic_flag = @phobos_lt_pic_flag@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ @@ -477,7 +480,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) \ # D flags for compilation AM_DFLAGS = \ - $(phobos_compiler_pic_flag) \ + $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \ $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS) diff --git a/libphobos/testsuite/Makefile.in b/libphobos/testsuite/Makefile.in index c38a4688258..51eb4efc79d 100644 --- a/libphobos/testsuite/Makefile.in +++ b/libphobos/testsuite/Makefile.in @@ -242,6 +242,8 @@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ exec_prefix = @exec_prefix@ gcc_version = @gcc_version@ gdc_include_dir = @gdc_include_dir@ @@ -271,6 +273,7 @@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ phobos_compiler_pic_flag = @phobos_compiler_pic_flag@ phobos_compiler_shared_flag = @phobos_compiler_shared_flag@ +phobos_lt_pic_flag = @phobos_lt_pic_flag@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ diff --git a/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp b/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp index 6ca62a3ea39..2b2561346db 100644 --- a/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp +++ b/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp @@ -34,8 +34,8 @@ dg-init # Main loop. foreach test $tests { set libphobos_test_name "$subdir/[dg-trim-dirname $srcdir/../libdruntime $test]" - dg-runtest $test "-fversion=Shared -shared-libphobos" \ - "-fmain -fbuilding-libphobos-tests -fno-moduleinfo $version_flags" + dg-runtest $test "-shared-libphobos" \ + "-fmain -fbuilding-libphobos-tests $version_flags" set libphobos_test_name "" } diff --git a/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp b/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp index da313044908..3a847e71e98 100644 --- a/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp +++ b/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp @@ -45,8 +45,8 @@ dg-init # Main loop. foreach test $tests { set libphobos_test_name "$subdir/[dg-trim-dirname $srcdir/../src $test]" - dg-runtest $test "-fversion=Shared -shared-libphobos" \ - "-fmain -fbuilding-libphobos-tests -fno-moduleinfo $version_flags" + dg-runtest $test "-shared-libphobos" \ + "-fmain -fbuilding-libphobos-tests $version_flags" set libphobos_test_name "" } diff --git a/libphobos/testsuite/testsuite_flags.in b/libphobos/testsuite/testsuite_flags.in index 6a2d79f0cd2..bafd5ad4502 100755 --- a/libphobos/testsuite/testsuite_flags.in +++ b/libphobos/testsuite/testsuite_flags.in @@ -28,7 +28,8 @@ case ${query} in ;; --gdcflags) GDCFLAGS_default="-fmessage-length=0 -fno-show-column" - GDCFLAGS_config="@WARN_DFLAGS@ @GDCFLAGS@ @CET_DFLAGS@ -fno-release -funittest" + GDCFLAGS_config="@WARN_DFLAGS@ @GDCFLAGS@ @CET_DFLAGS@ + @phobos_compiler_shared_flag@ -fno-release -funittest" echo ${GDCFLAGS_default} ${GDCFLAGS_config} ;; --gdcpaths)