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