Hi! On Thu, Apr 30, 2020 at 08:42:39AM +0200, Richard Biener wrote: > , CHANGES_URL ("gcc-10/changes.html#empty_base"); > > where the macro would just use preprocessor string concatenation?
Ok, the following patch implements it (doesn't introduce a separate macro and just uses CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"), in addition adds the documentation Joseph requested. Tested on x86_64-linux and with crosses to s390x-linux and powerpc64le-linux, ok for trunk? 2020-04-30 Jakub Jelinek <ja...@redhat.com> * configure.ac (--with-documentation-root-url, --with-changes-root-url): Diagnose URL not ending with /, use AC_DEFINE_UNQUOTED instead of AC_SUBST. * opts.h (get_changes_url): Remove. * opts.c (get_changes_url): Remove. * Makefile.in (CFLAGS-opts.o): Don't add -DDOCUMENTATION_ROOT_URL or -DCHANGES_ROOT_URL. * doc/install.texi (--with-documentation-root-url, --with-changes-root-url): Document. * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Don't call get_changes_url and free, change url variable type to const char * and set it to CHANGES_ROOT_URL "gcc-10/changes.html#empty_base". * config/s390/s390.c (s390_function_arg_vector, s390_function_arg_float): Likewise. * config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate): Likewise. * config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate): Likewise. * config.in: Regenerate. * configure: Regenerate. --- gcc/configure.ac.jj 2020-04-29 22:41:05.086585150 +0200 +++ gcc/configure.ac 2020-04-30 09:35:29.800894085 +0200 @@ -979,12 +979,13 @@ AC_ARG_WITH(documentation-root-url, [case "$withval" in yes) AC_MSG_ERROR([documentation root URL not specified]) ;; no) AC_MSG_ERROR([documentation root URL not specified]) ;; - *) DOCUMENTATION_ROOT_URL="$withval" - ;; + */) DOCUMENTATION_ROOT_URL="$withval" ;; + *) AC_MSG_ERROR([documentation root URL does not end with /]) ;; esac], DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/" ) -AC_SUBST(DOCUMENTATION_ROOT_URL) +AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL", + [Define to the root for documentation URLs.]) # Allow overriding the default URL for GCC changes AC_ARG_WITH(changes-root-url, @@ -993,12 +994,13 @@ AC_ARG_WITH(changes-root-url, [case "$withval" in yes) AC_MSG_ERROR([changes root URL not specified]) ;; no) AC_MSG_ERROR([changes root URL not specified]) ;; - *) CHANGES_ROOT_URL="$withval" - ;; + */) CHANGES_ROOT_URL="$withval" ;; + *) AC_MSG_ERROR([changes root URL does not end with /]) ;; esac], CHANGES_ROOT_URL="https://gcc.gnu.org/" ) -AC_SUBST(CHANGES_ROOT_URL) +AC_DEFINE_UNQUOTED(CHANGES_ROOT_URL,"$CHANGES_ROOT_URL", + [Define to the root for URLs about GCC changes.]) # Sanity check enable_languages in case someone does not run the toplevel # configure # script. --- gcc/opts.h.jj 2020-04-29 22:41:05.089585106 +0200 +++ gcc/opts.h 2020-04-30 09:38:20.110367236 +0200 @@ -464,7 +464,6 @@ extern void parse_options_from_collect_g int *); extern void prepend_xassembler_to_collect_as_options (const char *, obstack *); -extern char *get_changes_url (const char *); /* Set OPTION in OPTS to VALUE if the option is not set in OPTS_SET. */ --- gcc/opts.c.jj 2020-04-29 22:41:05.090585091 +0200 +++ gcc/opts.c 2020-04-30 09:37:17.039303011 +0200 @@ -3190,16 +3190,6 @@ get_option_url (diagnostic_context *, in return NULL; } -/* Given "gcc-10/changes.html#foobar", return that URL under - CHANGES_ROOT_URL (see --with-changes-root-url). - The caller is responsible for freeing the returned string. */ - -char * -get_changes_url (const char *str) -{ - return concat (CHANGES_ROOT_URL, str, NULL); -} - #if CHECKING_P namespace selftest { --- gcc/Makefile.in.jj 2020-04-29 22:41:05.088585120 +0200 +++ gcc/Makefile.in 2020-04-30 09:36:14.201235329 +0200 @@ -2186,9 +2186,6 @@ lto-wrapper$(exeext): $(LTO_WRAPPER_OBJS $(LTO_WRAPPER_OBJS) libcommon-target.a $(LIBS) mv -f T$@ $@ -CFLAGS-opts.o += -DDOCUMENTATION_ROOT_URL=\"@DOCUMENTATION_ROOT_URL@\" -CFLAGS-opts.o += -DCHANGES_ROOT_URL=\"@CHANGES_ROOT_URL@\" - # Files used by all variants of C or by the stand-alone pre-processor. CFLAGS-c-family/c-opts.o += @TARGET_SYSTEM_ROOT_DEFINE@ --- gcc/doc/install.texi.jj 2020-04-23 14:42:07.614123663 +0200 +++ gcc/doc/install.texi 2020-04-30 10:13:09.500365247 +0200 @@ -684,6 +684,19 @@ if you determine that they are not bugs The default value refers to the FSF's GCC bug tracker. +@item --with-documentation-root-url=@var{url} +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/}. + +@item --with-changes-root-url=@var{url} +Specify the URL root that contains information about changes in GCC +releases like @code{gcc-@var{version}/changes.html}. +The @var{url} should end with a @code{/} character. + +The default value is @uref{https://gcc.gnu.org/,,https://gcc.gnu.org/}. + @end table @heading Target specification --- gcc/config/arm/arm.c.jj 2020-04-29 22:41:05.096585003 +0200 +++ gcc/config/arm/arm.c 2020-04-30 09:39:24.493412004 +0200 @@ -6416,7 +6416,8 @@ aapcs_vfp_is_call_or_return_candidate (e && ((alt = aapcs_vfp_sub_candidate (type, &new_mode, NULL)) != ag_count)) { - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); + const char *url + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; gcc_assert (alt == -1); last_reported_type_uid = uid; /* Use TYPE_MAIN_VARIANT to strip any redundant const @@ -6431,7 +6432,6 @@ aapcs_vfp_is_call_or_return_candidate (e "type %qT when C++17 is enabled changed to match " "C++14 %{in GCC 10.1%}", TYPE_MAIN_VARIANT (type), url); - free (url); } *count = ag_count; } --- gcc/config/s390/s390.c.jj 2020-04-29 22:41:05.101584929 +0200 +++ gcc/config/s390/s390.c 2020-04-30 09:41:23.234650255 +0200 @@ -11960,7 +11960,7 @@ s390_function_arg_vector (machine_mode m unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (orig_type)); if (uid != last_reported_type_uid) { - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); + const char *url = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; last_reported_type_uid = uid; if (empty_base_seen & 1) inform (input_location, @@ -11972,7 +11972,6 @@ s390_function_arg_vector (machine_mode m "parameter passing for argument of type %qT with " "%<[[no_unique_address]]%> members changed " "%{in GCC 10.1%}", orig_type, url); - free (url); } } return true; @@ -12038,7 +12037,7 @@ s390_function_arg_float (machine_mode mo unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (orig_type)); if (uid != last_reported_type_uid) { - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); + const char *url = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; last_reported_type_uid = uid; if (empty_base_seen & 1) inform (input_location, @@ -12050,7 +12049,6 @@ s390_function_arg_float (machine_mode mo "parameter passing for argument of type %qT with " "%<[[no_unique_address]]%> members changed " "%{in GCC 10.1%}", orig_type, url); - free (url); } } --- gcc/config/aarch64/aarch64.c.jj 2020-04-29 22:41:05.098584973 +0200 +++ gcc/config/aarch64/aarch64.c 2020-04-30 09:40:07.694771031 +0200 @@ -16883,7 +16883,8 @@ aarch64_vfp_is_call_or_return_candidate && ((alt = aapcs_vfp_sub_candidate (type, &new_mode, NULL)) != ag_count)) { - char *url = get_changes_url ("gcc-10/changes.html#empty_base"); + const char *url + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; gcc_assert (alt == -1); last_reported_type_uid = uid; /* Use TYPE_MAIN_VARIANT to strip any redundant const @@ -16898,7 +16899,6 @@ aarch64_vfp_is_call_or_return_candidate "type %qT when C++17 is enabled changed to match " "C++14 %{in GCC 10.1%}", TYPE_MAIN_VARIANT (type), url); - free (url); } if (is_ha != NULL) *is_ha = true; --- gcc/config/rs6000/rs6000-call.c.jj 2020-04-29 22:41:05.099584959 +0200 +++ gcc/config/rs6000/rs6000-call.c 2020-04-30 09:40:46.140200621 +0200 @@ -5748,8 +5748,8 @@ rs6000_discover_homogeneous_aggregate (m unsigned uid = TYPE_UID (TYPE_MAIN_VARIANT (type)); if (uid != last_reported_type_uid) { - char *url - = get_changes_url ("gcc-10/changes.html#empty_base"); + const char *url + = CHANGES_ROOT_URL "gcc-10/changes.html#empty_base"; if (empty_base_seen & 1) inform (input_location, "parameter passing for argument of type %qT " @@ -5761,7 +5761,6 @@ rs6000_discover_homogeneous_aggregate (m "with %<[[no_unique_address]]%> members " "changed %{in GCC 10.1%}", type, url); last_reported_type_uid = uid; - free (url); } } return true; --- gcc/config.in.jj 2020-02-15 12:51:17.422090432 +0100 +++ gcc/config.in 2020-04-30 09:35:40.289738417 +0200 @@ -24,6 +24,12 @@ #endif +/* Define to the root for URLs about GCC changes. */ +#ifndef USED_FOR_TARGET +#undef CHANGES_ROOT_URL +#endif + + /* Define as the number of bits in a byte, if `limits.h' doesn't. */ #ifndef USED_FOR_TARGET #undef CHAR_BIT @@ -82,6 +88,12 @@ #endif +/* Define to the root for documentation URLs. */ +#ifndef USED_FOR_TARGET +#undef DOCUMENTATION_ROOT_URL +#endif + + /* Define 0/1 if static analyzer feature is enabled. */ #ifndef USED_FOR_TARGET #undef ENABLE_ANALYZER --- gcc/configure.jj 2020-04-29 22:41:05.539578490 +0200 +++ gcc/configure 2020-04-30 09:35:37.772775809 +0200 @@ -819,8 +819,6 @@ accel_dir_suffix real_target_noncanonical enable_as_accelerator gnat_install_lib -CHANGES_ROOT_URL -DOCUMENTATION_ROOT_URL REPORT_BUGS_TEXI REPORT_BUGS_TO PKGVERSION @@ -7851,8 +7849,8 @@ if test "${with_documentation_root_url+s withval=$with_documentation_root_url; case "$withval" in yes) as_fn_error $? "documentation root URL not specified" "$LINENO" 5 ;; no) as_fn_error $? "documentation root URL not specified" "$LINENO" 5 ;; - *) DOCUMENTATION_ROOT_URL="$withval" - ;; + */) DOCUMENTATION_ROOT_URL="$withval" ;; + *) as_fn_error $? "documentation root URL does not end with /" "$LINENO" 5 ;; esac else DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/" @@ -7860,6 +7858,10 @@ else fi +cat >>confdefs.h <<_ACEOF +#define DOCUMENTATION_ROOT_URL "$DOCUMENTATION_ROOT_URL" +_ACEOF + # Allow overriding the default URL for GCC changes @@ -7868,8 +7870,8 @@ if test "${with_changes_root_url+set}" = withval=$with_changes_root_url; case "$withval" in yes) as_fn_error $? "changes root URL not specified" "$LINENO" 5 ;; no) as_fn_error $? "changes root URL not specified" "$LINENO" 5 ;; - *) CHANGES_ROOT_URL="$withval" - ;; + */) CHANGES_ROOT_URL="$withval" ;; + *) as_fn_error $? "changes root URL does not end with /" "$LINENO" 5 ;; esac else CHANGES_ROOT_URL="https://gcc.gnu.org/" @@ -7877,6 +7879,10 @@ else fi +cat >>confdefs.h <<_ACEOF +#define CHANGES_ROOT_URL "$CHANGES_ROOT_URL" +_ACEOF + # Sanity check enable_languages in case someone does not run the toplevel # configure # script. @@ -19009,7 +19015,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19012 "configure" +#line 19018 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -19115,7 +19121,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19118 "configure" +#line 19124 "configure" #include "confdefs.h" #if HAVE_DLFCN_H Jakub