-{- use File::Spec::Functions qw/catdir rel2abs/; -}
+# Note that some of these directories are filtered in Configure. Look for
+# %skipdir there for further explanations.
+SUBDIRS=crypto ssl apps test util tools fuzz engines providers doc
+
LIBS=libcrypto libssl
-ORDINALS[libcrypto]=crypto
-ORDINALS[libssl]=ssl
-INCLUDE[libcrypto]={- rel2abs(catdir($builddir,"include")) -} . crypto/include include
-INCLUDE[libssl]={- rel2abs(catdir($builddir,"include")) -} . include
+INCLUDE[libcrypto]=. include
+INCLUDE[libssl]=. include
DEPEND[libssl]=libcrypto
+
+# Empty DEPEND "indices" means the dependencies are expected to be built
+# unconditionally before anything else.
+DEPEND[]=include/openssl/configuration.h include/openssl/opensslv.h \
+ include/crypto/bn_conf.h include/crypto/dso_conf.h \
+ doc/man7/openssl_user_macros.pod
+
+GENERATE[include/openssl/configuration.h]=include/openssl/configuration.h.in
+GENERATE[include/openssl/opensslv.h]=include/openssl/opensslv.h.in
+GENERATE[include/crypto/bn_conf.h]=include/crypto/bn_conf.h.in
+GENERATE[include/crypto/dso_conf.h]=include/crypto/dso_conf.h.in
+GENERATE[doc/man7/openssl_user_macros.pod]=doc/man7/openssl_user_macros.pod.in
+
+IF[{- defined $target{shared_defflag} -}]
+ SHARED_SOURCE[libcrypto]=libcrypto.ld
+ SHARED_SOURCE[libssl]=libssl.ld
+
+ GENERATE[libcrypto.ld]=util/libcrypto.num libcrypto
+ GENERATE[libssl.ld]=util/libssl.num libssl
+ENDIF
+
+IF[{- $config{target} =~ /^(?:Cygwin|mingw|VC-)/ -}]
+ GENERATE[libcrypto.rc]=util/mkrc.pl libcrypto
+ GENERATE[libssl.rc]=util/mkrc.pl libssl
+
+ SHARED_SOURCE[libcrypto]=libcrypto.rc
+ SHARED_SOURCE[libssl]=libssl.rc
+ENDIF