80 lines
3.7 KiB
Plaintext
80 lines
3.7 KiB
Plaintext
|
This file is more of a note for other people who wish to understand why
|
||
|
the build environment is the way it is :-).
|
||
|
|
||
|
The include files 'depend' as follows.
|
||
|
Each of
|
||
|
crypto/*/*.c includes crypto/cryptlib.h
|
||
|
ssl/*.c include ssl/ssl_locl.h
|
||
|
apps/*.c include apps/apps.h
|
||
|
crypto/cryptlib.h, ssl/ssl_locl.h and apps/apps.h
|
||
|
all include e_os.h which contains OS/environment specific information.
|
||
|
If you need to add something todo with a particular environment,
|
||
|
add it to this file. It is worth remembering that quite a few libraries,
|
||
|
like lhash, des, md, sha etc etc do not include crypto/cryptlib.h. This
|
||
|
is because these libraries should be 'independantly compilable' and so I
|
||
|
try to keep them this way.
|
||
|
e_os.h is not so much a part of SSLeay, as the placing in one spot all the
|
||
|
evil OS dependant muck.
|
||
|
|
||
|
I wanted to automate as many things as possible. This includes
|
||
|
error number generation. A
|
||
|
make errors
|
||
|
will scan the source files for error codes, append them to the correct
|
||
|
header files, and generate the functions to print the text version
|
||
|
of the error numbers. So don't even think about adding error numbers by
|
||
|
hand, put them in the form
|
||
|
XXXerr(XXXX_F_XXXX,YYYY_R_YYYY);
|
||
|
on line and it will be automatically picked up my a make errors.
|
||
|
|
||
|
In a similar vein, programs to be added into ssleay in the apps directory
|
||
|
just need to have an entry added to E_EXE in makefile.ssl and
|
||
|
everthing will work as expected. Don't edit progs.h by hand.
|
||
|
|
||
|
make links re-generates the symbolic links that are used. The reason why
|
||
|
I keep everything in its own directory, and don't put all the
|
||
|
test programs and header files in 'test' and 'include' is because I want
|
||
|
to keep the 'sub-libraries' independant. I still 'pull' out
|
||
|
indervidual libraries for use in specific projects where the code is
|
||
|
required. I have used the 'lhash' library in just about every software
|
||
|
project I have worked on :-).
|
||
|
|
||
|
make depend generates dependancies and
|
||
|
make dclean removes them.
|
||
|
|
||
|
You will notice that I use perl quite a bit when I could be using 'sed'.
|
||
|
The reason I decided to do this was to just stick to one 'extra' program.
|
||
|
For Windows NT, I have perl and no sed.
|
||
|
|
||
|
The util/mk1mf.pl program can be used to generate a single makefile.
|
||
|
I use this because makefiles under Microsoft are horrific.
|
||
|
Each C compiler seems to have different linker formats, which have
|
||
|
to be used because the retarted C compilers explode when you do
|
||
|
cl -o file *.o.
|
||
|
|
||
|
Now some would argue that I should just use the single makefile. I don't
|
||
|
like it during develoment for 2 reasons. First, the actuall make
|
||
|
command takes a long time. For my current setup, if I'm in
|
||
|
crypto/bn and I type make, only the crypto/bn directory gets rebuilt,
|
||
|
which is nice when you are modifying prototypes in bn.h which
|
||
|
half the SSLeay depends on. The second is that to add a new souce file
|
||
|
I just plonk it in at the required spot in the local makefile. This
|
||
|
then alows me to keep things local, I don't need to modify a 'global'
|
||
|
tables (the make for unix, the make for NT, the make for w31...).
|
||
|
When I am ripping apart a library structure, it is nice to only
|
||
|
have to worry about one directory :-).
|
||
|
|
||
|
Having said all this, for the hell of it I put together 2 files that
|
||
|
#include all the souce code (generated by doing a ls */*.o after a build).
|
||
|
crypto.c takes only 30 seconds to build under NT and 2 minutes under linux
|
||
|
for my pentium100. Much faster that the normal build :-).
|
||
|
Again, the problem is that when using libraries, every program linked
|
||
|
to libcrypto.a would suddenly get 330k of library when it may only need
|
||
|
1k. This technique does look like a nice way to do shared libraries though.
|
||
|
|
||
|
Oh yes, as a final note, to 'build' a distribution, I just type
|
||
|
make dist.
|
||
|
This cleans and packages everything. The directory needs to be called
|
||
|
SSLeay since the make does a 'cd ..' and renames and tars things up.
|
||
|
|
||
|
|