kyotocabinet-java 0.1.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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