summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO35
-rw-r--r--Makefile.am319
-rw-r--r--PKGBUILD101
-rw-r--r--Print.h98
-rw-r--r--Printable.h40
-rw-r--r--WString.h224
-rwxr-xr-xautoclean.sh24
-rwxr-xr-xautogen.sh70
-rw-r--r--configure.ac76
-rw-r--r--u8glib-hg-automake.patch374
-rw-r--r--wpimain.cpp18
11 files changed, 1379 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 00000000000..f0700c59eaf
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,35 @@
+pkgbase = u8glib-git
+ pkgdesc = Universal Graphics Library for 8 Bit Embedded Systems
+ pkgver = 2efa3aa
+ pkgrel = 1
+ url = http://code.google.com/p/u8glib/
+ arch = i686
+ arch = x86_64
+ arch = armel
+ arch = armhf
+ license = BSD
+ makedepends = wiringpi-git
+ depends = wiringpi-git
+ source = u8glib-git::git+https://github.com/yhfudev/u8glib.git
+ source = autoclean.sh
+ source = autogen.sh
+ source = configure.ac
+ source = Makefile.am
+ source = Printable.h
+ source = Print.h
+ source = WString.h
+ source = wpimain.cpp
+ source = u8glib-hg-automake.patch
+ md5sums = SKIP
+ md5sums = b69ad754ec4ee727f9176d67729957ed
+ md5sums = a365f85909306565a791091cd3f72581
+ md5sums = 971e68a376117a4dfa54c497378217ff
+ md5sums = fd028df31fd1240f522927bda525af89
+ md5sums = 0fe78d8a3c557d144ba1b644f07f4697
+ md5sums = 27ed87162d28c5a16128df5ff232f8a9
+ md5sums = a27c0b55ca396d7b53d77dcfb0f5460e
+ md5sums = 238d6c7f801a600ee6ce05cc7a54e7d8
+ md5sums = 32b2bb35158432c229f33bb44f542ca9
+
+pkgname = u8glib-git
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 00000000000..a1cb37d67a8
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,319 @@
+
+AM_LDFLAGS=
+AM_CFLAGS=
+
+DEFS+= \
+ -Icsrc -Icppsrc -Idogmsrc -Inonarduino \
+ `getconf LFS_CFLAGS` \
+ `getconf LFS64_CFLAGS` \
+ -D_GNU_SOURCE \
+ -D_FILE_OFFSET_BITS=64 \
+ $(NULL)
+
+AM_CFLAGS+= \
+ -I$(top_builddir)/include/ \
+ $(NULL)
+
+AM_LDFLAGS += \
+ -L$(top_builddir)/src/ \
+ `getconf LFS_LDFLAGS` \
+ `getconf LFS64_LDFLAGS` \
+ $(NULL)
+
+if DEBUG
+# use "valgrind --tool=memcheck --leak-check=yes" to check memory leak, MemWatch will drag the program.
+#DEFS+=-DMEMWATCH
+DEFS+= -DDEBUG=1
+AM_CFLAGS+=-g -Wall
+
+else
+AM_CFLAGS+=-O3 -Wall
+endif
+
+EXT_FLAGS=
+@MK@GITNUMTMP=$(shell cd "$(top_srcdir)"; A=$$(git show | head -n 1 | awk '{print $$2}'); echo $${A:0:7}; cd - > /dev/null )
+#@MK@SVNNUMTMP=$(shell cd "$(top_srcdir)"; LC_ALL=C svn info | grep -i Revision | awk '{print $$2}'; cd - > /dev/null )
+#@MK@ifeq ($(SVNNUMTMP),)
+#EXT_FLAGS+= -DSVN_VERSION='"${GITNUMTMP}"'
+#@MK@else
+#EXT_FLAGS+= -DSVN_VERSION='"${SVNNUMTMP}"'
+#@MK@endif
+@MK@ifeq ($(GITNUMTMP),)
+@MK@else
+EXT_FLAGS+= -DSVN_VERSION='"${GITNUMTMP}"'
+@MK@endif
+DEFS+=$(EXT_FLAGS)
+
+SRC_BASE= \
+ csrc/chessengine.c \
+ csrc/u8g_bitmap.c \
+ csrc/u8g_circle.c \
+ csrc/u8g_clip.c \
+ csrc/u8g_com_api_16gr.c \
+ csrc/u8g_com_api.c \
+ csrc/u8g_com_arduino_attiny85_hw_spi.c \
+ csrc/u8g_com_arduino_common.c \
+ csrc/u8g_com_arduino_fast_parallel.c \
+ csrc/u8g_com_arduino_hw_spi.c \
+ csrc/u8g_com_arduino_hw_usart_spi.c \
+ csrc/u8g_com_arduino_no_en_parallel.c \
+ csrc/u8g_com_arduino_parallel.c \
+ csrc/u8g_com_arduino_port_d_wr.c \
+ csrc/u8g_com_arduino_ssd_i2c.c \
+ csrc/u8g_com_arduino_st7920_custom.c \
+ csrc/u8g_com_arduino_st7920_hw_spi.c \
+ csrc/u8g_com_arduino_st7920_spi.c \
+ csrc/u8g_com_arduino_std_sw_spi.c \
+ csrc/u8g_com_arduino_sw_spi.c \
+ csrc/u8g_com_arduino_t6963.c \
+ csrc/u8g_com_arduino_uc_i2c.c \
+ csrc/u8g_com_atmega_hw_spi.c \
+ csrc/u8g_com_atmega_parallel.c \
+ csrc/u8g_com_atmega_st7920_hw_spi.c \
+ csrc/u8g_com_atmega_st7920_spi.c \
+ csrc/u8g_com_atmega_sw_spi.c \
+ csrc/u8g_com_msp430_hw_spi.c \
+ csrc/u8g_com_null.c \
+ csrc/u8g_com_std_sw_spi.c \
+ csrc/u8g_cursor.c \
+ csrc/u8g_delay.c \
+ csrc/u8g_dev_a2_micro_printer.c \
+ csrc/u8g_dev_flipdisc_2x7.c \
+ csrc/u8g_dev_gprof.c \
+ csrc/u8g_dev_ht1632.c \
+ csrc/u8g_dev_ili9325d_320x240.c \
+ csrc/u8g_dev_ks0108_128x64.c \
+ csrc/u8g_dev_lc7981_160x80.c \
+ csrc/u8g_dev_lc7981_240x128.c \
+ csrc/u8g_dev_lc7981_240x64.c \
+ csrc/u8g_dev_lc7981_320x64.c \
+ csrc/u8g_dev_ld7032_60x32.c \
+ csrc/u8g_dev_null.c \
+ csrc/u8g_dev_pcd8544_84x48.c \
+ csrc/u8g_dev_pcf8812_96x65.c \
+ csrc/u8g_dev_sbn1661_122x32.c \
+ csrc/u8g_dev_ssd1306_128x32.c \
+ csrc/u8g_dev_ssd1306_128x64.c \
+ csrc/u8g_dev_ssd1309_128x64.c \
+ csrc/u8g_dev_ssd1322_nhd31oled_bw.c \
+ csrc/u8g_dev_ssd1322_nhd31oled_gr.c \
+ csrc/u8g_dev_ssd1325_nhd27oled_bw.c \
+ csrc/u8g_dev_ssd1325_nhd27oled_bw_new.c \
+ csrc/u8g_dev_ssd1325_nhd27oled_gr.c \
+ csrc/u8g_dev_ssd1325_nhd27oled_gr_new.c \
+ csrc/u8g_dev_ssd1327_96x96_gr.c \
+ csrc/u8g_dev_ssd1351_128x128.c \
+ csrc/u8g_dev_ssd1353_160x128.c \
+ csrc/u8g_dev_st7565_64128n.c \
+ csrc/u8g_dev_st7565_dogm128.c \
+ csrc/u8g_dev_st7565_dogm132.c \
+ csrc/u8g_dev_st7565_lm6059.c \
+ csrc/u8g_dev_st7565_lm6063.c \
+ csrc/u8g_dev_st7565_nhd_c12832.c \
+ csrc/u8g_dev_st7565_nhd_c12864.c \
+ csrc/u8g_dev_st7687_c144mvgd.c \
+ csrc/u8g_dev_st7920_128x64.c \
+ csrc/u8g_dev_st7920_192x32.c \
+ csrc/u8g_dev_st7920_202x32.c \
+ csrc/u8g_dev_t6963_128x128.c \
+ csrc/u8g_dev_t6963_128x64.c \
+ csrc/u8g_dev_t6963_240x128.c \
+ csrc/u8g_dev_t6963_240x64.c \
+ csrc/u8g_dev_tls8204_84x48.c \
+ csrc/u8g_dev_uc1601_c128032.c \
+ csrc/u8g_dev_uc1608_240x128.c \
+ csrc/u8g_dev_uc1608_240x64.c \
+ csrc/u8g_dev_uc1610_dogxl160.c \
+ csrc/u8g_dev_uc1611_dogm240.c \
+ csrc/u8g_dev_uc1611_dogxl240.c \
+ csrc/u8g_dev_uc1701_dogs102.c \
+ csrc/u8g_dev_uc1701_mini12864.c \
+ csrc/u8g_ellipse.c \
+ csrc/u8g_font.c \
+ csrc/u8g_line.c \
+ csrc/u8g_page.c \
+ csrc/u8g_pb14v1.c \
+ csrc/u8g_pb16h1.c \
+ csrc/u8g_pb16h2.c \
+ csrc/u8g_pb16v1.c \
+ csrc/u8g_pb16v2.c \
+ csrc/u8g_pb32h1.c \
+ csrc/u8g_pb8h1.c \
+ csrc/u8g_pb8h1f.c \
+ csrc/u8g_pb8h2.c \
+ csrc/u8g_pb8h8.c \
+ csrc/u8g_pb8v1.c \
+ csrc/u8g_pb8v2.c \
+ csrc/u8g_pb.c \
+ csrc/u8g_pbxh16.c \
+ csrc/u8g_pbxh24.c \
+ csrc/u8g_polygon.c \
+ csrc/u8g_rect.c \
+ csrc/u8g_rot.c \
+ csrc/u8g_scale.c \
+ csrc/u8g_state.c \
+ csrc/u8g_u16toa.c \
+ csrc/u8g_u8toa.c \
+ csrc/u8g_virtual_screen.c \
+ sfntsrc/u8g_font_data.c \
+ dogmsrc/spacetrash.c \
+ $(NULL)
+
+SRC_WPI= \
+ csrc/u8g_com_i2c.c \
+ csrc/u8g_com_io.c \
+ csrc/u8g_com_raspberrypi_hw_spi.c \
+ csrc/u8g_com_raspberrypi_ssd_i2c.c \
+ csrc/u8g_ll_api.c \
+ dogmsrc/u8g_dogm128_api.c \
+ cppsrc/U8glib.cpp \
+ $(NULL)
+
+SRC_SDL= \
+ csrc/u8g_com_i2c.c \
+ csrc/u8g_com_io.c \
+ csrc/u8g_ll_api.c \
+ dogmsrc/u8g_dogm128_api.c \
+ cppsrc/U8glib.cpp \
+ sys/sdl/dev/u8g_dev_sdl.c \
+ $(NULL)
+
+include_HEADERS = \
+ $(top_srcdir)/csrc/u8g.h \
+ $(top_srcdir)/cppsrc/U8glib.h \
+ $(top_srcdir)/dogmsrc/u8g_dogm128_api.h \
+ $(top_srcdir)/nonarduino/Printable.h \
+ $(top_srcdir)/nonarduino/Print.h \
+ $(top_srcdir)/nonarduino/WString.h \
+ $(NULL)
+
+noinst_HEADERS=
+
+lib_LTLIBRARIES=libu8gbase.la libu8gsdl.la libu8gwpi.la
+
+libu8gbase_la_SOURCES=$(SRC_BASE)
+
+libu8gsdl_la_SOURCES=$(SRC_SDL)
+
+libu8gwpi_la_SOURCES=$(SRC_WPI)
+
+libu8gbase_la_CFLAGS=-Icsrc -Icppsrc -Inonarduino -DU8G_16BIT `sdl-config --cflags`
+libu8gbase_la_CPPFLAGS=$(libu8gbase_la_CFLAGS)
+libu8gbase_la_LDFLAGS=
+
+libu8gsdl_la_CFLAGS=-Icsrc -Icppsrc -Inonarduino -DU8G_16BIT `sdl-config --cflags`
+libu8gsdl_la_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+libu8gsdl_la_LDFLAGS=$(top_builddir)/libu8gbase.la `sdl-config --libs`
+
+libu8gwpi_la_CFLAGS=-Icsrc -Icppsrc -Inonarduino -DU8G_16BIT -DU8G_RASPBERRY_PI -DU8G_WITH_PINLIST
+libu8gwpi_la_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+libu8gwpi_la_LDFLAGS=$(top_builddir)/libu8gbase.la -lwiringPi
+
+
+BIN_SDL=u8gsdl_2bit u8gsdl_8bit u8gsdl_chess u8gsdl_circle u8gsdl_helloworldpp u8gsdl_cursor u8gsdl_fonttop u8gsdl_fullcolor u8gsdl_gabc u8gsdl_gah u8gsdl_greek u8gsdl_helloworld u8gsdl_hicolor u8gsdl_logo u8gsdl_menu u8gsdl_polygon u8gsdl_spacetrash u8gsdl_xbm
+
+BIN_WPI=u8gwpi_chess u8gwpi_chessdogm u8gwpi_gtest u8gwpi_logo u8gwpi_spacetrash
+
+bin_PROGRAMS=$(BIN_SDL)
+
+noinst_PROGRAMS=$(BIN_WPI)
+
+u8gsdl_2bit_SOURCES=sys/sdl/2bit/main.c
+u8gsdl_2bit_CFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_2bit_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_8bit_SOURCES=sys/sdl/8bit/main.c
+u8gsdl_8bit_CFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_8bit_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_chess_SOURCES=sys/sdl/chess/main.c
+u8gsdl_chess_CFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_chess_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_circle_SOURCES=sys/sdl/circle/main.c
+u8gsdl_circle_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_circle_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_helloworldpp_SOURCES=sys/sdl/cpp_helloworld/main.cpp
+u8gsdl_helloworldpp_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_helloworldpp_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_cursor_SOURCES=sys/sdl/cursor/main.c
+u8gsdl_cursor_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_cursor_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_fonttop_SOURCES=sys/sdl/FontPosTop/main.c
+u8gsdl_fonttop_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_fonttop_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_fullcolor_SOURCES=sys/sdl/fullcolor/main.c
+u8gsdl_fullcolor_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_fullcolor_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_gabc_SOURCES=sys/sdl/gabc/main.c
+u8gsdl_gabc_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_gabc_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_gah_SOURCES=sys/sdl/gA_h/main.c
+u8gsdl_gah_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_gah_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_greek_SOURCES=sys/sdl/greek/main.c
+u8gsdl_greek_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_greek_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_helloworld_SOURCES=sys/sdl/helloworld/main.c
+u8gsdl_helloworld_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_helloworld_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_hicolor_SOURCES=sys/sdl/hicolor/main.c
+u8gsdl_hicolor_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_hicolor_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_logo_SOURCES=sys/sdl/cpp_logo/main.cpp
+u8gsdl_logo_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_logo_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_menu_SOURCES=sys/sdl/menu/main.c
+u8gsdl_menu_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_menu_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_polygon_SOURCES=sys/sdl/polygon/main.c
+u8gsdl_polygon_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_polygon_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_spacetrash_SOURCES=sys/sdl/spacetrash/spacemain.c
+u8gsdl_spacetrash_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_spacetrash_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+u8gsdl_xbm_SOURCES=sys/sdl/xbm/main.c
+u8gsdl_xbm_CPPFLAGS=$(libu8gsdl_la_CFLAGS)
+u8gsdl_xbm_LDFLAGS=-lu8gsdl $(libu8gsdl_la_LDFLAGS)
+
+.pde.cpp:
+ cp $< $@
+.ino.o:
+ cp $< $@
+
+#u8gwpi_logo_SOURCES=sys/arm/examples/u8g_logo/u8g_logo.c
+#u8gwpi_logo_SOURCES=sys/atmega/u8g_logo/u8g_logo.c
+u8gwpi_logo_SOURCES=nonarduino/wpimain.cpp sys/arduino/U8gLogo/U8gLogo.pde
+u8gwpi_logo_CFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_logo_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_logo_LDFLAGS=-lu8gwpi $(libu8gwpi_la_LDFLAGS)
+
+u8gwpi_gtest_SOURCES=nonarduino/wpimain.cpp sys/arduino/GraphicsTest/GraphicsTest.pde
+u8gwpi_gtest_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_gtest_LDFLAGS=-lu8gwpi $(libu8gwpi_la_LDFLAGS)
+
+u8gwpi_spacetrash_SOURCES=nonarduino/wpimain.cpp sys/arduino/SpaceTrashDogm/SpaceTrash.pde #sys/sdl/spacetrash/spacemain.c
+u8gwpi_spacetrash_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_spacetrash_LDFLAGS=-lu8gwpi $(libu8gwpi_la_LDFLAGS)
+
+u8gwpi_chess_SOURCES=nonarduino/wpimain.cpp sys/arduino/Chess/Chess.pde
+u8gwpi_chess_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_chess_LDFLAGS=-lu8gwpi $(libu8gwpi_la_LDFLAGS)
+
+u8gwpi_chessdogm_SOURCES=nonarduino/wpimain.cpp sys/arduino/ChessDogm/Chess.pde
+u8gwpi_chessdogm_CPPFLAGS=$(libu8gwpi_la_CFLAGS)
+u8gwpi_chessdogm_LDFLAGS=-lu8gwpi $(libu8gwpi_la_LDFLAGS)
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 00000000000..fcfed583d33
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,101 @@
+# Maintainer: Yunhui Fu <yhfudev@gmail.com>
+
+_pkgbase="u8glib-git"
+#pkgname=('libu8gwpi-git' 'libu8gsdl-git')
+pkgname=('u8glib-git')
+pkgver=2efa3aa
+pkgrel=1
+pkgdesc="Universal Graphics Library for 8 Bit Embedded Systems"
+arch=( 'i686' 'x86_64' 'armel' 'armhf' )
+url='http://code.google.com/p/u8glib/'
+license=('BSD')
+depends=('wiringpi-git')
+makedepends=('wiringpi-git')
+#conflicts=('libu8gwpi-git' 'libu8gsdl-git')
+
+source=("${_pkgbase}::git+https://github.com/yhfudev/u8glib.git"
+ autoclean.sh
+ autogen.sh
+ configure.ac
+ Makefile.am
+ Printable.h
+ Print.h
+ WString.h
+ wpimain.cpp
+ u8glib-hg-automake.patch
+ )
+md5sums=('SKIP'
+ b69ad754ec4ee727f9176d67729957ed # autoclean.sh
+ a365f85909306565a791091cd3f72581 # autogen.sh
+ 971e68a376117a4dfa54c497378217ff # configure.ac
+ fd028df31fd1240f522927bda525af89 # Makefile.am
+ 0fe78d8a3c557d144ba1b644f07f4697 # nonarduino/Printable.h
+ 27ed87162d28c5a16128df5ff232f8a9 # nonarduino/Print.h
+ a27c0b55ca396d7b53d77dcfb0f5460e # nonarduino/WString.h
+ 238d6c7f801a600ee6ce05cc7a54e7d8 # nonarduino/wpimain.cpp
+ 32b2bb35158432c229f33bb44f542ca9 # u8glib-hg-automake.patch
+ )
+
+pkgver_git() {
+ cd "${srcdir}/${_pkgbase}"
+ local ver="$(git show | grep commit | awk '{print $2}' )"
+ #printf "r%s" "${ver//[[:alpha:]]}"
+ echo ${ver:0:7}
+}
+
+pkgver_svn() {
+ cd "${srcdir}/${_pkgbase}"
+ local ver="$(svn info | grep Revision | awk '{print $2}' )"
+ #printf "r%s" "${ver//[[:alpha:]]}"
+ echo ${ver:0:7}
+}
+
+pkgver() {
+ pkgver_git
+}
+
+prepare() {
+ cd "${srcdir}/${_pkgbase}"
+ mkdir -p nonarduino
+ cp "${srcdir}/Printable.h" nonarduino
+ cp "${srcdir}/Print.h" nonarduino
+ cp "${srcdir}/WString.h" nonarduino
+ cp "${srcdir}/wpimain.cpp" nonarduino
+ cp "${srcdir}/autoclean.sh" .
+ cp "${srcdir}/autogen.sh" .
+ cp "${srcdir}/configure.ac" .
+ cp "${srcdir}/Makefile.am" .
+ patch -p1 -i "${srcdir}/u8glib-hg-automake.patch"
+}
+
+build() {
+ cd "${srcdir}/${_pkgbase}"
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make $MAKEFLAGS
+}
+
+check() {
+ make -C "${srcdir}/${_pkgbase}" check
+}
+
+package() {
+ cd "${srcdir}/${_pkgbase}"
+ make DESTDIR="$pkgdir" install
+}
+
+package_libu8gwpi-git() {
+ conflicts=('libu8gwpi')
+ provides=('libu8gwpi')
+ #replaces=('libu8gwpi-git')
+
+ cd "${srcdir}/${_pkgbase}"
+ make DESTDIR="$pkgdir" install
+}
+
+package_libu8gsdl-git() {
+ pkgdesc='Python 2 bindings for Google Protocol Buffers'
+ #depends=('libu8g')
+ conflicts=('libu8gsdl-git')
+ provides=('libu8gsdl')
+}
diff --git a/Print.h b/Print.h
new file mode 100644
index 00000000000..c559eb80c52
--- /dev/null
+++ b/Print.h
@@ -0,0 +1,98 @@
+/*
+ Print.h - Base class that provides print() and println()
+ Copyright (c) 2008 David A. Mellis. All right reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef Print_h
+#define Print_h
+
+#if defined(ARDUINO)
+#if ARDUINO >= 100
+#include <Arduino.h>
+#else
+#include <WProgram.h>
+#endif
+#include <U8glib.h>
+#else
+#include <unistd.h>
+#define delay(a) usleep(a)
+#endif
+
+
+#include <inttypes.h>
+#include <stdio.h> // for size_t
+
+#include "WString.h"
+#include "Printable.h"
+
+#define DEC 10
+#define HEX 16
+#define OCT 8
+#define BIN 2
+
+class Print
+{
+ private:
+ int write_error;
+ size_t printNumber(unsigned long, uint8_t);
+ size_t printFloat(double, uint8_t);
+ protected:
+ void setWriteError(int err = 1) { write_error = err; }
+ public:
+ Print() : write_error(0) {}
+
+ int getWriteError() { return write_error; }
+ void clearWriteError() { setWriteError(0); }
+
+ virtual size_t write(uint8_t) = 0;
+ size_t write(const char *str) {
+ if (str == NULL) return 0;
+ return write((const uint8_t *)str, strlen(str));
+ }
+// virtual size_t write(const uint8_t *buffer, size_t size);
+ size_t write(const uint8_t *buffer, size_t size) {
+ printf("%s", buffer);
+ return size;
+ }
+
+ size_t print(const __FlashStringHelper *);
+ size_t print(const String &);
+ size_t print(const char[]);
+ size_t print(char);
+ size_t print(unsigned char, int = DEC);
+ size_t print(int, int = DEC);
+ size_t print(unsigned int, int = DEC);
+ size_t print(long, int = DEC);
+ size_t print(unsigned long, int = DEC);
+ size_t print(double, int = 2);
+ size_t print(const Printable&);
+
+ size_t println(const __FlashStringHelper *);
+ size_t println(const String &s);
+ size_t println(const char[]);
+ size_t println(char);
+ size_t println(unsigned char, int = DEC);
+ size_t println(int, int = DEC);
+ size_t println(unsigned int, int = DEC);
+ size_t println(long, int = DEC);
+ size_t println(unsigned long, int = DEC);
+ size_t println(double, int = 2);
+ size_t println(const Printable&);
+ size_t println(void);
+};
+
+#endif
diff --git a/Printable.h b/Printable.h
new file mode 100644
index 00000000000..2a1b2e9f2c8
--- /dev/null
+++ b/Printable.h
@@ -0,0 +1,40 @@
+/*
+ Printable.h - Interface class that allows printing of complex types
+ Copyright (c) 2011 Adrian McEwen. All right reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef Printable_h
+#define Printable_h
+
+#include <stdlib.h>
+
+class Print;
+
+/** The Printable class provides a way for new classes to allow themselves to be printed.
+ By deriving from Printable and implementing the printTo method, it will then be possible
+ for users to print out instances of this class by passing them into the usual
+ Print::print and Print::println methods.
+*/
+
+class Printable
+{
+ public:
+ virtual size_t printTo(Print& p) const = 0;
+};
+
+#endif
+
diff --git a/WString.h b/WString.h
new file mode 100644
index 00000000000..2a6bc6e7b5a
--- /dev/null
+++ b/WString.h
@@ -0,0 +1,224 @@
+/*
+ WString.h - String library for Wiring & Arduino
+ ...mostly rewritten by Paul Stoffregen...
+ Copyright (c) 2009-10 Hernando Barragan. All right reserved.
+ Copyright 2011, Paul Stoffregen, paul@pjrc.com
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef String_class_h
+#define String_class_h
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+//#include <avr/pgmspace.h>
+
+// When compiling programs with this class, the following gcc parameters
+// dramatically increase performance and memory (RAM) efficiency, typically
+// with little or no increase in code size.
+// -felide-constructors
+// -std=c++0x
+
+class __FlashStringHelper;
+#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
+
+// An inherited class for holding the result of a concatenation. These
+// result objects are assumed to be writable by subsequent concatenations.
+class StringSumHelper;
+
+// The string class
+class String
+{
+ // use a function pointer to allow for "if (s)" without the
+ // complications of an operator bool(). for more information, see:
+ // http://www.artima.com/cppsource/safebool.html
+ typedef void (String::*StringIfHelperType)() const;
+ void StringIfHelper() const {}
+
+public:
+ // constructors
+ // creates a copy of the initial value.
+ // if the initial value is null or invalid, or if memory allocation
+ // fails, the string will be marked as invalid (i.e. "if (s)" will
+ // be false).
+ String(const char *cstr = "");
+ String(const String &str);
+ String(const __FlashStringHelper *str);
+ #ifdef __GXX_EXPERIMENTAL_CXX0X__
+ String(String &&rval);
+ String(StringSumHelper &&rval);
+ #endif
+ explicit String(char c);
+ explicit String(unsigned char, unsigned char base=10);
+ explicit String(int, unsigned char base=10);
+ explicit String(unsigned int, unsigned char base=10);
+ explicit String(long, unsigned char base=10);
+ explicit String(unsigned long, unsigned char base=10);
+ explicit String(float, unsigned char decimalPlaces=2);
+ explicit String(double, unsigned char decimalPlaces=2);
+ ~String(void);
+
+ // memory management
+ // return true on success, false on failure (in which case, the string
+ // is left unchanged). reserve(0), if successful, will validate an
+ // invalid string (i.e., "if (s)" will be true afterwards)
+ unsigned char reserve(unsigned int size);
+ inline unsigned int length(void) const {return len;}
+
+ // creates a copy of the assigned value. if the value is null or
+ // invalid, or if the memory allocation fails, the string will be
+ // marked as invalid ("if (s)" will be false).
+ String & operator = (const String &rhs);
+ String & operator = (const char *cstr);
+ String & operator = (const __FlashStringHelper *str);
+ #ifdef __GXX_EXPERIMENTAL_CXX0X__
+ String & operator = (String &&rval);
+ String & operator = (StringSumHelper &&rval);
+ #endif
+
+ // concatenate (works w/ built-in types)
+
+ // returns true on success, false on failure (in which case, the string
+ // is left unchanged). if the argument is null or invalid, the
+ // concatenation is considered unsucessful.
+ unsigned char concat(const String &str);
+ unsigned char concat(const char *cstr);
+ unsigned char concat(char c);
+ unsigned char concat(unsigned char c);
+ unsigned char concat(int num);
+ unsigned char concat(unsigned int num);
+ unsigned char concat(long num);
+ unsigned char concat(unsigned long num);
+ unsigned char concat(float num);
+ unsigned char concat(double num);
+ unsigned char concat(const __FlashStringHelper * str);
+
+ // if there's not enough memory for the concatenated value, the string
+ // will be left unchanged (but this isn't signalled in any way)
+ String & operator += (const String &rhs) {concat(rhs); return (*this);}
+ String & operator += (const char *cstr) {concat(cstr); return (*this);}
+ String & operator += (char c) {concat(c); return (*this);}
+ String & operator += (unsigned char num) {concat(num); return (*this);}
+ String & operator += (int num) {concat(num); return (*this);}
+ String & operator += (unsigned int num) {concat(num); return (*this);}
+ String & operator += (long num) {concat(num); return (*this);}
+ String & operator += (unsigned long num) {concat(num); return (*this);}
+ String & operator += (float num) {concat(num); return (*this);}
+ String & operator += (double num) {concat(num); return (*this);}
+ String & operator += (const __FlashStringHelper *str){concat(str); return (*this);}
+
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, float num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, double num);
+ friend StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *rhs);
+
+ // comparison (only works w/ Strings and "strings")
+ operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
+ int compareTo(const String &s) const;
+ unsigned char equals(const String &s) const;
+ unsigned char equals(const char *cstr) const;
+ unsigned char operator == (const String &rhs) const {return equals(rhs);}
+ unsigned char operator == (const char *cstr) const {return equals(cstr);}
+ unsigned char operator != (const String &rhs) const {return !equals(rhs);}
+ unsigned char operator != (const char *cstr) const {return !equals(cstr);}
+ unsigned char operator < (const String &rhs) const;
+ unsigned char operator > (const String &rhs) const;
+ unsigned char operator <= (const String &rhs) const;
+ unsigned char operator >= (const String &rhs) const;
+ unsigned char equalsIgnoreCase(const String &s) const;
+ unsigned char startsWith( const String &prefix) const;
+ unsigned char startsWith(const String &prefix, unsigned int offset) const;
+ unsigned char endsWith(const String &suffix) const;
+
+ // character acccess
+ char charAt(unsigned int index) const;
+ void setCharAt(unsigned int index, char c);
+ char operator [] (unsigned int index) const;
+ char& operator [] (unsigned int index);
+ void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;
+ void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const
+ {getBytes((unsigned char *)buf, bufsize, index);}
+ const char * c_str() const { return buffer; }
+
+ // search
+ int indexOf( char ch ) const;
+ int indexOf( char ch, unsigned int fromIndex ) const;
+ int indexOf( const String &str ) const;
+ int indexOf( const String &str, unsigned int fromIndex ) const;
+ int lastIndexOf( char ch ) const;
+ int lastIndexOf( char ch, unsigned int fromIndex ) const;
+ int lastIndexOf( const String &str ) const;
+ int lastIndexOf( const String &str, unsigned int fromIndex ) const;
+ String substring( unsigned int beginIndex ) const { return substring(beginIndex, len); };
+ String substring( unsigned int beginIndex, unsigned int endIndex ) const;
+
+ // modification
+ void replace(char find, char replace);
+ void replace(const String& find, const String& replace);
+ void remove(unsigned int index);
+ void remove(unsigned int index, unsigned int count);
+ void toLowerCase(void);
+ void toUpperCase(void);
+ void trim(void);
+
+ // parsing/conversion
+ long toInt(void) const;
+ float toFloat(void) const;
+
+protected:
+ char *buffer; // the actual char array
+ unsigned int capacity; // the array length minus one (for the '\0')
+ unsigned int len; // the String length (not counting the '\0')
+protected:
+ void init(void);
+ void invalidate(void);
+ unsigned char changeBuffer(unsigned int maxStrLen);
+ unsigned char concat(const char *cstr, unsigned int length);
+
+ // copy and move
+ String & copy(const char *cstr, unsigned int length);
+ String & copy(const __FlashStringHelper *pstr, unsigned int length);
+ #ifdef __GXX_EXPERIMENTAL_CXX0X__
+ void move(String &rhs);
+ #endif
+};
+
+class StringSumHelper : public String
+{
+public:
+ StringSumHelper(const String &s) : String(s) {}
+ StringSumHelper(const char *p) : String(p) {}
+ StringSumHelper(char c) : String(c) {}
+ StringSumHelper(unsigned char num) : String(num) {}
+ StringSumHelper(int num) : String(num) {}
+ StringSumHelper(unsigned int num) : String(num) {}
+ StringSumHelper(long num) : String(num) {}
+ StringSumHelper(unsigned long num) : String(num) {}
+ StringSumHelper(float num) : String(num) {}
+ StringSumHelper(double num) : String(num) {}
+};
+
+#endif // __cplusplus
+#endif // String_class_h
diff --git a/autoclean.sh b/autoclean.sh
new file mode 100755
index 00000000000..b7161b24904
--- /dev/null
+++ b/autoclean.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+chmod 755 $0 autogen.sh config.guess config.rpath config.status config.sub configure depcomp install-sh missing
+
+make -C palmos distclean
+rm -rf palmos/Debug/
+rm -rf palmos/Device/
+rm -f palmos/.dependencies*
+rm -f src/sections.h
+
+make clean
+make distclean
+
+rm -f *.o
+
+rm -f config.log
+rm -f config.status
+rm -f config.h
+rm -f Makefile
+rm -rf ./autom4te.cache/
+rm -f gmon.out
+
+#rm -f ./src/Makefile.in
+#rm -f ./Makefile.in
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 00000000000..9fc0f34060b
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+PROGNAME="$0"
+#DN_EXEC=`echo "${PROGNAME}" | ${EXEC_AWK} -F/ '{b=$1; for (i=2; i < NF; i ++) {b=b "/" $(i)}; print b}'`
+DN_EXEC=`dirname "${PROGNAME}"`
+if [ ! "${DN_EXEC}" = "" ]; then
+ DN_EXEC="${DN_EXEC}/"
+else
+ DN_EXEC="./"
+fi
+
+${DN_EXEC}autoclean.sh
+
+rm -f configure
+
+rm -f Makefile.in
+
+rm -f config.guess
+rm -f config.sub
+rm -f install-sh
+rm -f missing
+rm -f depcomp
+
+# install libs
+#which apt-get
+#if [ "$?" = "0" ]; then
+ #sudo apt-get install -y libxml2-dev libxslt-dev libicu-dev
+ ## for traceback
+ #sudo apt-get install -y binutils-dev libiberty-dev
+ ## for doxygen
+ #sudo apt-get install -y graphviz doxygen texlive-full
+#fi
+
+#which yum
+#if [ "$?" = "0" ]; then
+ #sudo yum install -y libxml2-devel libxslt-devel libicu-devel
+#if
+
+if [ 0 = 1 ]; then
+autoscan
+else
+#cd pflib && ${DN_EXEC}autogen.sh && cd ..
+
+touch NEWS
+touch README
+touch AUTHORS
+touch ChangeLog
+touch config.h.in
+
+libtoolize --force --copy --install --automake
+aclocal
+#automake -ac
+automake --copy --add-missing --gnu
+autoconf
+
+autoreconf # run twice to get rid of 'ltmain.sh not found'
+autoreconf
+
+if [ 1 = 1 ]; then
+rm -rf build
+mkdir -p build
+cd build
+fi
+
+#${DN_EXEC}configure --enable-debug
+#./configure --enable-debug
+#make clean
+#make
+
+fi
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 00000000000..d2f10790f3c
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,76 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.69])
+AC_INIT(u8glib, 1.18, [BUG-REPORT-ADDRESS])
+AC_CONFIG_SRCDIR([csrc/u8g_font.c])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE(-Wall subdir-objects)
+
+#magic for conditional check in Makefile:
+MK=''; AC_SUBST(MK)
+SED=sed
+
+# Checks for programs.
+AC_PROG_AWK
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+AM_PROG_AR
+AC_PROG_LIBTOOL
+
+# Checks for libraries.
+LT_PREREQ([2.2])
+#LT_INIT([shared static])
+LT_INIT([disable-static])
+
+# debug
+AC_ARG_ENABLE([debug],
+ AS_HELP_STRING([--enable-debug],[Compile the debug version (default: disabled)]),
+ [enable_debug=$enableval],
+ [enable_debug=no])
+AM_CONDITIONAL([DEBUG], [test $enable_debug = "yes"])
+if test "x$enable_debug" = "xyes"; then
+ changequote({,})
+ CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'`
+ CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'`
+ changequote([,])
+ dnl add -O0 only if GCC or ICC is used
+ if test "$GCC" = "yes" || test "$ICC" = "yes"; then
+ CFLAGS="$CFLAGS -g -O0 -Wall"
+ CXXFLAGS="$CXXFLAGS -g -O0 -Wall"
+ fi
+else
+ changequote({,})
+ CFLAGS=`echo "$CFLAGS" | $SED -e 's/-g//g'`
+ CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-g//g'`
+ changequote([,])
+fi
+
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lwiringPi':
+AC_CHECK_LIB([wiringPi], [main])
+
+# Checks for header files.
+AC_CHECK_HEADERS([float.h stddef.h stdint.h stdlib.h string.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_CHECK_HEADER_STDBOOL
+AC_C_INLINE
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
+AC_TYPE_INT64_T
+AC_TYPE_INT8_T
+AC_TYPE_SIZE_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINT8_T
+
+# Checks for library functions.
+AC_CHECK_FUNCS([atexit memset sqrt strerror])
+
+AC_CONFIG_FILES([Makefile
+ ])
+#AC_CONFIG_SUBDIRS([tools/font/otf2bdf])
+AC_OUTPUT
diff --git a/u8glib-hg-automake.patch b/u8glib-hg-automake.patch
new file mode 100644
index 00000000000..30254867454
--- /dev/null
+++ b/u8glib-hg-automake.patch
@@ -0,0 +1,374 @@
+diff --git a/cppsrc/U8glib.cpp b/cppsrc/U8glib.cpp
+index 542fc67..c2cc479 100644
+--- a/cppsrc/U8glib.cpp
++++ b/cppsrc/U8glib.cpp
+@@ -38,7 +38,7 @@
+ #include "U8glib.h"
+
+
+-
++#if defined(U8G_WITH_PINLIST)
+ uint8_t U8GLIB::initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset)
+ {
+ prepare();
+@@ -76,4 +76,5 @@ uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, u
+ prepare();
+ return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset);
+ }
++#endif
+
+diff --git a/cppsrc/U8glib.h b/cppsrc/U8glib.h
+index e50b8c6..74b5775 100644
+--- a/cppsrc/U8glib.h
++++ b/cppsrc/U8glib.h
+@@ -87,10 +87,10 @@ class U8GLIB : public Print
+ u8g_uint_t getPrintRow(void) { return ty; }
+
+ /* implementation of the write interface to the print class */
+-#if defined(ARDUINO) && ARDUINO >= 100
+- size_t write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); return 1;}
+-#else
++#if defined(ARDUINO) && ARDUINO < 100
+ void write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); }
++#else
++ size_t write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); return 1;}
+ #endif
+
+ /* screen rotation */
+diff --git a/csrc/u8g.h b/csrc/u8g.h
+index 046ec89..48f81e0 100644
+--- a/csrc/u8g.h
++++ b/csrc/u8g.h
+@@ -1150,6 +1150,8 @@ void u8g_UpdateDimension(u8g_t *u8g);
+ uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */
+ uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */
+ uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn); /* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */
++
++#if defined(U8G_WITH_PINLIST)
+ uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset);
+ uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset);
+ uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */
+@@ -1158,6 +1160,8 @@ uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t
+ uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset);
+ uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
+ uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
++#endif
++
+ void u8g_FirstPage(u8g_t *u8g);
+ uint8_t u8g_NextPage(u8g_t *u8g);
+ uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast);
+diff --git a/dogmsrc/u8g_dogm128_api.c b/dogmsrc/u8g_dogm128_api.c
+index c3fc5aa..6802c69 100644
+--- a/dogmsrc/u8g_dogm128_api.c
++++ b/dogmsrc/u8g_dogm128_api.c
+@@ -60,6 +60,7 @@ uint8_t u8g_InitDogm128API(u8g_dev_t *dev)
+ return 1;
+ }
+
++#if defined(U8G_WITH_PINLIST)
+ uint8_t u8g_InitSPIDogm128API(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset)
+ {
+
+@@ -77,7 +78,7 @@ uint8_t u8g_InitHWSPIDogm128API(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t
+ u8g_init_dogm_common();
+ return 1;
+ }
+-
++#endif
+
+ void u8g_SetDogmRot90(void)
+ {
+diff --git a/dogmsrc/u8g_dogm128_api.h b/dogmsrc/u8g_dogm128_api.h
+index ab981d0..802636d 100644
+--- a/dogmsrc/u8g_dogm128_api.h
++++ b/dogmsrc/u8g_dogm128_api.h
+@@ -75,8 +75,10 @@ extern uint8_t dog_height_minus_one;
+
+ /* this is a special u8g procedure to start up the dogm128 interface */
+ uint8_t u8g_InitDogm128API(u8g_dev_t *dev);
++#if defined(U8G_WITH_PINLIST)
+ uint8_t u8g_InitSPIDogm128API(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset);
+ uint8_t u8g_InitHWSPIDogm128API(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset);
++#endif
+ void u8g_SetDogmRot90(void);
+ void u8g_SetDogmRot180(void);
+ void u8g_SetDogmRot270(void);
+diff --git a/sys/arduino/Chess/Chess.pde b/sys/arduino/Chess/Chess.pde
+index eeebe4a..7c4a917 100644
+--- a/sys/arduino/Chess/Chess.pde
++++ b/sys/arduino/Chess/Chess.pde
+@@ -135,6 +135,8 @@
+ //U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+ //U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+
++U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
++
+
+ // DOGS102 shield configuration values
+ uint8_t uiKeyPrev = 2;
+@@ -156,7 +158,7 @@ uint8_t uiKeyCode = CHESS_KEY_NONE;
+
+ void uiSetup(void) {
+ // configure input keys
+-
++#if defined(ARDUINO)
+ pinMode(uiKeyPrev, INPUT); // set pin to input
+ digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors
+ pinMode(uiKeyNext, INPUT); // set pin to input
+@@ -165,11 +167,13 @@ void uiSetup(void) {
+ digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors
+ pinMode(uiKeyBack, INPUT); // set pin to input
+ digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors
++#endif
+ }
+
+ void uiStep(void)
+ {
+ uiKeyCodeSecond = uiKeyCodeFirst;
++#if defined(ARDUINO)
+ if ( digitalRead(uiKeyPrev) == LOW )
+ uiKeyCodeFirst = CHESS_KEY_PREV;
+ else if ( digitalRead(uiKeyNext) == LOW )
+@@ -178,9 +182,10 @@ void uiStep(void)
+ uiKeyCodeFirst = CHESS_KEY_SELECT;
+ else if ( digitalRead(uiKeyBack) == LOW )
+ uiKeyCodeFirst = CHESS_KEY_BACK;
+- else
++ else
++#endif
+ uiKeyCodeFirst = CHESS_KEY_NONE;
+-
++
+ if ( uiKeyCodeSecond == uiKeyCodeFirst )
+ uiKeyCode = uiKeyCodeFirst;
+ else
+diff --git a/sys/arduino/ChessDogm/Chess.pde b/sys/arduino/ChessDogm/Chess.pde
+index 2ef5868..f40e4a1 100644
+--- a/sys/arduino/ChessDogm/Chess.pde
++++ b/sys/arduino/ChessDogm/Chess.pde
+@@ -66,7 +66,7 @@ uint8_t uiKeyCode = CHESS_KEY_NONE;
+
+ void uiSetup(void) {
+ // configure input keys
+-
++#if defined(ARDUINO)
+ pinMode(uiKeyPrev, INPUT); // set pin to input
+ digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors
+ pinMode(uiKeyNext, INPUT); // set pin to input
+@@ -75,11 +75,13 @@ void uiSetup(void) {
+ digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors
+ pinMode(uiKeyBack, INPUT); // set pin to input
+ digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors
++#endif
+ }
+
+ void uiStep(void)
+ {
+ uiKeyCodeSecond = uiKeyCodeFirst;
++#if defined(ARDUINO)
+ if ( digitalRead(uiKeyPrev) == LOW )
+ uiKeyCodeFirst = CHESS_KEY_PREV;
+ else if ( digitalRead(uiKeyNext) == LOW )
+@@ -88,9 +90,10 @@ void uiStep(void)
+ uiKeyCodeFirst = CHESS_KEY_SELECT;
+ else if ( digitalRead(uiKeyBack) == LOW )
+ uiKeyCodeFirst = CHESS_KEY_BACK;
+- else
++ else
++#endif
+ uiKeyCodeFirst = CHESS_KEY_NONE;
+-
++
+ if ( uiKeyCodeSecond == uiKeyCodeFirst )
+ uiKeyCode = uiKeyCodeFirst;
+ else
+@@ -107,7 +110,7 @@ void setup() {
+
+ //u8g_SetDogmRot180();
+ uiSetup();
+- chess_Init(&u8g_dogm128_obj);
++ chess_Init(&u8g_dogm128_obj, 0);
+ }
+
+ void loop() {
+diff --git a/sys/arduino/GraphicsTest/GraphicsTest.pde b/sys/arduino/GraphicsTest/GraphicsTest.pde
+index f159b8d..973046c 100644
+--- a/sys/arduino/GraphicsTest/GraphicsTest.pde
++++ b/sys/arduino/GraphicsTest/GraphicsTest.pde
+@@ -133,6 +133,8 @@
+ //U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+ //U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+
++U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
++
+ void u8g_prepare(void) {
+ u8g.setFont(u8g_font_6x10);
+ u8g.setFontRefHeightExtendedText();
+@@ -274,9 +276,10 @@ void setup(void) {
+ // flip screen, if required
+ //u8g.setRot180();
+
+-
++#if defined(ARDUINO)
+ pinMode(13, OUTPUT);
+ digitalWrite(13, HIGH);
++#endif
+ }
+
+ void loop(void) {
+diff --git a/sys/arduino/SpaceTrashDogm/SpaceTrash.pde b/sys/arduino/SpaceTrashDogm/SpaceTrash.pde
+index f9eea77..acd3be3 100644
+--- a/sys/arduino/SpaceTrashDogm/SpaceTrash.pde
++++ b/sys/arduino/SpaceTrashDogm/SpaceTrash.pde
+@@ -65,7 +65,7 @@ uint8_t isFire = 0;
+ // setup the user interface
+ void uiSetup(void) {
+ // configure input keys
+-
++#if defined(ARDUINO)
+ pinMode(uiKeyUpPin, INPUT); // set pin to input
+ digitalWrite(uiKeyUpPin, HIGH); // turn on pullup resistors
+ pinMode(uiKeyDownPin, INPUT); // set pin to input
+@@ -79,14 +79,15 @@ void uiSetup(void) {
+ digitalWrite(uiKeyDownPin2, HIGH); // turn on pullup resistors
+ pinMode(uiKeyFirePin2, INPUT); // set pin to input
+ digitalWrite(uiKeyFirePin2, HIGH); // turn on pullup resistors
+-
+-
++#endif
++
+ // assign some (more or less) useful values to the output variables
+ shipLocation = 127;
+ }
+
+ // calculate new output values
+ void uiStep(void) {
++#if defined(ARDUINO)
+ if ( digitalRead(uiKeyUpPin) == LOW || digitalRead(uiKeyUpPin2) == LOW )
+ if ( shipLocation <= 255 - uiIncrement )
+ shipLocation += uiIncrement;
+@@ -96,6 +97,7 @@ void uiStep(void) {
+ isFire = 0;
+ if ( digitalRead(uiKeyFirePin) == LOW || digitalRead(uiKeyFirePin2) == LOW )
+ isFire = 1;
++#endif
+ }
+
+
+@@ -121,7 +123,9 @@ void setup(void)
+ u8g_SetDogmRot180();
+
+ uiSetup();
++#if defined(ARDUINO)
+ next_sec_time = millis() + 1000UL;
++#endif
+ fps = 0;
+ frame_cnt = 0;
+
+@@ -139,12 +143,13 @@ void loop(void)
+ st_Step(shipLocation, 0, isFire);
+
+ frame_cnt++;
++#if defined(ARDUINO)
+ if ( next_sec_time < millis() )
+ {
+ fps = frame_cnt;
+ frame_cnt = 0;
+ next_sec_time = millis() + 1000UL;
+ }
+-
++#endif
+ }
+
+diff --git a/sys/arduino/U8gLogo/U8gLogo.pde b/sys/arduino/U8gLogo/U8gLogo.pde
+index 151542d..a8fedd6 100644
+--- a/sys/arduino/U8gLogo/U8gLogo.pde
++++ b/sys/arduino/U8gLogo/U8gLogo.pde
+@@ -134,6 +134,8 @@
+ //U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+ //U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
+
++U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
++
+ //#define MINI_LOGO
+
+ void drawColorBox(void)
+diff --git a/sys/sdl/chess/main.c b/sys/sdl/chess/main.c
+index 2e39fb6..27bbe15 100644
+--- a/sys/sdl/chess/main.c
++++ b/sys/sdl/chess/main.c
+@@ -1,10 +1,8 @@
+
+-
+ #include "u8g.h"
+ #include <stdlib.h>
+ #include <stdio.h>
+
+-
+ int u8g_sdl_get_key(void);
+
+ uint8_t get_key_code(void)
+@@ -13,22 +11,27 @@ uint8_t get_key_code(void)
+ int sdl_key;
+ sdl_key = u8g_sdl_get_key();
+ chess_key = CHESS_KEY_NONE;
+- if ( sdl_key > 0 )
+- {
+- if ( sdl_key == 'n' )
++ switch ( sdl_key ) {
++ case 'n':
++ case 274: // arrow down
++ case 275: // arrow right
+ chess_key = CHESS_KEY_NEXT;
+- else if ( sdl_key == 'p' )
++ break;
++ case 'p':
++ case 273: // arrow up
++ case 276: // arrow left
+ chess_key = CHESS_KEY_PREV;
+- else if ( sdl_key == ' ' )
++ break;
++ case ' ':
+ chess_key = CHESS_KEY_SELECT;
+- else if ( sdl_key == 'q' )
++ break;
++ case 'q':
+ exit(0);
+- }
+- return chess_key;
++ break;
++ }
++ return chess_key;
+ }
+
+-
+-
+ int main(void)
+ {
+
+@@ -83,4 +86,3 @@ int main(void)
+ chess_Step(CHESS_KEY_NONE);
+ }
+ }
+-
+diff --git a/sys/sdl/spacetrash/spacemain.c b/sys/sdl/spacetrash/spacemain.c
+index 0146ee6..2cf9210 100644
+--- a/sys/sdl/spacetrash/spacemain.c
++++ b/sys/sdl/spacetrash/spacemain.c
+@@ -1,11 +1,13 @@
+
+
+-#include "SDL.h"
+-#include "u8g.h"
+-//#include "u8g_dogm128_api.h"
+ #include <stdlib.h>
+ #include <stdio.h>
+
++#include <SDL.h>
++
++#include "u8g.h"
++//#include "u8g_dogm128_api.h"
++
+
+ // generic configuration values
+ uint8_t uiIncrement = 4;
diff --git a/wpimain.cpp b/wpimain.cpp
new file mode 100644
index 00000000000..a2031210579
--- /dev/null
+++ b/wpimain.cpp
@@ -0,0 +1,18 @@
+
+
+#if ! defined(ARDUINO)
+extern void loop(void);
+extern void setup(void);
+
+int
+main(void)
+{
+ setup();
+ while (1) {
+ loop();
+ }
+ return 0;
+}
+
+#endif
+