Mercurial > mxe-octave
diff src/build-msvctools/ar-msvc @ 3061:f8299bb6c872
Initial support for native MSVC compilation.
* add MSVC support files: compiler wrappers and support libraries
* adapt libiconv to work with MSVC
* adapt gettext to work with MSVC
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Mon, 17 Jun 2013 22:43:11 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/build-msvctools/ar-msvc Mon Jun 17 22:43:11 2013 -0400 @@ -0,0 +1,124 @@ +#!/bin/sh + +# ar-msvc +# Wrapper around MS's lib.exe to make it act more like Unix ar. This +# software is largely inspired by cccl (http://cccl.sourceforge.net). +# +# Copyright (C) 2006 Michael Goffioul +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# + +usage() +{ + cat <<EOF +Usage: ar-msvc [OPTIONS] + +ar-msvc is a wrapper around Microsoft's lib.exe. It translates parameters +that Unix ar's understand to parameters that lib undertsand. +EOF + exit $1 +} + +cmd= +cmdopts= +archive_file= +files= +convert= + +case $1 in + --cygwin) + convert=cygwin + shift + ;; +esac + +cmd="$1" +shift + +cmd=`echo "$cmd" | sed 's/-\?-\?\(.*\)/\1/g'` + +case $cmd in + version) + cat <<EOF +ar-msvc 0.1 + +Copyright 2006 Michael Goffioul +This is free software; see the source for copying conditions. There is NO +waranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +EOF + exit 0 + ;; + help | h) + usage 0 + ;; + r* | cr*) + cmd=replace + ;; + t*) + cmd=list + ;; + x*) + cmd=extract + ;; + *) + echo "Unsupported command flag: $cmd" + exit 1 + ;; +esac + +while test $# -gt 0; do + if test "x$archive_file" == "x"; then + archive_file="$1" + # converts libxxx.a to xxx.lib + archive_file=`echo $archive_file | sed 's/\(.*\)lib\([^\.\/]*\)\.a/\1\2.lib/'` + else + files="$files $1" + fi + shift +done + +if test "x$convert" != "x"; then + case $convert in + cygwin) + archive_file=`cygpath -m $archive_file` + ;; + esac +fi + +if test "x$cmd" == "x"; then + usage 1 +fi + +case $cmd in + extract) + if test -z "$files"; then + files=`lib -nologo -list $archive_file` + fi + for f in $files; do + of=`echo $f | sed -e 's,.*[\\/],,'` + lib -nologo -extract:$f -out:$of $archive_file + done + ;; + list) + lib -list $archive_file + ;; + replace) + if test -f "$archive_file"; then + lib $archive_file $files + else + lib -out:$archive_file $files + fi + ;; +esac