Skip to content

Commit 852bba4

Browse files
author
Daniel Drake
committed
Initial commit
Basic library structure which supports enumerating detected USB devices
0 parents  commit 852bba4

21 files changed

+3113
-0
lines changed

.gitignore

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
.deps
2+
.libs
3+
Makefile
4+
Makefile.in
5+
*.la
6+
*.lo
7+
*.o
8+
libtool
9+
ltmain.sh
10+
missing
11+
stamp-h1
12+
autom4te.cache
13+
install-sh
14+
depcomp
15+
configure
16+
aclocal.m4
17+
compile
18+
config.guess
19+
config.h*
20+
config.log
21+
config.status
22+
config.sub
23+
*.swp
24+
lsusb
25+
dpfp
26+
*.pc
27+
fpusb-*.tar.bz2
28+
fpusb-*.tar.gz
29+
ChangeLog

AUTHORS

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Daniel Drake <[email protected]>

COPYING

+504
Large diffs are not rendered by default.

INSTALL

+234
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
Installation Instructions
2+
*************************
3+
4+
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
5+
2006 Free Software Foundation, Inc.
6+
7+
This file is free documentation; the Free Software Foundation gives
8+
unlimited permission to copy, distribute and modify it.
9+
10+
Basic Installation
11+
==================
12+
13+
Briefly, the shell commands `./configure; make; make install' should
14+
configure, build, and install this package. The following
15+
more-detailed instructions are generic; see the `README' file for
16+
instructions specific to this package.
17+
18+
The `configure' shell script attempts to guess correct values for
19+
various system-dependent variables used during compilation. It uses
20+
those values to create a `Makefile' in each directory of the package.
21+
It may also create one or more `.h' files containing system-dependent
22+
definitions. Finally, it creates a shell script `config.status' that
23+
you can run in the future to recreate the current configuration, and a
24+
file `config.log' containing compiler output (useful mainly for
25+
debugging `configure').
26+
27+
It can also use an optional file (typically called `config.cache'
28+
and enabled with `--cache-file=config.cache' or simply `-C') that saves
29+
the results of its tests to speed up reconfiguring. Caching is
30+
disabled by default to prevent problems with accidental use of stale
31+
cache files.
32+
33+
If you need to do unusual things to compile the package, please try
34+
to figure out how `configure' could check whether to do them, and mail
35+
diffs or instructions to the address given in the `README' so they can
36+
be considered for the next release. If you are using the cache, and at
37+
some point `config.cache' contains results you don't want to keep, you
38+
may remove or edit it.
39+
40+
The file `configure.ac' (or `configure.in') is used to create
41+
`configure' by a program called `autoconf'. You need `configure.ac' if
42+
you want to change it or regenerate `configure' using a newer version
43+
of `autoconf'.
44+
45+
The simplest way to compile this package is:
46+
47+
1. `cd' to the directory containing the package's source code and type
48+
`./configure' to configure the package for your system.
49+
50+
Running `configure' might take a while. While running, it prints
51+
some messages telling which features it is checking for.
52+
53+
2. Type `make' to compile the package.
54+
55+
3. Optionally, type `make check' to run any self-tests that come with
56+
the package.
57+
58+
4. Type `make install' to install the programs and any data files and
59+
documentation.
60+
61+
5. You can remove the program binaries and object files from the
62+
source code directory by typing `make clean'. To also remove the
63+
files that `configure' created (so you can compile the package for
64+
a different kind of computer), type `make distclean'. There is
65+
also a `make maintainer-clean' target, but that is intended mainly
66+
for the package's developers. If you use it, you may have to get
67+
all sorts of other programs in order to regenerate files that came
68+
with the distribution.
69+
70+
Compilers and Options
71+
=====================
72+
73+
Some systems require unusual options for compilation or linking that the
74+
`configure' script does not know about. Run `./configure --help' for
75+
details on some of the pertinent environment variables.
76+
77+
You can give `configure' initial values for configuration parameters
78+
by setting variables in the command line or in the environment. Here
79+
is an example:
80+
81+
./configure CC=c99 CFLAGS=-g LIBS=-lposix
82+
83+
*Note Defining Variables::, for more details.
84+
85+
Compiling For Multiple Architectures
86+
====================================
87+
88+
You can compile the package for more than one kind of computer at the
89+
same time, by placing the object files for each architecture in their
90+
own directory. To do this, you can use GNU `make'. `cd' to the
91+
directory where you want the object files and executables to go and run
92+
the `configure' script. `configure' automatically checks for the
93+
source code in the directory that `configure' is in and in `..'.
94+
95+
With a non-GNU `make', it is safer to compile the package for one
96+
architecture at a time in the source code directory. After you have
97+
installed the package for one architecture, use `make distclean' before
98+
reconfiguring for another architecture.
99+
100+
Installation Names
101+
==================
102+
103+
By default, `make install' installs the package's commands under
104+
`/usr/local/bin', include files under `/usr/local/include', etc. You
105+
can specify an installation prefix other than `/usr/local' by giving
106+
`configure' the option `--prefix=PREFIX'.
107+
108+
You can specify separate installation prefixes for
109+
architecture-specific files and architecture-independent files. If you
110+
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
111+
PREFIX as the prefix for installing programs and libraries.
112+
Documentation and other data files still use the regular prefix.
113+
114+
In addition, if you use an unusual directory layout you can give
115+
options like `--bindir=DIR' to specify different values for particular
116+
kinds of files. Run `configure --help' for a list of the directories
117+
you can set and what kinds of files go in them.
118+
119+
If the package supports it, you can cause programs to be installed
120+
with an extra prefix or suffix on their names by giving `configure' the
121+
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
122+
123+
Optional Features
124+
=================
125+
126+
Some packages pay attention to `--enable-FEATURE' options to
127+
`configure', where FEATURE indicates an optional part of the package.
128+
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
129+
is something like `gnu-as' or `x' (for the X Window System). The
130+
`README' should mention any `--enable-' and `--with-' options that the
131+
package recognizes.
132+
133+
For packages that use the X Window System, `configure' can usually
134+
find the X include and library files automatically, but if it doesn't,
135+
you can use the `configure' options `--x-includes=DIR' and
136+
`--x-libraries=DIR' to specify their locations.
137+
138+
Specifying the System Type
139+
==========================
140+
141+
There may be some features `configure' cannot figure out automatically,
142+
but needs to determine by the type of machine the package will run on.
143+
Usually, assuming the package is built to be run on the _same_
144+
architectures, `configure' can figure that out, but if it prints a
145+
message saying it cannot guess the machine type, give it the
146+
`--build=TYPE' option. TYPE can either be a short name for the system
147+
type, such as `sun4', or a canonical name which has the form:
148+
149+
CPU-COMPANY-SYSTEM
150+
151+
where SYSTEM can have one of these forms:
152+
153+
OS KERNEL-OS
154+
155+
See the file `config.sub' for the possible values of each field. If
156+
`config.sub' isn't included in this package, then this package doesn't
157+
need to know the machine type.
158+
159+
If you are _building_ compiler tools for cross-compiling, you should
160+
use the option `--target=TYPE' to select the type of system they will
161+
produce code for.
162+
163+
If you want to _use_ a cross compiler, that generates code for a
164+
platform different from the build platform, you should specify the
165+
"host" platform (i.e., that on which the generated programs will
166+
eventually be run) with `--host=TYPE'.
167+
168+
Sharing Defaults
169+
================
170+
171+
If you want to set default values for `configure' scripts to share, you
172+
can create a site shell script called `config.site' that gives default
173+
values for variables like `CC', `cache_file', and `prefix'.
174+
`configure' looks for `PREFIX/share/config.site' if it exists, then
175+
`PREFIX/etc/config.site' if it exists. Or, you can set the
176+
`CONFIG_SITE' environment variable to the location of the site script.
177+
A warning: not all `configure' scripts look for a site script.
178+
179+
Defining Variables
180+
==================
181+
182+
Variables not defined in a site shell script can be set in the
183+
environment passed to `configure'. However, some packages may run
184+
configure again during the build, and the customized values of these
185+
variables may be lost. In order to avoid this problem, you should set
186+
them in the `configure' command line, using `VAR=value'. For example:
187+
188+
./configure CC=/usr/local2/bin/gcc
189+
190+
causes the specified `gcc' to be used as the C compiler (unless it is
191+
overridden in the site shell script).
192+
193+
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
194+
an Autoconf bug. Until the bug is fixed you can use this workaround:
195+
196+
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
197+
198+
`configure' Invocation
199+
======================
200+
201+
`configure' recognizes the following options to control how it operates.
202+
203+
`--help'
204+
`-h'
205+
Print a summary of the options to `configure', and exit.
206+
207+
`--version'
208+
`-V'
209+
Print the version of Autoconf used to generate the `configure'
210+
script, and exit.
211+
212+
`--cache-file=FILE'
213+
Enable the cache: use and save the results of the tests in FILE,
214+
traditionally `config.cache'. FILE defaults to `/dev/null' to
215+
disable caching.
216+
217+
`--config-cache'
218+
`-C'
219+
Alias for `--cache-file=config.cache'.
220+
221+
`--quiet'
222+
`--silent'
223+
`-q'
224+
Do not print messages saying which checks are being made. To
225+
suppress all normal output, redirect it to `/dev/null' (any error
226+
messages will still be shown).
227+
228+
`--srcdir=DIR'
229+
Look for the package's source code in directory DIR. Usually
230+
`configure' can determine that directory automatically.
231+
232+
`configure' also accepts some other, not widely useful, options. Run
233+
`configure --help' for more details.
234+

Makefile.am

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
AUTOMAKE_OPTIONS = dist-bzip2
2+
DISTCLEANFILES = ChangeLog fpusb.pc
3+
EXTRA_DIST = TODO
4+
SUBDIRS = libfpusb
5+
6+
if BUILD_EXAMPLES
7+
SUBDIRS += examples
8+
endif
9+
10+
pkgconfigdir=$(libdir)/pkgconfig
11+
pkgconfig_DATA=fpusb.pc
12+
13+
.PHONY: ChangeLog dist-up
14+
ChangeLog:
15+
git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog
16+
17+
dist-hook: ChangeLog
18+
19+
dist-up: dist
20+
ncftpput upload.sourceforge.net incoming $(distdir).tar.bz2
21+

NEWS

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
This file lists notable changes in each release. For the full history of all
2+
changes, see ChangeLog.
3+

README

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
fpusb
2+
=====
3+
4+
fpusb is another library for USB device access from Linux userspace.
5+
It is written in C and licensed under the LGPL-2.1 (see COPYING).
6+
7+
See the homepage for more information:
8+
http://www.reactivated.net/fprint/wiki/Fpusb
9+
10+
Use the mailing list for questions, comments, etc:
11+
http://www.reactivated.net/fprint/wiki/Mailing_list
12+
13+
Use the bug tracker for bugs and feature requests:
14+
http://www.reactivated.net/fprint/bugs/index.php?project=4&switch=1&do=index
15+
16+
- Daniel Drake <[email protected]>
17+

TODO

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
isochronous endpoint I/O
2+
optional timerfd support (runtime detection)
3+
API docs
4+
notifications of hotplugged/unplugged devices
5+
thread safety
6+
signalfd emulation through pipes and sigaction() for older kernels

autogen.sh

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/sh
2+
libtoolize --copy --force || exit 1
3+
aclocal || exit 1
4+
autoheader || exit 1
5+
autoconf || exit 1
6+
automake -a -c || exit 1
7+
./configure --enable-maintainer-mode --enable-debug-log \
8+
--enable-examples-build $*

configure.ac

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
AC_INIT([fpusb], [0.0])
2+
AM_INIT_AUTOMAKE
3+
AC_CONFIG_SRCDIR([libfpusb/core.c])
4+
AM_CONFIG_HEADER([config.h])
5+
6+
AC_PREREQ([2.50])
7+
AC_PROG_CC
8+
AC_PROG_LIBTOOL
9+
AC_C_INLINE
10+
AM_PROG_CC_C_O
11+
12+
# Library versioning
13+
lt_major="0"
14+
lt_revision="0"
15+
lt_age="0"
16+
AC_SUBST(lt_major)
17+
AC_SUBST(lt_revision)
18+
AC_SUBST(lt_age)
19+
20+
# Message logging
21+
AC_ARG_ENABLE([log], [AS_HELP_STRING([--disable-log], [disable all logging])],
22+
[log_enabled=$enableval],
23+
[log_enabled='yes'])
24+
if test "x$log_enabled" != "xno"; then
25+
AC_DEFINE([ENABLE_LOGGING], 1, [Message logging])
26+
fi
27+
28+
AC_ARG_ENABLE([debug-log], [AS_HELP_STRING([--enable-debug-log],
29+
[enable debug logging (default n)])],
30+
[debug_log_enabled=$enableval],
31+
[debug_log_enabled='no'])
32+
if test "x$debug_log_enabled" != "xno"; then
33+
AC_DEFINE([ENABLE_DEBUG_LOGGING], 1, [Debug message logging])
34+
fi
35+
36+
# Examples build
37+
AC_ARG_ENABLE([examples-build], [AS_HELP_STRING([--enable-examples-build],
38+
[build example applications (default n)])],
39+
[build_examples=$enableval],
40+
[build_examples='no'])
41+
AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$build_examples" != "xno"])
42+
43+
AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility])
44+
AM_CFLAGS="-Werror-implicit-function-declaration -Wimplicit-int -Wunreachable-code -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wnonnull -Wreturn-type -Wextra -Wshadow"
45+
AC_SUBST(AM_CFLAGS)
46+
47+
AC_CONFIG_FILES([fpusb.pc] [Makefile] [libfpusb/Makefile] [examples/Makefile])
48+
AC_OUTPUT
49+

examples/Makefile.am

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
INCLUDES = -I$(top_srcdir)
2+
noinst_PROGRAMS = lsusb dpfp
3+
4+
lsusb_SOURCES = lsusb.c
5+
lsusb_LDADD = ../libfpusb/libfpusb.la -lfpusb
6+
7+
dpfp_SOURCES = dpfp.c
8+
dpfp_LDADD = ../libfpusb/libfpusb.la -lfpusb
9+

0 commit comments

Comments
 (0)