lrint()の存在を決めうち。おーのー。Solaris9にはない!
--- applet.c.dist Sat Nov 18 01:27:03 2006 +++ applet.c Fri Feb 9 04:35:24 2007 @@ -28,6 +28,9 @@ #define _ISOC99_SOURCE #include <math.h> #include <string.h> +#ifdef HAVE_INTTYPES_H +#define lrint(x) ((long)rint((x))) +#endif #include <glib-object.h> #include <gdk/gdkkeysyms.h>
ifdefの変数はこれじゃ正しくないけど、まあまちがって判定しても rintからのキャストであってるということで。
install時に icon-name-mapping をダイレクトに起動しちゃうので
bmake 起動には
PATH=$PKG/libexec:$PATH bmake install clean
などとする必要あり。
これまた trunc() があると決めうち。ここだけC99にされても……。 これ困ったね。しかたないので、
#if defined(__NetBSD__) || defined(__DragonFly__) || defined(__Solaris__) # define trunc(x) ((double)floor(x)) #endif
という感じにして、gmake CC="gcc -D__Solaris__"
で逃げた。
これもC99な round() を使っていてこける。
#define round(x) (floor((x)+0.5))
で対処。あ、dasher_main.cpp にもある。じゃ dasher.h にdefine文を移動。
Posix/posix_main で getopt_long を使っている。これもNG。 適当にこんな感じ。
--- posix_main.c.orig Sat Feb 10 15:41:59 2007
+++ posix_main.c Sat Feb 10 15:43:03 2007
@@ -172,13 +172,23 @@
sigset_t signalSet;
int sig;
+#ifdef __Solaris__
+#define NO_GETOPT_LONG
+#endif
+
+#ifndef NO_GETOPT_LONG
static struct option long_opts[] =
{
{ "verbose", no_argument, &verbose_flag, 1 },
{ 0, 0, 0, 0 }
};
+#endif
+#ifndef NO_GETOPT_LONG
while ((opt = getopt_long(argc, argv, "?hvdi:a:f:", long_opts, &option_index ) ) != EOF)
+#else
+ while ((opt = getopt(argc, argv, "?hvVdi:a:f:") ) != EOF)
+#endif
{
switch (opt)
{
@@ -218,14 +228,23 @@
{
conf_file = sw_strdup(optarg);
}
+
+#ifdef NO_GETOPT_LONG
+ case 'V':
+ {
+ sw_debug_set_level( SW_LOG_VERBOSE );
+ }
break;
+#endif
}
}
+#ifndef NO_GETOPT_LONG
if ( verbose_flag )
{
sw_debug_set_level( SW_LOG_VERBOSE );
}
+#endif
if (make_daemon)
{
Makefileに -D__Solaris__ が渡るようにしてコンパイル。
stdint.hだ。
--- rfbproto.h.dist Mon Jul 12 21:17:52 2004 +++ rfbproto.h Sun Feb 11 07:21:05 2007 @@ -60,7 +60,11 @@ #include <rfb/rfbint.h> #else #include <config.h> +#ifdef HAVE_INTTYPES_H +#include <sys/int_types.h> +#else #include <stdint.h> +#endif #endif #endif #include <rfb/keysym.h>
叱咤激励感想ツッコミはゲストブックへ
Generated with mkdiary.rb