diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/freebsd-excludes | 35 | ||||
-rwxr-xr-x | tools/make-shared-from-static | 218 | ||||
-rw-r--r-- | tools/mxe-activate | 16 | ||||
-rwxr-xr-x | tools/patch-tool-mxe | 3 |
4 files changed, 233 insertions, 39 deletions
diff --git a/tools/freebsd-excludes b/tools/freebsd-excludes deleted file mode 100755 index b94e248..0000000 --- a/tools/freebsd-excludes +++ /dev/null @@ -1,35 +0,0 @@ -gmake \ -gtksourceviewmm2_BUILD_x86_64-w64-mingw32= \ -graphicsmagick_BUILD= \ -openexr_BUILD= \ -opencv_BUILD= \ -pcl_BUILD= \ -vigra_BUILD= \ -vtk6_BUILD= \ -qwt_BUILD= \ -ocaml-cairo_BUILD= \ -ocaml-findlib_BUILD= \ -ocaml-lablgtk2_BUILD= \ -ocaml-camlimages_BUILD= \ -ocaml-flexdll_BUILD= \ -ocaml-native_BUILD= \ -ocaml-core_BUILD= \ -ocaml-lablgl_BUILD= \ -ocaml-xml-light_BUILD= \ -qtactiveqt_BUILD= \ -qtbase_BUILD= \ -qtdeclarative_BUILD= \ -qtgraphicaleffects_BUILD= \ -qtimageformats_BUILD= \ -qtjsbackend_BUILD= \ -qtmultimedia_BUILD= \ -qtquickcontrols_BUILD= \ -qtquick1_BUILD= \ -qtscript_BUILD= \ -qtsensors_BUILD= \ -qtserialport_BUILD= \ -qtsvg_BUILD= \ -qttools_BUILD= \ -qttranslations_BUILD= \ -qtxmlpatterns_BUILD= \ --j4 -k diff --git a/tools/make-shared-from-static b/tools/make-shared-from-static new file mode 100755 index 0000000..cd720b2 --- /dev/null +++ b/tools/make-shared-from-static @@ -0,0 +1,218 @@ +#!/usr/bin/env bash + +set -e + +LD= +AR= +INSTALL= +infile= +outfile= +libdir= +bindir= +install=false +windowsdll=false +msvc=false +msvclibmode=false +libprefix= +libsuffix= +LIBS= + +topdir=$(pwd) +tmpdir=$topdir/make-shared-from-static.$$ + +#trap "cd $topdir; rm -rf $tmpdir" 1 2 15 + +for arg +do + case "$1" in + --install) + install=true + shift + if [ $# -gt 0 ]; then + INSTALL="$1" + shift + else + echo "make-shared-from-static: expecting argument for --install option" 1>&2 + exit 1 + fi + ;; + --windowsdll) + shift + windowsdll=true + ;; + --msvc) + shift + msvc=true + ;; + --bindir) + shift + if [ $# -gt 0 ]; then + bindir="$1" + shift + else + echo "make-shared-from-static: expecting argument for --bindir option" 1>&2 + exit 1 + fi + ;; + --libdir) + shift + if [ $# -gt 0 ]; then + libdir="$1" + shift + else + echo "make-shared-from-static: expecting argument for --libdir option" 1>&2 + exit 1 + fi + ;; + --ld) + shift + if [ $# -gt 0 ]; then + LD="$1" + shift + else + echo "make-shared-from-static: expecting argument for --ld option" 1>&2 + exit 1 + fi + ;; + --ar) + shift + if [ $# -gt 0 ]; then + AR="$1" + shift + else + echo "make-shared-from-static: expecting argument for --ar option" 1>&2 + exit 1 + fi + ;; + --libprefix) + shift + if [ $# -gt 0 ]; then + libprefix="$1" + shift + else + echo "make-shared-from-static: expecting argument for --libprefix option" 1>&2 + exit 1 + fi + ;; + --libsuffix) + shift + if [ $# -gt 0 ]; then + libsuffix="$1" + shift + else + echo "make-shared-from-static: expecting argument for --libsuffix option" 1>&2 + exit 1 + fi + ;; + -l*) + LIBS="$LIBS $1" + shift + ;; + *.a) + if [ -z "$infile" ]; then + case "$1" in + /*) + infile="$1" + ;; + *) + infile=$(pwd)/$1 + ;; + esac + shift + else + echo "make-shared-from-static: only one input file allowed" 1>&2 + exit 1 + fi + ;; + esac +done + +if [ -n "$infile" ]; then + base_infile=$(basename $infile) + if $windowsdll; then + if $msvc; then + base_name=`echo $base_infile | sed -n -e 's/^lib\(.*\)\.a$/\1/p'` + outfile="${libprefix}${base_name}${libsuffix}.dll" + implibfile="$base_name.lib" + # Modern libtool won't create .a files, but will create directly .lib files. + # If the .a file does not exist, check for an existing .lib file. + if [ ! -f "$infile" ]; then + msvc_infiles="`echo $infile | sed -e 's/\.a$/.lib/'` \ +`dirname \"$infile\"`/`echo $base_infile | sed -e 's/\.a$/.lib/' -e 's/^lib//'`" + for msvc_infile in $msvc_infiles; do + if [ -f "$msvc_infile" ]; then + infile="$msvc_infile" + msvclibmode=true + break + fi + done + fi + else + outfile=$(echo $base_infile | sed 's/\.a$/.dll/') + implibfile="$outfile.a" + fi + else + outfile=$(echo $base_infile | sed 's/\.a$/.so/') + fi +else + echo "make-shared-from-static: no input file specified" 1>&2 + exit 1 +fi + +NM=nm +SED=sed +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*_\\([_A-Za-z][_A-iZa-z0-9]*\\)\\{0,1\\}\$/\\1 _\\2 \\2/p' | sed '/ __gnu_lto/d'" +# Ignore DATA symbols for now. They should be be properly exported from +# the source code using dllexport. They can't be re-exported manually like +# this using MSVC. +#export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED -e '/^[BCDGRS][ ]/s/.*[ ]\\\\([^ ]*\\\\)/\\\\1,DATA/' | \$SED -e '/^[AITW][ ]/s/.*[ ]//' | sort | uniq >> \$export_symbols" +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED -e '/^[BCDGRS][ ]/d' | \$SED -e '/^[AITW][ ]/s/.*[ ]//' | sort | uniq >> \$export_symbols" + +mkdir $tmpdir + +( + cd $tmpdir + + $msvclibmode || $AR x $infile + + LIBDIR_ARGS= + if [ -n "$libdir" ]; then + LIBDIR_ARGS="-L$libdir" + fi + + if $windowsdll; then + if $msvc; then + export_symbols="$base_name.def" + echo EXPORTS > $export_symbols + if $msvclibmode; then + libobjs="$infile" + else + libobjs="*.o" + fi + convenience= + eval cmd=\"$export_symbols_cmds\" + eval "$cmd" + link_args="-Wl,-def:$export_symbols $libobjs" + else + link_args="-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base *.o" + fi + set -x + $LD -shared $link_args -Wl,--out-implib="$implibfile" -o "$outfile" $LIBDIR_ARGS $LIBS + else + $LD -shared -o $outfile *.o $LIBDIR_ARGS $LIBS + fi + + if $install; then + if $windowsdll; then + $INSTALL -d "$libdir" + $INSTALL -d "$bindir" + $INSTALL -m755 "$implibfile" "$libdir/$implibfile" + $INSTALL -m755 "$outfile" "$bindir/$outfile" + else + $INSTALL -d "$libdir" + $INSTALL -m755 "$outfile" "$libdir/$outfile" + fi + fi +) + +rm -rf $tmpdir diff --git a/tools/mxe-activate b/tools/mxe-activate index d7b80ca..461b547 100644 --- a/tools/mxe-activate +++ b/tools/mxe-activate @@ -1,8 +1,12 @@ export MXE_DIR=`pwd` -export PATH=$MXE_DIR/usr/bin:$PATH +export BUILD=`$MXE_DIR/ext/config.guess` +export PATH=$MXE_DIR/usr/$BUILD/bin:$MXE_DIR/usr/bin:$PATH MAKE=`gmake --help >/dev/null 2>&1 && echo g`make SED=`gsed --help >/dev/null 2>&1 && echo g`sed -MXE_TARGET_LIST="`grep 'MXE_TARGET_LIST.*:=' Makefile | $SED -n 's,^.*:= \(.*\)$,\1,p'`" + +MXE_TRIPLETS=`grep ^MXE_TRIPLETS Makefile | cut -d '=' -f2 | cut -d ' ' -f2- | tr ' ' ','` +MXE_LIB_TYPES=`grep ^MXE_LIB_TYPES Makefile | cut -d '=' -f2 | cut -d ' ' -f2- | tr ' ' ','` +MXE_TARGET_LIST=`eval "echo {$MXE_TRIPLETS}.{$MXE_LIB_TYPES}"` alias mxe='$MAKE -C $MXE_DIR --no-print-directory' @@ -43,8 +47,14 @@ _mxe() COMPREPLY=( $(compgen -W "${_pkgs}" -- ${cur}) ) return 0 ;; + show-*deps-*) + local base=`echo ${cur} | $SED -n 's,\(show.*deps-\).*,\1,p'` + local _pkgs=$( for x in ${pkgs}; do echo $base${x} ; done ) + COMPREPLY=( $(compgen -W "${_pkgs}" -- ${cur}) ) + return 0 + ;; [!-]*) - pkgs+=" build-only- check-requirements clean clean-pkg download download- update-checksum-" + pkgs+=" build-only- check-requirements clean clean-pkg download download- update-checksum- show-deps- show-downstream-deps- show-upstream-deps-" COMPREPLY=( $(compgen -W "${pkgs}" -- ${cur}) ) return 0 ;; diff --git a/tools/patch-tool-mxe b/tools/patch-tool-mxe index 208655a..9c3c383 100755 --- a/tools/patch-tool-mxe +++ b/tools/patch-tool-mxe @@ -19,7 +19,8 @@ setupEnv() { # John Doe <John Doe@acme.org> export author=`git var GIT_AUTHOR_IDENT | sed 's/^\(.* [<].*[>]\).*$/\1/'` - export pkg_version=$(sed -n "s/^.* id=\"${pkg}-version\">\([^<]*\)<.*$/\1/p" "${mxedir}/index.html") + export pkg_version=`grep '^$(PKG)_VERSION' $mxedir/src/$pkg.mk | \ + sed 's/.*:= \(.*\)/\1/'` export pkg_short_version=`echo $pkg_version | sed s/'\(.*\)\.[^.]*$'/'\1'/` |