Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
hare-build(1)		     General Commands Manual		   hare-build(1)

NAME
     hare build - compile a Hare program or module

SYNOPSIS
     hare build [-hFqv]
     [-a arch]
     [-D ident[:type]=value]
     [-j jobs]
     [-L libdir]
     [-l libname]
     [-N namespace]
     [-o path]
     [-R]
     [-T tagset]
     [-t type]
     [path]

DESCRIPTION
     hare  build  compiles a Hare program or module. The path argument is a path
     to a Hare source file or to a directory which contains a Hare  module  (see
     hare-module(5)). If no path is given, the Hare module contained in the cur-
     rent working directory is built.

OPTIONS
     -h
	 Print the help text.

     -F
	 Build for freestanding (non-hosted) environment. See FREESTANDING ENVI-
	 RONMENT.

     -q
	 Outside of errors, don't write anything to stdout while building.

     -v
	 Enable verbose logging. Specify twice to increase verbosity.

     -a arch
	 Set the desired architecture for cross-compiling. See ARCHITECTURES for
	 supported architecture names.

     -D ident[:type]=value
	 Define a constant in the type system. ident is parsed as a Hare identi-
	 fier (e.g. "foo::bar::baz"), type as a Hare type (e.g. "str" or "struct
	 {  x: int, y: int }"), and value as a Hare expression (e.g. "42"). Take
	 care to address any necessary escaping to avoid conflicts between  your
	 shell syntax and Hare syntax.

     -j jobs
	 Set  the  maximum number of jobs to execute in parallel. The default is
	 the number of processors available on the host.

     -L libdir
	 Add a directory to the linker library search path.

     -l libname
	 Link with the named system library. The name is passed directly to  the
	 linker.  Linking  with  any library will also link with libc(7) and add
	 the +libc tag to the default build tags (see BUILD  TAGS  in  hare-mod-
	 ule(5)).

     -N namespace
	 Override the namespace for the module.

     -o path
	 Set  the  output  file  to the given path. Setting the path to - causes
	 output to be written to stdout.

     -R
	 Build in release mode. In debug mode (the default), the debug::  module
	 is  imported  as a dependency, which automatically installs a number of
	 runtime debugging features in your executable. See this module's  docu-
	 mentation for details on these features.

     -T tagset
	 Set or unset build tags. See BUILD TAGS in hare-module(5).

     -t type
	 Set  the  build type. type should be one of s, o, or bin, for assembly,
	 compiled object, or compiled binary, respectively.  The  default  build
	 type is compiled binary.

ARCHITECTURES
     The  -a flag is used for cross-compilation to a target architecture differ-
     ent from the host architecture. The following architectures  are  currently
     supported:

     *	 aarch64
     *	 riscv64
     *	 x86_64

     The  system usually provides reasonable defaults for the AR, AS, LD, and CC
     tools based on the desired target. However, you may wish to set these vari-
     ables yourself to control the cross toolchain in use.

FREESTANDING ENVIRONMENT
     If run with -F, hare build will target a freestanding environment. This has
     the following effects:

     *	 No constraints are imposed on the signature of "main"
     *	 Specifying external libraries with -l will not automatically:
	 *   Link with libc (add -lc manually if required)
	 *   Add the +libc flag (add -T+libc manually if required)
	 *   Use the C compiler for linking (use LD=cc if required)

ENVIRONMENT
     The following environment variables affect hare build's execution:

     HARECACHE	   The	  path	  to	the    build	cache.	  Defaults    to
		   $XDG_CACHE_HOME/hare,  or  ~/.cache/hare  if  $XDG_CACHE_HOME
		   isn't set.
     HAREPATH	   The list of directories to search for module dependencies in.
		   See hare-module(5).
     NO_COLOR	   Disables all color output when set to a non-empty string.
     HAREC_COLOR   Disables color output for harec when set  to  0,  enables  it
		   when set to any other value. This overrides NO_COLOR.
     HAREC	   Name of the harec command to use.
     HARECFLAGS    Additional flags to pass to harec.
     QBE	   Name of the qbe command to use.
     QBEFLAGS	   Additional flags to pass to qbe.
     AR 	   Name of the ar(1) command to use.
     ARFLAGS	   Additional flags to pass to ar(1).
     AS 	   Name of the as(1) command to use.
     ASFLAGS	   Additional flags to pass to as(1).
     LD 	   Name of the ld(1) command to use.
     LDLINKFLAGS   Additional flags to pass to ld(1).
     CC 	   Name  of  the  cc(1) command to use when linking external li-
		   braries.
     LDFLAGS	   Additional linker flags to pass to cc(1).

SEE ALSO
     hare-run(1), hare-test(1), hare-module(5), ar(1), as(1), cc(1), ld(1)

				   2026-08-27			   hare-build(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hare-build&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help