提交 eead69f5 编写于 作者: D Dr. Stephen Henson

Make fipscanisteronly build only required files.

上级 ab8a4e54
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
Changes between 1.0.1 and 1.1.0 [xx XXX xxxx] Changes between 1.0.1 and 1.1.0 [xx XXX xxxx]
*) Modify fipscanisteronly build option to only build the necessary object
files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile.
[Steve Henson]
*) Add experimental option FIPSSYMS to give all symbols in *) Add experimental option FIPSSYMS to give all symbols in
fipscanister.o and FIPS or fips prefix. This will avoid fipscanister.o and FIPS or fips prefix. This will avoid
conflicts with future versions of OpenSSL. Add perl script conflicts with future versions of OpenSSL. Add perl script
......
...@@ -147,8 +147,8 @@ SHLIBDIRS= crypto ...@@ -147,8 +147,8 @@ SHLIBDIRS= crypto
# dirs in crypto to build # dirs in crypto to build
SDIRS= \ SDIRS= \
sha hmac des aes modes \ sha hmac des aes modes \
bn ec rsa dsa ecdsa dh ecdh \ bn ec rsa dsa ecdsa dh \
buffer rand evp cmac buffer rand evp # ecdh cmac
# keep in mind that the above list is adjusted by ./Configure # keep in mind that the above list is adjusted by ./Configure
# according to no-xxx arguments... # according to no-xxx arguments...
...@@ -372,7 +372,7 @@ build_crypto: ...@@ -372,7 +372,7 @@ build_crypto:
else \ else \
AS='$(CC) -c' ; \ AS='$(CC) -c' ; \
fi ; export AS ; \ fi ; export AS ; \
dir=crypto; target=all; $(BUILD_ONE_CMD) dir=crypto; target=fips; $(BUILD_ONE_CMD)
build_ssl: build_ssl:
@dir=ssl; target=all; $(BUILD_ONE_CMD) @dir=ssl; target=all; $(BUILD_ONE_CMD)
build_engines: build_engines:
......
...@@ -50,6 +50,13 @@ top: ...@@ -50,6 +50,13 @@ top:
all: shared all: shared
fips: cryptlib.o thr_id.o uid.o $(CPUID_OBJ)
[ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \
( obj=`$(PERL) $(TOP)/util/fipsobj.pl $$i` && \
cd $$i && echo "making fips in $(DIR)/$$i..." && \
$(MAKE) -e TOP=../.. DIR=$$i INCLUDES='$(INCLUDES)' $$obj ) || exit 1; \
done;
buildinf.h: ../Makefile buildinf.h: ../Makefile
( echo "#ifndef MK1MF_BUILD"; \ ( echo "#ifndef MK1MF_BUILD"; \
echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \ echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \
......
# Filter script. Take all FIPS object files from the environment
# and print out only those in the given directory.
my $dir = $ARGV[0];
my $asmobjs = "";
# Add any needed assembly languagr files.
$asmobjs = $ENV{AES_ENC} if $dir eq "aes";
$asmobjs = $ENV{BN_ASM} if $dir eq "bn";
$asmobjs = $ENV{DES_ENC} if $dir eq "des";
$asmobjs = $ENV{SHA1_ASM_OBJ} if $dir eq "sha";
$asmobjs = $ENV{MODES_ASM_OBJ} if $dir eq "modes";
# Get all other FIPS object files, filtered by directory.
my @objlist = grep {/crypto\/$dir\//} split / /, $ENV{FIPS_EX_OBJ};
push @objlist, split / /, $asmobjs;
# Fatal error if no matches
die "No objects in $dir!" if (scalar @objlist == 0);
# Output all matches removing pathname.
foreach (@objlist)
{
s|../crypto/$dir/||;
print "$_\n";
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册