[odcctools-changes] [157] trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Jul 3 09:15:55 PDT 2009


Revision: 157
          http://trac.macosforge.org/projects/odcctools/changeset/157
Author:   peter at pogma.com
Date:     2009-07-03 09:15:53 -0700 (Fri, 03 Jul 2009)
Log Message:
-----------
Enable LTO support. This is pretty awesome, can use clang-cc -triple
i386-apple-darwin9.5.0 -emit-llvm-bc on linux, then use our ld64 to
create an i386-apple-darwin executable. This is, of course, using a
standard install of clang and llvm on linux.

* files/configure.ac: Check for libLTO.
* files/ld64/Makefile.in: Use libLTO.
* extract.sh: Add new patch.
* patches/ld64/LTOReader-setasmpath.diff: Explicitly tell
libLTO the path to as.

Modified Paths:
--------------
    trunk/ChangeLog.odcctools
    trunk/extract.sh
    trunk/files/configure.ac
    trunk/files/ld64/Makefile.in

Added Paths:
-----------
    trunk/patches/ld64/LTOReader-setasmpath.diff

Modified: trunk/ChangeLog.odcctools
===================================================================
--- trunk/ChangeLog.odcctools	2009-07-02 17:14:53 UTC (rev 156)
+++ trunk/ChangeLog.odcctools	2009-07-03 16:15:53 UTC (rev 157)
@@ -1,3 +1,16 @@
+2009-07-03  Peter O'Gorman  <peter at pogma.com>
+
+	Enable LTO support. This is pretty awesome, can use clang-cc -triple
+	i386-apple-darwin9.5.0 -emit-llvm-bc on linux, then use our ld64 to
+	create an i386-apple-darwin executable. This is, of course, using a
+	standard install of clang and llvm on linux.
+
+	* files/configure.ac: Check for libLTO.
+	* files/ld64/Makefile.in: Use libLTO.
+	* extract.sh: Add new patch.
+	* patches/ld64/LTOReader-setasmpath.diff: Explicitly tell libLTO the
+	path to as.
+
 2009-07-02  Peter O'Gorman  <peter at pogma.com>
 
 	Um, yeah, so ld64-85.2.2 is older than ld64-85.2.1, so, putting back

Modified: trunk/extract.sh
===================================================================
--- trunk/extract.sh	2009-07-02 17:14:53 UTC (rev 156)
+++ trunk/extract.sh	2009-07-03 16:15:53 UTC (rev 157)
@@ -72,7 +72,8 @@
 misc/libtool-ldpath.diff misc/libtool-pb.diff misc/ranlibname.diff \
 misc/redo_prebinding.nogetattrlist.diff \
 misc/redo_prebinding.nomalloc.diff misc/libtool_lipo_transform.diff \
-otool/nolibmstub.diff otool/noobjc.diff force_load.diff"
+otool/nolibmstub.diff otool/noobjc.diff force_load.diff \
+ld64/LTOReader-setasmpath.diff"
 
 ADDEDFILESDIR=${TOPSRCDIR}/files
 

Modified: trunk/files/configure.ac
===================================================================
--- trunk/files/configure.ac	2009-07-02 17:14:53 UTC (rev 156)
+++ trunk/files/configure.ac	2009-07-03 16:15:53 UTC (rev 157)
@@ -326,6 +326,14 @@
 			     [No uuid_generate_random function found])])])
 AC_SUBST([UUID_LIBS])
 
+# LTO
+AC_CHECK_LIB([LTO],[lto_get_version],[
+	     LTO_LIBS=-lLTO
+	     LTO_DEFS="-DLTO_SUPPORT=1"
+	     ])
+AC_SUBST(LTO_LIBS)
+AC_SUBST(LTO_DEFS)
+
 AC_CONFIG_FILES([Makefile include/Makefile libstuff/Makefile libmacho/Makefile])
 AC_CONFIG_FILES([ar/Makefile])
 AC_CONFIG_FILES([as/Makefile])

Modified: trunk/files/ld64/Makefile.in
===================================================================
--- trunk/files/ld64/Makefile.in	2009-07-02 17:14:53 UTC (rev 156)
+++ trunk/files/ld64/Makefile.in	2009-07-03 16:15:53 UTC (rev 157)
@@ -22,6 +22,8 @@
 HAVE_FOREIGN_HEADERS    = @HAVE_FOREIGN_HEADERS@
 UUID_LIBS	= @UUID_LIBS@
 SSL_LIBS	= @SSL_LIBS@
+LTO_DEFS	= @LTO_DEFS@
+LTO_LIBS	= @LTO_LIBS@
 
 ifeq ($(HAVE_PRIVEXT),NO)
 INCPRIVEXT      = -include $(top_srcdir)/include/extern.h
@@ -34,16 +36,18 @@
 INSTALL		= @INSTALL@
 INSTALL_PROGRAM	= @INSTALL_PROGRAM@
 transform       = @program_transform_name@
-LDPROG        = $(shell echo ld_classic | sed '$(transform)')
+LDPROG          = $(shell echo ld_classic | sed '$(transform)')
+ASPROG          = $(shell echo as | sed '$(transform)')
 
-
 MYINCLUDES      = -I$(builddir) -I$(srcdir) -I$(srcdir) -I$(srcdir)/Readers \
 			-I$(srcdir)/Writers -I$(top_builddir)/include \
 			-I$(top_srcdir)/include $(INCPRIVEXT) $(FORHDRS)
 MYWARNINGS      = 
-MYDEFS          = -DDEBUG -DBINDIR="\"$(bindir)\"" -DLDPROG="\"$(LDPROG)\""
+MYDEFS          = -DDEBUG -DBINDIR="\"$(bindir)\"" -DLDPROG="\"$(LDPROG)\"" \
+		  -DASPROG="\"$(ASPROG)\"" $(LTO_DEFS)
+
 MYLDFLAGS	= -L$(top_builddir)/libstuff
-MYLIBS		= -lstuff $(SSL_LIBS) $(UUID_LIBS)
+MYLIBS		= -lstuff $(SSL_LIBS) $(UUID_LIBS) $(LTO_LIBS)
 
 MYCOMPILEFLAGS	= $(WARNINGS) $(MYWARNINGS) $(DEFS) $(MYDEFS) \
 	$(CPPFLAGS) $(MYINCLUDES) $(CFLAGS) $(MDYNAMICNOPIC) 

Added: trunk/patches/ld64/LTOReader-setasmpath.diff
===================================================================
--- trunk/patches/ld64/LTOReader-setasmpath.diff	                        (rev 0)
+++ trunk/patches/ld64/LTOReader-setasmpath.diff	2009-07-03 16:15:53 UTC (rev 157)
@@ -0,0 +1,11 @@
+--- src/LTOReader.hpp.orig	2008-07-10 20:15:14.000000000 -0500
++++ src/LTOReader.hpp	2009-07-03 10:58:35.000000000 -0500
+@@ -431,6 +431,8 @@
+ 	
+ 	// create optimizer and add each Reader
+ 	lto_code_gen_t generator = ::lto_codegen_create();
++
++	::lto_codegen_set_assembler_path(generator, BINDIR "/" ASPROG );
+ 	for (std::set<Reader*>::iterator it=fgReaders.begin(); it != fgReaders.end(); ++it) {
+ 		if ( ::lto_codegen_add_module(generator, (*it)->fModule) )
+ 			throwf("lto: could not merge in %s because %s", (*it)->fPath, ::lto_get_error_message());
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/odcctools-changes/attachments/20090703/fe407fd1/attachment.html>


More information about the odcctools-changes mailing list