Patchwork libgo patch committed: Simplify build

login
register
mail settings
Submitter Ian Taylor
Date March 11, 2011, 1 a.m.
Message ID <mcr7hc6eajj.fsf@google.com>
Download mbox | patch
Permalink /patch/86349/
State New
Headers show

Comments

Ian Taylor - March 11, 2011, 1 a.m.
If I just add a few files to the inputs to libgo.la, I can make all the
input files be .lo files rather than .la files.  That turns out to be
better anyhow, because using .la files causes libtool to put .o files
compiled with -fPIC into the .a file, which means that statically linked
programs are less efficient.  This patch to libgo/Makefile.am removes
all the input .la files and just uses the .lo files directly.  This also
speeds up building libgo.  Bootstrapped and ran Go testsuite on
x86_64-unknown-linux-gnu.  Committed to mainline.

Ian

Patch

diff -r 01363ca33b0d libgo/Makefile.am
--- a/libgo/Makefile.am	Wed Mar 09 16:49:42 2011 -0800
+++ b/libgo/Makefile.am	Thu Mar 10 16:52:41 2011 -0800
@@ -796,6 +796,8 @@ 
 go_syslog_files = \
 	go/syslog/syslog.go \
 	$(go_syslog_file)
+go_syslog_c_files = \
+	go/syslog/syslog_c.c
 
 go_tabwriter_files = \
 	go/tabwriter/tabwriter.go
@@ -1253,138 +1255,142 @@ 
 	syscalls/errno.c
 
 if LIBGO_IS_LINUX
-# os_lib_inotify_la = os/libinotify.la
-os_lib_inotify_la =
+# os_lib_inotify_lo = os/inotify.lo
+os_lib_inotify_lo =
 else
-os_lib_inotify_la =
+os_lib_inotify_lo =
 endif
 
 libgo_go_objs = \
-	asn1/libasn1.la \
-	big/libbig.la \
-	bufio/libbufio.la \
-	bytes/libbytes.la \
-	cmath/libcmath.la \
-	ebnf/libebnf.la \
-	exec/libexec.la \
-	expvar/libexpvar.la \
-	flag/libflag.la \
-	fmt/libfmt.la \
-	gob/libgob.la \
-	hash/libhash.la \
-	html/libhtml.la \
-	http/libhttp.la \
-	image/libimage.la \
-	io/libio.la \
-	json/libjson.la \
-	log/liblog.la \
-	math/libmath.la \
-	mime/libmime.la \
-	net/libnet.la \
-	netchan/libnetchan.la \
-	os/libos.la \
-	patch/libpatch.la \
-	path/libpath.la \
-	rand/librand.la \
-	reflect/libreflect.la \
-	regexp/libregexp.la \
-	rpc/librpc.la \
-	runtime/libruntime.la \
-	scanner/libscanner.la \
-	smtp/libsmtp.la \
-	sort/libsort.la \
-	strconv/libstrconv.la \
-	strings/libstrings.la \
-	sync/libsync.la \
-	syslog/libsyslog.la \
-	tabwriter/libtabwriter.la \
-	template/libtemplate.la \
-	time/libtime.la \
-	try/libtry.la \
-	unicode/libunicode.la \
-	utf16/libutf16.la \
-	utf8/libutf8.la \
-	websocket/libwebsocket.la \
-	xml/libxml.la \
-	archive/libtar.la \
-	archive/libzip.la \
-	compress/libflate.la \
-	compress/libgzip.la \
-	compress/libzlib.la \
-	container/libheap.la \
-	container/liblist.la \
-	container/libring.la \
-	container/libvector.la \
-	crypto/libaes.la \
-	crypto/libblock.la \
-	crypto/libblowfish.la \
-	crypto/libcast5.la \
-	crypto/libcipher.la \
-	crypto/libelliptic.la \
-	crypto/libhmac.la \
-	crypto/libmd4.la \
-	crypto/libmd5.la \
-	crypto/libocsp.la \
-	crypto/librand.la \
-	crypto/librc4.la \
-	crypto/libripemd160.la \
-	crypto/librsa.la \
-	crypto/libsha1.la \
-	crypto/libsha256.la \
-	crypto/libsha512.la \
-	crypto/libsubtle.la \
-	crypto/libtls.la \
-	crypto/libtwofish.la \
-	crypto/libx509.la \
-	crypto/libxtea.la \
-	crypto/openpgp/libarmor.la \
-	crypto/openpgp/liberror.la \
-	crypto/openpgp/libs2k.la \
-	debug/libdwarf.la \
-	debug/libelf.la \
-	debug/libgosym.la \
-	debug/libmacho.la \
-	debug/libpe.la \
-	debug/libproc.la \
-	encoding/libascii85.la \
-	encoding/libbase32.la \
-	encoding/libbase64.la \
-	encoding/libbinary.la \
-	encoding/libgit85.la \
-	encoding/libhex.la \
-	encoding/libline.la \
-	encoding/libpem.la \
-	exp/libdatafmt.la \
-	exp/libdraw.la \
-	exp/libeval.la \
-	go/libast.la \
-	go/libdoc.la \
-	go/libparser.la \
-	go/libprinter.la \
-	go/libscanner.la \
-	go/libtoken.la \
-	go/libtypechecker.la \
-	hash/libadler32.la \
-	hash/libcrc32.la \
-	hash/libcrc64.la \
-	http/libpprof.la \
-	image/libjpeg.la \
-	image/libpng.la \
-	index/libsuffixarray.la \
-	io/libioutil.la \
-	mime/libmultipart.la \
-	net/libdict.la \
-	net/libtextproto.la \
-	$(os_lib_inotify_la) \
-	os/libsignal.la \
-	rpc/libjsonrpc.la \
-	runtime/libdebug.la \
-	runtime/libpprof.la \
-	syscalls/libsyscall.la \
-	testing/libtesting.la \
-	testing/libiotest.la \
-	testing/libquick.la \
-	testing/libscript.la
+	asn1/asn1.lo \
+	big/big.lo \
+	bufio/bufio.lo \
+	bytes/bytes.lo \
+	bytes/index.lo \
+	cmath/cmath.lo \
+	ebnf/ebnf.lo \
+	exec/exec.lo \
+	expvar/expvar.lo \
+	flag/flag.lo \
+	fmt/fmt.lo \
+	gob/gob.lo \
+	hash/hash.lo \
+	html/html.lo \
+	http/http.lo \
+	image/image.lo \
+	io/io.lo \
+	json/json.lo \
+	log/log.lo \
+	math/math.lo \
+	mime/mime.lo \
+	net/net.lo \
+	netchan/netchan.lo \
+	os/os.lo \
+	patch/patch.lo \
+	path/path.lo \
+	rand/rand.lo \
+	reflect/reflect.lo \
+	regexp/regexp.lo \
+	rpc/rpc.lo \
+	runtime/runtime.lo \
+	scanner/scanner.lo \
+	smtp/smtp.lo \
+	sort/sort.lo \
+	strconv/strconv.lo \
+	strings/strings.lo \
+	sync/mutex.lo \
+	sync/cas.lo \
+	syslog/syslog.lo \
+	syslog/syslog_c.lo \
+	tabwriter/tabwriter.lo \
+	template/template.lo \
+	time/time.lo \
+	try/try.lo \
+	unicode/unicode.lo \
+	utf16/utf16.lo \
+	utf8/utf8.lo \
+	websocket/websocket.lo \
+	xml/xml.lo \
+	archive/tar.lo \
+	archive/zip.lo \
+	compress/flate.lo \
+	compress/gzip.lo \
+	compress/zlib.lo \
+	container/heap.lo \
+	container/list.lo \
+	container/ring.lo \
+	container/vector.lo \
+	crypto/aes.lo \
+	crypto/block.lo \
+	crypto/blowfish.lo \
+	crypto/cast5.lo \
+	crypto/cipher.lo \
+	crypto/elliptic.lo \
+	crypto/hmac.lo \
+	crypto/md4.lo \
+	crypto/md5.lo \
+	crypto/ocsp.lo \
+	crypto/rand.lo \
+	crypto/rc4.lo \
+	crypto/ripemd160.lo \
+	crypto/rsa.lo \
+	crypto/sha1.lo \
+	crypto/sha256.lo \
+	crypto/sha512.lo \
+	crypto/subtle.lo \
+	crypto/tls.lo \
+	crypto/twofish.lo \
+	crypto/x509.lo \
+	crypto/xtea.lo \
+	crypto/openpgp/armor.lo \
+	crypto/openpgp/error.lo \
+	crypto/openpgp/s2k.lo \
+	debug/dwarf.lo \
+	debug/elf.lo \
+	debug/gosym.lo \
+	debug/macho.lo \
+	debug/pe.lo \
+	debug/proc.lo \
+	encoding/ascii85.lo \
+	encoding/base32.lo \
+	encoding/base64.lo \
+	encoding/binary.lo \
+	encoding/git85.lo \
+	encoding/hex.lo \
+	encoding/line.lo \
+	encoding/pem.lo \
+	exp/datafmt.lo \
+	exp/draw.lo \
+	exp/eval.lo \
+	go/ast.lo \
+	go/doc.lo \
+	go/parser.lo \
+	go/printer.lo \
+	go/scanner.lo \
+	go/token.lo \
+	go/typechecker.lo \
+	hash/adler32.lo \
+	hash/crc32.lo \
+	hash/crc64.lo \
+	http/pprof.lo \
+	image/jpeg.lo \
+	image/png.lo \
+	index/suffixarray.lo \
+	io/ioutil.lo \
+	mime/multipart.lo \
+	net/dict.lo \
+	net/textproto.lo \
+	$(os_lib_inotify_lo) \
+	os/signal.lo \
+	rpc/jsonrpc.lo \
+	runtime/debug.lo \
+	runtime/pprof.lo \
+	syscalls/syscall.lo \
+	syscalls/errno.lo \
+	testing/testing.lo \
+	testing/iotest.lo \
+	testing/quick.lo \
+	testing/script.lo
 
 libgo_la_SOURCES = $(runtime_files)
 
@@ -1406,18 +1412,12 @@ 
 GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \
 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_GOCFLAGS) $(LTLDFLAGS) -o $@
 
-# Build a package.  This builds a .o and a .lo.
+# Build the .go files for a package, generating a .lo file.
 BUILDPACKAGE = \
-	rm -f `echo $@ | sed -e 's|/lib|/|' -e 's/\.a/.gox/'`; \
-	test -d $(@D) || $(MKDIR_P) $(@D); \
-	rm -f $@; \
+	$(MKDIR_P) $(@D); \
 	files=`echo $^ | sed -e 's/[^ ]*\.gox//g'`; \
 	$(LTGOCOMPILE) -I . -c -fgo-prefix="libgo_$(@D)" -o $@ $$files
 
-# Build a .la file from a .lo file.
-.lo.la:
-	$(LINK) $<
-
 if LIBGO_IS_RTEMS
 use_dejagnu = yes
 else
@@ -1467,688 +1467,528 @@ 
 	$(toolexeclibruntime_DATA) \
 	$(toolexeclibtesting_DATA)
 
-asn1/libasn1.$(OBJEXT): $(go_asn1_files) bytes.gox fmt.gox io.gox os.gox \
-		reflect.gox strconv.gox strings.gox time.gox
+asn1/asn1.lo: $(go_asn1_files) bytes.gox fmt.gox io.gox os.gox reflect.gox \
+		strconv.gox strings.gox time.gox
 	$(BUILDPACKAGE)
-asn1/libasn1.lo: asn1/libasn1.$(OBJEXT)
-asn1/libasn1.la: asn1/libasn1.lo
 asn1/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: asn1/check
 
-big/libbig.$(OBJEXT): $(go_big_files) fmt.gox rand.gox strings.gox
+big/big.lo: $(go_big_files) fmt.gox rand.gox strings.gox
 	$(BUILDPACKAGE)
-big/libbig.lo: big/libbig.$(OBJEXT)
-big/libbig.la: big/libbig.lo
 big/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: big/check
 
-bufio/libbufio.$(OBJEXT): $(go_bufio_files) bytes.gox io.gox os.gox \
-		strconv.gox utf8.gox
+bufio/bufio.lo: $(go_bufio_files) bytes.gox io.gox os.gox strconv.gox utf8.gox
 	$(BUILDPACKAGE)
-bufio/libbufio.lo: bufio/libbufio.$(OBJEXT)
-bufio/libbufio.la: bufio/libbufio.lo
 bufio/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: bufio/check
 
-bytes/bytes.$(OBJEXT): $(go_bytes_files) $(go_bytes_c_files) io.gox os.gox \
-		unicode.gox utf8.gox
-	test -d bytes || $(MKDIR_P) bytes
-	$(LTGOCOMPILE) -I . -c -o bytes/bytes.$(OBJEXT) -fgo-prefix=libgo_bytes $(srcdir)/go/bytes/buffer.go $(srcdir)/go/bytes/bytes.go $(srcdir)/go/bytes/bytes_decl.go
-bytes/index.$(OBJEXT): go/bytes/indexbyte.c bytes/bytes.$(OBJEXT)
-	$(LTCOMPILE) -c -o bytes/index.$(OBJEXT) $(srcdir)/go/bytes/indexbyte.c
-bytes/libbytes.la: bytes/bytes.$(OBJEXT) bytes/index.$(OBJEXT)
-	$(LINK) bytes/bytes.lo bytes/index.lo
+bytes/bytes.lo: $(go_bytes_files) io.gox os.gox unicode.gox utf8.gox
+	$(BUILDPACKAGE)
+bytes/index.lo: $(go_bytes_c_files) bytes/bytes.lo
+	$(LTCOMPILE) -c -o bytes/index.lo $(srcdir)/go/bytes/indexbyte.c
 bytes/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: bytes/check
 
-cmath/libcmath.$(OBJEXT): $(go_cmath_files) math.gox
+cmath/cmath.lo: $(go_cmath_files) math.gox
 	$(BUILDPACKAGE)
-cmath/libcmath.lo: cmath/libcmath.$(OBJEXT)
-cmath/libcmath.la: cmath/libcmath.lo
 cmath/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: cmath/check
 
-ebnf/libebnf.$(OBJEXT): $(go_ebnf_files) container/vector.gox go/scanner.gox \
+ebnf/ebnf.lo: $(go_ebnf_files) container/vector.gox go/scanner.gox \
 		go/token.gox os.gox strconv.gox unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-ebnf/libebnf.lo: ebnf/libebnf.$(OBJEXT)
-ebnf/libebnf.la: ebnf/libebnf.lo
 ebnf/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: ebnf/check
 
-exec/libexec.$(OBJEXT): $(go_exec_files) os.gox strings.gox
+exec/exec.lo: $(go_exec_files) os.gox strings.gox
 	$(BUILDPACKAGE)
-exec/libexec.lo: exec/libexec.$(OBJEXT)
-exec/libexec.la: exec/libexec.lo
 exec/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: exec/check
 
-expvar/libexpvar.$(OBJEXT): $(go_expvar_files) bytes.gox fmt.gox http.gox \
-		json.gox log.gox os.gox runtime.gox strconv.gox sync.gox
+expvar/expvar.lo: $(go_expvar_files) bytes.gox fmt.gox http.gox json.gox \
+		log.gox os.gox runtime.gox strconv.gox sync.gox
 	$(BUILDPACKAGE)
-expvar/libexpvar.lo: expvar/libexpvar.$(OBJEXT)
-expvar/libexpvar.la: expvar/libexpvar.lo
 expvar/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: expvar/check
 
-flag/libflag.$(OBJEXT): $(go_flag_files) fmt.gox os.gox strconv.gox
+flag/flag.lo: $(go_flag_files) fmt.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-flag/libflag.lo: flag/libflag.$(OBJEXT)
-flag/libflag.la: flag/libflag.lo
 flag/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: flag/check
 
-fmt/libfmt.$(OBJEXT): $(go_fmt_files) bytes.gox io.gox os.gox reflect.gox \
-		strconv.gox strings.gox unicode.gox utf8.gox
+fmt/fmt.lo: $(go_fmt_files) bytes.gox io.gox os.gox reflect.gox strconv.gox \
+		strings.gox unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-fmt/libfmt.lo: fmt/libfmt.$(OBJEXT)
-fmt/libfmt.la: fmt/libfmt.lo
 fmt/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: fmt/check
 
-gob/libgob.$(OBJEXT): $(go_gob_files) bytes.gox fmt.gox io.gox math.gox \
-		os.gox reflect.gox runtime.gox strings.gox sync.gox \
-		unicode.gox utf8.gox
+gob/gob.lo: $(go_gob_files) bytes.gox fmt.gox io.gox math.gox os.gox \
+		reflect.gox runtime.gox strings.gox sync.gox unicode.gox \
+		utf8.gox
 	$(BUILDPACKAGE)
-gob/libgob.lo: gob/libgob.$(OBJEXT)
-gob/libgob.la: gob/libgob.lo
 gob/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: gob/check
 
-hash/libhash.$(OBJEXT): $(go_hash_files) io.gox
+hash/hash.lo: $(go_hash_files) io.gox
 	$(BUILDPACKAGE)
-hash/libhash.lo: hash/libhash.$(OBJEXT)
-hash/libhash.la: hash/libhash.lo
 hash/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: hash/check
 
-html/libhtml.$(OBJEXT): $(go_html_files) bytes.gox io.gox os.gox strconv.gox \
-		strings.gox utf8.gox
+html/html.lo: $(go_html_files) bytes.gox io.gox os.gox strconv.gox strings.gox \
+		utf8.gox
 	$(BUILDPACKAGE)
-html/libhtml.lo: html/libhtml.$(OBJEXT)
-html/libhtml.la: html/libhtml.lo
 html/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: html/check
 
-http/libhttp.$(OBJEXT): $(go_http_files) bufio.gox bytes.gox \
-		container/list.gox container/vector.gox crypto/rand.gox \
-		crypto/tls.gox encoding/base64.gox fmt.gox io.gox \
-		io/ioutil.gox log.gox mime.gox mime/multipart.gox net.gox \
-		os.gox path.gox sort.gox strconv.gox strings.gox sync.gox \
-		time.gox utf8.gox
+http/http.lo: $(go_http_files) bufio.gox bytes.gox container/list.gox \
+		container/vector.gox crypto/rand.gox crypto/tls.gox \
+		encoding/base64.gox fmt.gox io.gox io/ioutil.gox log.gox \
+		mime.gox mime/multipart.gox net.gox os.gox path.gox sort.gox \
+		strconv.gox strings.gox sync.gox time.gox utf8.gox
 	$(BUILDPACKAGE)
-http/libhttp.lo: http/libhttp.$(OBJEXT)
-http/libhttp.la: http/libhttp.lo
 http/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: http/check
 
-image/libimage.$(OBJEXT): $(go_image_files) bufio.gox io.gox os.gox strconv.gox
+image/image.lo: $(go_image_files) bufio.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-image/libimage.lo: image/libimage.$(OBJEXT)
-image/libimage.la: image/libimage.lo
 image/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: image/check
 
-io/libio.$(OBJEXT): $(go_io_files) os.gox runtime.gox sync.gox
+io/io.lo: $(go_io_files) os.gox runtime.gox sync.gox
 	$(BUILDPACKAGE)
-io/libio.lo: io/libio.$(OBJEXT)
-io/libio.la: io/libio.lo
 io/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: io/check
 
-json/libjson.$(OBJEXT): $(go_json_files) bytes.gox container/vector.gox \
-		fmt.gox io.gox math.gox os.gox reflect.gox runtime.gox \
-		strconv.gox strings.gox unicode.gox utf16.gox utf8.gox
+json/json.lo: $(go_json_files) bytes.gox container/vector.gox fmt.gox io.gox \
+		math.gox os.gox reflect.gox runtime.gox strconv.gox \
+		strings.gox unicode.gox utf16.gox utf8.gox
 	$(BUILDPACKAGE)
-json/libjson.lo: json/libjson.$(OBJEXT)
-json/libjson.la: json/libjson.lo
 json/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: json/check
 
-log/liblog.$(OBJEXT): $(go_log_files) bytes.gox fmt.gox io.gox runtime.gox \
-		os.gox sync.gox time.gox
+log/log.lo: $(go_log_files) bytes.gox fmt.gox io.gox runtime.gox os.gox \
+		sync.gox time.gox
 	$(BUILDPACKAGE)
-log/liblog.lo: log/liblog.$(OBJEXT)
-log/liblog.la: log/liblog.lo
 log/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: log/check
 
-math/libmath.$(OBJEXT): $(go_math_files)
+math/math.lo: $(go_math_files)
 	$(BUILDPACKAGE)
-math/libmath.lo: math/libmath.$(OBJEXT)
-math/libmath.la: math/libmath.lo
 math/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: math/check
 
-mime/libmime.$(OBJEXT): $(go_mime_files) bufio.gox bytes.gox os.gox \
-		strings.gox sync.gox unicode.gox
+mime/mime.lo: $(go_mime_files) bufio.gox bytes.gox os.gox strings.gox \
+		sync.gox unicode.gox
 	$(BUILDPACKAGE)
-mime/libmime.lo: mime/libmime.$(OBJEXT)
-mime/libmime.la: mime/libmime.lo
 mime/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: mime/check
 
-net/libnet.$(OBJEXT): $(go_net_files) bytes.gox fmt.gox io.gox os.gox \
-		reflect.gox strconv.gox strings.gox sync.gox syscall.gox
+net/net.lo: $(go_net_files) bytes.gox fmt.gox io.gox os.gox reflect.gox \
+		strconv.gox strings.gox sync.gox syscall.gox
 	$(BUILDPACKAGE)
-net/libnet.lo: net/libnet.$(OBJEXT)
-net/libnet.la: net/libnet.lo
 net/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: net/check
 
-netchan/libnetchan.$(OBJEXT): $(go_netchan_files) gob.gox log.gox net.gox \
-		os.gox reflect.gox strconv.gox sync.gox time.gox
+netchan/netchan.lo: $(go_netchan_files) gob.gox log.gox net.gox os.gox \
+		reflect.gox strconv.gox sync.gox time.gox
 	$(BUILDPACKAGE)
-netchan/libnetchan.lo: netchan/libnetchan.$(OBJEXT)
-netchan/libnetchan.la: netchan/libnetchan.lo
 netchan/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: netchan/check
 
-os/libos.$(OBJEXT): $(go_os_files) sync.gox syscall.gox
+os/os.lo: $(go_os_files) sync.gox syscall.gox
 	$(BUILDPACKAGE)
-os/libos.lo: os/libos.$(OBJEXT)
-os/libos.la: os/libos.lo
 os/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: os/check
 
-patch/libpatch.$(OBJEXT): $(go_patch_files) bytes.gox compress/zlib.gox \
+patch/patch.lo: $(go_patch_files) bytes.gox compress/zlib.gox \
 		crypto/sha1.gox encoding/git85.gox fmt.gox io.gox os.gox \
 		path.gox strings.gox
 	$(BUILDPACKAGE)
-patch/libpatch.lo: patch/libpatch.$(OBJEXT)
-patch/libpatch.la: patch/libpatch.lo
 patch/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: patch/check
 
-path/libpath.$(OBJEXT): $(go_path_files) io/ioutil.gox os.gox sort.gox \
-		strings.gox utf8.gox
+path/path.lo: $(go_path_files) io/ioutil.gox os.gox sort.gox strings.gox \
+		utf8.gox
 	$(BUILDPACKAGE)
-path/libpath.lo: path/libpath.$(OBJEXT)
-path/libpath.la: path/libpath.lo
 path/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: path/check
 
-rand/librand.$(OBJEXT): $(go_rand_files) math.gox sync.gox
+rand/rand.lo: $(go_rand_files) math.gox sync.gox
 	$(BUILDPACKAGE)
-rand/librand.lo: rand/librand.$(OBJEXT)
-rand/librand.la: rand/librand.lo
 rand/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: rand/check
 
-reflect/libreflect.$(OBJEXT): $(go_reflect_files) math.gox runtime.gox \
-		strconv.gox sync.gox
+reflect/reflect.lo: $(go_reflect_files) math.gox runtime.gox strconv.gox \
+		sync.gox
 	$(BUILDPACKAGE)
-reflect/libreflect.lo: reflect/libreflect.$(OBJEXT)
-reflect/libreflect.la: reflect/libreflect.lo
 reflect/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: reflect/check
 
-regexp/libregexp.$(OBJEXT): $(go_regexp_files) bytes.gox io.gox os.gox \
-		strings.gox utf8.gox
+regexp/regexp.lo: $(go_regexp_files) bytes.gox io.gox os.gox strings.gox \
+		utf8.gox
 	$(BUILDPACKAGE)
-regexp/libregexp.lo: regexp/libregexp.$(OBJEXT)
-regexp/libregexp.la: regexp/libregexp.lo
 regexp/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: regexp/check
 
-rpc/librpc.$(OBJEXT): $(go_rpc_files) bufio.gox fmt.gox gob.gox http.gox \
-		io.gox log.gox net.gox os.gox reflect.gox sort.gox \
-		strings.gox strconv.gox sync.gox template.gox unicode.gox \
-		utf8.gox
+rpc/rpc.lo: $(go_rpc_files) bufio.gox fmt.gox gob.gox http.gox io.gox log.gox \
+		net.gox os.gox reflect.gox sort.gox strings.gox strconv.gox \
+		sync.gox template.gox unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-rpc/librpc.lo: rpc/librpc.$(OBJEXT)
-rpc/librpc.la: rpc/librpc.lo
 rpc/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: rpc/check
 
-runtime/libruntime.$(OBJEXT): $(go_runtime_files)
+runtime/runtime.lo: $(go_runtime_files)
 	$(BUILDPACKAGE)
-runtime/libruntime.lo: runtime/libruntime.$(OBJEXT)
-runtime/libruntime.la: runtime/libruntime.lo
 runtime/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: runtime/check
 
-scanner/libscanner.$(OBJEXT): $(go_scanner_files) bytes.gox fmt.gox io.gox \
-		os.gox unicode.gox utf8.gox
+scanner/scanner.lo: $(go_scanner_files) bytes.gox fmt.gox io.gox os.gox \
+		unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-scanner/libscanner.lo: scanner/libscanner.$(OBJEXT)
-scanner/libscanner.la: scanner/libscanner.lo
 scanner/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: scanner/check
 
-smtp/libsmtp.$(OBJEXT): $(go_smtp_files) crypto/tls.gox encoding/base64.gox \
-		io.gox net.gox net/textproto.gox os.gox strings.gox
+smtp/smtp.lo: $(go_smtp_files) crypto/tls.gox encoding/base64.gox io.gox \
+		net.gox net/textproto.gox os.gox strings.gox
 	$(BUILDPACKAGE)
-smtp/libsmtp.lo: smtp/libsmtp.$(OBJEXT)
-smtp/libsmtp.la: smtp/libsmtp.lo
 smtp/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: smtp/check
 
-sort/libsort.$(OBJEXT): $(go_sort_files)
+sort/sort.lo: $(go_sort_files)
 	$(BUILDPACKAGE)
-sort/libsort.lo: sort/libsort.$(OBJEXT)
-sort/libsort.la: sort/libsort.lo
 sort/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: sort/check
 
-strconv/libstrconv.$(OBJEXT): $(go_strconv_files) bytes.gox math.gox os.gox \
-		strings.gox unicode.gox utf8.gox
+strconv/strconv.lo: $(go_strconv_files) bytes.gox math.gox os.gox strings.gox \
+		unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-strconv/libstrconv.lo: strconv/libstrconv.$(OBJEXT)
-strconv/libstrconv.la: strconv/libstrconv.lo
 strconv/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: strconv/check
 
-strings/libstrings.$(OBJEXT): $(go_strings_files) os.gox unicode.gox utf8.gox
+strings/strings.lo: $(go_strings_files) os.gox unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-strings/libstrings.lo: strings/libstrings.$(OBJEXT)
-strings/libstrings.la: strings/libstrings.lo
 strings/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: strings/check
 
-sync/mutex.$(OBJEXT): $(go_sync_files) $(go_sync_c_files) runtime.gox
-	test -d sync || $(MKDIR_P) sync
-	$(LTGOCOMPILE) -I . -c -o sync/mutex.$(OBJEXT) -fgo-prefix=libgo_sync $(srcdir)/go/sync/mutex.go $(srcdir)/go/sync/once.go $(srcdir)/go/sync/rwmutex.go
-sync/cas.$(OBJEXT): $(srcdir)/go/sync/cas.c sync/mutex.$(OBJEXT)
-	$(LTCOMPILE) -c -o sync/cas.$(OBJEXT) $(srcdir)/go/sync/cas.c
-sync/libsync.la: sync/mutex.$(OBJEXT) sync/cas.$(OBJEXT)
-	$(LINK) sync/mutex.lo sync/cas.lo
+sync/mutex.lo: $(go_sync_files) runtime.gox
+	$(BUILDPACKAGE)
+sync/cas.lo: $(go_sync_c_files) sync/mutex.lo
+	$(LTCOMPILE) -c -o sync/cas.lo $(srcdir)/go/sync/cas.c
 sync/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: sync/check
 
-syslog/syslog.$(OBJEXT): $(go_syslog_files) fmt.gox log.gox net.gox os.gox \
-		syscall.gox
-	test -d syslog || $(MKDIR_P) syslog
-	$(LTGOCOMPILE) -I . -c -o $@ -fgo-prefix=libgo_syslog $(srcdir)/go/syslog/syslog.go $(srcdir)/$(go_syslog_file)
-syslog/syslog_c.$(OBJEXT): $(srcdir)/go/syslog/syslog_c.c syslog/syslog.$(OBJEXT)
+syslog/syslog.lo: $(go_syslog_files) fmt.gox log.gox net.gox os.gox syscall.gox
+	$(BUILDPACKAGE)
+syslog/syslog_c.lo: $(go_syslog_c_files) syslog/syslog.lo
 	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syslog/syslog_c.c
-syslog/libsyslog.la: syslog/syslog.$(OBJEXT) syslog/syslog_c.$(OBJEXT)
-	$(LINK) syslog/syslog.lo syslog/syslog_c.lo
 syslog/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: syslog/check
 
-tabwriter/libtabwriter.$(OBJEXT): $(go_tabwriter_files) bytes.gox io.gox \
-		os.gox utf8.gox
+tabwriter/tabwriter.lo: $(go_tabwriter_files) bytes.gox io.gox os.gox utf8.gox
 	$(BUILDPACKAGE)
-tabwriter/libtabwriter.lo: tabwriter/libtabwriter.$(OBJEXT)
-tabwriter/libtabwriter.la: tabwriter/libtabwriter.lo
 tabwriter/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: tabwriter/check
 
-template/libtemplate.$(OBJEXT): $(go_template_files) bytes.gox fmt.gox io.gox \
-		os.gox reflect.gox runtime.gox strings.gox container/vector.gox
+template/template.lo: $(go_template_files) bytes.gox fmt.gox io.gox os.gox \
+		reflect.gox runtime.gox strings.gox container/vector.gox
 	$(BUILDPACKAGE)
-template/libtemplate.lo: template/libtemplate.$(OBJEXT)
-template/libtemplate.la: template/libtemplate.lo
 template/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: template/check
 
-testing/libtesting.$(OBJEXT): $(go_testing_files) flag.gox fmt.gox os.gox \
-		regexp.gox runtime.gox time.gox
+testing/testing.lo: $(go_testing_files) flag.gox fmt.gox os.gox regexp.gox \
+		runtime.gox time.gox
 	$(BUILDPACKAGE)
-testing/libtesting.lo: testing/libtesting.$(OBJEXT)
-testing/libtesting.la: testing/libtesting.lo
 testing/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: testing/check
 
-time/libtime.$(OBJEXT): $(go_time_files) bytes.gox container/heap.gox \
-		io/ioutil.gox os.gox strconv.gox sync.gox syscall.gox
+time/time.lo: $(go_time_files) bytes.gox container/heap.gox io/ioutil.gox \
+		os.gox strconv.gox sync.gox syscall.gox
 	$(BUILDPACKAGE)
-time/libtime.lo: time/libtime.$(OBJEXT)
-time/libtime.la: time/libtime.lo
 time/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: time/check
 
-try/libtry.$(OBJEXT): $(go_try_files) fmt.gox io.gox os.gox reflect.gox \
-		unicode.gox
+try/try.lo: $(go_try_files) fmt.gox io.gox os.gox reflect.gox unicode.gox
 	$(BUILDPACKAGE)
-try/libtry.lo: try/libtry.$(OBJEXT)
-try/libtry.la: try/libtry.lo
 try/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: try/check
 
-unicode/libunicode.$(OBJEXT): $(go_unicode_files)
+unicode/unicode.lo: $(go_unicode_files)
 	$(BUILDPACKAGE)
-unicode/libunicode.lo: unicode/libunicode.$(OBJEXT)
-unicode/libunicode.la: unicode/libunicode.lo
 unicode/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: unicode/check
 
-utf16/libutf16.$(OBJEXT): $(go_utf16_files) unicode.gox
+utf16/utf16.lo: $(go_utf16_files) unicode.gox
 	$(BUILDPACKAGE)
-utf16/libutf16.lo: utf16/libutf16.$(OBJEXT)
-utf16/libutf16.la: utf16/libutf16.lo
 utf16/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: utf16/check
 
-utf8/libutf8.$(OBJEXT): $(go_utf8_files) unicode.gox
+utf8/utf8.lo: $(go_utf8_files) unicode.gox
 	$(BUILDPACKAGE)
-utf8/libutf8.lo: utf8/libutf8.$(OBJEXT)
-utf8/libutf8.la: utf8/libutf8.lo
 utf8/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: utf8/check
 
-websocket/libwebsocket.$(OBJEXT): $(go_websocket_files) bufio.gox bytes.gox \
+websocket/websocket.lo: $(go_websocket_files) bufio.gox bytes.gox \
 		container/vector.gox crypto/md5.gox crypto/tls.gox \
 		encoding/binary.gox fmt.gox http.gox io.gox net.gox os.gox \
 		rand.gox strings.gox
 	$(BUILDPACKAGE)
-websocket/libwebsocket.lo: websocket/libwebsocket.$(OBJEXT)
-websocket/libwebsocket.la: websocket/libwebsocket.lo
 websocket/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: websocket/check
 
-xml/libxml.$(OBJEXT): $(go_xml_files) bufio.gox bytes.gox fmt.gox io.gox \
-		os.gox reflect.gox strconv.gox strings.gox unicode.gox utf8.gox
+xml/xml.lo: $(go_xml_files) bufio.gox bytes.gox fmt.gox io.gox os.gox \
+		reflect.gox strconv.gox strings.gox unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-xml/libxml.lo: xml/libxml.$(OBJEXT)
-xml/libxml.la: xml/libxml.lo
 xml/check: $(CHECK_DEPS)
 	$(CHECK)
 .PHONY: xml/check
 
-archive/libtar.$(OBJEXT): $(go_archive_tar_files) bytes.gox io.gox os.gox \
-		strconv.gox strings.gox
+archive/tar.lo: $(go_archive_tar_files) bytes.gox io.gox os.gox strconv.gox \
+		strings.gox
 	$(BUILDPACKAGE)
-archive/libtar.lo: archive/libtar.$(OBJEXT)
-archive/libtar.la: archive/libtar.lo
 archive/tar/check: $(CHECK_DEPS)
 	@$(MKDIR_P) archive/tar
 	$(CHECK)
 .PHONY: archive/tar/check
 
-archive/libzip.$(OBJEXT): $(go_archive_zip_files) bufio.gox bytes.gox \
+archive/zip.lo: $(go_archive_zip_files) bufio.gox bytes.gox \
 		compress/flate.gox hash.gox hash/crc32.gox \
 		encoding/binary.gox io.gox os.gox
 	$(BUILDPACKAGE)
-archive/libzip.lo: archive/libzip.$(OBJEXT)
-archive/libzip.la: archive/libzip.lo
 archive/zip/check: $(CHECK_DEPS)
 	@$(MKDIR_P) archive/zip
 	$(CHECK)
 .PHONY: archive/zip/check
 
-compress/libflate.$(OBJEXT): $(go_compress_flate_files) bufio.gox io.gox \
-		math.gox os.gox sort.gox strconv.gox
+compress/flate.lo: $(go_compress_flate_files) bufio.gox io.gox math.gox \
+		os.gox sort.gox strconv.gox
 	$(BUILDPACKAGE)
-compress/libflate.lo: compress/libflate.$(OBJEXT)
-compress/libflate.la: compress/libflate.lo
 compress/flate/check: $(CHECK_DEPS)
 	@$(MKDIR_P) compress/flate
 	$(CHECK)
 .PHONY: compress/flate/check
 
-compress/libgzip.$(OBJEXT): $(go_compress_gzip_files) bufio.gox \
-		compress/flate.gox hash.gox hash/crc32.gox io.gox os.gox
+compress/gzip.lo: $(go_compress_gzip_files) bufio.gox compress/flate.gox \
+		hash.gox hash/crc32.gox io.gox os.gox
 	$(BUILDPACKAGE)
-compress/libgzip.lo: compress/libgzip.$(OBJEXT)
-compress/libgzip.la: compress/libgzip.lo
 compress/gzip/check: $(CHECK_DEPS)
 	@$(MKDIR_P) compress/gzip
 	$(CHECK)
 .PHONY: compress/gzip/check
 
-compress/libzlib.$(OBJEXT): $(go_compress_zlib_files) bufio.gox \
-		compress/flate.gox hash.gox hash/adler32.gox io.gox os.gox
+compress/zlib.lo: $(go_compress_zlib_files) bufio.gox compress/flate.gox \
+		hash.gox hash/adler32.gox io.gox os.gox
 	$(BUILDPACKAGE)
-compress/libzlib.lo: compress/libzlib.$(OBJEXT)
-compress/libzlib.la: compress/libzlib.lo
 compress/zlib/check: $(CHECK_DEPS)
 	@$(MKDIR_P) compress/zlib
 	$(CHECK)
 .PHONY: compress/zlib/check
 
-container/libheap.$(OBJEXT): $(go_container_heap_files) sort.gox
+container/heap.lo: $(go_container_heap_files) sort.gox
 	$(BUILDPACKAGE)
-container/libheap.lo: container/libheap.$(OBJEXT)
-container/libheap.la: container/libheap.lo
 container/heap/check: $(CHECK_DEPS)
 	@$(MKDIR_P) container/heap
 	$(CHECK)
 .PHONY: container/heap/check
 
-container/liblist.$(OBJEXT): $(go_container_list_files)
+container/list.lo: $(go_container_list_files)
 	$(BUILDPACKAGE)
-container/liblist.lo: container/liblist.$(OBJEXT)
-container/liblist.la: container/liblist.lo
 container/list/check: $(CHECK_DEPS)
 	@$(MKDIR_P) container/list
 	$(CHECK)
 .PHONY: container/list/check
 
-container/libring.$(OBJEXT): $(go_container_ring_files)
+container/ring.lo: $(go_container_ring_files)
 	$(BUILDPACKAGE)
-container/libring.lo: container/libring.$(OBJEXT)
-container/libring.la: container/libring.lo
 container/ring/check: $(CHECK_DEPS)
 	@$(MKDIR_P) container/ring
 	$(CHECK)
 .PHONY: container/ring/check
 
-container/libvector.$(OBJEXT): $(go_container_vector_files)
+container/vector.lo: $(go_container_vector_files)
 	$(BUILDPACKAGE)
-container/libvector.lo: container/libvector.$(OBJEXT)
-container/libvector.la: container/libvector.lo
 container/vector/check: $(CHECK_DEPS)
 	@$(MKDIR_P) container/vector
 	$(CHECK)
 .PHONY: container/vector/check
 
-crypto/libaes.$(OBJEXT): $(go_crypto_aes_files) os.gox strconv.gox
+crypto/aes.lo: $(go_crypto_aes_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/libaes.lo: crypto/libaes.$(OBJEXT)
-crypto/libaes.la: crypto/libaes.lo
 crypto/aes/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/aes
 	$(CHECK)
 .PHONY: crypto/aes/check
 
-crypto/libblock.$(OBJEXT): $(go_crypto_block_files) fmt.gox io.gox os.gox \
-		strconv.gox
+crypto/block.lo: $(go_crypto_block_files) fmt.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/libblock.lo: crypto/libblock.$(OBJEXT)
-crypto/libblock.la: crypto/libblock.lo
 crypto/block/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/block
 	$(CHECK)
 .PHONY: crypto/block/check
 
-crypto/libblowfish.$(OBJEXT): $(go_crypto_blowfish_files) os.gox strconv.gox
+crypto/blowfish.lo: $(go_crypto_blowfish_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/libblowfish.lo: crypto/libblowfish.$(OBJEXT)
-crypto/libblowfish.la: crypto/libblowfish.lo
 crypto/blowfish/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/blowfish
 	$(CHECK)
 .PHONY: crypto/blowfish/check
 
-crypto/libcast5.$(OBJEXT): $(go_crypto_cast5_files) os.gox
+crypto/cast5.lo: $(go_crypto_cast5_files) os.gox
 	$(BUILDPACKAGE)
-crypto/libcast5.lo: crypto/libcast5.$(OBJEXT)
-crypto/libcast5.la: crypto/libcast5.lo
 crypt/cast5/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/cast5
 	$(CHECK)
 .PHONY: crypto/cast5/check
 
-crypto/libcipher.$(OBJEXT): $(go_crypto_cipher_files) io.gox os.gox
+crypto/cipher.lo: $(go_crypto_cipher_files) io.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libcipher.lo: crypto/libcipher.$(OBJEXT)
-crypto/libcipher.la: crypto/libcipher.lo
 crypto/cipher/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/cipher
 	$(CHECK)
 .PHONY: crypto/cipher/check
 
-crypto/libelliptic.$(OBJEXT): $(go_crypto_elliptic_files) big.gox io.gox \
-		os.gox sync.gox
+crypto/elliptic.lo: $(go_crypto_elliptic_files) big.gox io.gox os.gox sync.gox
 	$(BUILDPACKAGE)
-crypto/libelliptic.lo: crypto/libelliptic.$(OBJEXT)
-crypto/libelliptic.la: crypto/libelliptic.lo
 crypto/elliptic/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/elliptic
 	$(CHECK)
 .PHONY: crypto/elliptic/check
 
-crypto/libhmac.$(OBJEXT): $(go_crypto_hmac_files) crypto/md5.gox \
-		crypto/sha1.gox crypto/sha256.gox hash.gox os.gox
+crypto/hmac.lo: $(go_crypto_hmac_files) crypto/md5.gox crypto/sha1.gox \
+		crypto/sha256.gox hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libhmac.lo: crypto/libhmac.$(OBJEXT)
-crypto/libhmac.la: crypto/libhmac.lo
 crypto/hmac/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/hmac
 	$(CHECK)
 .PHONY: crypto/hmac/check
 
-crypto/libmd4.$(OBJEXT): $(go_crypto_md4_files) hash.gox os.gox
+crypto/md4.lo: $(go_crypto_md4_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libmd4.lo: crypto/libmd4.$(OBJEXT)
-crypto/libmd4.la: crypto/libmd4.lo
 crypto/md4/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/md4
 	$(CHECK)
 .PHONY: crypto/md4/check
 
-crypto/libmd5.$(OBJEXT): $(go_crypto_md5_files) hash.gox os.gox
+crypto/md5.lo: $(go_crypto_md5_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libmd5.lo: crypto/libmd5.$(OBJEXT)
-crypto/libmd5.la: crypto/libmd5.lo
 crypto/md5/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/md5
 	$(CHECK)
 .PHONY: crypto/md5/check
 
-crypto/libocsp.$(OBJEXT): $(go_crypto_ocsp_files) asn1.gox crypto/rsa.gox \
+crypto/ocsp.lo: $(go_crypto_ocsp_files) asn1.gox crypto/rsa.gox \
 		crypto/sha1.gox crypto/x509.gox os.gox time.gox
 	$(BUILDPACKAGE)
-crypto/libocsp.lo: crypto/libocsp.$(OBJEXT)
-crypto/libocsp.la: crypto/libocsp.lo
 crypto/ocsp/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/ocsp
 	$(CHECK)
 .PHONY: crypto/ocsp/check
 
-crypto/librand.$(OBJEXT): $(go_crypto_rand_files) crypto/aes.gox io.gox os.gox \
-		sync.gox time.gox
+crypto/rand.lo: $(go_crypto_rand_files) crypto/aes.gox io.gox os.gox sync.gox \
+		time.gox
 	$(BUILDPACKAGE)
-crypto/librand.lo: crypto/librand.$(OBJEXT)
-crypto/librand.la: crypto/librand.lo
 crypto/rand/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/rand
 	$(CHECK)
 .PHONY: crypto/rand/check
 
-crypto/librc4.$(OBJEXT): $(go_crypto_rc4_files) os.gox strconv.gox
+crypto/rc4.lo: $(go_crypto_rc4_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/librc4.lo: crypto/librc4.$(OBJEXT)
-crypto/librc4.la: crypto/librc4.lo
 crypto/rc4/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/rc4
 	$(CHECK)
 .PHONY: crypto/rc4/check
 
-crypto/libripemd160.$(OBJEXT): $(go_crypto_ripemd160_files) hash.gox os.gox
+crypto/ripemd160.lo: $(go_crypto_ripemd160_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libripemd160.lo: crypto/libripemd160.$(OBJEXT)
-crypto/libripemd160.la: crypto/libripemd160.lo
 crypto/ripemd160/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/ripemd160
 	$(CHECK)
 .PHONY: crypto/ripemd160/check
 
-crypto/librsa.$(OBJEXT): $(go_crypto_rsa_files) big.gox crypto/sha1.gox \
+crypto/rsa.lo: $(go_crypto_rsa_files) big.gox crypto/sha1.gox \
 		crypto/subtle.gox encoding/hex.gox hash.gox io.gox os.gox
 	$(BUILDPACKAGE)
-crypto/librsa.lo: crypto/librsa.$(OBJEXT)
-crypto/librsa.la: crypto/librsa.lo
 crypto/rsa/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/rsa
 	$(CHECK)
 .PHONY: crypto/rsa/check
 
-crypto/libsha1.$(OBJEXT): $(go_crypto_sha1_files) hash.gox os.gox
+crypto/sha1.lo: $(go_crypto_sha1_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libsha1.lo: crypto/libsha1.$(OBJEXT)
-crypto/libsha1.la: crypto/libsha1.lo
 crypto/sha1/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/sha1
 	$(CHECK)
 .PHONY: crypto/sha1/check
 
-crypto/libsha256.$(OBJEXT): $(go_crypto_sha256_files) hash.gox os.gox
+crypto/sha256.lo: $(go_crypto_sha256_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libsha256.lo: crypto/libsha256.$(OBJEXT)
-crypto/libsha256.la: crypto/libsha256.lo
 crypto/sha256/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/sha256
 	$(CHECK)
 .PHONY: crypto/sha256/check
 
-crypto/libsha512.$(OBJEXT): $(go_crypto_sha512_files) hash.gox os.gox
+crypto/sha512.lo: $(go_crypto_sha512_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-crypto/libsha512.lo: crypto/libsha512.$(OBJEXT)
-crypto/libsha512.la: crypto/libsha512.lo
 crypto/sha512/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/sha512
 	$(CHECK)
 .PHONY: crypto/sha512/check
 
-crypto/libsubtle.$(OBJEXT): $(go_crypto_subtle_files)
+crypto/subtle.lo: $(go_crypto_subtle_files)
 	$(BUILDPACKAGE)
-crypto/libsubtle.lo: crypto/libsubtle.$(OBJEXT)
-crypto/libsubtle.la: crypto/libsubtle.lo
 crypto/subtle/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/subtle
 	$(CHECK)
 .PHONY: crypto/subtle/check
 
-crypto/libtls.$(OBJEXT): $(go_crypto_tls_files) big.gox bufio.gox bytes.gox \
+crypto/tls.lo: $(go_crypto_tls_files) big.gox bufio.gox bytes.gox \
 		container/list.gox crypto/aes.gox crypto/cipher.gox \
 		crypto/elliptic.gox crypto/hmac.gox crypto/md5.gox \
 		crypto/rc4.gox crypto/rand.gox crypto/rsa.gox crypto/sha1.gox \
@@ -2156,434 +1996,338 @@ 
 		crypto/x509.gox encoding/pem.gox fmt.gox hash.gox io.gox \
 		io/ioutil.gox net.gox os.gox strings.gox sync.gox time.gox
 	$(BUILDPACKAGE)
-crypto/libtls.lo: crypto/libtls.$(OBJEXT)
-crypto/libtls.la: crypto/libtls.lo
 crypto/tls/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/tls
 	$(CHECK)
 .PHONY: crypto/tls/check
 
-crypto/libtwofish.$(OBJEXT): $(go_crypto_twofish_files) os.gox strconv.gox
+crypto/twofish.lo: $(go_crypto_twofish_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/libtwofish.lo: crypto/libtwofish.$(OBJEXT)
-crypto/libtwofish.la: crypto/libtwofish.lo
 crypto/twofish/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/twofish
 	$(CHECK)
 .PHONY: crypto/twofish/check
 
-crypto/libx509.$(OBJEXT): $(go_crypto_x509_files) asn1.gox big.gox \
-		container/vector.gox crypto/rsa.gox crypto/sha1.gox hash.gox \
-		os.gox strings.gox time.gox
+crypto/x509.lo: $(go_crypto_x509_files) asn1.gox big.gox container/vector.gox \
+		crypto/rsa.gox crypto/sha1.gox hash.gox os.gox strings.gox \
+		time.gox
 	$(BUILDPACKAGE)
-crypto/libx509.lo: crypto/libx509.$(OBJEXT)
-crypto/libx509.la: crypto/libx509.lo
 crypto/x509/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/x509
 	$(CHECK)
 .PHONY: crypto/x509/check
 
-crypto/libxtea.$(OBJEXT): $(go_crypto_xtea_files) os.gox strconv.gox
+crypto/xtea.lo: $(go_crypto_xtea_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-crypto/libxtea.lo: crypto/libxtea.$(OBJEXT)
-crypto/libxtea.la: crypto/libxtea.lo
 crypto/xtea/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/xtea
 	$(CHECK)
 .PHONY: crypto/xtea/check
 
-crypto/openpgp/libarmor.$(OBJEXT): $(go_crypto_openpgp_armor_files) bytes.gox \
+crypto/openpgp/armor.lo: $(go_crypto_openpgp_armor_files) bytes.gox \
 		crypto/openpgp/error.gox encoding/base64.gox \
 		encoding/line.gox io.gox os.gox
 	$(BUILDPACKAGE)
-crypto/openpgp/libarmor.lo: crypto/openpgp/libarmor.$(OBJEXT)
-crypto/openpgp/libarmor.la: crypto/openpgp/libarmor.lo
 crypto/openpgp/armor/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/openpgp/armor
 	$(CHECK)
 .PHONY: crypto/openpgp/armor/check
 
-crypto/openpgp/liberror.$(OBJEXT): $(go_crypto_openpgp_error_files)
+crypto/openpgp/error.lo: $(go_crypto_openpgp_error_files)
 	$(BUILDPACKAGE)
-crypto/openpgp/liberror.lo: crypto/openpgp/liberror.$(OBJEXT)
-crypto/openpgp/liberror.la: crypto/openpgp/liberror.lo
 crypto/openpgp/error/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/openpgp/error
 	$(CHECK)
 .PHONY: crypto/openpgp/error/check
 
-crypto/openpgp/libs2k.$(OBJEXT): $(go_crypto_openpgp_s2k_files) crypto/md5.gox \
+crypto/openpgp/s2k.lo: $(go_crypto_openpgp_s2k_files) crypto/md5.gox \
 		crypto/openpgp/error.gox crypto/ripemd160.gox crypto/sha1.gox \
 		crypto/sha256.gox crypto/sha512.gox hash.gox io.gox os.gox
 	$(BUILDPACKAGE)
-crypto/openpgp/libs2k.lo: crypto/openpgp/libs2k.$(OBJEXT)
-crypto/openpgp/libs2k.la: crypto/openpgp/libs2k.lo
 crypto/openpgp/s2k/check: $(CHECK_DEPS)
 	@$(MKDIR_P) crypto/openpgp/s2k
 	$(CHECK)
 .PHONY: crypto/openpgp/s2k/check
 
-debug/libdwarf.$(OBJEXT): $(go_debug_dwarf_files) encoding/binary.gox os.gox \
-		strconv.gox
+debug/dwarf.lo: $(go_debug_dwarf_files) encoding/binary.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-debug/libdwarf.lo: debug/libdwarf.$(OBJEXT)
-debug/libdwarf.la: debug/libdwarf.lo
 debug/dwarf/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/dwarf
 	$(CHECK)
 .PHONY: debug/dwarf/check
 
-debug/libelf.$(OBJEXT): $(go_debug_elf_files) bytes.gox debug/dwarf.gox \
+debug/elf.lo: $(go_debug_elf_files) bytes.gox debug/dwarf.gox \
 		encoding/binary.gox fmt.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-debug/libelf.lo: debug/libelf.$(OBJEXT)
-debug/libelf.la: debug/libelf.lo
 debug/elf/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/elf
 	$(CHECK)
 .PHONY: debug/elf/check
 
-debug/libgosym.$(OBJEXT): $(go_debug_gosym_files) encoding/binary.gox fmt.gox \
-		os.gox strconv.gox strings.gox
+debug/gosym.lo: $(go_debug_gosym_files) encoding/binary.gox fmt.gox os.gox \
+		strconv.gox strings.gox
 	$(BUILDPACKAGE)
-debug/libgosym.lo: debug/libgosym.$(OBJEXT)
-debug/libgosym.la: debug/libgosym.lo
 debug/gosym/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/gosym
 	$(CHECK)
 .PHONY: debug/gosym/check
 
-debug/libmacho.$(OBJEXT): $(go_debug_macho_files) bytes.gox debug/dwarf.gox \
+debug/macho.lo: $(go_debug_macho_files) bytes.gox debug/dwarf.gox \
 		encoding/binary.gox fmt.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-debug/libmacho.lo: debug/libmacho.$(OBJEXT)
-debug/libmacho.la: debug/libmacho.lo
 debug/macho/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/macho
 	$(CHECK)
 .PHONY: debug/macho/check
 
-debug/libpe.$(OBJEXT): $(go_debug_pe_files) debug/dwarf.gox \
+debug/pe.lo: $(go_debug_pe_files) debug/dwarf.gox \
 		encoding/binary.gox fmt.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-debug/libpe.lo: debug/libpe.$(OBJEXT)
-debug/libpe.la: debug/libpe.lo
 debug/pe/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/pe
 	$(CHECK)
 .PHONY: debug/pe/check
 
-debug/libproc.$(OBJEXT): $(go_debug_proc_files) container/vector.gox fmt.gox \
+debug/proc.lo: $(go_debug_proc_files) container/vector.gox fmt.gox \
 		io/ioutil.gox os.gox runtime.gox strconv.gox strings.gox \
 		sync.gox syscall.gox
 	$(BUILDPACKAGE)
-debug/libproc.lo: debug/libproc.$(OBJEXT)
-debug/libproc.la: debug/libproc.lo
 debug/proc/check: $(CHECK_DEPS)
 	@$(MKDIR_P) debug/proc
 	$(CHECK)
 .PHONY: debug/proc/check
 
-encoding/libascii85.$(OBJEXT): $(go_encoding_ascii85_files) io.gox os.gox \
-		strconv.gox
+encoding/ascii85.lo: $(go_encoding_ascii85_files) io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-encoding/libascii85.lo: encoding/libascii85.$(OBJEXT)
-encoding/libascii85.la: encoding/libascii85.lo
 encoding/ascii85/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/ascii85
 	$(CHECK)
 .PHONY: encoding/ascii85/check
 
-encoding/libbase32.$(OBJEXT): $(go_encoding_base32_files) io.gox os.gox \
-		strconv.gox
+encoding/base32.lo: $(go_encoding_base32_files) io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-encoding/libbase32.lo: encoding/libbase32.$(OBJEXT)
-encoding/libbase32.la: encoding/libbase32.lo
 encoding/base32/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/base32
 	$(CHECK)
 .PHONY: encoding/base32/check
 
-encoding/libbase64.$(OBJEXT): $(go_encoding_base64_files) io.gox os.gox \
-		strconv.gox
+encoding/base64.lo: $(go_encoding_base64_files) io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-encoding/libbase64.lo: encoding/libbase64.$(OBJEXT)
-encoding/libbase64.la: encoding/libbase64.lo
 encoding/base64/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/base64
 	$(CHECK)
 .PHONY: encoding/base64/check
 
-encoding/libbinary.$(OBJEXT): $(go_encoding_binary_files) io.gox math.gox \
-		os.gox reflect.gox
+encoding/binary.lo: $(go_encoding_binary_files) io.gox math.gox os.gox \
+		reflect.gox
 	$(BUILDPACKAGE)
-encoding/libbinary.lo: encoding/libbinary.$(OBJEXT)
-encoding/libbinary.la: encoding/libbinary.lo
 encoding/binary/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/binary
 	$(CHECK)
 .PHONY: encoding/binary/check
 
-encoding/libgit85.$(OBJEXT): $(go_encoding_git85_files) bytes.gox io.gox \
-		os.gox strconv.gox
+encoding/git85.lo: $(go_encoding_git85_files) bytes.gox io.gox os.gox \
+		strconv.gox
 	$(BUILDPACKAGE)
-encoding/libgit85.lo: encoding/libgit85.$(OBJEXT)
-encoding/libgit85.la: encoding/libgit85.lo
 encoding/git85/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/git85
 	$(CHECK)
 .PHONY: encoding/git85/check
 
-encoding/libhex.$(OBJEXT): $(go_encoding_hex_files) os.gox strconv.gox
+encoding/hex.lo: $(go_encoding_hex_files) os.gox strconv.gox
 	$(BUILDPACKAGE)
-encoding/libhex.lo: encoding/libhex.$(OBJEXT)
-encoding/libhex.la: encoding/libhex.lo
 encoding/hex/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/hex
 	$(CHECK)
 .PHONY: encoding/hex/check
 
-encoding/libline.$(OBJEXT): $(go_encoding_line_files) io.gox os.gox
+encoding/line.lo: $(go_encoding_line_files) io.gox os.gox
 	$(BUILDPACKAGE)
-encoding/libline.lo: encoding/libline.$(OBJEXT)
-encoding/libline.la: encoding/libline.lo
 encoding/line/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/line
 	$(CHECK)
 .PHONY: encoding/line/check
 
-encoding/libpem.$(OBJEXT): $(go_encoding_pem_files) bytes.gox \
-		encoding/base64.gox
+encoding/pem.lo: $(go_encoding_pem_files) bytes.gox encoding/base64.gox
 	$(BUILDPACKAGE)
-encoding/libpem.lo: encoding/libpem.$(OBJEXT)
-encoding/libpem.la: encoding/libpem.lo
 encoding/pem/check: $(CHECK_DEPS)
 	@$(MKDIR_P) encoding/pem
 	$(CHECK)
 .PHONY: encoding/pem/check
 
-exp/libdatafmt.$(OBJEXT): $(go_exp_datafmt_files) bytes.gox \
-		container/vector.gox fmt.gox go/scanner.gox go/token.gox \
-		io.gox os.gox reflect.gox runtime.gox strconv.gox strings.gox
+exp/datafmt.lo: $(go_exp_datafmt_files) bytes.gox container/vector.gox \
+		fmt.gox go/scanner.gox go/token.gox io.gox os.gox reflect.gox \
+		runtime.gox strconv.gox strings.gox
 	$(BUILDPACKAGE)
-exp/libdatafmt.lo: exp/libdatafmt.$(OBJEXT)
-exp/libdatafmt.la: exp/libdatafmt.lo
 exp/datafmt/check: $(CHECK_DEPS)
 	@$(MKDIR_P) exp/datafmt
 	$(CHECK)
 .PHONY: exp/datafmt/check
 
-exp/libdraw.$(OBJEXT): $(go_exp_draw_files) image.gox os.gox
+exp/draw.lo: $(go_exp_draw_files) image.gox os.gox
 	$(BUILDPACKAGE)
-exp/libdraw.lo: exp/libdraw.$(OBJEXT)
-exp/libdraw.la: exp/libdraw.lo
 exp/draw/check: $(CHECK_DEPS)
 	@$(MKDIR_P) exp/draw
 	$(CHECK)
 .PHONY: exp/draw/check
 
-exp/libeval.$(OBJEXT): $(go_exp_eval_files) big.gox go/ast.gox go/parser.gox \
+exp/eval.lo: $(go_exp_eval_files) big.gox go/ast.gox go/parser.gox \
 		go/scanner.gox go/token.gox fmt.gox log.gox strconv.gox \
 		strings.gox os.gox reflect.gox runtime.gox sort.gox template.gox
 	$(BUILDPACKAGE)
-exp/libeval.lo: exp/libeval.$(OBJEXT)
-exp/libeval.la: exp/libeval.lo
 exp/eval/check: $(CHECK_DEPS)
 	@$(MKDIR_P) exp/eval
 	$(CHECK)
 .PHONY: exp/eval/check
 
-go/libast.$(OBJEXT): $(go_go_ast_files) fmt.gox go/token.gox io.gox os.gox \
-		reflect.gox unicode.gox utf8.gox
+go/ast.lo: $(go_go_ast_files) fmt.gox go/token.gox io.gox os.gox reflect.gox \
+		unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-go/libast.lo: go/libast.$(OBJEXT)
-go/libast.la: go/libast.lo
 go/ast/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/ast
 	$(CHECK)
 .PHONY: go/ast/check
 
-go/libdoc.$(OBJEXT): $(go_go_doc_files) go/ast.gox go/token.gox io.gox \
-		regexp.gox sort.gox strings.gox template.gox
+go/doc.lo: $(go_go_doc_files) go/ast.gox go/token.gox io.gox regexp.gox \
+		sort.gox strings.gox template.gox
 	$(BUILDPACKAGE)
-go/libdoc.lo: go/libdoc.$(OBJEXT)
-go/libdoc.la: go/libdoc.lo
 go/doc/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/doc
 	$(CHECK)
 .PHONY: go/doc/check
 
-go/libparser.$(OBJEXT): $(go_go_parser_files) bytes.gox fmt.gox go/ast.gox \
+go/parser.lo: $(go_go_parser_files) bytes.gox fmt.gox go/ast.gox \
 		go/scanner.gox go/token.gox io.gox io/ioutil.gox os.gox \
 		path.gox strings.gox
 	$(BUILDPACKAGE)
-go/libparser.lo: go/libparser.$(OBJEXT)
-go/libparser.la: go/libparser.lo
 go/parser/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/parser
 	$(CHECK)
 .PHONY: go/parser/check
 
-go/libprinter.$(OBJEXT): $(go_go_printer_files) bytes.gox fmt.gox go/ast.gox \
+go/printer.lo: $(go_go_printer_files) bytes.gox fmt.gox go/ast.gox \
 		go/token.gox io.gox os.gox reflect.gox runtime.gox \
 		strings.gox tabwriter.gox
 	$(BUILDPACKAGE)
-go/libprinter.lo: go/libprinter.$(OBJEXT)
-go/libprinter.la: go/libprinter.lo
 go/printer/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/printer
 	$(CHECK)
 .PHONY: go/printer/check
 
-go/libscanner.$(OBJEXT): $(go_go_scanner_files) bytes.gox \
-		container/vector.gox fmt.gox go/token.gox io.gox os.gox \
-		path.gox sort.gox strconv.gox unicode.gox utf8.gox
+go/scanner.lo: $(go_go_scanner_files) bytes.gox container/vector.gox fmt.gox \
+		go/token.gox io.gox os.gox path.gox sort.gox strconv.gox \
+		unicode.gox utf8.gox
 	$(BUILDPACKAGE)
-go/libscanner.lo: go/libscanner.$(OBJEXT)
-go/libscanner.la: go/libscanner.lo
 go/scanner/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/scanner
 	$(CHECK)
 .PHONY: go/scanner/check
 
-go/libtoken.$(OBJEXT): $(go_go_token_files) fmt.gox strconv.gox
+go/token.lo: $(go_go_token_files) fmt.gox strconv.gox
 	$(BUILDPACKAGE)
-go/libtoken.lo: go/libtoken.$(OBJEXT)
-go/libtoken.la: go/libtoken.lo
 go/token/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/token
 	$(CHECK)
 .PHONY: go/token/check
 
-go/libtypechecker.$(OBJEXT): $(go_go_typechecker_files) fmt.gox go/ast.gox \
-		go/token.gox go/scanner.gox os.gox
+go/typechecker.lo: $(go_go_typechecker_files) fmt.gox go/ast.gox go/token.gox \
+		go/scanner.gox os.gox
 	$(BUILDPACKAGE)
-go/libtypechecker.lo: go/libtypechecker.$(OBJEXT)
-go/libtypechecker.la: go/libtypechecker.lo
 go/typechecker/check: $(CHECK_DEPS)
 	@$(MKDIR_P) go/typechecker
 	$(CHECK)
 .PHONY: go/typechecker/check
 
-hash/libadler32.$(OBJEXT): $(go_hash_adler32_files) hash.gox os.gox
+hash/adler32.lo: $(go_hash_adler32_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-hash/libadler32.lo: hash/libadler32.$(OBJEXT)
-hash/libadler32.la: hash/libadler32.lo
 hash/adler32/check: $(CHECK_DEPS)
 	@$(MKDIR_P) hash/adler32
 	$(CHECK)
 .PHONY: hash/adler32/check
 
-hash/libcrc32.$(OBJEXT): $(go_hash_crc32_files) hash.gox os.gox
+hash/crc32.lo: $(go_hash_crc32_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-hash/libcrc32.lo: hash/libcrc32.$(OBJEXT)
-hash/libcrc32.la: hash/libcrc32.lo
 hash/crc32/check: $(CHECK_DEPS)
 	@$(MKDIR_P) hash/crc32
 	$(CHECK)
 .PHONY: hash/crc32/check
 
-hash/libcrc64.$(OBJEXT): $(go_hash_crc64_files) hash.gox os.gox
+hash/crc64.lo: $(go_hash_crc64_files) hash.gox os.gox
 	$(BUILDPACKAGE)
-hash/libcrc64.lo: hash/libcrc64.$(OBJEXT)
-hash/libcrc64.la: hash/libcrc64.lo
 hash/crc64/check: $(CHECK_DEPS)
 	@$(MKDIR_P) hash/crc64
 	$(CHECK)
 .PHONY: hash/crc64/check
 
-http/libpprof.$(OBJEXT): $(go_http_pprof_files) bufio.gox fmt.gox http.gox \
-		os.gox runtime.gox runtime/pprof.gox strconv.gox strings.gox
+http/pprof.lo: $(go_http_pprof_files) bufio.gox fmt.gox http.gox os.gox \
+		runtime.gox runtime/pprof.gox strconv.gox strings.gox
 	$(BUILDPACKAGE)
-http/libpprof.lo: http/libpprof.$(OBJEXT)
-http/libpprof.la: http/libpprof.lo
 http/pprof/check: $(CHECK_DEPS)
 	@$(MKDIR_P) http/pprof
 	$(CHECK)
 .PHONY: http/pprof/check
 
-image/libjpeg.$(OBJEXT): $(go_image_jpeg_files) bufio.gox image.gox io.gox \
-		os.gox
+image/jpeg.lo: $(go_image_jpeg_files) bufio.gox image.gox io.gox os.gox
 	$(BUILDPACKAGE)
-image/libjpeg.lo: image/libjpeg.$(OBJEXT)
-image/libjpeg.la: image/libjpeg.lo
 image/jpeg/check: $(CHECK_DEPS)
 	@$(MKDIR_P) image/jpeg
 	$(CHECK)
 .PHONY: image/jpeg/check
 
-image/libpng.$(OBJEXT): $(go_image_png_files) bufio.gox compress/zlib.gox \
-		fmt.gox hash.gox hash/crc32.gox image.gox io.gox os.gox \
-		strconv.gox
+image/png.lo: $(go_image_png_files) bufio.gox compress/zlib.gox fmt.gox \
+		hash.gox hash/crc32.gox image.gox io.gox os.gox strconv.gox
 	$(BUILDPACKAGE)
-image/libpng.lo: image/libpng.$(OBJEXT)
-image/libpng.la: image/libpng.lo
 image/png/check: $(CHECK_DEPS)
 	@$(MKDIR_P) image/png
 	$(CHECK)
 .PHONY: image/png/check
 
-index/libsuffixarray.$(OBJEXT): $(go_index_suffixarray_files) bytes.gox \
-		regexp.gox sort.gox
+index/suffixarray.lo: $(go_index_suffixarray_files) bytes.gox regexp.gox \
+		sort.gox
 	$(BUILDPACKAGE)
-index/libsuffixarray.lo: index/libsuffixarray.$(OBJEXT)
-index/libsuffixarray.la: index/libsuffixarray.lo
 index/suffixarray/check: $(CHECK_DEPS)
 	@$(MKDIR_P) index/suffixarray
 	$(CHECK)
 .PHONY: index/suffixarray/check
 
-io/libioutil.$(OBJEXT): $(go_io_ioutil_files) bytes.gox io.gox os.gox sort.gox \
+io/ioutil.lo: $(go_io_ioutil_files) bytes.gox io.gox os.gox sort.gox \
 		strconv.gox
 	$(BUILDPACKAGE)
-io/libioutil.lo: io/libioutil.$(OBJEXT)
-io/libioutil.la: io/libioutil.lo
 io/ioutil/check: $(CHECK_DEPS)
 	@$(MKDIR_P) io/ioutil
 	$(CHECK)
 .PHONY: io/ioutil/check
 
-mime/libmultipart.$(OBJEXT): $(go_mime_multipart_files) bufio.gox bytes.gox \
-		io.gox mime.gox os.gox regexp.gox strings.gox
+mime/multipart.lo: $(go_mime_multipart_files) bufio.gox bytes.gox io.gox \
+		mime.gox os.gox regexp.gox strings.gox
 	$(BUILDPACKAGE)
-mime/libmultipart.lo: mime/libmultipart.$(OBJEXT)
-mime/libmultipart.la: mime/libmultipart.lo
 mime/multipart/check: $(CHECK_DEPS)
 	@$(MKDIR_P) mime/multipart
 	$(CHECK)
 .PHONY: mime/multipart/check
 
-net/libdict.$(OBJEXT): $(go_net_dict_files) container/vector.gox \
-		net/textproto.gox os.gox strconv.gox strings.gox
+net/dict.lo: $(go_net_dict_files) container/vector.gox net/textproto.gox \
+		os.gox strconv.gox strings.gox
 	$(BUILDPACKAGE)
-net/libdict.lo: net/libdict.$(OBJEXT)
-net/libdict.la: net/libdict.lo
 
-net/libtextproto.$(OBJEXT): $(go_net_textproto_files) bufio.gox bytes.gox \
+net/textproto.lo: $(go_net_textproto_files) bufio.gox bytes.gox \
 		container/vector.gox fmt.gox io.gox io/ioutil.gox net.gox \
 		os.gox strconv.gox sync.gox
 	$(BUILDPACKAGE)
-net/libtextproto.lo: net/libtextproto.$(OBJEXT)
-net/libtextproto.la: net/libtextproto.lo
 net/textproto/check: $(CHECK_DEPS)
 	@$(MKDIR_P) net/textproto
 	$(CHECK)
 .PHONY: net/textproto/check
 
-os/libinotify.$(OBJEXT): $(go_os_inotify_files) fmt.gox os.gox strings.gox \
-		syscall.gox
+os/inotify.lo: $(go_os_inotify_files) fmt.gox os.gox strings.gox syscall.gox
 	$(BUILDPACKAGE)
-os/libinotify.lo: os/libinotify.$(OBJEXT)
-os/libinotify.la: os/libinotify.lo
 os/inotify/check: $(CHECK_DEPS)
 	@$(MKDIR_P) os/inotify
 	$(CHECK)
 .PHONY: os/inotify/check
 
-os/libsignal.$(OBJEXT): $(go_os_signal_files) runtime.gox strconv.gox
+os/signal.lo: $(go_os_signal_files) runtime.gox strconv.gox
 	$(BUILDPACKAGE)
-os/libsignal.lo: os/libsignal.$(OBJEXT)
-os/libsignal.la: os/libsignal.lo
 os/signal/check: $(CHECK_DEPS)
 	@$(MKDIR_P) os/signal
 	$(CHECK)
@@ -2593,60 +2337,48 @@ 
 	$(SHELL) $(srcdir)/go/os/signal/mkunix.sh sysinfo.go > $@.tmp
 	mv -f $@.tmp $@
 
-rpc/libjsonrpc.$(OBJEXT): $(go_rpc_jsonrpc_files) fmt.gox io.gox json.gox \
-		net.gox os.gox rpc.gox sync.gox
+rpc/jsonrpc.lo: $(go_rpc_jsonrpc_files) fmt.gox io.gox json.gox net.gox \
+		os.gox rpc.gox sync.gox
 	$(BUILDPACKAGE)
-rpc/libjsonrpc.lo: rpc/libjsonrpc.$(OBJEXT)
-rpc/libjsonrpc.la: rpc/libjsonrpc.lo
 rpc/jsonrpc/check: $(CHECK_DEPS)
 	@$(MKDIR_P) rpc/jsonrpc
 	$(CHECK)
 .PHONY: rpc/jsonrpc/check
 
-runtime/libdebug.$(OBJEXT): $(go_runtime_debug_files) bytes.gox fmt.gox \
-		io/ioutil.gox os.gox runtime.gox
+runtime/debug.lo: $(go_runtime_debug_files) bytes.gox fmt.gox io/ioutil.gox \
+		os.gox runtime.gox
 	$(BUILDPACKAGE)
-runtime/libdebug.lo: runtime/libdebug.$(OBJEXT)
-runtime/libdebug.la: runtime/libdebug.lo
 runtime/debug/check: $(CHECK_DEPS)
 	@$(MKDIR_P) runtime/debug
 	$(CHECK)
 .PHONY: runtime/debug/check
 
-runtime/libpprof.$(OBJEXT): $(go_runtime_pprof_files) bufio.gox fmt.gox \
-		io.gox os.gox runtime.gox
+runtime/pprof.lo: $(go_runtime_pprof_files) bufio.gox fmt.gox io.gox os.gox \
+		runtime.gox
 	$(BUILDPACKAGE)
-runtime/libpprof.lo: runtime/libpprof.$(OBJEXT)
-runtime/libpprof.la: runtime/libpprof.lo
 runtime/pprof/check: $(CHECK_DEPS)
 	@$(MKDIR_P) runtime/pprof
 	$(CHECK)
 .PHONY: runtime/pprof/check
 
-testing/libiotest.$(OBJEXT): $(go_testing_iotest_files) io.gox log.gox os.gox
+testing/iotest.lo: $(go_testing_iotest_files) io.gox log.gox os.gox
 	$(BUILDPACKAGE)
-testing/libiotest.lo: testing/libiotest.$(OBJEXT)
-testing/libiotest.la: testing/libiotest.lo
 testing/iotest/check: $(CHECK_DEPS)
 	@$(MKDIR_P) testing/iotest
 	$(CHECK)
 .PHONY: testing/iotest/check
 
-testing/libquick.$(OBJEXT): $(go_testing_quick_files) flag.gox fmt.gox \
-		math.gox os.gox rand.gox reflect.gox strings.gox
+testing/quick.lo: $(go_testing_quick_files) flag.gox fmt.gox math.gox os.gox \
+		rand.gox reflect.gox strings.gox
 	$(BUILDPACKAGE)
-testing/libquick.lo: testing/libquick.$(OBJEXT)
-testing/libquick.la: testing/libquick.lo
 testing/quick/check: $(CHECK_DEPS)
 	@$(MKDIR_P) testing/quick
 	$(CHECK)
 .PHONY: testing/quick/check
 
-testing/libscript.$(OBJEXT): $(go_testing_script_files) fmt.gox os.gox \
-		rand.gox reflect.gox strings.gox
+testing/script.lo: $(go_testing_script_files) fmt.gox os.gox rand.gox \
+		reflect.gox strings.gox
 	$(BUILDPACKAGE)
-testing/libscript.lo: testing/libscript.$(OBJEXT)
-testing/libscript.la: testing/libscript.lo
 testing/script/check: $(CHECK_DEPS)
 	@$(MKDIR_P) testing/script
 	$(CHECK)
@@ -2658,289 +2390,285 @@ 
 	$(SHELL) $(srcdir)/../move-if-change tmp-sysinfo.go sysinfo.go
 	$(STAMP) $@
 
-syscalls/syscall.$(OBJEXT): $(go_syscall_files) $(go_syscall_c_files) sync.gox
-	rm -f syscall.gox syscalls/libsyscall.a
-	test -d syscalls || $(MKDIR_P) syscalls
-	files=`echo $^ | sed -e 's/[^ ]*\.gox//g' -e's/[^ ]*\.c//g'`; \
-	$(LTGOCOMPILE) -I . -c -fgo-prefix="libgo_syscalls" -o syscalls/syscall.$(OBJEXT) $$files
-syscalls/errno.$(OBJEXT): $(srcdir)/syscalls/errno.c syscalls/syscall.$(OBJEXT)
-	$(LTCOMPILE) -c -o syscalls/errno.$(OBJEXT) $(srcdir)/syscalls/errno.c
-syscalls/libsyscall.la: syscalls/syscall.$(OBJEXT) syscalls/errno.$(OBJEXT)
-	$(LINK) syscalls/syscall.lo syscalls/errno.lo
+syscalls/syscall.lo: $(go_syscall_files) sync.gox
+	$(BUILDPACKAGE)
+syscalls/errno.lo: $(go_syscall_c_files) syscalls/syscall.lo
+	$(LTCOMPILE) -c -o $@ $(srcdir)/syscalls/errno.c
 
-# How to build a .gox file from a .a file.
+# How to build a .gox file from a .lo file.
 BUILDGOX = \
-	$(OBJCOPY) -j .go_export $< $@.tmp && mv -f $@.tmp $@
+	f=`echo $< | sed -e 's/.lo$$/.o/'`; \
+	$(OBJCOPY) -j .go_export $$f $@.tmp && mv -f $@.tmp $@
 
-asn1.gox: asn1/libasn1.$(OBJEXT)
+asn1.gox: asn1/asn1.lo
 	$(BUILDGOX)
-big.gox: big/libbig.$(OBJEXT)
+big.gox: big/big.lo
 	$(BUILDGOX)
-bufio.gox: bufio/libbufio.$(OBJEXT)
+bufio.gox: bufio/bufio.lo
 	$(BUILDGOX)
-bytes.gox: bytes/bytes.$(OBJEXT)
+bytes.gox: bytes/bytes.lo
 	$(BUILDGOX)
-cmath.gox: cmath/libcmath.$(OBJEXT)
+cmath.gox: cmath/cmath.lo
 	$(BUILDGOX)
-ebnf.gox: ebnf/libebnf.$(OBJEXT)
+ebnf.gox: ebnf/ebnf.lo
 	$(BUILDGOX)
-exec.gox: exec/libexec.$(OBJEXT)
+exec.gox: exec/exec.lo
 	$(BUILDGOX)
-expvar.gox: expvar/libexpvar.$(OBJEXT)
+expvar.gox: expvar/expvar.lo
 	$(BUILDGOX)
-flag.gox: flag/libflag.$(OBJEXT)
+flag.gox: flag/flag.lo
 	$(BUILDGOX)
-fmt.gox: fmt/libfmt.$(OBJEXT)
+fmt.gox: fmt/fmt.lo
 	$(BUILDGOX)
-gob.gox: gob/libgob.$(OBJEXT)
+gob.gox: gob/gob.lo
 	$(BUILDGOX)
-hash.gox: hash/libhash.$(OBJEXT)
+hash.gox: hash/hash.lo
 	$(BUILDGOX)
-html.gox: html/libhtml.$(OBJEXT)
+html.gox: html/html.lo
 	$(BUILDGOX)
-http.gox: http/libhttp.$(OBJEXT)
+http.gox: http/http.lo
 	$(BUILDGOX)
-image.gox: image/libimage.$(OBJEXT)
+image.gox: image/image.lo
 	$(BUILDGOX)
-io.gox: io/libio.$(OBJEXT)
+io.gox: io/io.lo
 	$(BUILDGOX)
-json.gox: json/libjson.$(OBJEXT)
+json.gox: json/json.lo
 	$(BUILDGOX)
-log.gox: log/liblog.$(OBJEXT)
+log.gox: log/log.lo
 	$(BUILDGOX)
-math.gox: math/libmath.$(OBJEXT)
+math.gox: math/math.lo
 	$(BUILDGOX)
-mime.gox: mime/libmime.$(OBJEXT)
+mime.gox: mime/mime.lo
 	$(BUILDGOX)
-net.gox: net/libnet.$(OBJEXT)
+net.gox: net/net.lo
 	$(BUILDGOX)
-netchan.gox: netchan/libnetchan.$(OBJEXT)
+netchan.gox: netchan/netchan.lo
 	$(BUILDGOX)
-os.gox: os/libos.$(OBJEXT)
+os.gox: os/os.lo
 	$(BUILDGOX)
-patch.gox: patch/libpatch.$(OBJEXT)
+patch.gox: patch/patch.lo
 	$(BUILDGOX)
-path.gox: path/libpath.$(OBJEXT)
+path.gox: path/path.lo
 	$(BUILDGOX)
-rand.gox: rand/librand.$(OBJEXT)
+rand.gox: rand/rand.lo
 	$(BUILDGOX)
-reflect.gox: reflect/libreflect.$(OBJEXT)
+reflect.gox: reflect/reflect.lo
 	$(BUILDGOX)
-regexp.gox: regexp/libregexp.$(OBJEXT)
+regexp.gox: regexp/regexp.lo
 	$(BUILDGOX)
-rpc.gox: rpc/librpc.$(OBJEXT)
+rpc.gox: rpc/rpc.lo
 	$(BUILDGOX)
-runtime.gox: runtime/libruntime.$(OBJEXT)
+runtime.gox: runtime/runtime.lo
 	$(BUILDGOX)
-scanner.gox: scanner/libscanner.$(OBJEXT)
+scanner.gox: scanner/scanner.lo
 	$(BUILDGOX)
-smtp.gox: smtp/libsmtp.$(OBJEXT)
+smtp.gox: smtp/smtp.lo
 	$(BUILDGOX)
-sort.gox: sort/libsort.$(OBJEXT)
+sort.gox: sort/sort.lo
 	$(BUILDGOX)
-strconv.gox: strconv/libstrconv.$(OBJEXT)
+strconv.gox: strconv/strconv.lo
 	$(BUILDGOX)
-strings.gox: strings/libstrings.$(OBJEXT)
+strings.gox: strings/strings.lo
 	$(BUILDGOX)
-sync.gox: sync/mutex.$(OBJEXT)
+sync.gox: sync/mutex.lo
 	$(BUILDGOX)
-syslog.gox: syslog/syslog.$(OBJEXT)
+syslog.gox: syslog/syslog.lo
 	$(BUILDGOX)
-syscall.gox: syscalls/syscall.$(OBJEXT)
+syscall.gox: syscalls/syscall.lo
 	$(BUILDGOX)
-tabwriter.gox: tabwriter/libtabwriter.$(OBJEXT)
+tabwriter.gox: tabwriter/tabwriter.lo
 	$(BUILDGOX)
-template.gox: template/libtemplate.$(OBJEXT)
+template.gox: template/template.lo
 	$(BUILDGOX)
-testing.gox: testing/libtesting.$(OBJEXT)
+testing.gox: testing/testing.lo
 	$(BUILDGOX)
-time.gox: time/libtime.$(OBJEXT)
+time.gox: time/time.lo
 	$(BUILDGOX)
-try.gox: try/libtry.$(OBJEXT)
+try.gox: try/try.lo
 	$(BUILDGOX)
-unicode.gox: unicode/libunicode.$(OBJEXT)
+unicode.gox: unicode/unicode.lo
 	$(BUILDGOX)
-utf16.gox: utf16/libutf16.$(OBJEXT)
+utf16.gox: utf16/utf16.lo
 	$(BUILDGOX)
-utf8.gox: utf8/libutf8.$(OBJEXT)
+utf8.gox: utf8/utf8.lo
 	$(BUILDGOX)
-websocket.gox: websocket/libwebsocket.$(OBJEXT)
+websocket.gox: websocket/websocket.lo
 	$(BUILDGOX)
-xml.gox: xml/libxml.$(OBJEXT)
+xml.gox: xml/xml.lo
 	$(BUILDGOX)
 
-archive/tar.gox: archive/libtar.$(OBJEXT)
+archive/tar.gox: archive/tar.lo
 	$(BUILDGOX)
-archive/zip.gox: archive/libzip.$(OBJEXT)
+archive/zip.gox: archive/zip.lo
 	$(BUILDGOX)
 
-compress/flate.gox: compress/libflate.$(OBJEXT)
+compress/flate.gox: compress/flate.lo
 	$(BUILDGOX)
-compress/gzip.gox: compress/libgzip.$(OBJEXT)
+compress/gzip.gox: compress/gzip.lo
 	$(BUILDGOX)
-compress/zlib.gox: compress/libzlib.$(OBJEXT)
+compress/zlib.gox: compress/zlib.lo
 	$(BUILDGOX)
 
-container/heap.gox: container/libheap.$(OBJEXT)
+container/heap.gox: container/heap.lo
 	$(BUILDGOX)
-container/list.gox: container/liblist.$(OBJEXT)
+container/list.gox: container/list.lo
 	$(BUILDGOX)
-container/ring.gox: container/libring.$(OBJEXT)
+container/ring.gox: container/ring.lo
 	$(BUILDGOX)
-container/vector.gox: container/libvector.$(OBJEXT)
+container/vector.gox: container/vector.lo
 	$(BUILDGOX)
 
-crypto/aes.gox: crypto/libaes.$(OBJEXT)
+crypto/aes.gox: crypto/aes.lo
 	$(BUILDGOX)
-crypto/block.gox: crypto/libblock.$(OBJEXT)
+crypto/block.gox: crypto/block.lo
 	$(BUILDGOX)
-crypto/blowfish.gox: crypto/libblowfish.$(OBJEXT)
+crypto/blowfish.gox: crypto/blowfish.lo
 	$(BUILDGOX)
-crypto/cast5.gox: crypto/libcast5.$(OBJEXT)
+crypto/cast5.gox: crypto/cast5.lo
 	$(BUILDGOX)
-crypto/cipher.gox: crypto/libcipher.$(OBJEXT)
+crypto/cipher.gox: crypto/cipher.lo
 	$(BUILDGOX)
-crypto/elliptic.gox: crypto/libelliptic.$(OBJEXT)
+crypto/elliptic.gox: crypto/elliptic.lo
 	$(BUILDGOX)
-crypto/hmac.gox: crypto/libhmac.$(OBJEXT)
+crypto/hmac.gox: crypto/hmac.lo
 	$(BUILDGOX)
-crypto/md4.gox: crypto/libmd4.$(OBJEXT)
+crypto/md4.gox: crypto/md4.lo
 	$(BUILDGOX)
-crypto/md5.gox: crypto/libmd5.$(OBJEXT)
+crypto/md5.gox: crypto/md5.lo
 	$(BUILDGOX)
-crypto/ocsp.gox: crypto/libocsp.$(OBJEXT)
+crypto/ocsp.gox: crypto/ocsp.lo
 	$(BUILDGOX)
-crypto/rand.gox: crypto/librand.$(OBJEXT)
+crypto/rand.gox: crypto/rand.lo
 	$(BUILDGOX)
-crypto/rc4.gox: crypto/librc4.$(OBJEXT)
+crypto/rc4.gox: crypto/rc4.lo
 	$(BUILDGOX)
-crypto/ripemd160.gox: crypto/libripemd160.$(OBJEXT)
+crypto/ripemd160.gox: crypto/ripemd160.lo
 	$(BUILDGOX)
-crypto/rsa.gox: crypto/librsa.$(OBJEXT)
+crypto/rsa.gox: crypto/rsa.lo
 	$(BUILDGOX)
-crypto/sha1.gox: crypto/libsha1.$(OBJEXT)
+crypto/sha1.gox: crypto/sha1.lo
 	$(BUILDGOX)
-crypto/sha256.gox: crypto/libsha256.$(OBJEXT)
+crypto/sha256.gox: crypto/sha256.lo
 	$(BUILDGOX)
-crypto/sha512.gox: crypto/libsha512.$(OBJEXT)
+crypto/sha512.gox: crypto/sha512.lo
 	$(BUILDGOX)
-crypto/subtle.gox: crypto/libsubtle.$(OBJEXT)
+crypto/subtle.gox: crypto/subtle.lo
 	$(BUILDGOX)
-crypto/tls.gox: crypto/libtls.$(OBJEXT)
+crypto/tls.gox: crypto/tls.lo
 	$(BUILDGOX)
-crypto/twofish.gox: crypto/libtwofish.$(OBJEXT)
+crypto/twofish.gox: crypto/twofish.lo
 	$(BUILDGOX)
-crypto/x509.gox: crypto/libx509.$(OBJEXT)
+crypto/x509.gox: crypto/x509.lo
 	$(BUILDGOX)
-crypto/xtea.gox: crypto/libxtea.$(OBJEXT)
+crypto/xtea.gox: crypto/xtea.lo
 	$(BUILDGOX)
 
-crypto/openpgp/armor.gox: crypto/openpgp/libarmor.$(OBJEXT)
+crypto/openpgp/armor.gox: crypto/openpgp/armor.lo
 	$(BUILDGOX)
-crypto/openpgp/error.gox: crypto/openpgp/liberror.$(OBJEXT)
+crypto/openpgp/error.gox: crypto/openpgp/error.lo
 	$(BUILDGOX)
-crypto/openpgp/s2k.gox: crypto/openpgp/libs2k.$(OBJEXT)
+crypto/openpgp/s2k.gox: crypto/openpgp/s2k.lo
 	$(BUILDGOX)
 
-debug/dwarf.gox: debug/libdwarf.$(OBJEXT)
+debug/dwarf.gox: debug/dwarf.lo
 	$(BUILDGOX)
-debug/elf.gox: debug/libelf.$(OBJEXT)
+debug/elf.gox: debug/elf.lo
 	$(BUILDGOX)
-debug/gosym.gox: debug/libgosym.$(OBJEXT)
+debug/gosym.gox: debug/gosym.lo
 	$(BUILDGOX)
-debug/macho.gox: debug/libmacho.$(OBJEXT)
+debug/macho.gox: debug/macho.lo
 	$(BUILDGOX)
-debug/pe.gox: debug/libpe.$(OBJEXT)
+debug/pe.gox: debug/pe.lo
 	$(BUILDGOX)
-debug/proc.gox: debug/libproc.$(OBJEXT)
+debug/proc.gox: debug/proc.lo
 	$(BUILDGOX)
 
-encoding/ascii85.gox: encoding/libascii85.$(OBJEXT)
+encoding/ascii85.gox: encoding/ascii85.lo
 	$(BUILDGOX)
-encoding/base32.gox: encoding/libbase32.$(OBJEXT)
+encoding/base32.gox: encoding/base32.lo
 	$(BUILDGOX)
-encoding/base64.gox: encoding/libbase64.$(OBJEXT)
+encoding/base64.gox: encoding/base64.lo
 	$(BUILDGOX)
-encoding/binary.gox: encoding/libbinary.$(OBJEXT)
+encoding/binary.gox: encoding/binary.lo
 	$(BUILDGOX)
-encoding/git85.gox: encoding/libgit85.$(OBJEXT)
+encoding/git85.gox: encoding/git85.lo
 	$(BUILDGOX)
-encoding/hex.gox: encoding/libhex.$(OBJEXT)
+encoding/hex.gox: encoding/hex.lo
 	$(BUILDGOX)
-encoding/line.gox: encoding/libline.$(OBJEXT)
+encoding/line.gox: encoding/line.lo
 	$(BUILDGOX)
-encoding/pem.gox: encoding/libpem.$(OBJEXT)
+encoding/pem.gox: encoding/pem.lo
 	$(BUILDGOX)
 
-exp/datafmt.gox: exp/libdatafmt.$(OBJEXT)
+exp/datafmt.gox: exp/datafmt.lo
 	$(BUILDGOX)
-exp/draw.gox: exp/libdraw.$(OBJEXT)
+exp/draw.gox: exp/draw.lo
 	$(BUILDGOX)
-exp/eval.gox: exp/libeval.$(OBJEXT)
+exp/eval.gox: exp/eval.lo
 	$(BUILDGOX)
 
-go/ast.gox: go/libast.$(OBJEXT)
+go/ast.gox: go/ast.lo
 	$(BUILDGOX)
-go/doc.gox: go/libdoc.$(OBJEXT)
+go/doc.gox: go/doc.lo
 	$(BUILDGOX)
-go/parser.gox: go/libparser.$(OBJEXT)
+go/parser.gox: go/parser.lo
 	$(BUILDGOX)
-go/printer.gox: go/libprinter.$(OBJEXT)
+go/printer.gox: go/printer.lo
 	$(BUILDGOX)
-go/scanner.gox: go/libscanner.$(OBJEXT)
+go/scanner.gox: go/scanner.lo
 	$(BUILDGOX)
-go/token.gox: go/libtoken.$(OBJEXT)
+go/token.gox: go/token.lo
 	$(BUILDGOX)
-go/typechecker.gox: go/libtypechecker.$(OBJEXT)
+go/typechecker.gox: go/typechecker.lo
 	$(BUILDGOX)
 
-hash/adler32.gox: hash/libadler32.$(OBJEXT)
+hash/adler32.gox: hash/adler32.lo
 	$(BUILDGOX)
-hash/crc32.gox: hash/libcrc32.$(OBJEXT)
+hash/crc32.gox: hash/crc32.lo
 	$(BUILDGOX)
-hash/crc64.gox: hash/libcrc64.$(OBJEXT)
+hash/crc64.gox: hash/crc64.lo
 	$(BUILDGOX)
 
-http/pprof.gox: http/libpprof.$(OBJEXT)
+http/pprof.gox: http/pprof.lo
 	$(BUILDGOX)
 
-image/jpeg.gox: image/libjpeg.$(OBJEXT)
+image/jpeg.gox: image/jpeg.lo
 	$(BUILDGOX)
-image/png.gox: image/libpng.$(OBJEXT)
+image/png.gox: image/png.lo
 	$(BUILDGOX)
 
-index/suffixarray.gox: index/libsuffixarray.$(OBJEXT)
+index/suffixarray.gox: index/suffixarray.lo
 	$(BUILDGOX)
 
-io/ioutil.gox: io/libioutil.$(OBJEXT)
+io/ioutil.gox: io/ioutil.lo
 	$(BUILDGOX)
 
-mime/multipart.gox: mime/libmultipart.$(OBJEXT)
+mime/multipart.gox: mime/multipart.lo
 	$(BUILDGOX)
 
-net/dict.gox: net/libdict.$(OBJEXT)
+net/dict.gox: net/dict.lo
 	$(BUILDGOX)
-net/textproto.gox: net/libtextproto.$(OBJEXT)
+net/textproto.gox: net/textproto.lo
 	$(BUILDGOX)
 
-os/inotify.gox: os/libinotify.$(OBJEXT)
+os/inotify.gox: os/inotify.lo
 	$(BUILDGOX)
-os/signal.gox: os/libsignal.$(OBJEXT)
+os/signal.gox: os/signal.lo
 	$(BUILDGOX)
 
-rpc/jsonrpc.gox: rpc/libjsonrpc.$(OBJEXT)
+rpc/jsonrpc.gox: rpc/jsonrpc.lo
 	$(BUILDGOX)
 
-runtime/debug.gox: runtime/libdebug.$(OBJEXT)
+runtime/debug.gox: runtime/debug.lo
 	$(BUILDGOX)
-runtime/pprof.gox: runtime/libpprof.$(OBJEXT)
+runtime/pprof.gox: runtime/pprof.lo
 	$(BUILDGOX)
 
-testing/iotest.gox: testing/libiotest.$(OBJEXT)
+testing/iotest.gox: testing/iotest.lo
 	$(BUILDGOX)
-testing/quick.gox: testing/libquick.$(OBJEXT)
+testing/quick.gox: testing/quick.lo
 	$(BUILDGOX)
-testing/script.gox: testing/libscript.$(OBJEXT)
+testing/script.gox: testing/script.lo
 	$(BUILDGOX)
 
 if LIBGO_IS_LINUX