kyotocabinet-java 0.1.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.document +5 -0
  2. data/Gemfile +15 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.rdoc +19 -0
  5. data/Rakefile +62 -0
  6. data/VERSION +1 -0
  7. data/ext/kyotocabinet-java/.gitignore +2 -0
  8. data/ext/kyotocabinet-java/COPYING +674 -0
  9. data/ext/kyotocabinet-java/Cursor.java +268 -0
  10. data/ext/kyotocabinet-java/DB.java +650 -0
  11. data/ext/kyotocabinet-java/Error.java +257 -0
  12. data/ext/kyotocabinet-java/FileProcessor.java +42 -0
  13. data/ext/kyotocabinet-java/Loader.java +60 -0
  14. data/ext/kyotocabinet-java/Makefile.in +246 -0
  15. data/ext/kyotocabinet-java/MapReduce.java +127 -0
  16. data/ext/kyotocabinet-java/README +26 -0
  17. data/ext/kyotocabinet-java/Test.java +1494 -0
  18. data/ext/kyotocabinet-java/Utility.java +131 -0
  19. data/ext/kyotocabinet-java/VCmakefile +150 -0
  20. data/ext/kyotocabinet-java/ValueIterator.java +49 -0
  21. data/ext/kyotocabinet-java/Visitor.java +56 -0
  22. data/ext/kyotocabinet-java/configure.in +310 -0
  23. data/ext/kyotocabinet-java/doc/allclasses-frame.html +26 -0
  24. data/ext/kyotocabinet-java/doc/allclasses-noframe.html +26 -0
  25. data/ext/kyotocabinet-java/doc/constant-values.html +344 -0
  26. data/ext/kyotocabinet-java/doc/index-all.html +848 -0
  27. data/ext/kyotocabinet-java/doc/index.html +30 -0
  28. data/ext/kyotocabinet-java/doc/kyotocabinet/Cursor.html +711 -0
  29. data/ext/kyotocabinet-java/doc/kyotocabinet/DB.html +1674 -0
  30. data/ext/kyotocabinet-java/doc/kyotocabinet/Error.html +604 -0
  31. data/ext/kyotocabinet-java/doc/kyotocabinet/FileProcessor.html +210 -0
  32. data/ext/kyotocabinet-java/doc/kyotocabinet/MapReduce.html +461 -0
  33. data/ext/kyotocabinet-java/doc/kyotocabinet/Test.html +220 -0
  34. data/ext/kyotocabinet-java/doc/kyotocabinet/Utility.html +413 -0
  35. data/ext/kyotocabinet-java/doc/kyotocabinet/ValueIterator.html +221 -0
  36. data/ext/kyotocabinet-java/doc/kyotocabinet/Visitor.html +283 -0
  37. data/ext/kyotocabinet-java/doc/kyotocabinet/package-frame.html +33 -0
  38. data/ext/kyotocabinet-java/doc/kyotocabinet/package-summary.html +199 -0
  39. data/ext/kyotocabinet-java/doc/kyotocabinet/package-tree.html +141 -0
  40. data/ext/kyotocabinet-java/doc/overview-summary.html +285 -0
  41. data/ext/kyotocabinet-java/doc/overview-tree.html +145 -0
  42. data/ext/kyotocabinet-java/doc/package-list +1 -0
  43. data/ext/kyotocabinet-java/doc/resources/background.gif +0 -0
  44. data/ext/kyotocabinet-java/doc/resources/tab.gif +0 -0
  45. data/ext/kyotocabinet-java/doc/resources/titlebar.gif +0 -0
  46. data/ext/kyotocabinet-java/doc/resources/titlebar_end.gif +0 -0
  47. data/ext/kyotocabinet-java/doc/serialized-form.html +141 -0
  48. data/ext/kyotocabinet-java/doc/stylesheet.css +474 -0
  49. data/ext/kyotocabinet-java/example/KCDBEX1.java +44 -0
  50. data/ext/kyotocabinet-java/example/KCDBEX2.java +44 -0
  51. data/ext/kyotocabinet-java/example/Makefile +59 -0
  52. data/ext/kyotocabinet-java/kyotocabinet.cc +2187 -0
  53. data/ext/kyotocabinet-java/kyotocabinet_Cursor.h +157 -0
  54. data/ext/kyotocabinet-java/kyotocabinet_DB.h +353 -0
  55. data/ext/kyotocabinet-java/kyotocabinet_Error.h +49 -0
  56. data/ext/kyotocabinet-java/kyotocabinet_Error_XBROKEN.h +41 -0
  57. data/ext/kyotocabinet-java/kyotocabinet_Error_XDUPREC.h +41 -0
  58. data/ext/kyotocabinet-java/kyotocabinet_Error_XINVALID.h +41 -0
  59. data/ext/kyotocabinet-java/kyotocabinet_Error_XLOGIC.h +41 -0
  60. data/ext/kyotocabinet-java/kyotocabinet_Error_XMISC.h +41 -0
  61. data/ext/kyotocabinet-java/kyotocabinet_Error_XNOIMPL.h +41 -0
  62. data/ext/kyotocabinet-java/kyotocabinet_Error_XNOPERM.h +41 -0
  63. data/ext/kyotocabinet-java/kyotocabinet_Error_XNOREC.h +41 -0
  64. data/ext/kyotocabinet-java/kyotocabinet_Error_XNOREPOS.h +41 -0
  65. data/ext/kyotocabinet-java/kyotocabinet_Error_XSUCCESS.h +41 -0
  66. data/ext/kyotocabinet-java/kyotocabinet_Error_XSYSTEM.h +41 -0
  67. data/ext/kyotocabinet-java/kyotocabinet_MapReduce.h +33 -0
  68. data/ext/kyotocabinet-java/kyotocabinet_Utility.h +101 -0
  69. data/ext/kyotocabinet-java/kyotocabinet_ValueIterator.h +21 -0
  70. data/ext/kyotocabinet-java/overview.html +177 -0
  71. data/kyotocabinet-java.gemspec +129 -0
  72. data/lib/kyotocabinet-java.rb +141 -0
  73. data/lib/kyotocabinet-java/version.rb +5 -0
  74. metadata +222 -0
@@ -0,0 +1,131 @@
1
+ /*************************************************************************************************
2
+ * Java binding of Kyoto Cabinet.
3
+ * Copyright (C) 2009-2011 FAL Labs
4
+ * This file is part of Kyoto Cabinet.
5
+ * This program is free software: you can redistribute it and/or modify it under the terms of
6
+ * the GNU General Public License as published by the Free Software Foundation, either version
7
+ * 3 of the License, or any later version.
8
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ * See the GNU General Public License for more details.
11
+ * You should have received a copy of the GNU General Public License along with this program.
12
+ * If not, see <http://www.gnu.org/licenses/>.
13
+ *************************************************************************************************/
14
+
15
+
16
+ package kyotocabinet;
17
+
18
+ import java.util.*;
19
+ import java.io.*;
20
+ import java.net.*;
21
+
22
+
23
+ /**
24
+ * Utility functions.
25
+ */
26
+ public class Utility {
27
+ //----------------------------------------------------------------
28
+ // static initializer
29
+ //----------------------------------------------------------------
30
+ static {
31
+ Loader.load();
32
+ }
33
+ //----------------------------------------------------------------
34
+ // public constants
35
+ //----------------------------------------------------------------
36
+ /** The version information. */
37
+ public static final String VERSION = version();
38
+ //----------------------------------------------------------------
39
+ // public static methods
40
+ //----------------------------------------------------------------
41
+ /**
42
+ * Convert a string with a metric prefix to an integer.
43
+ * @param str the string.
44
+ * @return the integer. If the string does not contain numeric expression, 0 is returned.
45
+ */
46
+ public static native long atoi(String str);
47
+ /**
48
+ * Convert a string with a metric prefix to an integer.
49
+ * @param str the string, which can be trailed by a binary metric prefix. "K", "M", "G", "T",
50
+ * "P", and "E" are supported. They are case-insensitive.
51
+ * @return the integer. If the string does not contain numeric expression, 0 is returned. If
52
+ * the integer overflows the domain, Long.MAX_VALUE or Long.MIN_VALUE is returned according to
53
+ * the sign.
54
+ */
55
+ public static native long atoix(String str);
56
+ /**
57
+ * Convert a string to a real number.
58
+ * @param str specifies the string.
59
+ * @return the real number. If the string does not contain numeric expression, 0.0 is
60
+ * returned.
61
+ */
62
+ public static native double atof(String str);
63
+ /**
64
+ * Get the hash value of a byte array by MurMur hashing.
65
+ * @param data the byte array.
66
+ * @return the hash value.
67
+ */
68
+ public static native long hash_murmur(byte[] data);
69
+ /**
70
+ * Get the hash value of a byte array by FNV hashing.
71
+ * @param data the byte array.
72
+ * @return the hash value.
73
+ */
74
+ public static native long hash_fnv(byte[] data);
75
+ /**
76
+ * Calculate the levenshtein distance of two strings.
77
+ * @param a one string.
78
+ * @param b the other string.
79
+ * @return the levenshtein distance.
80
+ */
81
+ public static native long levdist(byte[] a, byte[] b);
82
+ /**
83
+ * Calculate the levenshtein distance of two strings.
84
+ * @note Equal to the original Utility.levdist method except that the parameters are treated
85
+ * as UTF-8 strings.
86
+ * @see #levdist(byte[], byte[])
87
+ */
88
+ public static native long levdist(String a, String b);
89
+ /**
90
+ * Get the current time.
91
+ * @return the current time from the epoch in seconds.
92
+ */
93
+ public static double time() {
94
+ return System.currentTimeMillis() / 1000.0;
95
+ }
96
+ /**
97
+ * Remove a file or a directory recursively.
98
+ * @param path the path of a file or a directory.
99
+ * @return true on success, or false on failure.
100
+ */
101
+ public static native boolean remove_files_recursively(String path);
102
+ //----------------------------------------------------------------
103
+ // package static methods
104
+ //----------------------------------------------------------------
105
+ /**
106
+ * Get the string containing the version information.
107
+ * @return the string containing the version information.
108
+ */
109
+ static native String version();
110
+ /**
111
+ * Create the magic data of NOP of Visitor.
112
+ * @return the magic data of NOP of Visitor.
113
+ */
114
+ static native byte[] init_visitor_NOP();
115
+ /**
116
+ * Create the magic data of REMOVE of Visitor.
117
+ * @return the magic data of REMOVE of Visitor.
118
+ */
119
+ static native byte[] init_visitor_REMOVE();
120
+ //----------------------------------------------------------------
121
+ // private methods
122
+ //----------------------------------------------------------------
123
+ /**
124
+ * Dummy constructor.
125
+ */
126
+ private Utility() {}
127
+ }
128
+
129
+
130
+
131
+ // END OF FILE
@@ -0,0 +1,150 @@
1
+ # Makefile for Kyoto Cabinet for Java on Win32
2
+
3
+
4
+
5
+ #================================================================
6
+ # Setting Variables
7
+ #================================================================
8
+
9
+
10
+ # VC++ directory
11
+ VCPATH = C:\Program Files\Microsoft Visual Studio 10.0\VC
12
+ SDKPATH = C:\Program Files\Microsoft SDKs\Windows\v7.0A
13
+ JDKPATH = C:\Program Files\Java\jdk1.6.0_22
14
+ KCPATH = kcwin32
15
+
16
+ # Targets
17
+ JARFILES = kyotocabinet.jar
18
+ JAVAFILES = Loader.java Utility.java Error.java Visitor.java FileProcessor.java Cursor.java DB.java MapReduce.java ValueIterator.java Test.java
19
+ LIBRARYFILES = jkyotocabinet.dll
20
+ LIBOBJFILES = kyotocabinet.obj
21
+
22
+
23
+ # Building configuration
24
+ JAVAC = javac
25
+ JAVACFLAGS = -source 1.6 -d .
26
+ JAR = jar
27
+ JAVARUN = java
28
+ JAVARUNFLAGS = -cp kyotocabinet.jar -Djava.library.path=.
29
+ CL = cl
30
+ LIB = lib
31
+ LINK = link
32
+ CLFLAGS = /nologo \
33
+ /I "$(VCPATH)\Include" /I "$(VCPATH)\PlatformSDK\Include" /I "$(SDKPATH)\Include" \
34
+ /I "$(KCPATH)\include" /I "$(JDKPATH)\include" /I "$(JDKPATH)\include\win32" /I "." \
35
+ /DNDEBUG /D_CRT_SECURE_NO_WARNINGS \
36
+ /O2 /EHsc /W3 /wd4244 /wd4351 /wd4800 /wd4101 /MT
37
+ LINKFLAGS = /nologo \
38
+ /libpath:"$(VCPATH)\lib" /libpath:"$(VCPATH)\PlatformSDK\Lib" /libpath:"$(SDKPATH)\Lib" \
39
+ /libpath:"$(KCPATH)\lib" /libpath:"$(JDKPATH)\lib" /libpath:"."
40
+
41
+
42
+
43
+ #================================================================
44
+ # Suffix rules
45
+ #================================================================
46
+
47
+
48
+ .SUFFIXES :
49
+ .SUFFIXES : .cc .obj .exe
50
+
51
+ .cc.obj :
52
+ $(CL) /c $(CLFLAGS) $<
53
+
54
+
55
+
56
+ #================================================================
57
+ # Actions
58
+ #================================================================
59
+
60
+
61
+ all : $(JARFILES) $(LIBRARYFILES)
62
+ @echo #
63
+ @echo #================================================================
64
+ @echo # Ready to install.
65
+ @echo #================================================================
66
+
67
+
68
+ clean :
69
+ -del *.jar *.obj *.lib *.dll *.exp *.exe /F /Q > NUL: 2>&1
70
+ -del casket* /F /Q > NUL: 2>&1
71
+ -rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
72
+
73
+
74
+ check :
75
+ $(MAKE) -f VCmakefile DBNAME=":" RNUM="10000" check-each
76
+ $(MAKE) -f VCmakefile DBNAME="*" RNUM="10000" check-each
77
+ $(MAKE) -f VCmakefile DBNAME="%" RNUM="10000" check-each
78
+ $(MAKE) -f VCmakefile DBNAME="casket.kch" RNUM="10000" check-each
79
+ $(MAKE) -f VCmakefile DBNAME="casket.kct" RNUM="10000" check-each
80
+ $(MAKE) -f VCmakefile DBNAME="casket.kcd" RNUM="1000" check-each
81
+ $(MAKE) -f VCmakefile DBNAME="casket.kcf" RNUM="10000" check-each
82
+ @echo #
83
+ @echo #================================================================
84
+ @echo # Checking completed.
85
+ @echo #================================================================
86
+
87
+
88
+ check-each :
89
+ -del casket* /F /Q > NUL: 2>&1
90
+ -rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
91
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
92
+ "$(DBNAME)" "$(RNUM)"
93
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
94
+ -rnd "$(DBNAME)" "$(RNUM)"
95
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
96
+ -etc "$(DBNAME)" "$(RNUM)"
97
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
98
+ -rnd -etc "$(DBNAME)" "$(RNUM)"
99
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
100
+ -th 4 "$(DBNAME)" "$(RNUM)"
101
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
102
+ -th 4 -rnd "$(DBNAME)" "$(RNUM)"
103
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
104
+ -th 4 -etc "$(DBNAME)" "$(RNUM)"
105
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test order \
106
+ -th 4 -rnd -etc "$(DBNAME)" "$(RNUM)"
107
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
108
+ "$(DBNAME)" "$(RNUM)"
109
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
110
+ -it 4 "$(DBNAME)" "$(RNUM)"
111
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
112
+ -th 4 "$(DBNAME)" "$(RNUM)"
113
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test wicked \
114
+ -th 4 -it 4 "$(DBNAME)" "$(RNUM)"
115
+ $(JAVARUN) $(JAVARUNFLAGS) kyotocabinet.Test misc \
116
+ "$(DBNAME)"
117
+ -del casket* /F /Q > NUL: 2>&1
118
+ -rd casket casket.wal casket.tmp casket-para casket.kcd casket.kcf /S /Q > NUL: 2>&1
119
+
120
+
121
+ binpkg :
122
+ -rd $(KCPATH)\java /S /Q > NUL: 2>&1
123
+ md $(KCPATH)\java
124
+ copy *.jar $(KCPATH)\java
125
+ copy *.dll $(KCPATH)\java
126
+ xcopy /S /E /I doc kcwin32\java\doc
127
+
128
+
129
+
130
+ #================================================================
131
+ # Building binaries
132
+ #================================================================
133
+
134
+
135
+ kyotocabinet.jar : $(JAVAFILES)
136
+ $(JAVAC) $(JAVACFLAGS) $(JAVAFILES)
137
+ $(JAR) cvf $@ kyotocabinet\*.class
138
+ -rd kyotocabinet /S /Q > NUL: 2>&1
139
+
140
+
141
+ jkyotocabinet.dll : $(LIBOBJFILES)
142
+ $(LINK) $(LINKFLAGS) /DLL /OUT:$@ $(LIBOBJFILES) kcwin32\lib\kyotocabinet.lib
143
+
144
+
145
+ kyotocabinet.obj : kyotocabinet_Utility.h kyotocabinet_Error.h \
146
+ kyotocabinet_Cursor.h kyotocabinet_DB.h kyotocabinet_MapReduce.h kyotocabinet_ValueIterator.h
147
+
148
+
149
+
150
+ # END OF FILE
@@ -0,0 +1,49 @@
1
+ /*************************************************************************************************
2
+ * Java binding of Kyoto Cabinet.
3
+ * Copyright (C) 2009-2011 FAL Labs
4
+ * This file is part of Kyoto Cabinet.
5
+ * This program is free software: you can redistribute it and/or modify it under the terms of
6
+ * the GNU General Public License as published by the Free Software Foundation, either version
7
+ * 3 of the License, or any later version.
8
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ * See the GNU General Public License for more details.
11
+ * You should have received a copy of the GNU General Public License along with this program.
12
+ * If not, see <http://www.gnu.org/licenses/>.
13
+ *************************************************************************************************/
14
+
15
+
16
+ package kyotocabinet;
17
+
18
+ import java.util.*;
19
+ import java.io.*;
20
+ import java.net.*;
21
+
22
+
23
+ /**
24
+ * Iterator for record values.
25
+ */
26
+ public class ValueIterator {
27
+ //----------------------------------------------------------------
28
+ // public methods
29
+ //---------------------------------------------------------------
30
+ /**
31
+ * Get the next value.
32
+ * @return the next value, or null if no value remains.
33
+ */
34
+ public native byte[] next();
35
+ //----------------------------------------------------------------
36
+ // constructors and finalizer
37
+ //----------------------------------------------------------------
38
+ /**
39
+ * Create an instance.
40
+ */
41
+ ValueIterator() {
42
+ }
43
+ /** The pointer to the native object */
44
+ private long ptr_ = 0;
45
+ }
46
+
47
+
48
+
49
+ // END OF FILE
@@ -0,0 +1,56 @@
1
+ /*************************************************************************************************
2
+ * Java binding of Kyoto Cabinet.
3
+ * Copyright (C) 2009-2011 FAL Labs
4
+ * This file is part of Kyoto Cabinet.
5
+ * This program is free software: you can redistribute it and/or modify it under the terms of
6
+ * the GNU General Public License as published by the Free Software Foundation, either version
7
+ * 3 of the License, or any later version.
8
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ * See the GNU General Public License for more details.
11
+ * You should have received a copy of the GNU General Public License along with this program.
12
+ * If not, see <http://www.gnu.org/licenses/>.
13
+ *************************************************************************************************/
14
+
15
+
16
+ package kyotocabinet;
17
+
18
+ import java.util.*;
19
+ import java.io.*;
20
+ import java.net.*;
21
+
22
+
23
+ /**
24
+ * Interface to access a record.
25
+ */
26
+ public interface Visitor {
27
+ //----------------------------------------------------------------
28
+ // public constants
29
+ //----------------------------------------------------------------
30
+ /** magic data: no operation */
31
+ public static final byte[] NOP = Utility.init_visitor_NOP();
32
+ /** magic data: remove the record */
33
+ public static final byte[] REMOVE = Utility.init_visitor_REMOVE();
34
+ //----------------------------------------------------------------
35
+ // public methods
36
+ //----------------------------------------------------------------
37
+ /**
38
+ * Visit a record.
39
+ * @param key the key.
40
+ * @param value the value.
41
+ * @return If it is a string, the value is replaced by the content. If it is Visitor.NOP,
42
+ * nothing is modified. If it is Visitor.REMOVE, the record is removed.
43
+ */
44
+ public byte[] visit_full(byte[] key, byte[] value);
45
+ /**
46
+ * Visit a empty record space.
47
+ * @param key the key.
48
+ * @return If it is a string, the value is replaced by the content. If it is Visitor.NOP or
49
+ * Visitor.REMOVE, nothing is modified.
50
+ */
51
+ public byte[] visit_empty(byte[] key);
52
+ }
53
+
54
+
55
+
56
+ // END OF FILE
@@ -0,0 +1,310 @@
1
+ # Source of configuration for Kyoto Cabinet for Java
2
+
3
+
4
+
5
+ #================================================================
6
+ # Generic Settings
7
+ #================================================================
8
+
9
+ # Package name
10
+ AC_INIT(kyotocabinet-java, 1.24)
11
+
12
+ # Package information
13
+ MYLIBVER=1
14
+ MYLIBREV=1
15
+
16
+ # Targets
17
+ MYJARFILES="kyotocabinet.jar"
18
+ MYJAVAFILES="Loader.java Utility.java Error.java Visitor.java FileProcessor.java"
19
+ MYJAVAFILES="$MYJAVAFILES Cursor.java DB.java MapReduce.java ValueIterator.java Test.java"
20
+ MYLIBRARYFILES=""
21
+ MYLIBOBJFILES="kyotocabinet.o"
22
+
23
+ # Building flags
24
+ MYJAVACFLAGS="-d ."
25
+ MYJAVADOCFLAGS="-locale en -tag note:a:"Note:" -nodeprecated -nohelp -quiet -noqualifier all"
26
+ MYJAVARUNFLAGS="-cp kyotocabinet.jar"
27
+ MYCXXFLAGS="-Wall -fPIC -fsigned-char -O2"
28
+ MYCPPFLAGS="-I. -I\$(INCLUDEDIR) -I$HOME/include -I/usr/local/include -DNDEBUG"
29
+ MYLDFLAGS="-L. -L\$(LIBDIR) -L$HOME/lib -L/usr/local/lib"
30
+ MYRUNPATH="\$(LIBDIR)"
31
+ MYLDLIBPATHENV="LD_LIBRARY_PATH"
32
+
33
+ # Building paths
34
+ pathtmp="$PATH"
35
+ PATH="$HOME/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
36
+ PATH="$PATH:/usr/ccs/bin:/usr/ucb:/usr/xpg4/bin:/usr/xpg6/bin:$pathtmp"
37
+ LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LIBRARY_PATH"
38
+ LD_LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH"
39
+ CPATH="$HOME/include:/usr/local/include:$CPATH"
40
+ PKG_CONFIG_PATH="$HOME/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
41
+ export PATH LIBRARY_PATH LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH
42
+ if type pkg-config >config.tmp 2>&1
43
+ then
44
+ PATH="$PATH:`pkg-config --variable=bindir kyotocabinet`"
45
+ LIBRARY_PATH="$LIBRARY_PATH:`pkg-config --variable=libdir kyotocabinet`"
46
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`pkg-config --variable=libdir kyotocabinet`"
47
+ CPATH="$CPATH:`pkg-config --variable=includedir kyotocabinet`"
48
+ export PATH LIBRARY_PATH LD_LIBRARY_PATH CPATH PKG_CONFIG_PATH
49
+ fi
50
+
51
+ # Installation paths
52
+ libdir=${prefix}
53
+
54
+ #================================================================
55
+ # Options
56
+ #================================================================
57
+
58
+ # Internal variables
59
+ enables=""
60
+
61
+ # Debug mode
62
+ AC_ARG_ENABLE(debug,
63
+ AC_HELP_STRING([--enable-debug], [build for debugging]))
64
+ if test "$enable_debug" = "yes"
65
+ then
66
+ MYJAVACFLAGS="$MYJAVACFLAGS -g"
67
+ MYJAVARUNFLAGS="$MYJAVARUNFLAGS -esa"
68
+ MYCXXFLAGS="-Wall -fPIC -fsigned-char -g -O0"
69
+ MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG -D_KCDEBUG"
70
+ enables="$enables (debug)"
71
+ fi
72
+
73
+ # Developping mode
74
+ AC_ARG_ENABLE(devel,
75
+ AC_HELP_STRING([--enable-devel], [build for development]))
76
+ if test "$enable_devel" = "yes"
77
+ then
78
+ MYJAVACFLAGS="$MYJAVACFLAGS -g"
79
+ MYJAVARUNFLAGS="$MYJAVARUNFLAGS -esa"
80
+ MYCXXFLAGS="-Wall -Wextra -Wno-unused-parameter -Wnon-virtual-dtor"
81
+ MYCXXFLAGS="$MYCXXFLAGS -fPIC -fsigned-char -g -O2 -fno-inline -pipe"
82
+ MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG -D_KCDEBUG"
83
+ enables="$enables (devel)"
84
+ fi
85
+
86
+ # Specify the installation path of Kyoto Cabinet
87
+ AC_ARG_WITH(kc,
88
+ AC_HELP_STRING([--with-kc=DIR], [search DIR/include and DIR/lib for Kyoto Cabinet]))
89
+ if test -n "$with_kc"
90
+ then
91
+ MYCPPFLAGS="$MYCPPFLAGS -I$with_kc/include"
92
+ MYLDFLAGS="$MYLDFLAGS -L$with_kc/lib"
93
+ CPATH="$CPATH:$with_kc/include"
94
+ LIBRARY_PATH="$LIBRARY_PATH:$with_kc/lib"
95
+ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_kc/lib"
96
+ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$with_kc/lib/pkgconfig"
97
+ fi
98
+
99
+ # Messages
100
+ printf '#================================================================\n'
101
+ printf '# Configuring Kyoto Cabinet for Java version %s.\n' "$PACKAGE_VERSION"
102
+ printf '#================================================================\n'
103
+
104
+
105
+
106
+ #================================================================
107
+ # Checking Commands and Libraries
108
+ #================================================================
109
+
110
+ # Home directory of Java
111
+ printf 'checking MYJAVAHOME... '
112
+ if test -d "$JAVA_HOME"
113
+ then
114
+ MYJAVAHOME="$JAVA_HOME"
115
+ else
116
+ if uname | grep Darwin >config.tmp; then
117
+ # Mac OS X
118
+ MYJAVAHOME=/System/Library/Frameworks/JavaVM.framework
119
+ elif test -L /usr/bin/javac; then
120
+ # other Unix, but /usr/bin/javac is a symlink
121
+ MYJAVAHOME=`readlink -f /usr/bin/javac | sed "s:bin/javac::"`
122
+ fi
123
+ fi
124
+ printf '%s\n' "$MYJAVAHOME"
125
+
126
+ # Platform of Java
127
+ printf 'checking JVMPLATFORM... '
128
+ if uname | grep Darwin >config.tmp
129
+ then
130
+ JVMPLATFORM="mac"
131
+ else
132
+ for file in `\ls $MYJAVAHOME/include`
133
+ do
134
+ if test -d "$MYJAVAHOME/include/$file"
135
+ then
136
+ JVMPLATFORM="$file"
137
+ fi
138
+ done
139
+ fi
140
+ printf '%s\n' "$JVMPLATFORM"
141
+ MYCPPFLAGS="$MYCPPFLAGS -I$MYJAVAHOME/include -I$MYJAVAHOME/include/$JVMPLATFORM"
142
+ MYCPPFLAGS="$MYCPPFLAGS -I$MYJAVAHOME/Headers -I$MYJAVAHOME/Headers/$JVMPLATFORM"
143
+ CPATH="$CPATH:$MYJAVAHOME/include:$MYJAVAHOME/include/$JVMPLATFORM"
144
+ CPATH="$CPATH:$MYJAVAHOME/Headers:$MYJAVAHOME/Headers/$JVMPLATFORM"
145
+
146
+ # Java compiler
147
+ printf 'checking JAVAC... '
148
+ JAVAC="$MYJAVAHOME/bin/javac"
149
+ if uname | grep Darwin >config.tmp
150
+ then
151
+ if test -x "$MYJAVAHOME/Commands/javac"
152
+ then
153
+ JAVAC="$MYJAVAHOME/Commands/javac"
154
+ else
155
+ JAVAC="$MYJAVAHOME/bin/javac"
156
+ fi
157
+ fi
158
+ if test -x "$JAVAC"
159
+ then
160
+ printf '%s\n' "$JAVAC"
161
+ else
162
+ printf 'no\n'
163
+ printf '#================================================================\n' 1>&2
164
+ printf '# WARNING: %s is not found.\n' "$JAVAC" 1>&2
165
+ printf '#================================================================\n' 1>&2
166
+ fi
167
+
168
+ # Other building tools
169
+ if uname | grep Darwin >config.tmp
170
+ then
171
+ if test -x "$MYJAVAHOME/Commands/java"
172
+ then
173
+ JAR="$MYJAVAHOME/Commands/jar"
174
+ JAVAH="$MYJAVAHOME/Commands/javah"
175
+ JAVADOC="$MYJAVAHOME/Commands/javadoc"
176
+ JAVARUN="$MYJAVAHOME/Commands/java"
177
+ else
178
+ JAR="$MYJAVAHOME/bin/jar"
179
+ JAVAH="$MYJAVAHOME/bin/javah"
180
+ JAVADOC="$MYJAVAHOME/bin/javadoc"
181
+ JAVARUN="$MYJAVAHOME/bin/java"
182
+ fi
183
+ else
184
+ JAR="$MYJAVAHOME/bin/jar"
185
+ JAVAH="$MYJAVAHOME/bin/javah"
186
+ JAVADOC="$MYJAVAHOME/bin/javadoc"
187
+ JAVARUN="$MYJAVAHOME/bin/java"
188
+ fi
189
+ MYJAVARUNFLAGS="$MYJAVARUNFLAGS -Djava.library.path=.:$LD_LIBRARY_PATH"
190
+
191
+ # C compiler
192
+ AC_PROG_CC
193
+ if uname | grep Darwin >config.tmp
194
+ then
195
+ AC_PROG_CXX([c++ g++])
196
+ else
197
+ AC_PROG_CXX
198
+ fi
199
+ AC_LANG(C++)
200
+
201
+ # System-depending optimization
202
+ printf 'checking for 64-bit availability... '
203
+ if printf 'main() {}' | $CC -xc -m64 -o config.tmp - >config.tmp 2>&1
204
+ then
205
+ MYCFLAGS="-m64 $MYCFLAGS"
206
+ MYCXXFLAGS="-m64 $MYCXXFLAGS"
207
+ printf 'yes\n'
208
+ else
209
+ printf 'no\n'
210
+ fi
211
+ if test "$enable_opt" != "no"
212
+ then
213
+ printf 'checking for CPU optimization availability... '
214
+ if printf 'main() {}' | $CC -xc -march=native -o config.tmp - >config.tmp 2>&1
215
+ then
216
+ MYCFLAGS="-march=native $MYCFLAGS"
217
+ MYCXXFLAGS="-march=native $MYCXXFLAGS"
218
+ printf 'yes\n'
219
+ else
220
+ printf 'no\n'
221
+ fi
222
+ fi
223
+
224
+ # Underlying libraries
225
+ AC_CHECK_LIB(c, main)
226
+ AC_CHECK_LIB(m, main)
227
+ AC_CHECK_LIB(pthread, main)
228
+ AC_CHECK_LIB(rt, main)
229
+ AC_CHECK_LIB(stdc++, main)
230
+ AC_CHECK_LIB(regex, main)
231
+ AC_CHECK_LIB(z, main)
232
+ AC_CHECK_LIB(kyotocabinet, main)
233
+
234
+ # Necessary headers
235
+ AC_CHECK_HEADER(stdlib.h, true, AC_MSG_ERROR([stdlib.h is required]))
236
+ AC_CHECK_HEADER(stdint.h, true, AC_MSG_ERROR([stdint.h is required]))
237
+ AC_CHECK_HEADER(kccommon.h, true, AC_MSG_ERROR([kccommon.h is required]))
238
+ AC_CHECK_HEADER(jni.h, true, AC_MSG_ERROR([jni.h is required]))
239
+
240
+ # Checking the version of Kyoto Cabinet with pkg-config
241
+ if type pkg-config >config.tmp 2>&1
242
+ then
243
+ printf 'checking Kyoto Cabinet by pkg-config... '
244
+ if pkg-config --atleast-version=1.2.65 kyotocabinet
245
+ then
246
+ MYCPPFLAGS="$MYCPPFLAGS -I`pkg-config --variable=includedir kyotocabinet`"
247
+ MYLDFLAGS="$MYLDFLAGS -L`pkg-config --variable=libdir kyotocabinet`"
248
+ MYRUNPATH="$MYRUNPATH:`pkg-config --variable=libdir kyotocabinet`"
249
+ printf 'yes\n'
250
+ else
251
+ printf 'no\n'
252
+ AC_MSG_ERROR([required version of Kyoto Cabinet was not detected])
253
+ fi
254
+ fi
255
+
256
+ # Shared libraries
257
+ if uname | grep Darwin >config.tmp
258
+ then
259
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.$MYLIBVER.$MYLIBREV.0.dylib"
260
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.$MYLIBVER.dylib"
261
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.dylib"
262
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.jnilib"
263
+ MYLDLIBPATHENV="DYLD_LIBRARY_PATH"
264
+ else
265
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so.$MYLIBVER.$MYLIBREV.0"
266
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so.$MYLIBVER"
267
+ MYLIBRARYFILES="$MYLIBRARYFILES libjkyotocabinet.so"
268
+ fi
269
+
270
+
271
+
272
+ #================================================================
273
+ # Generic Settings
274
+ #================================================================
275
+
276
+
277
+ # Export variables
278
+ AC_SUBST(JAVAC)
279
+ AC_SUBST(JAR)
280
+ AC_SUBST(JAVAH)
281
+ AC_SUBST(JAVADOC)
282
+ AC_SUBST(JAVARUN)
283
+ AC_SUBST(MYLIBVER)
284
+ AC_SUBST(MYLIBREV)
285
+ AC_SUBST(MYJARFILES)
286
+ AC_SUBST(MYJAVAFILES)
287
+ AC_SUBST(MYLIBRARYFILES)
288
+ AC_SUBST(MYLIBOBJFILES)
289
+ AC_SUBST(MYJAVAHOME)
290
+ AC_SUBST(MYJAVACFLAGS)
291
+ AC_SUBST(MYJAVADOCFLAGS)
292
+ AC_SUBST(MYJAVARUNFLAGS)
293
+ AC_SUBST(MYCXXFLAGS)
294
+ AC_SUBST(MYCPPFLAGS)
295
+ AC_SUBST(MYLDFLAGS)
296
+ AC_SUBST(MYRUNPATH)
297
+ AC_SUBST(MYLDLIBPATHENV)
298
+ AC_SUBST(libdir)
299
+
300
+ # Targets
301
+ AC_OUTPUT(Makefile)
302
+
303
+ # Messages
304
+ printf '#================================================================\n'
305
+ printf '# Ready to make.\n'
306
+ printf '#================================================================\n'
307
+
308
+
309
+
310
+ # END OF FILE