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

FreeBSD Manual Pages

  
 
  

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 mod-
       ule (see	hare-module(5)). If no path is given,  the  Hare  module  con-
       tained in the current working directory is built.

OPTIONS
       -h
	   Print the help text.

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

       -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
	   identifier  (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-module(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 documentation 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	assem-
	   bly,	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 dif-
       ferent from the host architecture. The following	architectures are cur-
       rently 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 variables 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
		     libraries.
       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)

				  2025-04-14			 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+14.3.quarterly>

home | help