diff --git a/doc/make.jl b/doc/make.jl index 15e381d7bed61f..35a252da1a7b74 100644 --- a/doc/make.jl +++ b/doc/make.jl @@ -41,6 +41,9 @@ cd(joinpath(@__DIR__, "src")) do end end +# Check if we are building a PDF +const render_pdf = "pdf" in ARGS + # Generate a suitable markdown file from NEWS.md and put it in src str = read(joinpath(@__DIR__, "..", "NEWS.md"), String) splitted = split(str, "") @@ -48,106 +51,122 @@ splitted = split(str, "") replaced_links = replace(splitted[1], r"\[\#([0-9]*?)\]" => s"[#\g<1>](https://github.com/JuliaLang/julia/issues/\g<1>)") write(joinpath(@__DIR__, "src", "NEWS.md"), replaced_links) -const PAGES = [ - "Home" => "index.md", - hide("NEWS.md"), - "Manual" => [ - "manual/getting-started.md", - "manual/variables.md", - "manual/integers-and-floating-point-numbers.md", - "manual/mathematical-operations.md", - "manual/complex-and-rational-numbers.md", - "manual/strings.md", - "manual/functions.md", - "manual/control-flow.md", - "manual/variables-and-scoping.md", - "manual/types.md", - "manual/methods.md", - "manual/constructors.md", - "manual/conversion-and-promotion.md", - "manual/interfaces.md", - "manual/modules.md", - "manual/documentation.md", - "manual/metaprogramming.md", - "manual/arrays.md", - "manual/missing.md", - "manual/networking-and-streams.md", - "manual/parallel-computing.md", - "manual/asynchronous-programming.md", - "manual/multi-threading.md", - "manual/distributed-computing.md", - "manual/running-external-programs.md", - "manual/calling-c-and-fortran-code.md", - "manual/handling-operating-system-variation.md", - "manual/environment-variables.md", - "manual/embedding.md", - "manual/code-loading.md", - "manual/profile.md", - "manual/stacktraces.md", - "manual/performance-tips.md", - "manual/workflow-tips.md", - "manual/style-guide.md", - "manual/faq.md", - "manual/noteworthy-differences.md", - "manual/unicode-input.md", - ], - "Base" => [ - "base/base.md", - "base/collections.md", - "base/math.md", - "base/numbers.md", - "base/strings.md", - "base/arrays.md", - "base/parallel.md", - "base/multi-threading.md", - "base/constants.md", - "base/file.md", - "base/io-network.md", - "base/punctuation.md", - "base/sort.md", - "base/iterators.md", - "base/c.md", - "base/libc.md", - "base/stacktraces.md", - "base/simd-types.md", - ], - "Standard Library" => - [stdlib.targetfile for stdlib in STDLIB_DOCS], - "Developer Documentation" => [ - "devdocs/reflection.md", - "Documentation of Julia's Internals" => [ - "devdocs/init.md", - "devdocs/ast.md", - "devdocs/types.md", - "devdocs/object.md", - "devdocs/eval.md", - "devdocs/callconv.md", - "devdocs/compiler.md", - "devdocs/functions.md", - "devdocs/cartesian.md", - "devdocs/meta.md", - "devdocs/subarrays.md", - "devdocs/isbitsunionarrays.md", - "devdocs/sysimg.md", - "devdocs/llvm.md", - "devdocs/stdio.md", - "devdocs/boundscheck.md", - "devdocs/locks.md", - "devdocs/offset-arrays.md", - "devdocs/require.md", - "devdocs/inference.md", - "devdocs/ssair.md", - "devdocs/gc-sa.md", - ], - "Developing/debugging Julia's C code" => [ - "devdocs/backtraces.md", - "devdocs/debuggingtips.md", - "devdocs/valgrind.md", - "devdocs/sanitizers.md", - ] +Manual = [ + "manual/getting-started.md", + "manual/variables.md", + "manual/integers-and-floating-point-numbers.md", + "manual/mathematical-operations.md", + "manual/complex-and-rational-numbers.md", + "manual/strings.md", + "manual/functions.md", + "manual/control-flow.md", + "manual/variables-and-scoping.md", + "manual/types.md", + "manual/methods.md", + "manual/constructors.md", + "manual/conversion-and-promotion.md", + "manual/interfaces.md", + "manual/modules.md", + "manual/documentation.md", + "manual/metaprogramming.md", + "manual/arrays.md", + "manual/missing.md", + "manual/networking-and-streams.md", + "manual/parallel-computing.md", + "manual/asynchronous-programming.md", + "manual/multi-threading.md", + "manual/distributed-computing.md", + "manual/running-external-programs.md", + "manual/calling-c-and-fortran-code.md", + "manual/handling-operating-system-variation.md", + "manual/environment-variables.md", + "manual/embedding.md", + "manual/code-loading.md", + "manual/profile.md", + "manual/stacktraces.md", + "manual/performance-tips.md", + "manual/workflow-tips.md", + "manual/style-guide.md", + "manual/faq.md", + "manual/noteworthy-differences.md", + "manual/unicode-input.md", +] + +BaseDocs = [ + "base/base.md", + "base/collections.md", + "base/math.md", + "base/numbers.md", + "base/strings.md", + "base/arrays.md", + "base/parallel.md", + "base/multi-threading.md", + "base/constants.md", + "base/file.md", + "base/io-network.md", + "base/punctuation.md", + "base/sort.md", + "base/iterators.md", + "base/c.md", + "base/libc.md", + "base/stacktraces.md", + "base/simd-types.md", +] + +StdlibDocs = [stdlib.targetfile for stdlib in STDLIB_DOCS] + +DevDocs = [ + "devdocs/reflection.md", + "Documentation of Julia's Internals" => [ + "devdocs/init.md", + "devdocs/ast.md", + "devdocs/types.md", + "devdocs/object.md", + "devdocs/eval.md", + "devdocs/callconv.md", + "devdocs/compiler.md", + "devdocs/functions.md", + "devdocs/cartesian.md", + "devdocs/meta.md", + "devdocs/subarrays.md", + "devdocs/isbitsunionarrays.md", + "devdocs/sysimg.md", + "devdocs/llvm.md", + "devdocs/stdio.md", + "devdocs/boundscheck.md", + "devdocs/locks.md", + "devdocs/offset-arrays.md", + "devdocs/require.md", + "devdocs/inference.md", + "devdocs/ssair.md", + "devdocs/gc-sa.md", ], + "Developing/debugging Julia's C code" => [ + "devdocs/backtraces.md", + "devdocs/debuggingtips.md", + "devdocs/valgrind.md", + "devdocs/sanitizers.md", + ] ] + +if render_pdf +const PAGES = [ + "Manual" => ["index.md", Manual...], + "Base" => BaseDocs, + "Standard Library" => StdlibDocs, + "Developer Documentation" => DevDocs +] +else +const PAGES = [ + "Julia Documentation" => "index.md", + "Manual" => Manual, + "Base" => BaseDocs, + "Standard Library" => StdlibDocs, + "Developer Documentation" => DevDocs +] +end + for stdlib in STDLIB_DOCS @eval using $(stdlib.stdlib) # All standard library modules get `using $STDLIB` as their global @@ -161,7 +180,6 @@ DocMeta.setdocmeta!(UUIDs, :DocTestSetup, :(using UUIDs, Random), recursive=true DocMeta.setdocmeta!(Pkg, :DocTestSetup, :(using Pkg, Pkg.Artifacts), recursive=true, warn=false) DocMeta.setdocmeta!(Pkg.BinaryPlatforms, :DocTestSetup, :(using Pkg, Pkg.BinaryPlatforms), recursive=true, warn=false) -const render_pdf = "pdf" in ARGS let r = r"buildroot=(.+)", i = findfirst(x -> occursin(r, x), ARGS) global const buildroot = i === nothing ? (@__DIR__) : first(match(r, ARGS[i]).captures) end