diff options
author | Sven Gothel <[email protected]> | 2012-03-06 19:35:48 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-03-06 19:35:48 +0100 |
commit | b31f1885fab139fb3dde9f04304406402650eb83 (patch) | |
tree | ad4ce006199d30889fc854092daf2cc7040ebe74 | |
parent | bb698e7d5157857c728c11ffc46f0cd2ff79b345 (diff) |
Update and cleanup cpptasks build & archive.
Including Edwin Vane's work in commit d51d2aaad01d1c8188193a7913c6ef0fc38ea798
11 files changed, 320 insertions, 4 deletions
diff --git a/make/lib/archive/CppTasksGCCNamespaceHack.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b b/make/lib/archive/CppTasksGCCNamespaceHack.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b Binary files differdeleted file mode 100644 index c31779e..0000000 --- a/make/lib/archive/CppTasksGCCNamespaceHack.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b +++ /dev/null diff --git a/make/lib/archive/cpptasks.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b b/make/lib/archive/cpptasks.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b Binary files differdeleted file mode 100644 index dec6c13..0000000 --- a/make/lib/archive/cpptasks.jar-mbien-129e783741d91e9ee5cd7da5d5c962c32ec96b0b +++ /dev/null diff --git a/make/lib/archive/cpptasks.jar-orig-c91f003551542c2aab62dd8ef89a7894c7e50689 b/make/lib/archive/cpptasks.jar-orig-c91f003551542c2aab62dd8ef89a7894c7e50689 Binary files differdeleted file mode 100755 index 005691c..0000000 --- a/make/lib/archive/cpptasks.jar-orig-c91f003551542c2aab62dd8ef89a7894c7e50689 +++ /dev/null diff --git a/make/lib/archive/cpptasks/cpptasks-1.0b5-accumulated.patch b/make/lib/archive/cpptasks/cpptasks-1.0b5-accumulated.patch new file mode 100644 index 0000000..65ec9ae --- /dev/null +++ b/make/lib/archive/cpptasks/cpptasks-1.0b5-accumulated.patch @@ -0,0 +1,301 @@ +diff -Nur cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java +--- cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java 2008-04-02 19:26:44.000000000 +0200 ++++ cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/AbstractLdLinker.java 2012-03-06 11:23:42.403976192 +0100 +@@ -59,7 +59,7 @@ + args.addElement("-bundle"); + } else { + if (linkType.isSharedLibrary()) { +- args.addElement("-prebind"); ++ // args.addElement("-prebind"); // Only required for OSX 10.3 and earlier, no auto-add (can add manually though) + args.addElement("-dynamiclib"); + } + } +diff -Nur cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java +--- cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java 2008-04-02 19:26:44.000000000 +0200 ++++ cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java 2012-03-06 19:17:27.588492284 +0100 +@@ -17,6 +17,8 @@ + package net.sf.antcontrib.cpptasks.gcc; + import java.io.File; + import java.util.Vector; ++import java.util.HashSet; ++import java.util.Arrays; + + import net.sf.antcontrib.cpptasks.CUtil; + import net.sf.antcontrib.cpptasks.compiler.LinkType; +@@ -32,10 +34,11 @@ + ".dll", ".so", ".sl"}; + private static final String[] libtoolObjFiles = new String[]{".fo", ".a", + ".lib", ".dll", ".so", ".sl"}; +- private static String[] linkerOptions = new String[]{"-bundle", +- "-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-s", ++ private static String[] linkerOptions = new String[] {"-bundle", ++ "-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-noprebind", "-s", + "-static", "-shared", "-symbolic", "-Xlinker", +- "--export-all-symbols", "-static-libgcc",}; ++ "--export-all-symbols", "-static-libgcc"}; ++ private static String[] darwinLinkerOptions = new String[]{"-arch", "-weak_framework", "-lazy_framework", "-weak_library" }; + private static final GccLinker dllLinker = new GccLinker("gcc", objFiles, + discardFiles, "lib", ".so", false, new GccLinker("gcc", objFiles, + discardFiles, "lib", ".so", true, null)); +@@ -78,6 +81,9 @@ + */ + public String decorateLinkerOption(StringBuffer buf, String arg) { + String decoratedArg = arg; ++ if (arg.startsWith("--sysroot")) { ++ return arg; ++ } + if (arg.length() > 1 && arg.charAt(0) == '-') { + switch (arg.charAt(1)) { + // +@@ -97,12 +103,13 @@ + break; + default : + boolean known = false; +- for (int i = 0; i < linkerOptions.length; i++) { +- if (linkerOptions[i].equals(arg)) { +- known = true; +- break; +- } ++ HashSet allLinkerOptions = new HashSet(); ++ allLinkerOptions.addAll(Arrays.asList(linkerOptions)); ++ if (isDarwin()) { ++ allLinkerOptions.addAll(Arrays.asList(darwinLinkerOptions)); + } ++ known = allLinkerOptions.contains(arg); ++ + if (!known) { + buf.setLength(0); + buf.append("-Wl,"); +diff -Nur cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java.orig cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java.orig +--- cpptasks-1.0b5/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java.orig 1970-01-01 01:00:00.000000000 +0100 ++++ cpptasks-1.0b5-patched/src/main/java/net/sf/antcontrib/cpptasks/gcc/GccLinker.java.orig 2012-03-06 11:23:42.403976192 +0100 +@@ -0,0 +1,214 @@ ++/* ++ * ++ * Copyright 2002-2004 The Ant-Contrib project ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++package net.sf.antcontrib.cpptasks.gcc; ++import java.io.File; ++import java.util.Vector; ++import java.util.HashSet; ++import java.util.Arrays; ++ ++import net.sf.antcontrib.cpptasks.CUtil; ++import net.sf.antcontrib.cpptasks.compiler.LinkType; ++import net.sf.antcontrib.cpptasks.compiler.Linker; ++/** ++ * Adapter for the GCC linker ++ * ++ * @author Adam Murdoch ++ */ ++public class GccLinker extends AbstractLdLinker { ++ private static final String[] discardFiles = new String[0]; ++ private static final String[] objFiles = new String[]{".o", ".a", ".lib", ++ ".dll", ".so", ".sl"}; ++ private static final String[] libtoolObjFiles = new String[]{".fo", ".a", ++ ".lib", ".dll", ".so", ".sl"}; ++ private static String[] linkerOptions = new String[]{"-bundle", ++ "-dynamiclib", "-nostartfiles", "-nostdlib", "-prebind", "-noprebind", "-s", ++ "-static", "-shared", "-symbolic", "-Xlinker", ++ "--export-all-symbols", "-static-libgcc",}; ++ private static String[] darwinLinkerOptions = new String[]{"-arch", "-weak_framework", "-lazy_framework", "-weak_library" }; ++ private static final GccLinker dllLinker = new GccLinker("gcc", objFiles, ++ discardFiles, "lib", ".so", false, new GccLinker("gcc", objFiles, ++ discardFiles, "lib", ".so", true, null)); ++ private static final GccLinker instance = new GccLinker("gcc", objFiles, ++ discardFiles, "", "", false, null); ++ private static final GccLinker machBundleLinker = new GccLinker("gcc", ++ objFiles, discardFiles, "lib", ".bundle", false, null); ++ private static final GccLinker machDllLinker = new GccLinker("gcc", ++ objFiles, discardFiles, "lib", ".dylib", false, null); ++ public static GccLinker getInstance() { ++ return instance; ++ } ++ private File[] libDirs; ++ protected GccLinker(String command, String[] extensions, ++ String[] ignoredExtensions, String outputPrefix, ++ String outputSuffix, boolean isLibtool, GccLinker libtoolLinker) { ++ super(command, "-dumpversion", extensions, ignoredExtensions, ++ outputPrefix, outputSuffix, isLibtool, libtoolLinker); ++ } ++ protected void addImpliedArgs(boolean debug, LinkType linkType, Vector args) { ++ super.addImpliedArgs(debug, linkType, args); ++ if (getIdentifier().indexOf("mingw") >= 0) { ++ if (linkType.isSubsystemConsole()) { ++ args.addElement("-mconsole"); ++ } ++ if (linkType.isSubsystemGUI()) { ++ args.addElement("-mwindows"); ++ } ++ } ++ } ++ /** ++ * Allows drived linker to decorate linker option. Override by GccLinker to ++ * prepend a "-Wl," to pass option to through gcc to linker. ++ * ++ * @param buf ++ * buffer that may be used and abused in the decoration process, ++ * must not be null. ++ * @param arg ++ * linker argument ++ */ ++ public String decorateLinkerOption(StringBuffer buf, String arg) { ++ String decoratedArg = arg; ++ if (arg.length() > 1 && arg.charAt(0) == '-') { ++ switch (arg.charAt(1)) { ++ // ++ // passed automatically by GCC ++ // ++ case 'g' : ++ case 'f' : ++ case 'F' : ++ /* Darwin */ ++ case 'm' : ++ case 'O' : ++ case 'W' : ++ case 'l' : ++ case 'L' : ++ case 'u' : ++ case 'v' : ++ break; ++ default : ++ boolean known = false; ++ HashSet allLinkerOptions = new HashSet(); ++ allLinkerOptions.addAll(Arrays.asList(linkerOptions)); ++ if (isDarwin()) { ++ allLinkerOptions.addAll(Arrays.asList(darwinLinkerOptions)); ++ } ++ known = allLinkerOptions.contains(arg); ++ ++ if (!known) { ++ buf.setLength(0); ++ buf.append("-Wl,"); ++ buf.append(arg); ++ decoratedArg = buf.toString(); ++ } ++ break; ++ } ++ } ++ return decoratedArg; ++ } ++ /** ++ * Returns library path. ++ * ++ */ ++ public File[] getLibraryPath() { ++ if (libDirs == null) { ++ // ++ // construct gcc lib path from machine and version ++ // ++ StringBuffer buf = new StringBuffer("/lib/gcc-lib/"); ++ buf.append(GccProcessor.getMachine()); ++ buf.append('/'); ++ buf.append(GccProcessor.getVersion()); ++ // ++ // build default path from gcc and system /lib and /lib/w32api ++ // ++ String[] impliedLibPath = new String[]{buf.toString(), ++ "/lib/w32api", "/lib"}; ++ // ++ // read gcc specs file for other library paths ++ // ++ String[] specs = GccProcessor.getSpecs(); ++ String[][] libpaths = GccProcessor.parseSpecs(specs, "*link:", ++ new String[]{"%q"}); ++ String[] libpath; ++ if (libpaths[0].length > 0) { ++ libpath = new String[libpaths[0].length + 3]; ++ int i = 0; ++ for (; i < libpaths[0].length; i++) { ++ libpath[i] = libpaths[0][i]; ++ } ++ libpath[i++] = buf.toString(); ++ libpath[i++] = "/lib/w32api"; ++ libpath[i++] = "/lib"; ++ } else { ++ // ++ // if a failure to find any matches then ++ // use some default values for lib path entries ++ libpath = new String[]{"/usr/local/lib/mingw", ++ "/usr/local/lib", "/usr/lib/w32api", "/usr/lib/mingw", ++ "/usr/lib", buf.toString(), "/lib/w32api", "/lib"}; ++ } ++ for (int i = 0; i < libpath.length; i++) { ++ if (libpath[i].indexOf("mingw") >= 0) { ++ libpath[i] = null; ++ } ++ } ++ // ++ // if cygwin then ++ // we have to prepend location of gcc32 ++ // and .. to start of absolute filenames to ++ // have something that will exist in the ++ // windows filesystem ++ if (GccProcessor.isCygwin()) { ++ GccProcessor.convertCygwinFilenames(libpath); ++ } ++ // ++ // check that remaining entries are actual directories ++ // ++ int count = CUtil.checkDirectoryArray(libpath); ++ // ++ // populate return array with remaining entries ++ // ++ libDirs = new File[count]; ++ int index = 0; ++ for (int i = 0; i < libpath.length; i++) { ++ if (libpath[i] != null) { ++ libDirs[index++] = new File(libpath[i]); ++ } ++ } ++ } ++ return libDirs; ++ } ++ public Linker getLinker(LinkType type) { ++ if (type.isStaticLibrary()) { ++ return GccLibrarian.getInstance(); ++ } ++ if (type.isPluginModule()) { ++ if (isDarwin()) { ++ return machBundleLinker; ++ } else { ++ return dllLinker; ++ } ++ } ++ if (type.isSharedLibrary()) { ++ if (isDarwin()) { ++ return machDllLinker; ++ } else { ++ return dllLinker; ++ } ++ } ++ return instance; ++ } ++} +diff -Nur cpptasks-1.0b5/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java cpptasks-1.0b5-patched/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java +--- cpptasks-1.0b5/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java 2008-04-02 19:26:44.000000000 +0200 ++++ cpptasks-1.0b5-patched/src/test/java/net/sf/antcontrib/cpptasks/gcc/TestAbstractLdLinker.java 2012-03-06 11:23:42.571974125 +0100 +@@ -73,9 +73,8 @@ + pluginOutType.setValue("shared"); + pluginType.setOutputType(pluginOutType); + linker.addImpliedArgs(false, pluginType, args); +- assertEquals(2, args.size()); +- assertEquals("-prebind", args.elementAt(0)); +- assertEquals("-dynamiclib", args.elementAt(1)); ++ assertEquals(1, args.size()); ++ assertEquals("-dynamiclib", args.elementAt(0)); + } + /** + * Checks for proper arguments for plugin generation on Darwin diff --git a/make/lib/archive/cpptasks-1.0b5-darwin-patch.diff b/make/lib/archive/cpptasks/cpptasks-1.0b5-darwin.patch index 8af11be..8af11be 100644 --- a/make/lib/archive/cpptasks-1.0b5-darwin-patch.diff +++ b/make/lib/archive/cpptasks/cpptasks-1.0b5-darwin.patch diff --git a/make/lib/cpptasks_gcclinker.patch b/make/lib/archive/cpptasks/cpptasks-1.0b5-gcclinker.patch index 0eb4c76..0eb4c76 100644 --- a/make/lib/cpptasks_gcclinker.patch +++ b/make/lib/archive/cpptasks/cpptasks-1.0b5-gcclinker.patch diff --git a/make/lib/archive/cpptasks/cpptasks-1.0b5.patches.txt b/make/lib/archive/cpptasks/cpptasks-1.0b5.patches.txt new file mode 100644 index 0000000..bd496c1 --- /dev/null +++ b/make/lib/archive/cpptasks/cpptasks-1.0b5.patches.txt @@ -0,0 +1,6 @@ +cpptasks-1.0b5-accumulated.patch - The accumulated patch, you only need to apply this one! + +The single original patches: + +cpptasks-1.0b5-darwin.patch - Make OSX/Darwin work (linker options etc) +cpptasks-1.0b5-gcclinker.patch - Make crosscompilation work (--sysroot .. etc) diff --git a/make/lib/archive/cpptasks-1.0b5.zip b/make/lib/archive/cpptasks/cpptasks-1.0b5.zip Binary files differindex 21f8c07..21f8c07 100644 --- a/make/lib/archive/cpptasks-1.0b5.zip +++ b/make/lib/archive/cpptasks/cpptasks-1.0b5.zip diff --git a/make/lib/archive/cpptasks-patch-orig-c91f003551542c2aab62dd8ef89a7894c7e50689.tar.gz b/make/lib/archive/cpptasks/obsolete/cpptasks-patch-suncc-c91f003551542c2aab62dd8ef89a7894c7e50689.tar.gz Binary files differindex 22f1cde..22f1cde 100644 --- a/make/lib/archive/cpptasks-patch-orig-c91f003551542c2aab62dd8ef89a7894c7e50689.tar.gz +++ b/make/lib/archive/cpptasks/obsolete/cpptasks-patch-suncc-c91f003551542c2aab62dd8ef89a7894c7e50689.tar.gz diff --git a/make/lib/cpptasks-version.txt b/make/lib/cpptasks-version.txt index 2e7dd72..8c746d6 100755 --- a/make/lib/cpptasks-version.txt +++ b/make/lib/cpptasks-version.txt @@ -1,4 +1,13 @@ -Current cpptasks is from CVS repository at -:pserver:[email protected]:/cvsroot/ant-contrib -as of 10/5/2005 with patches applied for Forte C compiler (Bug -1314266) and fat binary generation on Mac OS X (Bug 1313421). +Current cpptasks is from + <http://ant-contrib.sourceforge.net/cpptasks/index.html> + +Version '1.0 beta 5' / r175: + <http://ant-contrib.svn.sourceforge.net/viewvc/ant-contrib/cpptasks/trunk/> + <http://sourceforge.net/projects/ant-contrib/files/ant-contrib/cpptasks-1.0-beta5/> + +Plus the accumulated patches: + - cpptasks-1.0b5-darwin.patch - Make OSX/Darwin work (linker options etc) + - cpptasks-1.0b5-gcclinker.patch - Make crosscompilation work (--sysroot .. etc) + +See archive/cpptasks/ +and archive/cpptasks/cpptasks-1.0b5.patches.txt diff --git a/make/lib/cpptasks.jar b/make/lib/cpptasks.jar Binary files differindex 45085b5..7324a3e 100644 --- a/make/lib/cpptasks.jar +++ b/make/lib/cpptasks.jar |