From 96ce1aad70760efe345582c760ba638e360d7c80 Mon Sep 17 00:00:00 2001 From: Alan Ott Date: Tue, 3 Jul 2012 04:54:02 +0800 Subject: [PATCH 1/2] Change Makefile.mingw to create hidapi-testgui.exe --- testgui/Makefile.mingw | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/testgui/Makefile.mingw b/testgui/Makefile.mingw index d3bfac3..df0f69d 100644 --- a/testgui/Makefile.mingw +++ b/testgui/Makefile.mingw @@ -6,7 +6,7 @@ # 2010-06-01 ########################################### -all: testgui +all: hidapi-testgui CC=gcc CXX=g++ @@ -14,11 +14,11 @@ COBJS=../windows/hid.o CPPOBJS=test.o OBJS=$(COBJS) $(CPPOBJS) CFLAGS=-I../hidapi -I../../hidapi-externals/fox/include -g -c -LIBS= -lsetupapi -L../../hidapi-externals/fox/lib -lFOX-1.6 -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32 +LIBS= -mwindows -lsetupapi -L../../hidapi-externals/fox/lib -Wl,-Bstatic -lFOX-1.6 -Wl,-Bdynamic -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32 -testgui: $(OBJS) - g++ -g $^ $(LIBS) -o testgui +hidapi-testgui: $(OBJS) + g++ -g $^ $(LIBS) -o hidapi-testgui $(COBJS): %.o: %.c $(CC) $(CFLAGS) $< -o $@ @@ -27,6 +27,6 @@ $(CPPOBJS): %.o: %.cpp $(CXX) $(CFLAGS) $< -o $@ clean: - rm *.o testgui.exe + rm -f *.o hidapi-testgui.exe .PHONY: clean From daebe52cd32651786d846ce0d20caa3fce98ae38 Mon Sep 17 00:00:00 2001 From: Alan Ott Date: Tue, 3 Jul 2012 12:18:11 +0800 Subject: [PATCH 2/2] Autotools on Windows --- Makefile.am | 6 +++++- configure.ac | 35 ++++++++++++++++++++++++++++++++--- testgui/Makefile.am | 8 ++++++++ windows/Makefile.am | 15 +++++++++++++++ windows/Makefile.mingw | 7 +++++-- 5 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 windows/Makefile.am diff --git a/Makefile.am b/Makefile.am index 4803d51..4a5c6fc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,10 +1,10 @@ +ACLOCAL_AMFLAGS = -I m4 if OS_FREEBSD pkgconfigdir=$(prefix)/libdata/pkgconfig else pkgconfigdir=$(libdir)/pkgconfig -echo $pkgconfigdir endif if OS_LINUX @@ -28,6 +28,10 @@ if OS_FREEBSD SUBDIRS += libusb endif +if OS_WINDOWS +SUBDIRS += windows +endif + if BUILD_TESTGUI SUBDIRS += testgui endif diff --git a/configure.ac b/configure.ac index dfa1b67..3123a3b 100644 --- a/configure.ac +++ b/configure.ac @@ -2,9 +2,9 @@ AC_PREREQ([2.65]) AC_INIT([hidapi], [0.8], [alan@signal11.us]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign -Wall -Werror]) +AC_CONFIG_MACRO_DIR([m4]) LT_INIT - AC_PROG_CC AC_PROG_CXX AC_PROG_OBJC @@ -63,6 +63,16 @@ case $host in AC_CHECK_LIB([iconv], [iconv_open], [LIBS_LIBUSB_PRIVATE="${LIBS_LIBUSB_PRIVATE} -liconv"], [hidapi_lib_error libiconv]) echo libs_priv: $LIBS_LIBUSB_PRIVATE ;; +*-mingw*) + AC_MSG_RESULT([ (Windows back-end, using MinGW)]) + backend="windows" + win_implementation="mingw" + ;; +*-cygwin*) + AC_MSG_RESULT([ (Windows back-end, using Cygwin)]) + backend="windows" + win_implementation="cygwin" + ;; *) AC_MSG_ERROR([HIDAPI is not supported on your operating system yet]) esac @@ -74,6 +84,14 @@ AC_SUBST([LIBS_LIBUSB]) AC_SUBST([CFLAGS_LIBUSB]) AC_SUBST([CFLAGS_HIDRAW]) +if test "x$backend" = xwindows; then + AC_DEFINE(OS_WINDOWS, 1, [Windows implementations]) + AC_SUBST(OS_WINDOWS) + LDFLAGS="${LDFLAGS} -no-undefined" + LIBS="${LIBS} -lsetupapi" +fi + + # Test GUI AC_ARG_ENABLE([testgui], [AS_HELP_STRING([--enable-testgui], @@ -89,8 +107,18 @@ if test "x$testgui_enabled" != "xno"; then LIBS_TESTGUI+=" -framework Cocoa" CFLAGS_TESTGUI+=`/opt/local/bin/fox-config --cflags` OBJCFLAGS+=" -x objective-c++" + elif test "x$backend" = xwindows; then + # On Windows, just set the paths for Fox toolkit + if test "x$win_implementation" = xmingw; then + CFLAGS_TESTGUI="-I\$(srcdir)/../../hidapi-externals/fox/include -g -c" + LIBS_TESTGUI=" -mwindows \$(srcdir)/../../hidapi-externals/fox/lib/libFOX-1.6.a -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32" + else + # Cygwin + CFLAGS_TESTGUI="-DWIN32 -I\$(srcdir)/../../hidapi-externals/fox/include -g -c" + LIBS_TESTGUI="\$(srcdir)/../../hidapi-externals/fox/lib/libFOX-cygwin-1.6.a -lgdi32 -Wl,--enable-auto-import -static-libgcc -static-libstdc++ -lkernel32" + fi else - # On non-Mac platforms, use pkg-config to find fox. + # On Linux and FreeBSD platforms, use pkg-config to find fox. PKG_CHECK_MODULES([fox], [fox]) LIBS_TESTGUI="${LIBS_TESTGUI} $fox_LIBS" if test "x$backend" = xfreebsd; then @@ -106,6 +134,7 @@ AC_SUBST([CFLAGS_TESTGUI]) AM_CONDITIONAL(OS_LINUX, test "x$backend" = xlinux) AM_CONDITIONAL(OS_DARWIN, test "x$backend" = xdarwin) AM_CONDITIONAL(OS_FREEBSD, test "x$backend" = xfreebsd) +AM_CONDITIONAL(OS_WINDOWS, test "x$backend" = xwindows) AC_CONFIG_HEADERS([config.h]) @@ -116,5 +145,5 @@ else AC_CONFIG_FILES([pc/hidapi.pc]) fi -AC_CONFIG_FILES([Makefile linux/Makefile libusb/Makefile mac/Makefile testgui/Makefile]) +AC_CONFIG_FILES([Makefile linux/Makefile libusb/Makefile mac/Makefile windows/Makefile testgui/Makefile]) AC_OUTPUT diff --git a/testgui/Makefile.am b/testgui/Makefile.am index e4d7fc9..2159490 100644 --- a/testgui/Makefile.am +++ b/testgui/Makefile.am @@ -34,3 +34,11 @@ bin_PROGRAMS = hidapi-testgui hidapi_testgui_SOURCES = test.cpp hidapi_testgui_LDADD = $(srcdir)/../libusb/libhidapi.la $(LIBS_TESTGUI) endif + +## Windows +if OS_WINDOWS +bin_PROGRAMS = hidapi-testgui + +hidapi_testgui_SOURCES = test.cpp +hidapi_testgui_LDADD = $(srcdir)/../windows/libhidapi.la $(LIBS_TESTGUI) +endif diff --git a/windows/Makefile.am b/windows/Makefile.am new file mode 100644 index 0000000..861e743 --- /dev/null +++ b/windows/Makefile.am @@ -0,0 +1,15 @@ +lib_LTLIBRARIES = libhidapi.la +libhidapi_la_SOURCES = hid.c +libhidapi_la_LDFLAGS = -version-info 0:0:0 +AM_CPPFLAGS = -I$(srcdir)/../hidapi/ +libhidapi_la_LIBADD = $(LIBS) + +hdrdir = $(includedir)/hidapi +hdr_HEADERS = $(srcdir)/../hidapi/hidapi.h + +EXTRA_DIST = \ + ddk_build \ + hidapi.vcproj \ + hidtest.vcproj \ + Makefile.mingw \ + hidapi.sln diff --git a/windows/Makefile.mingw b/windows/Makefile.mingw index 3f13386..b800004 100644 --- a/windows/Makefile.mingw +++ b/windows/Makefile.mingw @@ -6,7 +6,7 @@ # 2010-06-01 ########################################### -all: hidtest +all: hidtest libhidapi.dll CC=gcc CXX=g++ @@ -15,11 +15,14 @@ CPPOBJS=../hidtest/hidtest.o OBJS=$(COBJS) $(CPPOBJS) CFLAGS=-I../hidapi -g -c LIBS= -lsetupapi - +DLL_LDFLAGS = -mwindows -lsetupapi hidtest: $(OBJS) g++ -g $^ $(LIBS) -o hidtest +libhidapi.dll: $(OBJS) + $(CC) -g $^ $(DLL_LDFLAGS) -o libhidapi.dll + $(COBJS): %.o: %.c $(CC) $(CFLAGS) $< -o $@