]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libphobos: Build all modules with -fversion=Shared when configured with --enable...
authorIain Buclaw <ibuclaw@gdcproject.org>
Fri, 26 Mar 2021 14:46:24 +0000 (15:46 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Fri, 26 Mar 2021 15:14:32 +0000 (16:14 +0100)
The libgdruntime_convenience library was built with `-fversion=Shared',
but the libphobos part wasn't when creating the static library.

As there are no issues compiling in Shared code into the static library,
to avoid mismatches the flag is now always present when --enable-shared
is turned on.  Libtool's compiler PIC D flag is now the combination of
compiler PIC and D Shared flags, and AM_DFLAGS passes `-prefer-pic' to
libtool unless --enable-shared is turned off.

libphobos/ChangeLog:

* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Substitute enable_shared, enable_static, and
phobos_lt_pic_flag.
* libdruntime/Makefile.am (AM_DFLAGS): Replace
  phobos_compiler_pic_flag with phobos_lt_pic_flags, and
  phobos_compiler_shared_flag.
* libdruntime/Makefile.in: Regenerate.
* src/Makefile.am (AM_DFLAGS): Replace phobos_compiler_pic_flag
  with phobos_lt_pic_flag, and phobos_compiler_shared_flag.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
* testsuite/libphobos.druntime_shared/druntime_shared.exp: Remove
-fversion=Shared and -fno-moduleinfo from default extra test flags.
* testsuite/libphobos.phobos_shared/phobos_shared.exp: Likewise.
* testsuite/testsuite_flags.in: Add phobos_compiler_shared_flag to
--gdcflags.

libphobos/Makefile.in
libphobos/configure
libphobos/configure.ac
libphobos/libdruntime/Makefile.am
libphobos/libdruntime/Makefile.in
libphobos/src/Makefile.am
libphobos/src/Makefile.in
libphobos/testsuite/Makefile.in
libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
libphobos/testsuite/testsuite_flags.in

index d42248405a238427d46265bf8f24b449d98ecaa0..eab1268886705f35e75541ab8d6b4546d7e09ee7 100644 (file)
@@ -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@
index c940a404be4d250c9a077368aa49b6fb4dcbefb9..59ca64aa1e022d72b9f6f6821cca570da47306e4 100755 (executable)
@@ -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.
index cc9af29754f5ca4f4a3c6a45fe764f98aff51f6e..248d0ebbc19f9f5bc47d7ef6e176ebf38eef0203 100644 (file)
@@ -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.
index 945271e028f9db8b1fd442329126547ea5a8eaa2..535ca26e860466078f845c7596cafff6b178e643 100644 (file)
@@ -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
index 06c02961c866d80f9f6f3382bff81196ca563ede..7960add41d88816f86c42106d6a0f80e8da8255e 100644 (file)
@@ -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)
 
 
index 2de8ab951b4cbe045e8c3c7f82db72921840b80a..0dc2a2625a92f0dbca48f547c22d45bb787522f3 100644 (file)
@@ -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
index 2e721783d068170be5aa87f793c941267671d0dc..33453517153473825c984496af9c33416f2dbb37 100644 (file)
@@ -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)
 
 
index c38a4688258f3ff110d21ca08129bfe6a4550ee2..51eb4efc79d8cda50139e0d833ca66dc09fc29da 100644 (file)
@@ -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@
index 6ca62a3ea3932580e019dbf37ebbf0b16a7f07f9..2b2561346dbf4a1b5df0f8a8218afa235b2dc657 100644 (file)
@@ -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 ""
 }
 
index da31304490806ed8710a8fc726961da10a5bcbba..3a847e71e9878e1fe3102a6729c1b0f3107a14c9 100644 (file)
@@ -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 ""
 }
 
index 6a2d79f0cd288238939e615bbe6a024e54a24467..bafd5ad4502f4bd810981ea2c33fc7045cb6c153 100755 (executable)
@@ -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)