v2: DOCUMENTATION_ROOT_URL vs. release branches [PR114738]
This patch moves the documentation root URL infix for release branches
from get_option_url/make_doc_url to configure, such that only the default
changes and when users specify a custom documentation root URL, they don't
have to add gcc-MAJOR.MINOR.0 subdirectories for release branches.
Tested by checking
../configure --disable-bootstrap --enable-languages=c --disable-multilib
built trunk on
void
foo (int x)
{
__builtin_printf ("%ld\n", x);
}
testcase and looking for the URL in there, then repeating that after
changing gcc/BASE-VER to 14.1.0 and again after changing it to 14.1.1,
plus normal bootstrap/regtest.
2024-04-24 Jakub Jelinek <jakub@redhat.com>
PR other/114738
* opts.cc (get_option_url): Revert 2024-04-17 changes.
* gcc-urlifier.cc: Don't include diagnostic-core.h.
(gcc_urlifier::make_doc_url): Revert 2024-04-17 changes.
* configure.ac (documentation-root-url): On release branches
append gcc-MAJOR.MINOR.0/ to the default DOCUMENTATION_ROOT_URL.
* doc/install.texi (--with-documentation-root-url=): Document
the change of the default.
* configure: Regenerate.
diff --git a/gcc/configure b/gcc/configure
index 266ab8f..23da7d5 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -8232,7 +8232,13 @@
*) as_fn_error $? "documentation root URL does not end with /" "$LINENO" 5 ;;
esac
else
- DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/"
+
+ docroot_url_suffix=
+ case "$gcc_version" in
+ *.[123456].0) docroot_url_suffix="gcc-$gcc_version/";;
+ *.[123456].1) docroot_url_suffix="gcc-`echo $gcc_version | sed 's/1$/0/'`/";;
+ esac
+ DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/$docroot_url_suffix"
fi
@@ -21569,7 +21575,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21572 "configure"
+#line 21578 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21675,7 +21681,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21678 "configure"
+#line 21684 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index a5aec1b..d7cf0b9 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1088,9 +1088,16 @@
no) AC_MSG_ERROR([documentation root URL not specified]) ;;
*/) DOCUMENTATION_ROOT_URL="$withval" ;;
*) AC_MSG_ERROR([documentation root URL does not end with /]) ;;
- esac],
- DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/"
-)
+ esac],[
+ docroot_url_suffix=
+changequote(,)dnl
+ case "$gcc_version" in
+ *.[123456].0) docroot_url_suffix="gcc-$gcc_version/";;
+ *.[123456].1) docroot_url_suffix="gcc-`echo $gcc_version | sed 's/1$/0/'`/";;
+ esac
+changequote([,])dnl
+ DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/$docroot_url_suffix"
+])
AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL",
[Define to the root for documentation URLs.])
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 1c58dc3..988c373 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -764,7 +764,9 @@
Specify the URL root that contains GCC option documentation. The @var{url}
should end with a @code{/} character.
-The default value is @uref{https://gcc.gnu.org/onlinedocs/,,https://gcc.gnu.org/onlinedocs/}.
+The default value is @uref{https://gcc.gnu.org/onlinedocs/,,https://gcc.gnu.org/onlinedocs/}
+on the GCC main development trunk. On release branches, the default
+is @code{https://gcc.gnu.org/onlinedocs/gcc-@var{major}.@var{minor}.0/}.
@item --with-changes-root-url=@var{url}
Specify the URL root that contains information about changes in GCC
diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc
index ff8c3f6..be6459e 100644
--- a/gcc/gcc-urlifier.cc
+++ b/gcc/gcc-urlifier.cc
@@ -26,7 +26,6 @@
#include "gcc-urlifier.h"
#include "opts.h"
#include "options.h"
-#include "diagnostic-core.h"
#include "selftest.h"
namespace {
@@ -209,16 +208,7 @@
if (!doc_url_suffix)
return nullptr;
- char infix[32];
- /* On release branches, append to DOCUMENTATION_ROOT_URL the
- subdirectory with documentation of the latest release made
- from the branch. */
- if (BUILDING_GCC_MINOR != 0 && BUILDING_GCC_PATCHLEVEL <= 1U)
- sprintf (infix, "gcc-%u.%u.0/",
- BUILDING_GCC_MAJOR, BUILDING_GCC_MINOR);
- else
- infix[0] = '\0';
- return concat (DOCUMENTATION_ROOT_URL, infix, doc_url_suffix, nullptr);
+ return concat (DOCUMENTATION_ROOT_URL, doc_url_suffix, nullptr);
}
} // anonymous namespace
diff --git a/gcc/opts.cc b/gcc/opts.cc
index a90dc57..3333600 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3761,19 +3761,7 @@
{
label_text url_suffix = get_option_url_suffix (option_index, lang_mask);
if (url_suffix.get ())
- {
- char infix[32];
- /* On release branches, append to DOCUMENTATION_ROOT_URL the
- subdirectory with documentation of the latest release made
- from the branch. */
- if (BUILDING_GCC_MINOR != 0 && BUILDING_GCC_PATCHLEVEL <= 1U)
- sprintf (infix, "gcc-%u.%u.0/",
- BUILDING_GCC_MAJOR, BUILDING_GCC_MINOR);
- else
- infix[0] = '\0';
- return concat (DOCUMENTATION_ROOT_URL, infix, url_suffix.get (),
- nullptr);
- }
+ return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr);
}
return nullptr;