PORTING
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
- --- INTRODUCTION
- Just a quick note on porting and sending me patches:
- First off, you probably should subscribe to
- net-snmp-coders@lists.sourceforge.net by sending a message to
- net-snmp-coders-request@lists.sourceforge.net with a subject line of
- subscribe. This is a mailing list to discuss all oft the coding
- aspects of the project.
- Additionally, you should probably be developing against the latest
- snapshot of the source code, which can be obtained through the
- net-snmp cvs server. Details can be found at
- http://www.net-snmp.org/cvs/.
- If you send patches to us, it would greatly help us if you sent them
- to us based on the current checked out copy from CVS. To do this,
- send us the output of "cvs diff -u" run in the top level net-snmp
- source tree after you have modified the files that will fix the
- problem or add the feature you're submitting the patch for.
- Quite a while back I started using the GNU autoconf testing suite to
- greatly enhance portability. Because of this porting to new
- architectures is much easier than before. However, new people porting
- the package to new architectures rarely take advantage of this setup
- and send me patches with lots of '#ifdef ARCH' type C code in it. Let
- me say up front, I *hate* this type of coding now (even though I used
- to use it a lot). What is better is to check for the necissary
- functionality using the configure script and then use the results of
- those tests.
- To do this, you need to install the GNU 'autoconf' package which also
- requires the GNU 'm4' (gm4) package as well. This double installation
- is extremely easy and shouldn't take you more than 15 minutes max.
- After that, modify the configure.in and acconfig.h files as needed
- instead of modifying the config.h or configure files directly. The
- Makefile will re-produce these files from the first two.
- Worst case: Don't put in #ifdef architecture style statements.
- Rather, create a new define in the s/ and m/ system specific header
- files and use those defines to test against in the C code. This
- should only be done for things that can't be checked using configure
- though.
- Some autoconf examples:
- --- HEADER FILES
- In configure.in:
- AC_CHECK_HEADERS(headdir/header.h)
- Then in your source code:
- #ifdef HAVE_HEADDIR_HEADER_H
- #include <headdir/header.h>
- #ENDIF
- --- LIBRARY ROUTIENS
- In configure.in:
- AC_CHECK_LIB(libexample, example_function)
- Thats it. The Makefiles will automatically link against -llibexample
- if example_function is found in the library.
- --- FUNCTION CHECKS
- In configure.in:
- AC_CHECK_FUNCS(example_function)
- In source code:
- #ifdef HAVE_EXAMPLE_FUNCTION
- /* use it */
- #endif
- --- STRUCTURE MEMBER CHECKS
- In configure.in:
- AC_CHECK_STRUCT_FOR([
- #include lines
- ], STRUCTURE, MEMBER)
- ^^^^^^^^^ ^^^^^^ (change)
- In acconfig.h:
- #undef STRUCT_STRUCTURE_HAS_MEMBER
- ^^^^^^^^^ ^^^^^^ (change)
- In source code:
- #ifdef STRUCT_STRUCTURE_HAS_MEMBER
- /* use it */
- #endif
- --- READ THE MANUAL
- The GNU autoconf info files are extremely well written and easy to
- follow. Please check them out.
- I'd be happy to help you through anything you don't understand or
- through more complex examples (eg, checking for structure parts or
- existance). I'd be far less happy to get patches ignoring the above
- request. If you simple can't abide by this, please send the patches
- anyway, but it'll just take me longer to get them applied.
- Submit the patch to http://www.net-snmp.org/patches/.
- Please include what version of the net-snmp package it was applied to
- and state the arcitectures you have tested it on.
- Thanks a lot for the consideration,
- Wes