1 karl 1.1 Copyright 1999 - 2003 Michael Day
2
3 mdday@us.ibm.com
4 md@soft-hackle.net
5
6 CMD-UTILS
7 ===========
8 The cmd-utils directory contains a general purpose client library,
9 plus two command-line programs designed to be used with Bash or
10 Perl. The library contains all the features of an SLP client, and the
11 two programs use the library to implement an SLP Service Agent and an
12 SLP User Agent
13
14
15 State of the Source Tree
16 =======================
17 As of Mon May 12 2003 the Windows build is broken. The Linux build is
18 working on at least two linux platforms.
19
20 The source tree has undergone significant reorgination lately. I have
21 converted from really ugly kludged makefiles to using the GNU autoconf
22 karl 1.1 and libtool programs to organize and control the building
23 process. (Some of you may think that autoconf is really ugly and
24 kludged but considering all of the problems it solves I would have to
25 disagree.)
26
27 Here is how the source tree is now organized:
28
29 Initial directory = ldap_slp
30 +---conf <-- contains the DA configuration file
31 +---doc <-- contains some internet-drafts
32 +---scripts <-- shell scripts that demonstrate functions
33 +---src <-- source code
34 | +---cmd-utils <-- command-line utilities
35 | | +---slp_client <-- slp client library
36 | | +---slp_query <-- command-line slp user agent
37 | | +---slp_srvreg <-- command-line and daemon slp service agent
38
39
40 Windows Build
41 =============
42 The Windows build is broken because I haven't debugged the autoconf
43 karl 1.1 macros for windows. If you are curious, look at the file
44 ldap_slp/configure.ac.
45
46 When windows builds once again it will require Bash, gmake, and GNU
47 Autoconf and Libtool. The best thing to do if you want to build on
48 windows and don't know what I'm talking about is to get Cygwin. You
49 can get Cygwin at http://www.cygwin.com
50
51
52 Porting
53 =========
54 Porting this code to any POSIX operating system is straightforward.
55 Each operating system needs to have its own compatibility source
56 modules. For linux, those are lslp-linux.h and lslp-linux.c
57
58 To add support for a new platform, you must start with the autoconf
59 script, configure.ac. In that script there are placeholders for each
60 platform. Here is a sample that implements part of the linux support:
61
62 *-*-linux*)
63 AC_DEFINE([HOST_OS], ["Linux"], [Target Operation System])
64 karl 1.1 AC_DEFINE([OS_PORT_INCLUDE], ["lslp-linux.h"], [Portability Header])
65 OS_PORT_INC=lslp-linux.h
66 OS_PORT_SRC=lslp-linux.c
67 OS_PORT_OBJ=lslp-linux.lo
68
69 Each of these symbols has a counterpart within the build system. For a
70 new platform you need to flesh out the placeholder for that platform
71 in configure.ac. Then you need to implement the portability header and
72 possibly a portability source file.
73
74
|