Will Z-Way run on my specific platform?
The core of Z-Way — Z-Way Library — will compile and run on any POSIX-compliant platform as well as Linux, Mac OS X and other Unix-like systems. It also runs on Windows. The full Z-Way solution with home automation engine has more requirements to the OS, CPU and memory, but still runs on most platforms from router-based OpenWRT to advanced desktop and server machines running Linux or Windows.
Z-Way relies on several open-source libraries:
- libarchive (13)
- libxml2 (2)
- libcrypto (1.0)
- libssl (1.0)
- libz (1)
- libv8 (3.24.37) *
- libcurl (4) *
- libwebsockets (8) * (optional, WebSocket support)
- libmosquitto (2) * (optional, MQTT support)
- libcares (2) * (optional, async DNS resolver support)
- libdns_sd (1), libavahi_client (3) * (optional, HomeKit support)
- and their dependencies
Most of them are provided by OS, some requires latest versions to be compiled (like libxml2, libmosquitto and libcrypto). This is ususally not a big deal to do.
So, before considering Z-Way as your Z-Wave controller software make sure v8 runs on your platform.
Do I really need this v8 to use Z-Way?
Not really if you only need C API of Z-Way library. Some of our clients are happy to use C-level interface.
How to check is v8 runs on my platform?
Take a copy of v8 source code (we use a specific commit) and compile it. Once done, go to
v8/out/XXX.release/ and run
d8 binary. If it runs, your platform is 99% supported by Z-Way. If not, read further. May be some advices would help you.
The snipplet below shows commands you need to execute for most common cases.
git clone https://github.com/v8/v8 (cd v8 && git checkout 3606220e348799e7b5332d191a456bfd4ab67df1) make -C v8 dependencies LINK="g++" LD="g++" make -C v8 i18nsupport=off library=shared x64.release
Change x64 to ia32 or arm or mipsel depending on your CPU. MIPS big endian is not supported by v8, but we have our own port to this platform tested on some CPUs. Please contact us if you need MIPS big endian.
If you are using cross-compilation, prior to compilation you need to define CC, CXX, AR and RANLIB environment variables and CFLAGS and LDFLAGS. Here are some examples:
export CFLAGS = -EL export LDFLAGS = -EL -Wl,-rpath,$(LIB_DIR)
Here LIB_DIR is the path to libraries for the target arch. You need to compile
export CFLAGS = -march=armv6 -mfpu=vfp -mfloat-abi=hard export CXXFLAGS = -march=armv6 -mfpu=vfp -mfloat-abi=hard
In this example we define specific ARM EABI and set VFP variant. You need to compile
arm.release armv7=false hardfp=on snapshot=off armfpu=vfp armfloatabi=hard (these params instructs v8 to build the code with hardfp EABI).
Contuct us to get help if you consider Z-Way or Z-Way Library for your platform.