summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/macx-ios-clang/features/qt.prf7
-rwxr-xr-xmkspecs/macx-ios-clang/rename_main.sh63
2 files changed, 64 insertions, 6 deletions
diff --git a/mkspecs/macx-ios-clang/features/qt.prf b/mkspecs/macx-ios-clang/features/qt.prf
index 9202a70a5a..04ebb1208a 100644
--- a/mkspecs/macx-ios-clang/features/qt.prf
+++ b/mkspecs/macx-ios-clang/features/qt.prf
@@ -42,12 +42,7 @@ equals(TEMPLATE, app):contains(QT, gui(-private)?) {
!isEmpty(QMAKE_PRE_LINK): \
QMAKE_PRE_LINK += ";"
- QMAKE_PRE_LINK += \
- "for f in $(find $${objects_dir} -name '*.o'); do" \
- "(nm $f | grep -q 'T _main' && cp $f $f.original" \
- "&& ld -r -alias _main _qt_main -unexported_symbol _main $f.original -o $f)" \
- "|| true" \
- "; done"
+ QMAKE_PRE_LINK += $$QMAKESPEC/rename_main.sh $${objects_dir}
}
}
diff --git a/mkspecs/macx-ios-clang/rename_main.sh b/mkspecs/macx-ios-clang/rename_main.sh
new file mode 100755
index 0000000000..b30eb160d0
--- /dev/null
+++ b/mkspecs/macx-ios-clang/rename_main.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+#############################################################################
+##
+## Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+## Contact: http://www.qt-project.org/legal
+##
+## This file is the build configuration utility of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and Digia. For licensing terms and
+## conditions see http://qt.digia.com/licensing. For further information
+## use the contact form at http://qt.digia.com/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 2.1 requirements
+## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Digia gives you certain additional
+## rights. These rights are described in the Digia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 3.0 as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU General Public License version 3.0 requirements will be
+## met: http://www.gnu.org/copyleft/gpl.html.
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+if [ $# -eq 0 ]; then
+ echo "usage: $0 <path to object files>"
+else
+ for f in $(find $1 -name '*.o'); do
+ # Skip object files without the _main symbol
+ nm $f | grep -q 'T _main$' || continue
+
+ echo "Found main() in ${f#$1/}"
+
+ strings -t d - $f | grep '_main\(\.eh\)\?$' | while read match; do
+ offset=$(echo $match | cut -d ' ' -f 1)
+ symbol=$(echo $match | cut -d ' ' -f 2)
+
+ echo " Renaming '$symbol' at offset $offset to '${symbol/main/qtmn}'"
+
+ # In-place rename the string (keeping the same length)
+ printf '_qtmn' | dd of=$f bs=1 seek=$offset conv=notrunc >/dev/null 2>&1
+ done
+ done
+fi \ No newline at end of file