Make it possible to specify source files that will only be used for shared libs
[openssl.git] / Configurations / README.design
index 362b967..574982f 100644 (file)
@@ -28,11 +28,11 @@ information needed to build output files, and therefore only (with a
 few possible exceptions [1]) have information about end products (such
 as scripts, library files and programs) and source files (such as C
 files, C header files, assembler files, etc).  Intermediate files such
-as object files are rarely directly refered to in build.info files (and
+as object files are rarely directly referred to in build.info files (and
 when they are, it's always with the file name extension .o), they are
-infered by Configure.  By the same rule of minimalism, end product
+inferred by Configure.  By the same rule of minimalism, end product
 file name extensions (such as .so, .a, .exe, etc) are never mentioned
-in build.info.  Their file name extensions will be infered by the
+in build.info.  Their file name extensions will be inferred by the
 build-file templates, adapted for the platform they are meant for (see
 sections on %unified_info and build-file templates further down).
 
@@ -89,11 +89,8 @@ depends on the library 'libssl' to function properly.
     SOURCE[../libcrypto]=aes.c evp.c cversion.c
     DEPEND[cversion.o]=buildinf.h
     
-    BEGINRAW[Makefile(unix)]
-    crypto/buildinf.h : Makefile
-       perl util/mkbuildinf.h "$(CC) $(CFLAGS)" "$(PLATFORM)" \
-           > crypto/buildinf.h
-    ENDRAW[Makefile(unix)]
+    GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)"
+    DEPEND[buildinf.h]=../Makefile
 
 This is the build.info file in 'crypto', and it tells us a little more
 about what's needed to produce 'libcrypto'.  LIBS is used again to
@@ -112,7 +109,7 @@ Unix-like operating systems.
 
 Two things are worth an extra note:
 
-'DEPEND[cversion.o]' mentiones an object file.  DEPEND indexes is the
+'DEPEND[cversion.o]' mentions an object file.  DEPEND indexes is the
 only location where it's valid to mention them
 
 Lines in 'BEGINRAW'..'ENDRAW' sections must always mention files as
@@ -161,11 +158,8 @@ information comes down to this:
     DEPEND[engines/libossltest]=libcrypto
     INCLUDE[engines/libossltest]=include
     
-    BEGINRAW[Makefile(unix)]
-    crypto/buildinf.h : Makefile
-       perl util/mkbuildinf.h "$(CC) $(CFLAGS)" "$(PLATFORM)" \
-           > crypto/buildinf.h
-    ENDRAW[Makefile(unix)]
+    GENERATE[crypto/buildinf.h]=util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)"
+    DEPEND[crypto/buildinf.h]=Makefile
 
 
 A few notes worth mentioning:
@@ -180,7 +174,7 @@ The indexes for SOURCE, INCLUDE and ORDINALS must only be end product
 files, such as libraries, programs or engines.  The values of SOURCE
 variables must only be source files (possibly generated)
 
-DEPEND shows a relationship between different end product files, such
+DEPEND shows a relationship between different produced files, such
 as a program depending on a library, or between an object file and
 some extra source file.
 
@@ -239,6 +233,10 @@ indexes:
                SOURCE variables, and AS source files for programs and
                libraries.
 
+  shared_sources =>
+               a hash table just like 'sources', but only as source
+               files (object files) for building shared libraries.
+
 As an example, here is how the build.info files example from the
 section above would be digested into a %unified_info table:
 
@@ -296,12 +294,12 @@ section above would be digested into a %unified_info table:
                 "libcrypto" =>
                     [
                         "crypto",
-                        "util/libeay.num",
+                        "util/libcrypto.num",
                     ],
                 "libssl" =>
                     [
                         "ssl",
-                        "util/ssleay.num",
+                        "util/libssl.num",
                     ],
             },
         "programs" =>
@@ -361,7 +359,7 @@ section above would be digested into a %unified_info table:
             },
     );
 
-As can be seen, everything in %unified_info is fairly simple nuggest
+As can be seen, everything in %unified_info is fairly simple suggest
 of information.  Still, it tells us that to build all programs, we
 must build 'apps/openssl', and to build the latter, we will need to
 build all its sources ('apps/openssl.o' in this case) and all the
@@ -434,7 +432,7 @@ etc.
 
                   'lib' has the intended library file name *without*
                   extension, libobj2shlib is expected to add that.
-                  'shlib' has the correcponding shared library name
+                  'shlib' has the corresponding shared library name
                   *without* extension.  'deps' has the list of other
                   libraries (also *without* extension) this library
                   needs to be linked with.  'objs' has the list of
@@ -442,7 +440,7 @@ etc.
                   this library.  'ordinals' MAY be present, and when
                   it is, its value is an array where the word is
                   "crypto" or "ssl" and the file is one of the ordinal
-                  files util/libeay.num or util/ssleay.num in the
+                  files util/libcrypto.num or util/libssl.num in the
                   source directory.
 
                   This function has a choice; it can use the
@@ -515,7 +513,7 @@ following calls:
                  lib => "libssl",
                  objs => [ "ssl/tls.o" ],
                  deps => [ "libcrypto" ]
-                 ordinals => [ "ssl", "util/ssleay.num" ]);
+                 ordinals => [ "ssl", "util/libssl.num" ]);
 
     obj2lib(lib => "libssl"
             objs => [ "ssl/tls.o" ]);