New SSL test framework
[openssl.git] / Configurations / unix-Makefile.tmpl
index 1923acc2f265d54e2add96632cc430e00755c1d3..9c8a4619c97df4af7496bfb4c09703da8489225d 100644 (file)
@@ -89,7 +89,7 @@ GENERATED={- join(" ", map { (my $x = $_) =~ s|\.S$|\.s|; $x } keys %{$unified_i
 BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash
 MISC_SCRIPTS=$(SRCDIR)/tools/c_hash $(SRCDIR)/tools/c_info \
             $(SRCDIR)/tools/c_issuer $(SRCDIR)/tools/c_name \
-            $(BLDDIR)/apps/CA.pl $(SRCDIR)/apps/tsget
+            $(BLDDIR)/apps/CA.pl $(BLDDIR)/apps/tsget
 
 SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -}
 
@@ -215,7 +215,8 @@ build_apps_nodep: $(PROGRAMS) $(SCRIPTS)
 build_tests: configdata.pm build_tests_nodep depend
 build_tests_nodep: $(TESTPROGS)
 
-test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
+test tests: build_tests_nodep build_apps_nodep build_engines_nodep \
+            depend link-utils
        ( cd test; \
          SRCTOP=../$(SRCDIR) \
          BLDTOP=../$(BLDDIR) \
@@ -260,7 +261,7 @@ clean: libclean
 # concatenate only if that is true.
 depend:
        @: {- output_off() if $disabled{makedepend}; "" -}
-       @if [ -z "`find $(DEPS) -newer Makefile 2>/dev/null; exit 0`" ]; then \
+       @if [ -n "`find $(DEPS) -newer Makefile 2>/dev/null; exit 0`" ]; then \
          ( sed -e '/^# DO NOT DELETE THIS LINE.*/,$$d' < Makefile; \
            echo '# DO NOT DELETE THIS LINE -- make depend depends on it.'; \
            echo; \
@@ -391,7 +392,8 @@ install_engines:
        @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
        @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/
        @echo "*** Installing engines"
-       @set -e; for e in $(ENGINES); do \
+       @set -e; for e in dummy $(ENGINES); do \
+               if [ "$$e" = "dummy" ]; then continue; fi; \
                fn=`basename $$e`; \
                if [ "$$fn" = '{- dso("ossltest") -}' ]; then \
                        continue; \
@@ -405,7 +407,8 @@ install_engines:
 
 uninstall_engines:
        @echo "*** Uninstalling engines"
-       @set -e; for e in $(ENGINES); do \
+       @set -e; for e in dummy $(ENGINES); do \
+               if [ "$$e" = "dummy" ]; then continue; fi; \
                fn=`basename $$e`; \
                if [ "$$fn" = '{- dso("ossltest") -}' ]; then \
                        continue; \
@@ -421,7 +424,8 @@ install_runtime:
        @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc
        @echo "*** Installing runtime files"
        : {- output_off() unless windowsdll(); "" -};
-       @set -e; for s in $(SHLIBS); do \
+       @set -e; for s in dummy $(SHLIBS); do \
+               if [ "$$s" = "dummy" ]; then continue; fi; \
                fn=`basename $$s`; \
                echo "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
@@ -430,7 +434,8 @@ install_runtime:
                      $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
        done
        : {- output_on() unless windowsdll(); "" -};
-       @set -e; for x in $(PROGRAMS); do \
+       @set -e; for x in dummy $(PROGRAMS); do \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
@@ -438,7 +443,8 @@ install_runtime:
                mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
                      $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
        done
-       @set -e; for x in $(BIN_SCRIPTS); do \
+       @set -e; for x in dummy $(BIN_SCRIPTS); do \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
@@ -446,7 +452,8 @@ install_runtime:
                mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
                      $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
        done
-       @set -e; for x in $(MISC_SCRIPTS); do \
+       @set -e; for x in dummy $(MISC_SCRIPTS); do \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
                cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
@@ -461,26 +468,30 @@ install_runtime:
 
 uninstall_runtime:
        @echo "*** Uninstalling runtime files"
-       @set -e; for x in $(PROGRAMS); \
+       @set -e; for x in dummy $(PROGRAMS); \
        do  \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
        done;
-       @set -e; for x in $(BIN_SCRIPTS); \
+       @set -e; for x in dummy $(BIN_SCRIPTS); \
        do  \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
        done
-       @set -e; for x in $(MISC_SCRIPTS); \
+       @set -e; for x in dummy $(MISC_SCRIPTS); \
        do  \
+               if [ "$$x" = "dummy" ]; then continue; fi; \
                fn=`basename $$x`; \
                echo "$(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
                $(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \
        done
        : {- output_off() unless windowsdll(); "" -};
-       @set -e; for s in $(SHLIBS); do \
+       @set -e; for s in dummy $(SHLIBS); do \
+               if [ "$$s" = "dummy" ]; then continue; fi; \
                fn=`basename $$s`; \
                echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
                $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
@@ -617,13 +628,35 @@ generate: generate_apps generate_crypto_bn generate_crypto_objects
 lint:
        lint -DLINT $(INCLUDES) $(SRCS)
 
-generate_apps: $(SRCDIR)/apps/openssl-vms.cnf
-
-generate_crypto_bn: $(SRCDIR)/crypto/bn/bn_prime.h
-
-generate_crypto_objects: $(SRCDIR)/crypto/objects/obj_dat.h \
-                         $(SRCDIR)/include/openssl/obj_mac.h \
-                         $(SRCDIR)/crypto/objects/obj_xref.h
+{- # because the program apps/openssl has object files as sources, and
+   # they then have the corresponding C files as source, we need to chain
+   # the lookups in %unified_info
+   my $apps_openssl = catfile("apps","openssl");
+   our @openssl_source = map { @{$unified_info{sources}->{$_}} }
+                         @{$unified_info{sources}->{$apps_openssl}};
+   ""; -}
+generate_apps:
+       ( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \
+                               < apps/openssl.cnf > apps/openssl-vms.cnf )
+       ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b apps/progs.pl \
+                                       {- join(" ", @openssl_source) -} \
+                                       > apps/progs.h )
+
+generate_crypto_bn:
+       ( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h )
+
+generate_crypto_objects:
+       ( cd $(SRCDIR); $(PERL) crypto/objects/obj_dat.pl \
+                               include/openssl/obj_mac.h \
+                               crypto/objects/obj_dat.h )
+       ( cd $(SRCDIR); $(PERL) crypto/objects/objects.pl \
+                               crypto/objects/objects.txt \
+                               crypto/objects/obj_mac.num \
+                               include/openssl/obj_mac.h )
+       ( cd $(SRCDIR); $(PERL) crypto/objects/objxref.pl \
+                               crypto/objects/obj_mac.num \
+                               crypto/objects/obj_xref.txt \
+                               > crypto/objects/obj_xref.h )
 
 errors:
        ( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c )
@@ -678,7 +711,8 @@ dist:
 
 # Helper targets #####################################################
 
-link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/shlib_wrap.sh
+link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/shlib_wrap.sh \
+           $(BLDDIR)/test/generate_ssl_tests.pl
 
 $(BLDDIR)/util/opensslwrap.sh: configdata.pm
        @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
@@ -690,39 +724,11 @@ $(BLDDIR)/util/shlib_wrap.sh: configdata.pm
            mkdir -p "$(BLDDIR)/util"; \
            ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \
        fi
-
-$(SRCDIR)/apps/openssl-vms.cnf: $(SRCDIR)/apps/openssl.cnf
-       $(PERL) $(SRCDIR)/VMS/VMSify-conf.pl \
-                < $(SRCDIR)/apps/openssl.cnf > $(SRCDIR)/apps/openssl-vms.cnf
-
-$(SRCDIR)/crypto/bn/bn_prime.h: $(SRCDIR)/crypto/bn/bn_prime.pl
-       $(PERL) $(SRCDIR)/crypto/bn/bn_prime.pl > $(SRCDIR)/crypto/bn/bn_prime.h
-
-$(SRCDIR)/crypto/objects/obj_dat.h: $(SRCDIR)/crypto/objects/obj_dat.pl \
-                                    $(SRCDIR)/include/openssl/obj_mac.h
-       $(PERL) $(SRCDIR)/crypto/objects/obj_dat.pl \
-                $(SRCDIR)/include/openssl/obj_mac.h \
-                $(SRCDIR)/crypto/objects/obj_dat.h
-
-# objects.pl both reads and writes obj_mac.num
-$(SRCDIR)/include/openssl/obj_mac.h: $(SRCDIR)/crypto/objects/objects.pl \
-                                     $(SRCDIR)/crypto/objects/objects.txt \
-                                     $(SRCDIR)/crypto/objects/obj_mac.num
-       $(PERL) $(SRCDIR)/crypto/objects/objects.pl \
-                $(SRCDIR)/crypto/objects/objects.txt \
-                $(SRCDIR)/crypto/objects/obj_mac.num \
-                $(SRCDIR)/include/openssl/obj_mac.h
-       @sleep 1; touch $(SRCDIR)/include/openssl/obj_mac.h; sleep 1
-
-$(SRCDIR)/crypto/objects/obj_xref.h: $(SRCDIR)/crypto/objects/objxref.pl \
-                                     $(SRCDIR)/crypto/objects/obj_xref.txt \
-                                     $(SRCDIR)/crypto/objects/obj_mac.num
-       $(PERL) $(SRCDIR)/crypto/objects/objxref.pl \
-                $(SRCDIR)/crypto/objects/obj_mac.num \
-                $(SRCDIR)/crypto/objects/obj_xref.txt \
-                > $(SRCDIR)/crypto/objects/obj_xref.h
-       @sleep 1; touch $(SRCDIR)/crypto/objects/obj_xref.h; sleep 1
-
+$(BLDDIR)/test/generate_ssl_tests.pl: configdata.pm
+       @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
+           mkdir -p "$(BLDDIR)/test"; \
+           ln -sf "../$(SRCDIR)/test/generate_ssl_tests.pl" "$(BLDDIR)/test"; \
+       fi
 FORCE:
 
 # Building targets ###################################################
@@ -851,7 +857,12 @@ EOF
   sub src2obj {
       my %args = @_;
       my $obj = $args{obj};
-      my @srcs = map { (my $x = $_) =~ s/\.S$/.s/; $x } ( @{$args{srcs}} );
+      my @srcs = map { if ($unified_info{generate}->{$_}) {
+                           (my $x = $_) =~ s/\.S$/.s/; $x
+                       } else {
+                           $_
+                       }
+                     } ( @{$args{srcs}} );
       my $srcs = join(" ",  @srcs);
       my $deps = join(" ", @srcs, @{$args{deps}});
       my $incs = join("", map { " -I".$_ } @{$args{incs}});
@@ -863,9 +874,8 @@ EOF
       if (!$disabled{makedepend} && $makedepprog =~ /\/makedepend/) {
           $recipe .= <<"EOF";
 $obj$depext: $deps
-       rm -f \$\@.tmp; touch \$\@.tmp
-       -\$(MAKEDEPEND) -f\$\@.tmp -o"|$obj$objext" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
-           2>/dev/null
+       -\$(MAKEDEPEND) -f- -o"|$obj$objext" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
+           >\$\@.tmp 2>/dev/null
        -\$(PERL) -i -pe 's/^.*\\|//; s/ \\/(\\\\.|[^ ])*//; \$\$_ = undef if (/: *\$\$/ || /^(#.*| *)\$\$/); \$\$_.="\\n" unless !defined(\$\$_) or /\\R\$\$/g;' \$\@.tmp
        \@if cmp \$\@.tmp \$\@ > /dev/null 2> /dev/null; then \\
                rm -f \$\@.tmp; \\
@@ -976,7 +986,7 @@ EOF
       my $objs = join(" ", map { $_.$objext } @{$args{objs}});
       return <<"EOF";
 $lib$libext: $objs
-       \$(AR) \$\@ $objs
+       \$(AR) \$\@ \$\?
        \$(RANLIB) \$\@ || echo Never mind.
 EOF
   }