diff --git a/README.md b/README.md
index 4af0768..50455a8 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,8 @@
  - CMake 3.5 or later
  - Boost including boost-python
  - Git
- 
+ - Recent OpenOCD for device programming (`--enable-ftdi` required if building from source)
+
 Clone the Project Trellis repository and download the latest database:
 
      git clone --recursive https://github.com/SymbiFlow/prjtrellis
diff --git a/examples/README.md b/examples/README.md
index 85c770f..a379c33 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -5,7 +5,7 @@
 
 ## Disclaimer
 
-Project Trellis is currently **highly** experimental. Do not use it for anything mission critical like avionics, nuclear power or automatic cat feeders!
+Project Trellis is currently experimental. Do not use it for anything mission critical like avionics, nuclear power or automatic cat feeders!
 Although I have not managed to destroy any FPGAs, there is a non-zero chance that the tools could produce a bitstream that destroys or degrades the FPGA. Do not
 use with a development board that you cannot afford to lose!
 
@@ -16,18 +16,18 @@
 
 ## Included Projects
 
- - **tinyfpga**: morse blink example for the TinyFPGA Ex rev1 prototype with an 85k ECP5
+ - **tinyfpga_rev1/rev2**: morse blink example for the TinyFPGA Ex rev1/2 prototypes with an 85k ECP5
  - **ulx3s**: "Night Rider" example for the 45k ULX3S board
- - **versa**: 14-segment display example for the ECP5 Versa Board
+ - **picorv32_ulx3s**: Small picorv32-based SoC for the 45k ULX3S board that displays prime numbers
+ on the LEDs.
+ - **versa5g**: 14-segment display example for the ECP5 Versa-5G board
+ - **picorv32_versa5g**: Small picorv32-based SoC for the ECP5 Versa-5G board that displays prime numbers
+ on the LEDs.
+ - **soc_versa5g**: Small picorv32-based SoC with RAM and UART for the ECP5 Versa-5G board
+ - **ecp5_evn**: "Night Rider" example for the ECP5 Evaluation Board
+ - **ecp5_evn_multiboot**: multiboot example for the ECP5 Evaluation Board
+ - **soc_ecp5_evn**: Small picorv32-based SoC with RAM and UART for the ECP5 Evaluation Board
 
-All projects include a Makefile for building (and programming in the case of the TinyFPGA example).
+All projects include a Makefile for building and programming.
 
-## Notes
 
-In all cases there are a handful of constant bits (that remain the same in all ECP5 designs), whose detailed function
-is unknown - even if the low-level purpose, such as tying an internal signal low, is known. This is why there is a
-"_empty.config" file in all examples. These files are also located in the `misc/basecfgs` folder. If you need to
-change any of the examples to a different ECP5 device, you will also need to pick the appropriate base config.
-
-IO constraints are currently specified as attributes on `TRELLIS_IO` primitives, reading IO constraint files
-is not yet implemented.
diff --git a/examples/ecp5_evn/README.md b/examples/ecp5_evn/README.md
new file mode 100644
index 0000000..fd67495
--- /dev/null
+++ b/examples/ecp5_evn/README.md
@@ -0,0 +1,6 @@
+# ECP5 Evaluation Board Example
+
+Run `make prog` to load the example to the board.
+
+You must ensure JP2 is shorted to connect the 12MHz
+FTDI clock to the FPGA.
\ No newline at end of file
diff --git a/examples/versa5g/README.md b/examples/versa5g/README.md
new file mode 100644
index 0000000..b390742
--- /dev/null
+++ b/examples/versa5g/README.md
@@ -0,0 +1,9 @@
+# ECP5 Versa-5G Demo
+
+Run `make prog` to build & load, LEDs will count and
+a message will scroll on the 14-segment display.
+
+If your Versa board is new, you will need to change
+J50 to bypass the iSPclock. Re-arrange the jumpers
+to connect pins 1-2 and 3-5 (leaving one jumper spare).
+See p19 of the Versa Board user guide.
diff --git a/libtrellis/CMakeLists.txt b/libtrellis/CMakeLists.txt
index f780213..dc49445 100644
--- a/libtrellis/CMakeLists.txt
+++ b/libtrellis/CMakeLists.txt
@@ -10,8 +10,8 @@
 set(CMAKE_DEFIN)
 set(link_param "")
 if (STATIC_BUILD)
-    set(Boost_USE_STATIC_LIBS   ON)
-    if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    set(Boost_USE_STATIC_LIBS ON)
+    if (NOT APPLE)
         set(link_param "-static")
     endif()
 endif()
@@ -32,18 +32,18 @@
     # Original source: https://github.com/BVLC/caffe/blob/master/cmake/Dependencies.cmake#L148
     set(version ${PYTHONLIBS_VERSION_STRING})
 
-    STRING(REGEX REPLACE "[^0-9]" "" boost_py_version ${version})
+    STRING(REGEX REPLACE "[^0-9]" "" boost_py_version "${version}")
     find_package(Boost COMPONENTS "python-py${boost_py_version}" ${boost_libs})
     set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND})
 
     while (NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND)
-        STRING(REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version})
+        STRING(REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version "${version}")
 
-        STRING(REGEX REPLACE "[^0-9]" "" boost_py_version ${version})
+        STRING(REGEX REPLACE "[^0-9]" "" boost_py_version "${version}")
         find_package(Boost COMPONENTS "python-py${boost_py_version}" ${boost_libs})
         set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND})
 
-        STRING(REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version ${version})
+        STRING(REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version "${version}")
         if ("${has_more_version}" STREQUAL "")
             break()
         endif ()
@@ -109,23 +109,23 @@
 find_package(Boost REQUIRED COMPONENTS program_options)
 
 get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)
-if ("${LIB64}" STREQUAL "TRUE")
+if (NOT APPLE AND "${LIB64}" STREQUAL "TRUE")
     set(LIBDIR "lib64")
 else()
     set(LIBDIR "lib")
 endif()
 
 function(setup_rpath name)
-  if(APPLE)
-    set_target_properties(${name} PROPERTIES
-                          BUILD_WITH_INSTALL_RPATH ON
-                          INSTALL_RPATH "@loader_path/../${LIBDIR}/trellis"
-                          INSTALL_NAME_DIR "@rpath")
-  elseif(UNIX)
-    set_target_properties(${name} PROPERTIES
-                          BUILD_WITH_INSTALL_RPATH ON
-                          INSTALL_RPATH "\$ORIGIN/../${LIBDIR}/trellis")
-  endif()
+    if(APPLE)
+        set_target_properties(${name} PROPERTIES
+                              BUILD_WITH_INSTALL_RPATH ON
+                              INSTALL_RPATH "@loader_path/../${LIBDIR}/trellis"
+                              INSTALL_NAME_DIR "@rpath")
+    elseif(UNIX)
+        set_target_properties(${name} PROPERTIES
+                              BUILD_WITH_INSTALL_RPATH ON
+                              INSTALL_RPATH "\$ORIGIN/../${LIBDIR}/trellis")
+    endif()
 endfunction()
 
 add_executable(ecppack ${INCLUDE_FILES} tools/ecppack.cpp)
@@ -149,7 +149,7 @@
 setup_rpath(ecpmulti)
 
 if (BUILD_SHARED)
-    install(TARGETS trellis ecppack ecppll ecpunpack ecpmulti LIBRARY DESTINATION ${LIBDIR}/trellis  RUNTIME DESTINATION bin)
+    install(TARGETS trellis ecppack ecppll ecpunpack ecpmulti pytrellis LIBRARY DESTINATION ${LIBDIR}/trellis  RUNTIME DESTINATION bin)
 else()
     install(TARGETS ecppack ecpunpack ecppll ecpmulti RUNTIME DESTINATION bin)
 endif()
@@ -157,6 +157,3 @@
 install(DIRECTORY ../misc DESTINATION share/trellis)
 install(DIRECTORY ../util/common DESTINATION share/trellis/util)
 install(DIRECTORY ../timing/util DESTINATION share/trellis/timing USE_SOURCE_PERMISSIONS)
-if (BUILD_SHARED)
-   install(TARGETS pytrellis DESTINATION ${LIBDIR}/trellis)
-endif()
