diff --git a/tools/copydlldeps.md b/tools/copydlldeps.md index c8145ae1..4d2eb228 100644 --- a/tools/copydlldeps.md +++ b/tools/copydlldeps.md @@ -1,8 +1,8 @@ README of copydlldeps.sh ======================== -This document was created 2016-02-05. It belongs to copydlldeps.sh and is part of the MXE project. +This document belongs to copydlldeps.sh and is a part of the MXE project. -I call it on the command line like: +It can be invoked on the command line like: ``` /share/mxe/tools/copydlldeps.sh --infile /home/mxeuser/test/i686-w64-mingw32.shared/Application.exe \ @@ -19,7 +19,7 @@ It got embedded in a build script like: ``` MXEPATH=/path/to/mxe compiler=i686-w64-mingw32.shared -orgDir=/path/to/my/nsis/dll #nsis is then copying all dlls in there to the place where the exe is located +orgDir=/path/to/my/nsis/dll # nsis is then copying all dlls in there to the place where the exe is located if [ ! $( echo $compiler | grep -q "shared" ) ]; then echo "\$compiler=$compiler and contains the word 'shared'" | tee -a $CURLOG @@ -28,36 +28,44 @@ if [ ! $( echo $compiler | grep -q "shared" ) ]; then echo "| Starting new MXE copydlldeps.sh by LHE DL5RCW | " | tee -a $CURLOG echo "+-----------------------------------------------+ " | tee -a $CURLOG echo "currently working in $( pwd ) " | tee -a $CURLOG - executable=$( find . -name "*.exe" | tail -n 1 ) -if [ -e $MXEPATH/usr/bin/$compiler-objdump ]; then - echo "now populating dir=${orgDir}/nsis/sharedLibs with dll dependencies of executable=$executable" | tee -a $CURLOG + executable=$( find . -name "*.exe" | tail -n 1 ) + sharedLibsDir="${orgDir}/nsis/sharedLibs" + echo "populating dir $sharedLibsDir with dll dependencies of $executable" | tee -a $CURLOG + OBJDUMP=objdump + if [ -e "$MXEPATH/usr/bin/$compiler-objdump" ]; then + OBJDUMP="$MXEPATH/usr/bin/$compiler-objdump" + fi $MXEPATH/tools/copydlldeps.sh --infile $executable \ - --destdir ${orgDir}/nsis/sharedLibs \ - --recursivesrcdir $MXEPATH/usr/$compiler/ \ - --enforce $MXEPATH/usr/$compiler/qt5/plugins/platforms/ \ + --destdir "$sharedLibsDir" \ + --recursivesrcdir "$MXEPATH/usr/$compiler/" \ + --enforce "$MXEPATH/usr/$compiler/qt5/plugins/platforms/" \ --copy \ - --objdump $MXEPATH/usr/bin/$compiler-objdump | tee -a $CURLOG -else - echo "now populating dir=${orgDir}/nsis/sharedLibs with dll dependencies of executable=$executable" | tee -a $CURLOG - $MXEPATH/tools/copydlldeps.sh --infile $executable \ - --destdir ${orgDir}/nsis/sharedLibs \ - --recursivesrcdir $MXEPATH/usr/$compiler/ \ - --enforce $MXEPATH/usr/$compiler/qt5/plugins/platforms/ \ - --copy | tee -a $CURLOG + --objdump "$OBJDUMP" \ + | tee -a $CURLOG fi ``` Additional hints ================ + objdump ------- -I checked if there is a mxe objdump. If not, I took the native one on my server. I actually do not know the difference but decided to include it in the script in case it is important to someone +I checked if there is a mxe objdump. If not, I took the native one on my server. +I actually do not know the difference but decided to include it in the script +in case it is important to someone. + enforce ------- -My application is using Qt5 and objdump did not return the needed qwindows.dll - so I enforce the platform folder. You may add multiple --enforce directories using --enforce /path/folder1 --enforce /path/folder2 --enforce /path/folder3 +My application is using Qt5 and objdump did not return the needed qwindows.dll - +so I enforce the platform folder. You may add multiple --enforce directories using +`--enforce /path/folder1 --enforce /path/folder2 --enforce /path/folder3`. + They are NOT recursively copied, only flat. See: + +```bash string=$( find $enforcedDirectory -maxdepth 1 -iregex '.*\(dll\|exe\)' | tr '\n' ' ' ) +``` -If you would remove the -maxdepth 1, it would become recoursive. Does anyone need that? +If you would remove the `-maxdepth 1`, it would become recoursive. -2016-02-10 Lars Holger Engelhard - DL5RCW +February, 2, 2016. Lars Holger Engelhard aka [DL5RCW](https://github.com/dl5rcw).