diff options
Diffstat (limited to 'make')
| -rw-r--r-- | make/configure.in | 435 | ||||
| -rwxr-xr-x | make/cross_check_erl | 2 | ||||
| -rwxr-xr-x | make/emd2exml.in | 89 | ||||
| -rwxr-xr-x | make/fixup_development_runtime_dependencies | 111 | ||||
| -rw-r--r-- | make/lazy_configure.mk | 82 | ||||
| -rwxr-xr-x | make/make_emakefile.in | 2 | ||||
| -rw-r--r-- | make/otp.mk.in | 78 | ||||
| -rw-r--r-- | make/otp_ded.mk.in | 25 | ||||
| -rw-r--r-- | make/otp_patch_solve_forward_merge_version | 1 | ||||
| -rw-r--r-- | make/otp_release_targets.mk | 79 | ||||
| -rw-r--r-- | make/otp_version_tickets | 13 | ||||
| -rw-r--r-- | make/otp_version_tickets_in_merge | 9 | ||||
| -rw-r--r-- | make/output.mk.in | 4 |
13 files changed, 742 insertions, 188 deletions
diff --git a/make/configure.in b/make/configure.in new file mode 100644 index 0000000000..c4b89c4f45 --- /dev/null +++ b/make/configure.in @@ -0,0 +1,435 @@ +dnl Process this file with autoconf to produce a configure script. + +dnl %CopyrightBegin% +dnl +dnl Copyright Ericsson AB 1998-2019. All Rights Reserved. +dnl +dnl Licensed under the Apache License, Version 2.0 (the "License"); +dnl you may not use this file except in compliance with the License. +dnl You may obtain a copy of the License at +dnl +dnl http://www.apache.org/licenses/LICENSE-2.0 +dnl +dnl Unless required by applicable law or agreed to in writing, software +dnl distributed under the License is distributed on an "AS IS" BASIS, +dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +dnl See the License for the specific language governing permissions and +dnl limitations under the License. +dnl +dnl %CopyrightEnd% + +AC_PREREQ(2.8)dnl + +AC_INIT() + +LM_PRECIOUS_VARS + +default_cache_file=./config.cache + +if test "x$no_recursion" != "xyes" -a "x$OVERRIDE_CONFIG_CACHE" = "x"; then + # The no_recursion variable is not documented, but the only + # action we take on it is disabling caching which is safe! + if test "x$cache_file" != "x$default_cache_file"; then + echo "Ignoring the --cache-file argument since it can cause the system to be erroneously configured" + fi + echo "Disabling caching" + if test -f $cache_file; then + echo "Removing cache file $cache_file" + rm -f $cache_file + fi + cache_file=/dev/null +fi + +case "X$ERL_TOP" in + X) + ;; + X/*) + test -f "$ERL_TOP/erts/emulator/beam/beam_emu.c" || { + AC_MSG_ERROR([Invalid \$ERL_TOP]) + } + srcdir="$ERL_TOP";; + *) + AC_MSG_ERROR([\$ERL_TOP needs to be absolute]);; +esac + +dnl How to set srcdir absolute is taken from the GNU Emacs distribution +#### Make srcdir absolute, if it isn't already. It's important to +#### avoid running the path through pwd unnecessary, since pwd can +#### give you automounter prefixes, which can go away. +case "${srcdir}" in + /* ) ;; + . ) + ## We may be able to use the $PWD environment variable to make this + ## absolute. But sometimes PWD is inaccurate. + ## Make sure CDPATH doesn't affect cd (in case PWD is relative). + CDPATH= + if test "${PWD}" != "" && test "`(cd ${PWD} ; sh -c pwd)`" = "`pwd`" ; + then + srcdir="$PWD" + else + srcdir="`(cd ${srcdir}; pwd)`" + fi + ;; + * ) srcdir="`(cd ${srcdir}; pwd)`" ;; +esac + +# +# Now srcdir is absolute and also the top of Erlang distribution, ERL_TOP. +# +test "X$ERL_TOP" != "X" || ERL_TOP="$srcdir" +AC_SUBST(ERL_TOP) + +dnl +dnl Aux programs are found in erts/autoconf +dnl +AC_CONFIG_AUX_DIR(${srcdir}/erts/autoconf) + +dnl +dnl Figure out what we are running on. And in violation of autoconf +dnl style assume that $host is also what we are building for. I would +dnl like to get cross compiling working, since we actually have +dnl systems we cross compile for! +dnl + +if test "X$host" != "Xfree_source" -a "X$host" != "Xwin32"; then + AC_CANONICAL_HOST +else + host_os=$host +fi + +TARGET=$host +AC_SUBST(TARGET) + +if test "$cross_compiling" = "yes"; then + CROSS_COMPILING=yes +else + CROSS_COMPILING=no +fi +AC_SUBST(CROSS_COMPILING) + +AC_ARG_ENABLE(bootstrap-only, +AS_HELP_STRING([--enable-bootstrap-only], + [enable bootstrap only configuration]), +[ if test "X$enableval" = "Xyes"; then + BOOTSTRAP_ONLY=yes + else + BOOTSTRAP_ONLY=no + fi +], +BOOTSTRAP_ONLY=no) + +AC_SUBST(BOOTSTRAP_ONLY) + +if test $CROSS_COMPILING = yes -a $BOOTSTRAP_ONLY = yes; then + AC_MSG_ERROR([Cannot both cross compile and build a bootstrap system]) +fi + +dnl Checks for programs. + +AC_PROG_CC +AC_PROG_CXX +AC_CHECK_TOOL(LD, [ld]) + +LM_WINDOWS_ENVIRONMENT + +_search_path=/bin:/usr/bin:/usr/local/bin:$PATH + +AC_PATH_PROG(ENV, [env], false, $_search_path) +if test "$ac_cv_path_ENV" = false; then + AC_MSG_ERROR([No 'env' command found]) +fi + +# +# We need GNU make, complain if we can't find it +# +AC_MSG_CHECKING(for GNU make) +# If there is a Makefile created we don't want make to start making, run +# in a subdirectory and -f /dev/null +MAKE_PROG=x +if test X"$CLEARCASE_MAKE_COMPAT" = X"gnu" -a X"$CLEARCASE_ROOT" != X"" ; then + eval clearmake -version 2>&1 | grep clearmake > /dev/null 2>&1 + case $? in + 0) MAKE_PROG="clearmake -V";; + *);; + esac +fi +if test X"$MAKE_PROG" = X"x"; then + mkdir conftestmake + if test -d conftestmake; then + cd conftestmake + for m in make gmake ggmake; do + eval $m --version -f /dev/null 2>&1 | grep GNU > /dev/null 2>&1 + case $? in + 0) MAKE_PROG=$m ; break ;; + *) ;; + esac + done + cd .. + else + AC_MSG_ERROR(could not create subdirectory) + fi +fi +rm -rf conftestmake +case $MAKE_PROG in + x) AC_MSG_RESULT(no) + AC_MSG_ERROR(GNU make is required!) + ;; + *) AC_MSG_RESULT(yes ($MAKE_PROG)) + AC_SUBST(MAKE_PROG) + ;; +esac + +AC_PROG_INSTALL +if test X"${INSTALL}" = "X${ac_aux_dir}/install-sh -c" && test -f /usr/ucb/install ; then + case $host_os in + osf*) ;; + *) INSTALL="/usr/ucb/install -c" ;; + esac +fi + +AC_PROG_LN_S +AC_PROG_RANLIB +LM_PROG_PERL5 +if test "$ac_cv_path_PERL" = false; then + AC_MSG_ERROR([Perl version 5 is required!]) +fi + +# +# Get erts version from erts/vsn.mk +# +AC_MSG_CHECKING([ERTS version]) +[ERTS_VSN=`sed -n "s/^VSN[ ]*=[ ]*\(.*\)/\1/p" < $ERL_TOP/erts/vsn.mk`] +AC_MSG_RESULT([$ERTS_VSN]) +AC_SUBST(ERTS_VSN) + +# +# Get OTP release and OTP version from $ERL_TOP/OTP_VERSION +# +AC_MSG_CHECKING([OTP release]) +[OTP_REL=`cat $ERL_TOP/OTP_VERSION | sed "s|\([0-9]*\).*|\1|"`] +AC_MSG_RESULT([$OTP_REL]) +AC_SUBST(OTP_REL) + +AC_MSG_CHECKING([OTP version]) +[OTP_VSN=`cat $ERL_TOP/OTP_VERSION`] +AC_MSG_RESULT([$OTP_VSN]) +AC_SUBST(OTP_VSN) + +AC_ARG_ENABLE(parallel-configure, +AS_HELP_STRING([--disable-parallel-configure], [disable parallel execution of configure scripts])) + +AC_ARG_ENABLE(dirty-schedulers, +AS_HELP_STRING([--enable-dirty-schedulers], [enable dirty scheduler support])) + +AC_ARG_ENABLE(plain-emulator, +AS_HELP_STRING([--enable-plain-emulator], [enable threaded non-smp emulator]) +AS_HELP_STRING([--disable-plain-emulator], [disable threaded non-smp emulator])) + +AC_ARG_WITH(termcap, +AS_HELP_STRING([--with-termcap], [use termcap (default)]) +AS_HELP_STRING([--without-termcap], + [do not use any termcap libraries (ncurses,curses,termcap,termlib)])) + +AC_ARG_ENABLE(kernel-poll, +AS_HELP_STRING([--enable-kernel-poll], [enable kernel poll support]) +AS_HELP_STRING([--disable-kernel-poll], [disable kernel poll support])) + +AC_ARG_ENABLE(sctp, +AS_HELP_STRING([--enable-sctp], [enable sctp support (default) +to on demand load the SCTP library in runtime]) +AS_HELP_STRING([--enable-sctp=lib], [enable sctp support +to link against the SCTP library]) +AS_HELP_STRING([--disable-sctp], [disable sctp support])) + +AC_ARG_ENABLE(hipe, +AS_HELP_STRING([--enable-hipe], [enable hipe support]) +AS_HELP_STRING([--disable-hipe], [disable hipe support])) + +AC_ARG_ENABLE(native-libs, +AS_HELP_STRING([--enable-native-libs], + [compile Erlang libraries to native code])) + +AC_ARG_WITH(dynamic-trace, +AS_HELP_STRING([--with-dynamic-trace={dtrace|lttng|systemtap}], + [specify use of dynamic trace framework, dtrace, lttng or systemtap]) +AS_HELP_STRING([--without-dynamic-trace], + [don't enable any dynamic tracing (default)])) +AC_ARG_ENABLE(vm-probes, +AS_HELP_STRING([--enable-vm-probes], + [add dynamic trace probes to the Beam VM (only possible if --with-dynamic-trace is enabled, and then default)])) +AC_ARG_WITH(javac, +AS_HELP_STRING([--with-javac=JAVAC], [specify Java compiler to use]) +AS_HELP_STRING([--with-javac], [use a Java compiler if found (default)]) +AS_HELP_STRING([--without-javac], [don't use any Java compiler])) + +AC_ARG_ENABLE(megaco_flex_scanner_lineno, +AS_HELP_STRING([--disable-megaco-flex-scanner-lineno], + [disable megaco flex scanner lineno])) + +AC_ARG_ENABLE(megaco_reentrant_flex_scanner, +AS_HELP_STRING([--disable-megaco-reentrant-flex-scanner], + [disable reentrant megaco flex scanner])) + +AC_ARG_WITH(ssl, +AS_HELP_STRING([--with-ssl=PATH], [specify location of OpenSSL include and lib]) +AS_HELP_STRING([--with-ssl], [use SSL (default)]) +AS_HELP_STRING([--without-ssl], [don't use SSL])) + +AC_ARG_WITH(ssl-incl, +AS_HELP_STRING([--with-ssl-incl=PATH], + [location of OpenSSL include dir, if different than specified by --with-ssl=PATH])) + +AC_ARG_WITH(ssl-rpath, +AS_HELP_STRING([--with-ssl-rpath=yes|no|PATHS], + [runtime library path for OpenSSL. Default is 'yes', which equates to a + number of standard locations. If 'no', then no runtime + library paths will be used. Anything else should be a + comma separated list of paths.])) + +AC_ARG_ENABLE(dynamic-ssl-lib, +AS_HELP_STRING([--disable-dynamic-ssl-lib], + [disable using dynamic openssl libraries])) + +AC_ARG_ENABLE(fips, +AS_HELP_STRING([--enable-fips], [enable OpenSSL FIPS mode support]) +AS_HELP_STRING([--disable-fips], [disable OpenSSL FIPS mode support (default)])) + +AC_ARG_ENABLE(builtin-zlib, +AS_HELP_STRING([--enable-builtin-zlib], + [force use of our own built-in zlib])) + +AC_ARG_ENABLE(esock, +AS_HELP_STRING([--enable-esock], [enable builtin experimental socket (as a nif) support (default)]) +AS_HELP_STRING([--disable-esock], [disable builtin experimental socket (as a nif) support])) + +AC_ARG_ENABLE(sharing-preserving, +AS_HELP_STRING([--enable-sharing-preserving], + [enable copying of terms without destroying sharing])) + +dnl This functionality has been lost along the way... :( +dnl It could perhaps be nice to reintroduce some day; therefore, +dnl it is not removed just commented out. +dnl +dnl # +dnl # Set Erlang man page directory +dnl # +dnl AC_ARG_ENABLE(erlang-mandir, +dnl [ --disable-erlang-mandir do not install Erlang man pages in a private directory], +dnl [ case "$enableval" in +dnl no) erl_mandir=$mandir ;; +dnl *) erl_mandir='$(erlang_libdir)/man' ;; +dnl esac ], erl_mandir='$(erlang_libdir)/man') +dnl AC_SUBST(erl_mandir) + +AC_ARG_ENABLE(m64-build, +AS_HELP_STRING([--enable-m64-build], + [build 64bit binaries using the -m64 flag to (g)cc]), +[ case "$enableval" in + no) enable_m64_build=no ;; + *) enable_m64_build=yes ;; + esac +],enable_m64_build=no) + +AC_ARG_ENABLE(m32-build, +AS_HELP_STRING([--enable-m32-build], + [build 32bit binaries using the -m32 flag to (g)cc]), +[ case "$enableval" in + no) enable_m32_build=no ;; + *) enable_m32_build=yes ;; + esac +],enable_m32_build=no) + +AC_ARG_WITH(libatomic_ops, + AS_HELP_STRING([--with-libatomic_ops=PATH], + [specify and prefer usage of libatomic_ops in the ethread library])) + +m4_define(DEFAULT_SANITIZERS, [address,undefined]) +AC_ARG_ENABLE(sanitizers, + AS_HELP_STRING( + [--enable-sanitizers@<:@=comma-separated list of sanitizers@:>@], + [Default=DEFAULT_SANITIZERS])) + +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) + +DEFAULT_VERBOSITY=0 +if test X${enable_silent_rules} = Xno; then + DEFAULT_VERBOSITY=1 +fi +AC_SUBST(DEFAULT_VERBOSITY) + +if test X${enable_m64_build} = Xyes; then + CFLAGS="-m64 $CFLAGS" + export CFLAGS + LDFLAGS="-m64 $LDFLAGS" + export LDFLAGS +fi +if test X${enable_m32_build} = Xyes; then + CFLAGS="-m32 $CFLAGS" + export CFLAGS + LDFLAGS="-m32 $LDFLAGS" + export LDFLAGS +fi + +NATIVE_LIBS_ENABLED= +if test X${enable_native_libs} = Xyes -a X${enable_hipe} != Xno; then + NATIVE_LIBS_ENABLED=yes +fi +AC_SUBST(NATIVE_LIBS_ENABLED) + +if test $CROSS_COMPILING = no; then + case $host_os in + darwin*) + macosx_version=`sw_vers -productVersion` + test $? -eq 0 || { + AC_MSG_ERROR([Failed to execute 'sw_vers'; please provide it in PATH]) + } + [case "$macosx_version" in + [1-9][0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)|\1\2|'`;; + [1-9][0-9].[0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\2\3|'`;; + [1-9][0-9].[1-9][0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)|\1\200|'`;; + [1-9][0-9].[1-9][0-9].[0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\20\3|'`;; + [1-9][0-9].[1-9][0-9].[1-9][0-9]) + int_macosx_version=`echo $macosx_version | sed 's|\([^\.]*\)\.\([^\.]*\)\.\([^\.]*\)|\1\2\3|'`;; + *) + int_macosx_version=unexpected;; + esac] + test $int_macosx_version != unexpected || { + AC_MSG_ERROR([Unexpected MacOSX version ($macosx_version) returned by 'sw_vers -productVersion'; this configure script probably needs to be updated]) + } + AC_TRY_COMPILE([ +#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > $int_macosx_version +#error Compiling for a newer MacOSX version... +#endif + ], [;], + [], + [AC_MSG_ERROR([ + + You are natively building Erlang/OTP for a later version of MacOSX + than current version ($macosx_version). You either need to + cross-build Erlang/OTP, or set the environment variable + MACOSX_DEPLOYMENT_TARGET to $macosx_version (or a lower version). + +])]) + ;; + *) + ;; + esac +fi + +ERL_DED + +AC_CONFIG_FILES([../Makefile output.mk ../make/$host/otp_ded.mk:../make/otp_ded.mk.in]) +AC_CONFIG_FILES([emd2exml], [chmod +x emd2exml]) + +AC_OUTPUT diff --git a/make/cross_check_erl b/make/cross_check_erl index f8ba73023a..524514a63f 100755 --- a/make/cross_check_erl +++ b/make/cross_check_erl @@ -90,7 +90,7 @@ start() -> EOF erlc cross_check_erl.erl 2>/dev/null \ - && used_otp=`erl -noshell -noinput -pa . -run cross_check_erl 2>/dev/null` + && used_otp=`erl -noshell -noinput -boot start_clean -pa . -run cross_check_erl 2>/dev/null` res=$? diff --git a/make/emd2exml.in b/make/emd2exml.in index 13bd6700d9..ec3de0a7f8 100755 --- a/make/emd2exml.in +++ b/make/emd2exml.in @@ -462,7 +462,7 @@ url([C|Cs], Bool, Acc) -> url(Cs, Bool, [C|Acc]). link_or_image(Str, Type) -> - case link_or_image_text(Str, "") of + case link_or_image_text(Str) of no -> no; {Text, Cont1} -> case link_or_image_data(Cont1, none, Type, "", "") of @@ -471,9 +471,14 @@ link_or_image(Str, Type) -> {["<url href=\"", text(Url), "\">", text(Text), "</url>"], Cont2}; {seealso, SeeAlso, _Title, Cont2} -> - {["<seealso marker=\"", text(SeeAlso), "\">", - text(Text), "</seealso>"], - Cont2}; + case internal_seealso(SeeAlso) of + no -> + {["<seealso marker=\"", text(SeeAlso), "\">", + text(Text), "</seealso>"], + Cont2}; + {yes, SeeAlsoKey} -> + {delayed, link, SeeAlsoKey, text(Text), Cont2} + end; {image, Image, Title, Cont2} -> {["<image file=\"", text(Image), "\"><icaption>", text(Title), "</icaption></image>"], @@ -485,16 +490,41 @@ link_or_image(Str, Type) -> end end. +internal_seealso("#" ++ Marker) -> + {yes, {internal, Marker}}; +internal_seealso(_) -> + no. + +link_or_image_text(Cs0) -> + {Prefix, Cs2} = case Cs0 of + "__" ++ Cs1 -> {"__", Cs1}; + "_" ++ Cs1 -> {"_", Cs1}; + "**" ++ Cs1 -> {"**", Cs1}; + "*" ++ Cs1 -> {"*", Cs1}; + Cs1 -> {"", Cs1} + end, + {Text0, Cs} = link_or_image_text(Cs2, []), + Text = case lists:prefix(Prefix, Text0) of + false -> + lists:reverse(Text0, Prefix); + true -> + lists:reverse(lists:nthtail(length(Prefix), Text0)) + end, + case Text of + [] -> + no; + [_|_] -> + {Text, Cs} + end. + link_or_image_text([$\\,C|Cs], Acc) -> link_or_image_text(Cs, [C|Acc]); -link_or_image_text([$]|_Cs], "") -> - no; link_or_image_text([$]|Cs], Acc) -> - {lists:reverse(Acc), Cs}; + {Acc, Cs}; link_or_image_text([C|Cs], Acc) -> link_or_image_text(Cs, [C|Acc]); link_or_image_text([], _Acc) -> - no. + {[], []}. link_or_image_data([C|Cs], none, link, "", "") when C == $ ; C == $\t -> link_or_image_data(Cs, none, link, "", ""); @@ -615,8 +645,10 @@ put_title(S, 1, Title) -> put_title(#state{mlist = MList0, toc = TOC} = S0, H, Title) -> TitleStr = text(Title), - MList1 = [mk_lvl_marker(Title) | MList0], + TitleMarker = mk_lvl_marker(Title), + MList1 = [TitleMarker | MList0], Marker = mk_marker(MList1), + MarkerKey = string:lowercase(TitleMarker), S1 = chk_h1(H, S0#state{toc = [TOC, lists:duplicate(H," "), @@ -624,13 +656,15 @@ put_title(#state{mlist = MList0, "<seealso marker=\"#",Marker,"\">", TitleStr,"</seealso>",nl()], h = H, - mlist = MList1}), + mlist = MList1 + }), S2 = put_chars(S1, ["<marker id=\"", Marker, "\"/>",nl()]), + S3 = write_delayed(S2, {internal, MarkerKey}, {"#" ++ Marker, ""}), {STag, ETag} = case H > ?MAX_HEADING of true -> {"<p><strong>", "</strong></p>"}; false -> {"<title>", "</title>"} end, - put_chars(S2, [STag, TitleStr, ETag, nl()]). + put_chars(S3, [STag, TitleStr, ETag, nl()]). setext_heading(H, #state{line = Line, h = OldH} = S0) -> S1 = sections(H, OldH, S0), @@ -747,7 +781,7 @@ header(#state{ofile = {File, _}} = S0, Title) -> integer_to_list(Day), "</date>", nl(), "<rev>1</rev>", nl(), - "<file>",File,"</file>", nl(), + "<file>",filename:basename(File),"</file>", nl(), "</header>", nl()]), put_delayed(S3, ?DELAYED_TOC_IX). @@ -1204,7 +1238,7 @@ put_delayed(#state{out = Out} = S, Key, Data) -> S#state{out = [{delayed, Key, Data} | Out]}. put_chars(#state{out = Out} = S, Chars) -> - S#state{out = [[Chars] | Out]}. + S#state{out = [Chars | Out]}. put_line(#state{out = Out} = S, String) -> S#state{out = [[String, nl()] | Out]}. @@ -1214,11 +1248,20 @@ complete_output(#state{out = Out} = S) -> complete_output(S, [], Out) -> S#state{delayed_array = [], - out = ["<?xml version=\"1.0\" encoding=\"utf8\" ?>", nl(), + out = ["<?xml version=\"1.0\" encoding=\"utf-8\" ?>", nl(), "<!DOCTYPE chapter SYSTEM \"chapter.dtd\">", nl(), Out]}; complete_output(S, [{delayed, IX}|Rest], Out) -> complete_output(S, Rest, [read_delayed(S, IX)|Out]); +complete_output(S, [{delayed, {internal, Key0}, {link, Text, _Line}}|Rest], Out) -> + Key = [C || C <- Key0, C =/= $_], + case read_delayed(S, {internal, Key}) of + {value, {Url, _}} -> + complete_output(S, Rest, [mk_link(Text, Url)|Out]); + none -> + Url = "#" ++ Key0, + complete_output(S, Rest, [mk_link(Text, Url)|Out]) + end; complete_output(S, [{delayed, Key, {link, Text, Line}}|Rest], Out) -> case read_delayed(S, Key) of {value, {Url, _Title}} -> @@ -1235,9 +1278,27 @@ complete_output(S, [{delayed, Key, {image, _Text, Line}}|Rest], Out) -> {File, _} = S#state.ifile, error(File, Line, "Image definition name `~ts' not found~n", [Key]) end; +complete_output(S, [["</p>","\n"]=ParaStart, + Contents, + ["<p>","\n"]=ParaEnd|Rest], Out) -> + case is_image_tag(Contents) of + true -> + %% Get rid of the paragraph around an image tag. It would mess up + %% figure numbering. + complete_output(S, Rest, [Contents|Out]); + false -> + complete_output(S, [Contents,ParaEnd|Rest], [ParaStart|Out]) + end; complete_output(S, [Next|Rest], Out) -> complete_output(S, Rest, [Next|Out]). +is_image_tag("<image" ++ _) -> + true; +is_image_tag([[_|_]=H | _]) -> + is_image_tag(H); +is_image_tag(_) -> + false. + write_output(_OFD, []) -> ok; write_output(OFD, [O|Os]) -> diff --git a/make/fixup_development_runtime_dependencies b/make/fixup_development_runtime_dependencies new file mode 100755 index 0000000000..1c0a649578 --- /dev/null +++ b/make/fixup_development_runtime_dependencies @@ -0,0 +1,111 @@ +#!/usr/bin/env perl + +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2018. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# %CopyrightEnd% +# + +# +# Replaces runtime_dependencies pointing to future not yet +# resolved versions in the maint and master branches while under +# development. Such dependencies may exist in .app files on the +# form (<app name>-@<ticket>(:<ticket>)*@) and will be replaced +# with the current version of the application in the source tree. +# This in order not to break tests looking at runtime_dependencies. +# + +use strict; +use File::Basename; + +my $usage_text = <<"HERE"; + usage: $0 <ERL_TOP> +HERE + +my %app_vsn; +my $exit_status = 0; + +@ARGV == 1 or die $usage_text; +my $erl_top = shift @ARGV; + +chdir $erl_top or die "Failed to change directory into '$erl_top'"; + +print "Fixing up development runtime dependencies\n"; + +# +# Determine versions of all applications in the source tree... +# +foreach my $vsn_mk (<lib/*/vsn.mk>, <erts/vsn.mk>) { + my $app_dir = dirname($vsn_mk); + my $app = basename($app_dir); + + if (!open(VSN, $vsn_mk)) { + $exit_status = 1; + print STDERR "ERROR: Failed to open '$vsn_mk' for reading: $!\n"; + } + else { + my $vsn = ''; + while (<VSN>) { + if (/VSN\s*=\s*(\S+)/) { + $vsn = $1; + last; + } + } + close VSN; + if (!$vsn) { + $exit_status = 1; + print STDERR "ERROR: No version found in '$vsn_mk'\n" + } + else { + $app_vsn{$app} = "$app-$vsn"; + } + } +} + +my $valid_apps = join('|', keys %app_vsn); + +# +# Replace all <app name>-@<ticket>(:<ticket>)*@ versions +# in all *.app files with the versions currently used... +# +foreach my $app_file (<lib/*/ebin/*.app>, <erts/preloaded/ebin/erts.app>) { + if (!open(IN, "<", $app_file)) { + $exit_status = 1; + print STDERR "ERROR: Failed to open '$app_file' for reading: $!"; + } + else { + local $/; + my $file = <IN>; + close IN; + my $old_file = $file; + + $file =~ s/($valid_apps)-\@OTP-\d{4,5}(?::OTP-\d{4,5})*\@/$app_vsn{$1}/g; + + if ($file ne $old_file) { + if (!open(OUT, ">", $app_file)) { + $exit_status = 1; + print STDERR "ERROR: Failed to open '$app_file' for writing: $!"; + } + else { + print OUT $file; + close OUT; + } + } + } +} + +exit $exit_status; diff --git a/make/lazy_configure.mk b/make/lazy_configure.mk deleted file mode 100644 index c74f216de0..0000000000 --- a/make/lazy_configure.mk +++ /dev/null @@ -1,82 +0,0 @@ -# ``Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# The Initial Developer of the Original Code is Ericsson Utvecklings AB. -# Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings -# AB. All Rights Reserved.'' -# -# $Id$ -# - -ifndef EXPECTED_AUTOCONF_VERSION -EXPECTED_AUTOCONF_VERSION=2.59 -endif -SAVE_ARGS=$(ERL_TOP)/make/save_args -CONFIG_STATUS=$(CONFIGURE_DIR)/$(TARGET)/config.status -SAVED_CONFIG_FLAGS_FILE=$(CONFIGURE_DIR)/$(TARGET)/lazy.config.flags -SAVED_CONFIG_LOG=$(CONFIGURE_DIR)/$(TARGET)/config.log -CONFIG_CACHE_FILE=$(CONFIGURE_DIR)/$(TARGET)/lazy.config.cache -ALL_CONFIG_FLAGS=$(CONFIGURE_FLAGS) --no-create --no-recursion --cache-file=$(CONFIG_CACHE_FILE) - -lazy_configure: save_config_flags $(CONFIG_STATUS) - rm -f $(CONFIGURE_DIR)/config.log - cd $(CONFIGURE_DIR) && $(CONFIG_STATUS) - cat $(CONFIGURE_DIR)/config.log >> $(SAVED_CONFIG_LOG) - rm -f $(CONFIGURE_DIR)/config.log - -save_config_flags: - $(SAVE_ARGS) $(SAVED_CONFIG_FLAGS_FILE) --- $(ALL_CONFIG_FLAGS) - -$(SAVED_CONFIG_FLAGS_FILE): save_config_flags - -$(CONFIGURE_DIR)/configure: $(CONFIGURE_DIR)/configure.in $(EXTRA_CONFIGURE_DEPENDENCIES) - rm -f $(CONFIG_CACHE_FILE) - @ exp_ac_vsn=$(EXPECTED_AUTOCONF_VERSION) ; \ - ac_vsn_blob=`autoconf --version` ; \ - ac_vsn=`echo x$$ac_vsn_blob | sed "s|[^0-9]*\([0-9][^ \t\n]*\).*|\1|"` ; \ - case "$$ac_vsn" in \ - $$exp_ac_vsn) \ - ;; \ - *) \ - echo "***************************************************" 1>&2 ; \ - echo "***************************************************" 1>&2 ; \ - echo "*** WARNING: System might fail to configure or" 1>&2 ; \ - echo "*** might be erroneously configured" 1>&2 ; \ - echo "*** since autoconf version $$ac_vsn is used" 1>&2 ; \ - echo "*** instead of version $$exp_ac_vsn!" 1>&2 ; \ - echo "***************************************************" 1>&2 ; \ - echo "***************************************************" 1>&2 ; \ - ;; \ - esac - cd $(CONFIGURE_DIR) && autoconf -f - -$(CONFIGURE_DIR)/config.h.in: $(CONFIGURE_DIR)/configure.in $(CONFIGURE_DIR)/aclocal.m4 - cd $(CONFIGURE_DIR) && autoheader ./configure.in > ./config.h.in - -$(CONFIG_STATUS): $(SAVED_CONFIG_FLAGS_FILE) $(CONFIGURE_DIR)/configure $(EXTRA_CONFIG_STATUS_DEPENDENCIES) - rm -f $(CONFIGURE_DIR)/config.log - cd $(CONFIGURE_DIR) && CONFIG_STATUS=$(CONFIG_STATUS) ./configure $(ALL_CONFIG_FLAGS) - rm -f $(SAVED_CONFIG_LOG) - mv $(CONFIGURE_DIR)/config.log $(SAVED_CONFIG_LOG) - -lazy_configure_target_clean: - rm -f $(CONFIG_STATUS) - rm -f $(CONFIG_CACHE_FILE) - rm -f $(SAVED_CONFIG_FLAGS_FILE) - rm -f $(SAVED_CONFIG_LOG) - -lazy_configure_clean: lazy_configure_target_clean - rm -f $(CONFIGURE_DIR)/configure - test ! -f $(CONFIGURE_DIR)/acconfig.h || rm -f $(CONFIGURE_DIR)/config.h.in - -.PHONY: lazy_configure save_config_flags lazy_configure_clean - diff --git a/make/make_emakefile.in b/make/make_emakefile.in index fbca77887a..e0740d1013 100755 --- a/make/make_emakefile.in +++ b/make/make_emakefile.in @@ -1,4 +1,4 @@ -#!@PERL@ +#!/usr/bin/env @PERL@ # -*- cperl -*- use strict; diff --git a/make/otp.mk.in b/make/otp.mk.in index 2261d66c2c..cdddb90734 100644 --- a/make/otp.mk.in +++ b/make/otp.mk.in @@ -4,7 +4,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1997-2016. All Rights Reserved. +# Copyright Ericsson AB 1997-2019. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,9 +47,11 @@ CROSS_COMPILING = @CROSS_COMPILING@ # ---------------------------------------------------- DEFAULT_TARGETS = opt debug release release_docs clean docs -DEFAULT_FLAVOR=@DEFAULT_FLAVOR@ -FLAVORS=@FLAVORS@ -TYPES=@TYPES@ +TYPES = @TYPES@ + +USE_PGO = @USE_PGO@ + +USE_ESOCK = @USE_ESOCK@ # Slash separated list of return values from $(origin VAR) # that are untrusted - set default in this file instead. @@ -62,8 +64,8 @@ DUBIOUS_ORIGINS = /undefined/environment/ # HiPE # ---------------------------------------------------- -HIPE_ENABLED=@HIPE_ENABLED@ -NATIVE_LIBS_ENABLED=@NATIVE_LIBS_ENABLED@ +HIPE_ENABLED = @HIPE_ENABLED@ +NATIVE_LIBS_ENABLED = @NATIVE_LIBS_ENABLED@ # ---------------------------------------------------- # Command macros @@ -86,6 +88,14 @@ LD = @LD@ RANLIB = @RANLIB@ AR = @AR@ PERL = @PERL@ +LLVM_PROFDATA = @LLVM_PROFDATA@ + +MIXED_CYGWIN_VC = @MIXED_CYGWIN_VC@ +MIXED_MSYS_VC = @MIXED_MSYS_VC@ +MIXED_VC = @MIXED_VC@ +MIXED_CYGWIN_MINGW = @MIXED_CYGWIN_MINGW@ +MIXED_CYGWIN = @MIXED_CYGWIN@ +MIXED_MSYS = @MIXED_MSYS@ BITS64 = @BITS64@ @@ -222,6 +232,7 @@ MAN9DIR = $(DOCDIR)/man9 TEXDIR = . SPECDIR = $(DOCDIR)/specs +XMLDIR = $(DOCDIR)/xml ifeq ($(CSS_FILE),) CSS_FILE = otp_doc.css @@ -277,55 +288,34 @@ endif SPECS_EXTRACTOR=$(DOCGEN)/priv/bin/specs_gen.escript # Extract specifications and types from Erlang source files (-spec, -type) $(SPECDIR)/specs_%.xml: $(SPECS_ESRC)/%.erl - escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) -o$(dir $@) $< + $(gen_verbose)escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) -o$(dir $@) $< $(SPECDIR)/specs_%.xml: $(SPECS_ESRC)/gen/%.erl - escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) -o$(dir $@) $< + $(gen_verbose)escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) -o$(dir $@) $< +MANXSLTARGS=--stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities -path . -$(MAN1DIR)/%.1: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - -$(MAN2DIR)/%.2: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< +$(MAN1DIR)/%.1 $(MAN2DIR)/%.2 $(MAN4DIR)/%.4 $(MAN4DIR)/%.5 $(MAN9DIR)/%.9: $(XMLDIR)/%.xml + $(gen_verbose)date=`date +"%B %e, %Y"`; \ + xsltproc --output "$@" $(MANXSLTARGS) $(DOCGEN)/priv/xsl/db_man.xsl $< ifneq ($(wildcard $(SPECDIR)),) -$(MAN3DIR)/%.3: %.xml $(SPECDIR)/specs_%.xml - date=`date +"%B %e, %Y"`; \ +$(MAN3DIR)/%.3: $(XMLDIR)/%.xml $(SPECDIR)/specs_%.xml + $(gen_verbose)date=`date +"%B %e, %Y"`; \ specs_file=`pwd`/$(SPECDIR)/specs_$*.xml; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --stringparam specs_file "$$specs_file" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< + xsltproc --output "$@" $(MANXSLTARGS) --stringparam specs_file "$$specs_file" $(DOCGEN)/priv/xsl/db_man.xsl $< else -$(MAN3DIR)/%.3: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< +$(MAN3DIR)/%.3: $(XMLDIR)/%.xml + $(gen_verbose)date=`date +"%B %e, %Y"`; \ + xsltproc --output "$@" $(MANXSLTARGS) $(DOCGEN)/priv/xsl/db_man.xsl $< endif # left for compatibility -$(MAN4DIR)/%.4: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - -$(MAN4DIR)/%.5: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - -# left for compatibility -$(MAN6DIR)/%.6: %_app.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - -$(MAN6DIR)/%.7: %_app.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - -$(MAN9DIR)/%.9: %.xml - date=`date +"%B %e, %Y"`; \ - xsltproc --output "$@" --stringparam company "Ericsson AB" --stringparam docgen "$(DOCGEN)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" --stringparam appver "$(VSN)" --xinclude -path $(DOCGEN)/priv/dtd -path $(DOCGEN)/priv/dtd_man_entities $(DOCGEN)/priv/xsl/db_man.xsl $< - +$(MAN6DIR)/%.6 $(MAN6DIR)/%.7: $(XMLDIR)/%_app.xml + $(gen_verbose)date=`date +"%B %e, %Y"`; \ + xsltproc --output "$@" $(MANXSLTARGS) $(DOCGEN)/priv/xsl/db_man.xsl $< -.xmlsrc.xml: - escript $(DOCGEN)/priv/bin/codeline_preprocessing.escript $< $@ +$(XMLDIR)/%.xml: $(XMLDIR)/%.xmlsrc + $(gen_verbose)escript $(DOCGEN)/priv/bin/codeline_preprocessing.escript $(shell pwd) $< $@ .fo.pdf: $(FOP) -c $(FOP_CONFIG) -cache $(ERL_TOP)/make/$(TARGET)/fop-fonts.cache -fo $< -pdf $@ diff --git a/make/otp_ded.mk.in b/make/otp_ded.mk.in index 0b5311d75e..9c8df265de 100644 --- a/make/otp_ded.mk.in +++ b/make/otp_ded.mk.in @@ -24,27 +24,26 @@ # explicitly expressed here. Some applications need to # be able to check this value *before* configure has # been run and generated otp_ded.mk -DED_MK_VSN = 1 +DED_MK_VSN = 2 # ---------------------------------------------------- # Variables needed for building Dynamic Erlang Drivers # ---------------------------------------------------- -DED_CC = @CC@ -DED_GCC = @GCC@ +DED_CC = @DED_CC@ +DED_GCC = @DED_GCC@ DED_LD = @DED_LD@ DED_LDFLAGS = @DED_LDFLAGS@ -DED__NOWARN_NOTHR_CFLAGS = @DED_CFLAGS@ -DED__NOTHR_CFLAGS = @WFLAGS@ @DED_CFLAGS@ -DED__NOWARN_CFLAGS = @DED_EMU_THR_DEFS@ @DED_CFLAGS@ +DED_BASIC_CFLAGS = @DED_CFLAGS@ DED_THR_DEFS = @DED_THR_DEFS@ -DED_EMU_THR_DEFS = @DED_EMU_THR_DEFS@ -DED_WARN_FLAGS = @WFLAGS@ -DED_CFLAGS = @WERRORFLAGS@ @WFLAGS@ @DED_EMU_THR_DEFS@ @DED_CFLAGS@ -DED_STATIC_CFLAGS = @WERRORFLAGS@ @WFLAGS@ @DED_EMU_THR_DEFS@ @DED_STATIC_CFLAGS@ -DED_LIBS = @LIBS@ +DED_WERRORFLAGS = @DED_WERRORFLAGS@ +DED_WARN_FLAGS = @DED_WARN_FLAGS@ +DED_CFLAGS = @DED_CFLAGS@ +DED_LD_FLAG_RUNTIME_LIBRARY_PATH = @DED_LD_FLAG_RUNTIME_LIBRARY_PATH@ +DED_STATIC_CFLAGS = @DED_STATIC_CFLAGS@ +DED_LIBS = @DED_LIBS@ DED_EXT = @DED_EXT@ -ERLANG_OSTYPE = @ERLANG_OSTYPE@ +DED_OSTYPE = @DED_OSTYPE@ PRIVDIR = ../priv OBJDIR = $(PRIVDIR)/obj/$(TARGET) LIBDIR = $(PRIVDIR)/lib/$(TARGET) DED_SYS_INCLUDE = @DED_SYS_INCLUDE@ -DED_INCLUDES = $(DED_SYS_INCLUDE) +DED_INCLUDES = @DED_INCLUDE@ diff --git a/make/otp_patch_solve_forward_merge_version b/make/otp_patch_solve_forward_merge_version new file mode 100644 index 0000000000..b4de394767 --- /dev/null +++ b/make/otp_patch_solve_forward_merge_version @@ -0,0 +1 @@ +11 diff --git a/make/otp_release_targets.mk b/make/otp_release_targets.mk index 23b4416963..615bf1adb7 100644 --- a/make/otp_release_targets.mk +++ b/make/otp_release_targets.mk @@ -33,9 +33,35 @@ ifneq ($(wildcard $(MOD2APP)),) MOD2APP_PARAM = --stringparam mod2app_file "$(MOD2APP)" endif +# ------------------------------------------------------- +# Take the XML files and add the github link info to them +# ------------------------------------------------------- +ifneq ($(strip $(XMLDIR)),) +_create_xml_dirs := $(shell mkdir -p $(XMLDIR)) +endif + +XML_GEN_FILES+=$(patsubst %.xml,$(XMLDIR)/%.xml,$(XML_FILES)) + +ifeq ($(strip $(NO_GITHUB_DOC_LINKS)),) +$(XMLDIR)/%.xml: %.xml + $(gen_verbose)escript $(DOCGEN)/priv/bin/github_link.escript $< \ + "$(subst $(ERL_TOP)/,,$(CURDIR)/$^)" "NA" $@ + +$(XMLDIR)/%.xmlsrc: %.xmlsrc + $(gen_verbose)escript $(DOCGEN)/priv/bin/github_link.escript $< \ + "$(subst $(ERL_TOP)/,,$(CURDIR)/$^)" "NA" $@ +else +## Just copy the files if the application does not want github edit links +$(XMLDIR)/%.xml: %.xml + $(gen_verbose)$(CP) $< $@ +$(XMLDIR)/%.xmlsrc: %.xmlsrc + $(gen_verbose)$(CP) $< $@ +endif + ifeq ($(TOPDOC),) -$(HTMLDIR)/index.html: $(XML_FILES) $(SPECS_FILES) - date=`date +"%B %e, %Y"`; \ + +$(HTMLDIR)/index.html: $(XML_GEN_FILES) $(SPECS_FILES) + $(gen_verbose)date=`date +"%B %e, %Y"`; \ $(XSLTPROC) --noout \ --stringparam outdir $(HTMLDIR) \ --stringparam docgen "$(DOCGEN)" \ @@ -50,14 +76,15 @@ $(HTMLDIR)/index.html: $(XML_FILES) $(SPECS_FILES) --stringparam winprefix "$(WINPREFIX)" \ --stringparam logo "$(HTMLLOGO_FILE)" \ --stringparam pdfname "$(PDFNAME)" \ + -path . \ -path $(DOCGEN)/priv/dtd \ -path $(DOCGEN)/priv/dtd_html_entities \ - $(DOCGEN)/priv/xsl/db_html.xsl book.xml + $(DOCGEN)/priv/xsl/db_html.xsl $(XMLDIR)/book.xml endif -$(HTMLDIR)/users_guide.html: $(XML_FILES) - date=`date +"%B %e, %Y"`; \ +$(HTMLDIR)/users_guide.html: $(XML_GEN_FILES) + $(gen_verbose)date=`date +"%B %e, %Y"`; \ $(XSLTPROC) --noout \ --stringparam outdir $(HTMLDIR) \ --stringparam docgen "$(DOCGEN)" \ @@ -72,12 +99,13 @@ $(HTMLDIR)/users_guide.html: $(XML_FILES) --stringparam logo "$(HTMLLOGO_FILE)" \ --stringparam pdfname "$(PDFNAME)" \ --xinclude \ + -path . \ -path $(DOCGEN)/priv/dtd \ -path $(DOCGEN)/priv/dtd_html_entities \ - $(DOCGEN)/priv/xsl/db_html.xsl book.xml + $(DOCGEN)/priv/xsl/db_html.xsl $(XMLDIR)/book.xml -%.fo: $(XML_FILES) $(SPECS_FILES) - date=`date +"%B %e, %Y"`; \ +%.fo: $(XML_GEN_FILES) $(SPECS_FILES) + $(gen_verbose)date=`date +"%B %e, %Y"`; \ $(XSLTPROC) \ --stringparam docgen "$(DOCGEN)" \ --stringparam gendate "$$date" \ @@ -87,9 +115,10 @@ $(HTMLDIR)/users_guide.html: $(XML_FILES) --stringparam logo "$(PDFLOGO_FILE)" \ --stringparam pdfcolor "$(PDFCOLOR)" \ --xinclude $(TOP_SPECS_PARAM) \ + -path . \ -path $(DOCGEN)/priv/dtd \ -path $(DOCGEN)/priv/dtd_html_entities \ - $(DOCGEN)/priv/xsl/db_pdf.xsl book.xml > $@ + $(DOCGEN)/priv/xsl/db_pdf.xsl $(XMLDIR)/book.xml > $@ # ------------------------------------------------------------------------ # The following targets just exist in the documentation directory @@ -101,16 +130,17 @@ ifneq ($(XML_FILES),) # ---------------------------------------------------- # Generation of application index data # ---------------------------------------------------- -$(HTMLDIR)/$(APPLICATION).eix: $(XML_FILES) $(SPECS_FILES) - date=`date +"%B %e, %Y"`; \ +$(HTMLDIR)/$(APPLICATION).eix: $(XML_GEN_FILES) $(SPECS_FILES) + $(gen_verbose)date=`date +"%B %e, %Y"`; \ $(XSLTPROC) --stringparam docgen "$(DOCGEN)" \ --stringparam gendate "$$date" \ --stringparam appname "$(APPLICATION)" \ --stringparam appver "$(VSN)" \ -xinclude $(TOP_SPECS_PARAM) \ + -path . \ -path $(DOCGEN)/priv/dtd \ -path $(DOCGEN)/priv/dtd_html_entities \ - $(DOCGEN)/priv/xsl/db_eix.xsl book.xml > $@ + $(DOCGEN)/priv/xsl/db_eix.xsl $(XMLDIR)/book.xml > $@ docs: $(HTMLDIR)/$(APPLICATION).eix @@ -118,30 +148,37 @@ docs: $(HTMLDIR)/$(APPLICATION).eix ## Then we look into all those files check for xi:includes BOOK_XI_INC_FILES:=$(foreach file,$(BOOK_FILES),$(shell awk -F\" '/xi:include/ {print $$2}' $(file))) $(BOOK_FILES) ALL_XI_INC_FILES:=$(foreach file,$(BOOK_XI_INC_FILES),$(shell awk -F\" '/xi:include/ {if ("$(dir $(file))" != "./") printf "$(dir $(file))"; print $$2}' $(file))) $(BOOK_XI_INC_FILES) +ifeq ($(TOPDOC), true) +ALL_XI_INC_GEN_FILES:=$(filter-out book.xml,$(ALL_XI_INC_FILES)) $(BOOK_FILES:%=$(XMLDIR)/%) +else +ALL_XI_INC_GEN_FILES:=$(ALL_XI_INC_FILES:%=$(XMLDIR)/%) +endif + ## These are the patterns of file names that xmllint cannot currently parse -XI_INC_FILES:=%user_man.xml %usersguide.xml %refman.xml %ref_man.xml %part.xml %book.xml +XI_INC_FILES:=%user_man.xml %usersguide.xml %refman.xml %ref_man.xml %part.xml %book.xml %internal.xml ## These are the files that we should run the xmllint on LINT_XI_INC_FILES := $(filter-out $(XI_INC_FILES), $(ALL_XI_INC_FILES)) +LINT_XI_INC_GEN_FILES := $(filter-out $(XI_INC_FILES), $(ALL_XI_INC_GEN_FILES)) EMPTY := SPACE := $(EMPTY) $(EMPTY) XMLLINT_SRCDIRS:=$(subst $(SPACE),:,$(sort $(foreach file,$(XML_FILES),$(dir $(file))))) -xmllint: $(ALL_XI_INC_FILES) -## We verify that the $(XML_FILES) variable in the Makefile have exactly +xmllint: $(ALL_XI_INC_GEN_FILES) +## We verify that the $(XML_GEN_FILES) variable in the Makefile have exactly ## the same files as we found out by following xi:include. -ifneq ($(filter-out $(filter %.xml,$(XML_FILES)),$(ALL_XI_INC_FILES)),) - $(error "$(filter-out $(filter %.xml,$(XML_FILES)),$(ALL_XI_INC_FILES)) in $$ALL_XI_INC_FILES but not in $$XML_FILES"); +ifneq ($(filter-out $(filter %.xml,$(XML_GEN_FILES)),$(ALL_XI_INC_GEN_FILES)),) + $(error "$(filter-out $(filter %.xml,$(XML_GEN_FILES)),$(ALL_XI_INC_GEN_FILES)) in $$ALL_XI_INC_FILES but not in $$XML_GEN_FILES"); endif -ifneq ($(filter-out $(ALL_XI_INC_FILES),$(filter %.xml,$(XML_FILES))),) - $(error "$(filter-out $(ALL_XI_INC_FILES),$(filter %.xml,$(XML_FILES))) in $$XML_FILES but not in $$ALL_XI_INC_FILES"); +ifneq ($(filter-out $(ALL_XI_INC_GEN_FILES),$(filter %.xml,$(XML_GEN_FILES))),) + $(error "$(filter-out $(ALL_XI_INC_GEN_FILES),$(filter %.xml,$(XML_GEN_FILES))) in $$XML_GEN_FILES but not in $$ALL_XI_INC_FILES"); endif - @echo "xmllint $(LINT_XI_INC_FILES)" + @echo "xmllint $(LINT_XI_INC_GEN_FILES)" @xmllint --noout --valid --nodefdtd --loaddtd --path \ $(DOCGEN)/priv/dtd:$(DOCGEN)/priv/dtd_html_entities:$(XMLLINT_SRCDIRS) \ - $(LINT_XI_INC_FILES) + $(LINT_XI_INC_GEN_FILES) # ---------------------------------------------------- # Local documentation target for testing diff --git a/make/otp_version_tickets b/make/otp_version_tickets index 176cbdda94..b8220e1a87 100644 --- a/make/otp_version_tickets +++ b/make/otp_version_tickets @@ -1,12 +1 @@ -OTP-14746 -OTP-15551 -OTP-15657 -OTP-15660 -OTP-15690 -OTP-15691 -OTP-15716 -OTP-15717 -OTP-15757 -OTP-15758 -OTP-15763 -OTP-15766 +DEVELOPMENT diff --git a/make/otp_version_tickets_in_merge b/make/otp_version_tickets_in_merge new file mode 100644 index 0000000000..e071f1a430 --- /dev/null +++ b/make/otp_version_tickets_in_merge @@ -0,0 +1,9 @@ +OTP-15844 +OTP-15861 +OTP-15862 +OTP-15864 +OTP-15865 +OTP-15871 +OTP-15872 +OTP-15873 +OTP-15875 diff --git a/make/output.mk.in b/make/output.mk.in index 171d2456aa..7c6533fddd 100644 --- a/make/output.mk.in +++ b/make/output.mk.in @@ -139,3 +139,7 @@ vsn_verbose = $(vsn_verbose_$(V)) yecc_verbose_0 = @echo " YECC "$@; yecc_verbose = $(yecc_verbose_$(V)) + +llvm_profdata_verbose_0 = @echo " LLVM_PROFDATA "$@; +llvm_profdata_verbose = $(llvm_profdata_verbose_$(V)) +V_LLVM_PROFDATA = $(llvm_profdata_verbose)$(LLVM_PROFDATA) |
