All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yoshinori K. Okuji" <okuji@enbug.org>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: configure host and target
Date: Wed, 31 May 2006 03:02:20 +0200	[thread overview]
Message-ID: <200605310302.20147.okuji@enbug.org> (raw)
In-Reply-To: <200605262104.55720.okuji@enbug.org>

I describe the new build system a bit here. Maybe this should be written in 
somewhere else (such as INSTALL) as well...

GRUB uses "target" and "host". "build" is not explicitly used. A target 
represents a native environment where GRUB runs. In reality, the target type 
affects:

- the cpu type

- the executable format (for now, must be ELF)

The vendor and the operating system in a target type does not really matter, 
except for the choice of programs and supported executable formats, because 
you should specify a platform (such as firmware) by --with-platform to 
configure.

A host type specifies an environment where utilities are executed. Unless you 
are cross-compiling GRUB, you do not have to care very much.

The usage of compiler flags is the following:

- CC, CFLAGS, CPPFLAGS, ASFLAGS and LDFLAGS are used for the host type.

- If you need to specify non-standard locations for header files or libraries, 
you should specify CPPFLAGS or LDFLAGS.

- If you cross-compile GRUB, you can set CC explicitly, but optionally.

- You do not need to struggle with CFLAGS or ASFLAGS. This is required only if 
you intend to debug GRUB, or you want to optimize GRUB differently for an 
unknown reason.

- TARGET_CC, TARGET_CFLAGS, TARGET_CPPFLAGS, TARGET_ASFLAGS and TARGET_LDFLAGS 
are used for the target type.

- You might need to specify TARGET_CC explicitly, if you cross-compile GRUB.

- You should not touch other TARGET_* variables, unless you understand what 
you are doing.

Besides these flags, GRUB uses target-specific flags (here, "target" means a 
Makefile target, but not a target type in autoconf). This allows us to apply 
flags specific to each object. This design is based on automake, since the 
makefile generator in GRUB was influenced by automake significantly.

For example, when compiling normal.mod, normal_mod_CFLAGS, normal_mod_LDFLAGS, 
etc. are applied as well as TARGET_CFLAGS, TARGET_LDFLAGS, etc. This part is 
important only for developers, as the user is not supposed to tweak these 
target-specific flags manually.

Okuji



  parent reply	other threads:[~2006-05-31  1:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-26 19:04 configure host and target Yoshinori K. Okuji
2006-05-29 17:57 ` Thomas Schwinge
2006-05-31  1:02 ` Yoshinori K. Okuji [this message]
2006-05-31  8:59   ` Tomáš Ebenlendr
2006-06-01 15:43     ` Yoshinori K. Okuji

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200605310302.20147.okuji@enbug.org \
    --to=okuji@enbug.org \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.