summary refs log tree commit diff
path: root/pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh')
-rw-r--r--pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh b/pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh
new file mode 100644
index 00000000000..2a20e77e7ba
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/hooks/fix-qt-static-libs.sh
@@ -0,0 +1,32 @@
+# fixQtStaticLibs
+#
+# Usage: fixQtStaticLibs _lib_ _dev_
+#
+# Find static Qt libraries in output _lib_ and move them to the corresponding
+# path in output _dev_. Any QMake library definitions (*.prl files) are also
+# moved and library paths are patched.
+#
+fixQtStaticLibs() {
+    local lib="$1"
+    local dev="$2"
+
+    pushd "$lib"
+    if [ -d "lib" ]; then
+        find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | \
+            while read -r -d $'\0' file; do
+                mkdir -p "$dev/$(dirname "$file")"
+                mv "$lib/$file" "$dev/$file"
+            done
+    fi
+    popd
+
+    if [ -d "$dev" ]; then
+        find "$dev" -name '*.prl' | while read prl; do
+            echo "fixQtStaticLibs: Fixing built-in paths in \`$prl'..."
+            sed -i "$prl" \
+                -e '/^QMAKE_PRL_BUILD_DIR =/d' \
+                -e '/^QMAKE_PRO_INPUT =/d' \
+                -e "s|-L\\\$\\\$NIX_OUTPUT_OUT/lib|-L$lib/lib -L$dev/lib|g"
+        done
+    fi
+}