#12
authoradam <adamansky@gmail.com>
Thu, 25 Apr 2013 04:31:31 +0000 (11:31 +0700)
committeradam <adamansky@gmail.com>
Thu, 25 Apr 2013 04:31:31 +0000 (11:31 +0700)
Changelog
README.md
tcejdb/Changelog
tcejdb/WIN32.md [new file with mode: 0644]

index f8b87e0..9e7c349 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,7 @@
+2013-04-25 Anton Adamansky. <adamansky@gmail.com>
+    * EJDB and TokyoCabinet API ported to Windows (ticket #12)
+    - Release 1.1.0
+
 2013-03-22 Anton Adamansky. <adamansky@gmail.com>
     * Fixed number index crash #54
     - Release 1.0.68
index 5002e94..43cf926 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ JSON representation of queries and data implemented with API based on [C BSON](h
 
 News
 ===============================
+* `2013-04-25` **[EJDB and TokyoCabinet API ported to Windows](https://github.com/Softmotions/ejdb/blob/master/tcejdb/WIN32.md)**
 * `2013-04-03` **[Java API binding available](https://github.com/Softmotions/ejdb/blob/master/jejdb/)**
 * `2013-03-20` **[Lua binding available](https://github.com/Softmotions/ejdb/blob/master/luaejdb/)**
 * `2013-02-15` **[EJDB Python3 binding available](https://github.com/Softmotions/ejdb/blob/master/pyejdb/)**
@@ -21,6 +22,7 @@ News
 Features
 ================================
 * LGPL license allows you to embed this library into proprietary software.
+* [EJDB and TokyoCabinet API ported to Windows](https://github.com/Softmotions/ejdb/blob/master/tcejdb/WIN32.md)
 * MongoDB-like queries and overall philosophy.
 * Collection level write locking.
 * Collection level transactions.
index f8b87e0..9e7c349 100644 (file)
@@ -1,3 +1,7 @@
+2013-04-25 Anton Adamansky. <adamansky@gmail.com>
+    * EJDB and TokyoCabinet API ported to Windows (ticket #12)
+    - Release 1.1.0
+
 2013-03-22 Anton Adamansky. <adamansky@gmail.com>
     * Fixed number index crash #54
     - Release 1.0.68
diff --git a/tcejdb/WIN32.md b/tcejdb/WIN32.md
new file mode 100644 (file)
index 0000000..d8d0432
--- /dev/null
@@ -0,0 +1,100 @@
+Building EJDB and TokyoCabinet for windows
+==========================================
+
+All TokyoCabinet and EJDB API are ported to windows!
+
+Prerequsties
+------------------------------------------
+
+ * Install **Linux x64 OS** (tested on debian/ubuntu)
+ * Install thise packages:
+
+
+    autoconf automake bash bison bzip2 cmake
+    flex gcc intltool libtool make openssl
+    patch perl pkg-config scons sed unzip
+    wget xz-utils yasm zip wine git
+
+Creating build environment
+-----------------------------------------
+
+You need checkout specific branch of [MXE cross build environmen](http://mxe.cc/)
+to build win32 and win64 binaries:
+
+    git clone https://github.com/tonytheodore/mxe.git
+    git checkout multi-rebase
+
+Then create MXE settings file:
+
+    cd <mx checkout dir>
+    nano ./settings.mk
+
+And enter the following settings into `./settings.mk`:
+
+    JOBS := 1
+    MXE_TARGETS := x86_64-w64-mingw32 i686-w64-mingw32
+    #SOURCEFORGE_MIRROR := downloads.sourceforge.net
+    LOCAL_PKG_LIST := winpthreads pcre zlib cunit
+    .DEFAULT local-pkg-list:
+    local-pkg-list: $(LOCAL_PKG_LIST)
+
+Then make MXE build env:
+
+     cd <mx checkout dir>
+     make
+
+Building EJDB and TokyoCabinet
+------------------------------------
+
+    git clone https://github.com/Softmotions/ejdb.git
+    cd ejdb
+
+To make win build we have to run this script: `tcejdb/mxe/mxe-build.sh`
+
+    mxe-build.sh <mxe home path> w32|w64 [optional ./configure options]
+
+Example: building win32 binaries + EJDB test cases
+
+    tcejdb/mxe/mxe-build.sh ${HOME}/mxe w32 "--enable-tests"
+
+Example: building win64 binaries:
+
+    tcejdb/mxe/mxe-build.sh ${HOME}/mxe w64
+
+As result you will get zip archive in the folder `./tcejdb`:
+    `tcejdb-1.1.0-mingw32-i686.zip` or `tcejdb-1.1.0-mingw32-x86_64.zip`
+
+In those archives you will found:
+
+ * TC/EJDB header files `./include/tcejdb`
+ * library DLL: `tcejdbdll.dll` **(Exported All TokyoCabinet and EJDB API)**
+ * DLL Import library for MSVC: `tcejdbdll.lib(.exp)` and for GCC: `libtcejdbdll.a`
+ * Library for static linking: `libtcejdb.a`
+
+
+Sample code
+--------------------------------
+Sample code can be found in `./tcejdb/samples/`
+
+  * `sample1_mingw` Netbeans project for MinGW build env
+  * `sample1_win32` Visual studio express 2010 solution
+
+
+Notes
+--------------------------------
+
+* In order to build MSVC static library we need Microsoft's `lib.exe` tool,
+it automatically downloaded by `mxe-build.sh` from my dropbox account. So do not be surprised =)
+
+* Database files size on windows 32-bit are limited to 2GB, because on win32 all data is memmory mapped.
+
+* Due to strange reasons any generic gcc optimizations `-O1` `-O2` `-O3` generate bad EJDB testing code on win32, as
+workaround for this: all gcc optimization flags related to `O2` level are explicitly specified for gcc command (but without `-O2` arg).
+
+* HDB `tchdbsetxmsiz()` takes no effect because all file data is memory mapped on windows platform.
+
+
+
+
+
+