diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-04-20 15:44:41 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-04-20 15:44:41 +0200 |
commit | 50104cc32a498f7517a51c8dc93106c51c7a54b4 (patch) | |
tree | 47af80be259cc7c45d0eaec7d42e61fa38c8e4fb /doc/code.html | |
parent | c072558b90f1bbedc2022b0f30c8b1ac4712538e (diff) | |
download | golang-50104cc32a498f7517a51c8dc93106c51c7a54b4.tar.gz |
Imported Upstream version 2011.03.07.1upstream/2011.03.07.1
Diffstat (limited to 'doc/code.html')
-rw-r--r-- | doc/code.html | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/doc/code.html b/doc/code.html index 9236cf263..cdc60b071 100644 --- a/doc/code.html +++ b/doc/code.html @@ -229,7 +229,7 @@ run <code>gotest one_test.go</code>. <p> If your change affects performance, add a <code>Benchmark</code> function (see the <a href="/cmd/gotest/">gotest command documentation</a>) -and run it using <code>gotest -benchmarks=.</code>. +and run it using <code>gotest -test.bench=.</code>. </p> <p> @@ -322,3 +322,47 @@ reported. See the <a href="/cmd/gotest/">gotest documentation</a> and the <a href="/pkg/testing/">testing package</a> for more detail. </p> + +<h2 id="arch_os_specific">Architecture- and operating system-specific code</h2> + +<p>First, a disclaimer: very few Go packages should need to know about the +hardware and operating system they run on. In the vast majority of cases the +language and standard library handle most portability issues. This section is +a guide for experienced systems programmers who have a good reason to write +platform-specific code, such as assembly-language support for fast +trigonometric functions or code that implements a common interface above +different operating systems.</p> + +<p>To compile such code, use the <code>$GOOS</code> and <code>$GOARCH</code> +<a href="/doc/install.html#environment">environment variables</a> in your +source file names and <code>Makefile</code>.</p> + +<p>For example, this <code>Makefile</code> describes a package that builds on +different operating systems by parameterizing the file name with +<code>$GOOS</code>.</p> + +<pre> +include $(GOROOT)/src/Make.inc + +TARG=mypackage +GOFILES=\ + my.go\ + my_$(GOOS).go\ + +include $(GOROOT)/src/Make.pkg +</pre> + +<p>The OS-specific code goes in <code>my_linux.go</code>, +<code>my_darwin.go</code>, and so on.</p> + +<p>If you follow these conventional parameterizations, tools such as +<a href="/cmd/goinstall/">goinstall</a> will work seamlessly with your package: +</p> + +<pre> +my_$(GOOS).go +my_$(GOARCH).go +my_$(GOOS)_$(GOARCH).go +</pre> + +<p>The same holds for <code>.s</code> (assembly) files.</p> |