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@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
35prefix=$(pkg_info -qp swig | awk '{ print $2 }')
36
37lang=$1
38module=$2
39
40case "$lang" in
41"")
42	echo "You need to specify an interpreted language like perl or tcl"
43	exit 1
44	;;
45perl)
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	;;
51python)
52	swigflags="-shadow"
53	dir=$(pkg_info -qL 'python*' | awk '/Python.h/ { gsub("/Python.h$", ""); print }')
54	incpath='CPPFLAGS+=-I'"$dir"
55	;;
56esac
57
58case "$module" in
59"")
60	echo "You need to specify a module"
61	exit 1
62	;;
63esac
64
65cat << EOF > ${module}${lang}.i
66%module ${module}${lang}
67%{
68#include <${module}.h>
69${cstrings1}
70${cstrings2}
71%}
72%include ${module}.h
73EOF
74
75cp ../../include/${module}.h .
76
77swig ${swigflags} -${lang} ${module}${lang}.i
78
79cat << EOF > Makefile
80# \$NetBSD\$
81# Automatically generated by swigit wrapper script
82
83PREFIX=${prefix}
84
85LIB=${module}${lang}
86SRCS=${module}${lang}_wrap.c
87WARNS=0
88MKMAN=no
89CPPFLAGS+=-I\${PREFIX}/include
90${incpath}
91LDFLAGS+=-L\${PREFIX}/lib
92LDADD+=-l${module}
93
94.include <bsd.lib.mk>
95EOF
96
97cat << EOF > shlib_version
98major=0
99minor=0
100EOF
101
102env USETOOLS=no make
103
104case "${lang}" in
105python)
106	ln -s lib${module}${lang}.so _${module}${lang}.so
107	;;
108esac
109