1 #! /bin/sh 2 3 # 4 # Copyright (c) 2009 The NetBSD Foundation, Inc. 5 # All rights reserved. 6 # 7 # This code is derived from software contributed to The NetBSD Foundation 8 # by Alistair Crooks (agc (at] netbsd.org) 9 # 10 # Redistribution and use in source and binary forms, with or without 11 # modification, are permitted provided that the following conditions 12 # are met: 13 # 1. Redistributions of source code must retain the above copyright 14 # notice, this list of conditions and the following disclaimer. 15 # 2. Redistributions in binary form must reproduce the above copyright 16 # notice, this list of conditions and the following disclaimer in the 17 # documentation and/or other materials provided with the distribution. 18 # 19 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 # POSSIBILITY OF SUCH DAMAGE. 30 # 31 32 # rushed script to call swig and compile the output 33 # Usage: swigit <lang> <module> 34 35 prefix=$(pkg_info -qp swig | awk '{ print $2 }') 36 37 lang=$1 38 module=$2 39 40 case "$lang" in 41 "") 42 echo "You need to specify an interpreted language like perl or tcl" 43 exit 1 44 ;; 45 perl) 46 dir=$(pkg_info -qL perl | awk '/EXTERN.h/ { gsub("/EXTERN.h$", ""); print }') 47 cstrings1='#undef SvPOK' 48 cstrings2='#define SvPOK(x) 1' 49 incpath='CPPFLAGS+=-I'"$dir" 50 ;; 51 python) 52 swigflags="-shadow" 53 dir=$(pkg_info -qL 'python*' | awk '/Python.h/ { gsub("/Python.h$", ""); print }') 54 incpath='CPPFLAGS+=-I'"$dir" 55 ;; 56 esac 57 58 case "$module" in 59 "") 60 echo "You need to specify a module" 61 exit 1 62 ;; 63 esac 64 65 cat << EOF > ${module}${lang}.i 66 %module ${module}${lang} 67 %{ 68 #include <${module}.h> 69 ${cstrings1} 70 ${cstrings2} 71 %} 72 %include ${module}.h 73 EOF 74 75 cp ../../include/${module}.h . 76 77 swig ${swigflags} -${lang} ${module}${lang}.i 78 79 cat << EOF > Makefile 80 # \$NetBSD\$ 81 # Automatically generated by swigit wrapper script 82 83 PREFIX=${prefix} 84 85 LIB=${module}${lang} 86 SRCS=${module}${lang}_wrap.c 87 WARNS=0 88 MKMAN=no 89 CPPFLAGS+=-I\${PREFIX}/include 90 ${incpath} 91 LDFLAGS+=-L\${PREFIX}/lib 92 LDADD+=-l${module} 93 94 .include <bsd.lib.mk> 95 EOF 96 97 cat << EOF > shlib_version 98 major=0 99 minor=0 100 EOF 101 102 env USETOOLS=no make 103 104 case "${lang}" in 105 python) 106 ln -s lib${module}${lang}.so _${module}${lang}.so 107 ;; 108 esac 109