Commit eead69f5 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Make fipscanisteronly build only required files.

parent ab8a4e54
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -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
+3 −3
Original line number Original line Diff line number Diff line
@@ -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:
	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:
+7 −0
Original line number Original line Diff line number Diff line
@@ -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 */'; \

util/fipsobj.pl

0 → 100644
+31 −0
Original line number Original line Diff line number Diff line

# 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";
	}