From 9daac51e8b8a7fe8917a7518d657fd123efcdfb2 Mon Sep 17 00:00:00 2001 From: schlaepfer Date: Wed, 12 Jul 2006 09:11:21 +0000 Subject: [PATCH] - version information added - update to official libusb snapshot (libusb-win32-device-bin-20060518) git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@154 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c --- libusbdll/.cdtproject | 16 +++++++++++++++- libusbdll/LibusbTest.exe | Bin 22944 -> 23896 bytes libusbdll/LibusbWin.dll | Bin 40995 -> 42048 bytes libusbdll/common.rc | 35 +++++++++++++++++++++++++++++++++++ libusbdll/libusb.a | Bin 0 -> 27984 bytes libusbdll/libusb.lib | Bin 10792 -> 0 bytes libusbdll/makefile | 26 ++++++++++++++++++++------ libusbdll/resource.rc | 8 ++++++++ libusbdll/usb.h | 26 +++++++++++++++++++++++--- 9 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 libusbdll/common.rc create mode 100644 libusbdll/libusb.a delete mode 100644 libusbdll/libusb.lib create mode 100644 libusbdll/resource.rc diff --git a/libusbdll/.cdtproject b/libusbdll/.cdtproject index 5824d61..d2a6332 100644 --- a/libusbdll/.cdtproject +++ b/libusbdll/.cdtproject @@ -59,11 +59,25 @@ make - + dll false true + +make + +clean +false +true + + +make + +testExe +false +true + diff --git a/libusbdll/LibusbTest.exe b/libusbdll/LibusbTest.exe index 557c4127a721bdd2c2b558f8133d6f439c309bd2..e2207d6d10a4aec2e2bcd16606667a593e51cb82 100644 GIT binary patch literal 23896 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 literal 22944 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 XwSzyo@6q7F(1$kg!CM}AI_Q4@j_Spd delta 11386 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 diff --git a/libusbdll/common.rc b/libusbdll/common.rc new file mode 100644 index 0000000..a463173 --- /dev/null +++ b/libusbdll/common.rc @@ -0,0 +1,35 @@ +#include + +#define RT_MANIFEST 24 +#define ID_MANIFEST 1 + +VS_VERSION_INFO VERSIONINFO +FILEVERSION RC_VERSION +PRODUCTVERSION RC_VERSION +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x0L +FILEOS VOS_NT_WINDOWS32 +FILETYPE RC_FILE_TYPE +FILESUBTYPE RC_FILE_SUB_TYPE +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "http://inf.ntb.ch" + VALUE "FileDescription", RC_PRODUCT_STR + VALUE "FileVersion", RC_VERSION_STR + VALUE "InternalName", RC_FILE_NAME_STR + VALUE "LegalCopyright", "@ 2006 Andreas Schläpfer" + VALUE "OriginalFilename",RC_FILE_NAME_STR + VALUE "ProductName", RC_PRODUCT_STR + VALUE "ProductVersion", RC_VERSION_STR + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + diff --git a/libusbdll/libusb.a b/libusbdll/libusb.a new file mode 100644 index 0000000000000000000000000000000000000000..42f1d288650d785410a46a8e1be2ceda29ded944 GIT binary patch literal 27984 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 diff --git a/libusbdll/makefile b/libusbdll/makefile index 2eddc1b..3c3d7f2 100644 --- a/libusbdll/makefile +++ b/libusbdll/makefile @@ -1,20 +1,34 @@ CC = gcc +RM=rm -f +WINDRES = windres SOURCENAME = LibusbWin DDLNAME = LibusbWin EXENAME = LibusbTest JAVAPATH = "C:/Program Files/Java/jdk1.5.0_04" -TARGETDIR = D:/work/USB/libusb/libusbdllMinGW ## -IDLOUT:$(DDLNAME) -MIDL:$(DDLNAME) -TLBOUT:$(DDLNAME) ## $(CC) -LD $(SOURCENAME).c -Fe$(DDLNAME).dll -link libusb.lib +VERSION_MAJOR = 0 +VERSION_MINOR = 0 +VERSION_MICRO = 2 +VERSION_NANO = 0 + +VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_MICRO).$(VERSION_NANO) +RC_VERSION = $(VERSION_MAJOR),$(VERSION_MINOR),$(VERSION_MICRO),$(VERSION_NANO) +RC_VERSION_STR = '\"$(VERSION)\"' + dll: $(DDLNAME).dll $(DDLNAME).dll: $(SOURCENAME).cpp - $(CC) -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I$(JAVAPATH)/include -I$(JAVAPATH)/include/win32 -shared $(SOURCENAME).cpp -o $(DDLNAME).dll libusb.lib + $(WINDRES) -o resource.o resource.rc -DRC_VERSION='$(RC_VERSION)' \ + -DRC_VERSION_STR=$(RC_VERSION_STR) + $(CC) -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -mwindows \ + -I$(JAVAPATH)/include -I$(JAVAPATH)/include/win32 -shared \ + $(SOURCENAME).cpp -o $(DDLNAME).dll resource.o libusb.a -cleanDll: - rm $(DDLNAME).dll +clean: + $(RM) $(DDLNAME).dll + $(RM) *.o testExe: $(EXENAME).exe $(EXENAME).exe: $(EXENAME).cpp - $(CC) $(EXENAME).cpp -o $(EXENAME).exe $(TARGETDIR)/libusb.a - + $(CC) $(EXENAME).cpp -o $(EXENAME).exe libusb.a diff --git a/libusbdll/resource.rc b/libusbdll/resource.rc new file mode 100644 index 0000000..fc09671 --- /dev/null +++ b/libusbdll/resource.rc @@ -0,0 +1,8 @@ +#define RC_FILE_TYPE VFT_DLL +#define RC_FILE_SUB_TYPE VFT2_UNKNOWN +#define RC_PRODUCT_STR "Java LibUsb-Win32 wrapper - DLL" +#define RC_FILE_NAME_STR "LibusbWin.dll" + +#include "common.rc" + + diff --git a/libusbdll/usb.h b/libusbdll/usb.h index 04f5afa..4f814df 100644 --- a/libusbdll/usb.h +++ b/libusbdll/usb.h @@ -2,6 +2,7 @@ #define __USB_H__ #include +#include /* * 'interface' is defined somewhere in the Windows header files. This macro @@ -284,7 +285,10 @@ struct usb_dev_handle; typedef struct usb_dev_handle usb_dev_handle; /* Variables */ -extern struct usb_bus *usb_busses; +#ifndef __USB_C__ +#define usb_busses usb_get_busses() +#endif + #include @@ -345,13 +349,27 @@ extern "C" { #define LIBUSB_HAS_INSTALL_SERVICE_NP 1 int usb_install_service_np(void); - + void CALLBACK usb_install_service_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1 int usb_uninstall_service_np(void); + void CALLBACK usb_uninstall_service_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); #define LIBUSB_HAS_INSTALL_DRIVER_NP 1 int usb_install_driver_np(const char *inf_file); - + void CALLBACK usb_install_driver_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_TOUCH_INF_FILE_NP 1 + int usb_touch_inf_file_np(const char *inf_file); + void CALLBACK usb_touch_inf_file_np_rundll(HWND wnd, HINSTANCE instance, + LPSTR cmd_line, int cmd_show); + + #define LIBUSB_HAS_INSTALL_NEEDS_RESTART_NP 1 + int usb_install_needs_restart_np(void); + const struct usb_version *usb_get_version(void); int usb_isochronous_setup_async(usb_dev_handle *dev, void **context, @@ -363,6 +381,8 @@ extern "C" { int usb_submit_async(void *context, char *bytes, int size); int usb_reap_async(void *context, int timeout); + int usb_reap_async_nocancel(void *context, int timeout); + int usb_cancel_async(void *context); int usb_free_async(void **context);