LFORTRAN(1)

πŸ’– LFORTRAN(1) πŸ’–

okay bestie, welcome to the manual page for LFortran, section 1 of the manual. Yeah, the header line up top was literally just () and () β€” no version, no date, the girlies left it blank β€” but the vibe is immaculate and the compiler is real. Let's get into it. ✨


🌸 NAME 🌸

LFortran β€” a modern, interactive, LLVM-based Fortran compiler. she's giving compiler but make it cunty, no cap.


πŸŽ€ SYNOPSIS πŸŽ€

lfortran OPTIONS [files...]  [SUBCOMMAND]

so you give her options, you give her files, and if you're feeling extra you hand her a subcommand too. that's the whole shape of it. periodt.


πŸ¦‹ DESCRIPTION πŸ¦‹

LFortran is a modern interactive Fortran compiler based on LLVM. that's the entire description, she's a woman of few words and I respect it so much. πŸ’…


✨ OPTIONS ✨

every single one, bestie. I did not skip a single flag because I love you.

  • -h, --help β€” prints this help message and dips out. classic.
  • -S β€” emit assembly, and do not assemble or link. just the assembly, nothing else, she's stopping early.
  • -c β€” compile and assemble, but do not link. almost there but not quite.
  • -o TEXT β€” tell her which file to put the compiler's output into.
  • -v β€” be more verbose. she'll talk more.
  • -E β€” preprocess only. no compiling, no assembling, no linking. just preprocessing, that's it.
  • -l TEXT ... β€” link library option.
  • -L TEXT ... β€” library path option.
  • -I TEXT ... β€” include path.
  • -J TEXT β€” where to save the mod files.
  • -g β€” compile with debugging information. debug girlies rise.
  • -D TEXT ... β€” define <macro>=<value> (or just 1 if <value> is omitted).
  • --version β€” display compiler version information.
  • -W TEXT ... β€” linker flags.
  • -f TEXT ... β€” all the -f* flags live here (only -fPIC is supported for now, fyi 🫢).
  • --cpp β€” enable C preprocessing.
  • --fixed-form β€” use fixed form Fortran source parsing.
  • --fixed-form-infer β€” use heuristics to figure out if a file is in fixed form.
  • --no-prescan β€” turn off prescan.
  • --show-prescan β€” show tokens for the given file and exit.
  • --show-tokens β€” show tokens for the given file and exit.
  • --show-ast β€” show AST for the given file and exit.
  • --show-asr β€” show ASR for the given file and exit.
  • --with-intrinsic-mods β€” show intrinsic modules in ASR.
  • --show-ast-f90 β€” show Fortran from AST for the given file and exit.
  • --no-color β€” turn off colored AST/ASR. (sad, but okay.)
  • --no-indent β€” turn off indented print for ASR/AST.
  • --tree β€” tree structure print ASR/AST.
  • --json β€” print ASR/AST in Json format.
  • --clojure β€” print ASR in clojure format.
  • --no-loc β€” skip location information in ASR/AST Json format.
  • --visualize β€” print ASR/AST Visualization.
  • --pass TEXT β€” apply the ASR pass and show ASR (this implies --show-asr, so don't say I didn't warn you).
  • --skip-pass TEXT β€” skip an ASR pass in the default pipeline.
  • --show-llvm β€” show LLVM IR for the given file and exit.
  • --show-cpp β€” show C++ translation source for the given file and exit.
  • --show-c β€” show C translation source for the given file and exit.
  • --show-asm β€” show assembly for the given file and exit.
  • --show-wat β€” show WAT (WebAssembly Text Format) and exit.
  • --show-julia β€” show Julia translation source for the given file and exit.
  • --show-fortran β€” show Fortran translation source for the given file and exit.
  • --show-stacktrace β€” show internal stacktrace on compiler errors. (the tea β˜•)
  • --symtab-only β€” only create symbol tables in ASR (skip executable stmt).
  • --time-report β€” show compilation time report.
  • --static β€” create a static executable.
  • --no-warnings β€” turn off all warnings. live your truth I guess.
  • --no-style-suggestions β€” turn off style suggestions.
  • --no-error-banner β€” turn off the error banner.
  • --continue-compilation β€” collect error messages and keep compiling after hitting semantic errors.
  • --error-format TEXT=human β€” control how errors are produced (options: human, short). defaults to human.
  • --backend TEXT=llvm β€” select a backend (options: llvm, cpp, x86, wasm, fortran). defaults to llvm.
  • --openmp β€” enable OpenMP.
  • --separate-compilation β€” generate object code into .o files.
  • --rtlib β€” include the full runtime library in the LLVM output.
  • --use-loop-variable-after-loop β€” allow using the loop variable after the loop. chaotic, but permitted.
  • --fast β€” best performance (it disables strict standard compliance, so know that going in πŸ‘€).
  • --link-with-gcc β€” calls GCC for linking instead of clang.
  • --target TEXT β€” generate code for the given target.
  • --print-targets β€” print the registered targets.
  • --implicit-typing β€” allow implicit typing.
  • --implicit-interface β€” allow implicit interface.
  • --implicit-argument-casting β€” allow implicit argument casting.
  • --print-leading-space β€” print leading white space if format is unspecified.
  • --interactive-parse β€” use interactive parse.
  • --verbose β€” print debugging statements.
  • --dump-all-passes β€” apply all the passes and dump the ASR into a file.
  • --dump-all-passes-fortran β€” apply all passes and dump the ASR after each pass into a Fortran file.
  • --cumulative β€” apply all the passes cumulatively till the given pass.
  • --realloc-lhs-arrays β€” reallocate left hand side automatically for arrays.
  • --disable-realloc-lhs-arrays β€” disables reallocating left hand side automatically for arrays.
  • --module-mangling β€” mangles the module name.
  • --global-mangling β€” mangles all the global symbols.
  • --intrinsic-mangling β€” mangles all the intrinsic symbols.
  • --all-mangling β€” mangles all possible symbols.
  • --bindc-mangling β€” mangles functions with ABI bind(c).
  • --apply-fortran-mangling β€” mangle symbols with Fortran supported syntax.
  • --mangle-underscore β€” mangles with underscore.
  • --legacy-array-sections β€” enables passing array items as sections if required.
  • --ignore-pragma β€” ignores all the pragmas.
  • --stack-arrays β€” allocate memory for arrays on stack.

that's 72 flags btw. I counted. she ate. πŸ”₯


πŸ‘‘ SUBCOMMANDS πŸ‘‘

  • fmt β€” format Fortran source files. (glow-up for your code πŸ’…)
  • kernel β€” run in Jupyter kernel mode.
  • mod β€” Fortran mod file utilities.
  • pywrap β€” Python wrapper generator.

🌈 SEE ALSO 🌈

for more information, visit the official LFortran documentation at https://docs.lfortran.org/. she's got lore, go read it. iykyk.


and that's the whole page, bestie πŸ’œ the footer line was, again, just (), so no source, no version, no date β€” the mystery stays unsolved and honestly? iconic. go compile something cute. πŸŽ€βœ¨

πŸ“¦ where this page comes from