Files
coopenomics/cdt/man/cdt-cpp.1
T
2026-03-21 20:12:04 +05:00

851 lines
12 KiB
Groff

.\" Automatically generated by Pandoc 2.5
.\"
.TH "CDT\-CPP" "1" "April 08, 2023" "AntelopeIO" "Contract Development Toolkit (CDT)"
.hy
.SH NAME
.PP
cdt\-cpp \- Antelope smart contract C++ to WebAssembly compiler
.SH SYNOPSIS
.PP
\f[C]cdt\-cpp [options] <input file>\f[R]
.SH DESCRIPTION
.PP
\f[B]cdt\-cpp\f[R] Is a C++ compiler which converts C++ smart contract
code to WebAssemply for execution in Antelope block chain virtual
machines.
.SH OPTIONS
.PP
\f[B]\f[CB]\-C\f[B]\f[R]
.IP
.nf
\f[C]
Include comments in preprocessed output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-CC\f[B]\f[R]
.IP
.nf
\f[C]
Include comments from within macros in preprocessed output
\f[R]
.fi
.PP
\f[B]\f[CB]\-D=<name definition>\f[B]\f[R]
.IP
.nf
\f[C]
Define <macro> to <value> (or 1 if <value> omitted)
\f[R]
.fi
.PP
\f[B]\f[CB]\-U=<name>\f[B]\f[R]
.IP
.nf
\f[C]
Undefine any previous definition of name, either built in or defined with a \-D option
\f[R]
.fi
.PP
\f[B]\f[CB]\-E\f[B]\f[R]
.IP
.nf
\f[C]
Only run the preprocessor
\f[R]
.fi
.PP
\f[B]\f[CB]\-I=<dir>\f[B]\f[R]
.IP
.nf
\f[C]
Add directory to include search path
\f[R]
.fi
.PP
\f[B]\f[CB]\-L=<dir>\f[B]\f[R]
.IP
.nf
\f[C]
Add directory to library search path
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-MF=<file>\f[B]\f[R]
.IP
.nf
\f[C]
Write depfile output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-MD\f[B]\f[R]
.IP
.nf
\f[C]
Write depfile containing user and system headers
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-MMD\f[B]\f[R]
.IP
.nf
\f[C]
Like \-MD except mention only user header files, not system header files.
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-MT=<target>\f[B]\f[R]
.IP
.nf
\f[C]
Specify name of main file output in depfile
\f[R]
.fi
.PP
\f[B]\f[CB]\-O=<optimization_level>\f[B]\f[R]
.IP
.nf
\f[C]
Optimization level s, 0\-3
\f[R]
.fi
.PP
\f[B]\f[CB]\-R=<dir>\f[B]\f[R]
.IP
.nf
\f[C]
Add the directory dir to the list of directories to be searched for resource files
\f[R]
.fi
.PP
\f[B]\f[CB]\-S\f[B]\f[R]
.IP
.nf
\f[C]
Only run preprocess and compilation steps
\f[R]
.fi
.PP
\f[B]\f[CB]\-W=<warning_name>\f[B]\f[R]
.IP
.nf
\f[C]
Enable the specified warning.
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-abi\-version=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Which ABI version to generate
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-abigen\f[B]\f[R]
.IP
.nf
\f[C]
Generate ABI
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-abigen_output=<string>\f[B]\f[R]
.IP
.nf
\f[C]
ABIGEN output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-allow\-names\f[B]\f[R]
.IP
.nf
\f[C]
Allow creation of name section
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-allow\-sse\f[B]\f[R]
.IP
.nf
\f[C]
Should not be used, except for building libc
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-as\-secure\-log\-file\-name=<value>\f[B]\f[R]
.IP
.nf
\f[C]
As secure log file name (initialized from AS_SECURE_LOG_FILE env variable)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-asm\-macro\-max\-nesting\-depth=<uint>\f[B]\f[R]
.IP
.nf
\f[C]
The maximum nesting depth allowed for assembly macros
\f[R]
.fi
.PP
\f[B]\f[CB]\-c\f[B]\f[R]
.IP
.nf
\f[C]
Only run preprocess, compile, and assemble steps
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-color\f[B]\f[R]
.IP
.nf
\f[C]
Use colors in output (default=autodetect)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-contract=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Contract name
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-dD\f[B]\f[R]
.IP
.nf
\f[C]
Print macro definitions in \-E mode in addition to normal output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-dI\f[B]\f[R]
.IP
.nf
\f[C]
Print include directives in \-E mode in addition to normal output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-dM\f[B]\f[R]
.IP
.nf
\f[C]
Print macro definitions in \-E mode instead to normal output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-disable\-symbolication\f[B]\f[R]
.IP
.nf
\f[C]
Disable symbolizing crash backtraces.
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-emit\-ast\f[B]\f[R]
.IP
.nf
\f[C]
Emit Clang AST files for source inputs
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-emit\-ir\f[B]\f[R]
.IP
.nf
\f[C]
Emit llvm ir
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-emit\-llvm\f[B]\f[R]
.IP
.nf
\f[C]
Use the LLVM representation for assembler and object files
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-eosio\-pp\-dir=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Set the directory for eosio\-pp
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fPIC\f[B]\f[R]
.IP
.nf
\f[C]
Generate position independent code. This option is used for shared libraries
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-faligned\-allocation\f[B]\f[R]
.IP
.nf
\f[C]
Enable C++17 aligned allocation functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fasm\f[B]\f[R]
.IP
.nf
\f[C]
Assemble file for x86\-64
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fcolor\-diagnostics\f[B]\f[R]
.IP
.nf
\f[C]
Use colors in diagnostics
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fcoroutine\-ts\f[B]\f[R]
.IP
.nf
\f[C]
Enable support for the C++ Coroutines TS
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-finline\-functions\f[B]\f[R]
.IP
.nf
\f[C]
Inline suitable functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-finline\-hint\-functions\f[B]\f[R]
.IP
.nf
\f[C]
Inline functions which are (explicitly or implicitly) marked inline
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fmerge\-all\-constants\f[B]\f[R]
.IP
.nf
\f[C]
Allow merging of constants
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fnative\f[B]\f[R]
.IP
.nf
\f[C]
Compile and link for x86\-64
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fno\-cfl\-aa\f[B]\f[R]
.IP
.nf
\f[C]
Disable CFL Alias Analysis
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fno\-elide\-constructors\f[B]\f[R]
.IP
.nf
\f[C]
Disable C++ copy constructor elision
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fno\-lto\f[B]\f[R]
.IP
.nf
\f[C]
Disable LTO
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fno\-post\-pass\f[B]\f[R]
.IP
.nf
\f[C]
Don\[aq]t run post processing pass
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fno\-stack\-first\f[B]\f[R]
.IP
.nf
\f[C]
Don\[aq]t set the stack first in memory
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fquery\f[B]\f[R]
.IP
.nf
\f[C]
Produce binaries for wasmql
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fquery\-client\f[B]\f[R]
.IP
.nf
\f[C]
Produce binaries for wasmql
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fquery\-server\f[B]\f[R]
.IP
.nf
\f[C]
Produce binaries for wasmql
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstack\-protector\f[B]\f[R]
.IP
.nf
\f[C]
Enable stack protectors for functions potentially vulnerable to stack smashing
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstack\-protector\-all\f[B]\f[R]
.IP
.nf
\f[C]
Force the usage of stack protectors for all functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstack\-protector\-strong\f[B]\f[R]
.IP
.nf
\f[C]
Use a strong heuristic to apply stack protectors to functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstrict\-enums\f[B]\f[R]
.IP
.nf
\f[C]
Enable optimizations based on the strict definition of an enum\[aq]s value range
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstrict\-return\f[B]\f[R]
.IP
.nf
\f[C]
Always treat control flow paths that fall off the end of a non\-void function as unreachable
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fstrict\-vtable\-pointers\f[B]\f[R]
.IP
.nf
\f[C]
Enable optimizations based on the strict rules for overwriting polymorphic C++ objects
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-fuse\-main\f[B]\f[R]
.IP
.nf
\f[C]
Use main as entry
\f[R]
.fi
.PP
\f[B]\f[CB]\-h\f[B]\f[R]
.IP
.nf
\f[C]
Alias for \-\-help
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-help\f[B]\f[R]
.IP
.nf
\f[C]
Display available options (\-\-help\-hidden for more)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-help\-hidden\f[B]\f[R]
.IP
.nf
\f[C]
Display all available options
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-help\-list\f[B]\f[R]
.IP
.nf
\f[C]
Display list of available options (\-\-help\-list\-hidden for more)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-help\-list\-hidden\f[B]\f[R]
.IP
.nf
\f[C]
Display list of all available options
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-imports=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Set the file for cdt.imports
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-include=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Include file before parsing
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-info\-output\-file=<filename>\f[B]\f[R]
.IP
.nf
\f[C]
File to append \-stats and \-timer output to
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-isysroot=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Set the system root directory (usually /)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-isystem=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Add directory to SYSTEM include search path
\f[R]
.fi
.PP
\f[B]\f[CB]\-l=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Root name of library to link
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-lto\-opt=<string>\f[B]\f[R]
.IP
.nf
\f[C]
LTO Optimization level (O0\-O3)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-mllvm=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Pass arguments to llvm
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-no\-abigen\f[B]\f[R]
.IP
.nf
\f[C]
Disable ABI file generation
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-no\-missing\-ricardian\-clause\f[B]\f[R]
.IP
.nf
\f[C]
Disable warnings for missing Ricardian clauses
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-non\-global\-value\-max\-name\-size=<uint>\f[B]\f[R]
.IP
.nf
\f[C]
Maximum size for the name of non\-global values
\f[R]
.fi
.PP
\f[B]\f[CB]\-o=<file>\f[B]\f[R]
.IP
.nf
\f[C]
Write output to <file>
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-only\-export=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Export only this symbol
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-opt\-bisect\-limit=<int>\f[B]\f[R]
.IP
.nf
\f[C]
Maximum optimization to perform
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-pass\-remarks=<pattern>\f[B]\f[R]
.IP
.nf
\f[C]
Enable optimization remarks from passes whose name match the given regular expression
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-pass\-remarks\-analysis=<pattern>\f[B]\f[R]
.IP
.nf
\f[C]
Enable optimization analysis remarks from passes whose name match the given regular expression
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-pass\-remarks\-missed=<pattern>\f[B]\f[R]
.IP
.nf
\f[C]
Enable missed optimization remarks from passes whose name match the given regular expression
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-print\-all\-options\f[B]\f[R]
.IP
.nf
\f[C]
Print all option values after command line parsing
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-print\-options\f[B]\f[R]
.IP
.nf
\f[C]
Print non\-default options after command line parsing
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-remarks\-yaml\-string\-table\f[B]\f[R]
.IP
.nf
\f[C]
Enable the usage of a string table with YAML remarks
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-rng\-seed=<seed>\f[B]\f[R]
.IP
.nf
\f[C]
Seed for the random number generator
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-shared\f[B]\f[R]
.IP
.nf
\f[C]
Make shared object native library
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-stack\-canary\f[B]\f[R]
.IP
.nf
\f[C]
Stack canary for non stack first layouts
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-stack\-size=<int>\f[B]\f[R]
.IP
.nf
\f[C]
Specifies the maximum stack size for the contract. Defaults to 8192 bytes
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-static\-func\-full\-module\-prefix\f[B]\f[R]
.IP
.nf
\f[C]
Use full module build paths in the profile counter names for static functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-static\-func\-strip\-dirname\-prefix=<uint>\f[B]\f[R]
.IP
.nf
\f[C]
Strip specified level of directory name from source path in the profile counter name for static functions
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-stats\f[B]\f[R]
.IP
.nf
\f[C]
Enable statistics output from program (available with Asserts)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-stats\-json\f[B]\f[R]
.IP
.nf
\f[C]
Display statistics as json data
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-std=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Language standard to compile for
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-switch\-inst\-prof\-update\-wrapper\-strict\f[B]\f[R]
.IP
.nf
\f[C]
Assert that prof branch_weights metadata is valid when creating an instance of SwitchInstProfUpdateWrapper
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-sysroot=<string>\f[B]\f[R]
.IP
.nf
\f[C]
Set the system root directory
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-time\-trace\-granularity=<uint>\f[B]\f[R]
.IP
.nf
\f[C]
Minimum time granularity (in microseconds) traced by time profiler
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-track\-memory\f[B]\f[R]
.IP
.nf
\f[C]
Enable \-time\-passes memory tracking (this may be slow)
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-use\-dbg\-addr\f[B]\f[R]
.IP
.nf
\f[C]
Use llvm.dbg.addr for all local variables
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-use\-freeing\-malloc\f[B]\f[R]
.IP
.nf
\f[C]
Set the malloc implementation to the old freeing malloc
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-use\-rt\f[B]\f[R]
.IP
.nf
\f[C]
Use software compiler\-rt
\f[R]
.fi
.PP
\f[B]\f[CB]\-v\f[B]\f[R]
.IP
.nf
\f[C]
Show commands to run and use verbose output
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-version\f[B]\f[R]
.IP
.nf
\f[C]
Display the version of this program
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-view\-background\f[B]\f[R]
.IP
.nf
\f[C]
Execute graph viewer in the background. Creates tmp file litter
\f[R]
.fi
.PP
\f[B]\f[CB]\-w\f[B]\f[R]
.IP
.nf
\f[C]
Suppress all warnings
\f[R]
.fi
.PP
\f[B]\f[CB]\-\-warn\-action\-read\-only\f[B]\f[R]
.IP
.nf
\f[C]
Issue a warning if a read\-only action uses a write API and continue compilation
\f[R]
.fi
.SH BUGS
.PP
Please submit bug reports online at
https://github.com/AntelopeIO/cdt/issues
.SH SEE ALSO
.PP
For more details consult the full documentation and sources
https://github.com/AntelopeIO/cdt