Commit 8c16829e authored by Richard Levitte's avatar Richard Levitte
Browse files

Add install targets for Windows



On Windows, we set INSTALLTOP to default as follows:

  VC-WIN32:

    PREFIX:     %ProgramFiles(x86)%\OpenSSL
    OPENSSLDIR: %CommonProgramFiles(x86)%\SSL

  VC-WIN64*:

    PREFIX:     %ProgramW6432%\OpenSSL
    OPENSSLDIR: %CommonProgramW6432%\SSL

Should those environment variables be missing, the following is used
as fallback:

    PREFIX:     %ProgramFiles%\OpenSSL
    OPENSSLDIR: %CommonProgramFiles%\SSL

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
parent ee3a6c64
Loading
Loading
Loading
Loading
+67 −10
Original line number Diff line number Diff line
@@ -11,6 +11,19 @@
 our $shlibextimport = $target{shared_import_extension} || ".lib";
 our $dsoext = $target{dso_extension} || ".dll";

 my $win_installenv =
     $target{build_scheme}->[2] eq "VC-W32" ?
     "ProgramFiles(x86)" : "ProgramW6432";
 my $win_commonenv =
     $target{build_scheme}->[2] eq "VC-W32"
     ? "CommonProgramFiles(x86)" : "CommonProgramW6432";
 our $win_installroot =
     defined($ENV{$win_installenv})
     ? '%'.$win_installenv.'%' : '%ProgramFiles%';
 our $win_commonroot =
     defined($ENV{$win_commonenv})
     ? '%'.$win_commonenv.'%' : '%CommonProgramFiles%';

 sub shlib {
     return () if $disabled{shared};
     my $lib = shift;
@@ -56,7 +69,7 @@ DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
# to change this!  Short explanation in the top comment in Configure
INSTALLTOP={- # $prefix is used in the OPENSSLDIR perl snippet
	      #
	      our $prefix = $config{prefix} || "/usr/local";
	      our $prefix = $config{prefix} || "$win_installroot\\OpenSSL";
              $prefix -}
OPENSSLDIR={- #
	      # The logic here is that if no --openssldir was given,
@@ -73,16 +86,9 @@ OPENSSLDIR={- #
                      (file_name_is_absolute($config{openssldir}) ?
                           $config{openssldir}
                           : catdir($prefix, $config{openssldir}))
                      : catdir($prefix, "ssl");
                      : "$win_commonroot\\SSL";
              $openssldir -}
LIBDIR={- #
          # if $prefix/lib$target{multilib} is not an existing
          # directory, then assume that it's not searched by linker
          # automatically, in which case adding $target{multilib} suffix
          # causes more grief than we're ready to tolerate, so don't...
          our $multilib =
              -d "$prefix/lib$target{multilib}" ? $target{multilib} : "";
          our $libdir = $config{libdir} || "lib$multilib";
LIBDIR={- our $libdir = $config{libdir} || "lib";
          $libdir -}
ENGINESDIR={- use File::Spec::Functions;
              our $enginesdir = catdir($prefix,$libdir,"engines");
@@ -139,6 +145,10 @@ list-tests:
	@set PERL=$(PERL)
	@$(PERL) $(SRCDIR)\test\run_tests.pl list

install: install_sw install_ssldirs install_docs

uninstall: uninstall_docs uninstall_sw

libclean:
	del /Q /F $(LIBS) $(SHLIBS)
	del lib.pdb
@@ -155,6 +165,53 @@ clean: libclean

depend:

# Install helper targets #############################################

install_sw: all install_dev install_engines install_runtime

uninstall_sw: uninstall_runtime uninstall_engines uninstall_dev

install_docs:

uninstall_docs:

install_ssldirs:
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)\certs
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)\private

install_dev:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing development files
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)\include\openssl"
	@$(PERL) $(SRCDIR)\util\copy.pl $(SRCDIR)\include\openssl\*.h \
				       "$(DESTDIR)$(INSTALLTOP)\include\openssl"
	@$(PERL) $(SRCDIR)\util\copy.pl $(BLDDIR)\include\openssl\*.h \
				       "$(DESTDIR)$(INSTALLTOP)\include\openssl"
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)\$(LIBDIR)"
	@$(PERL) $(SRCDIR)\util\copy.pl $(LIBS) \
				       "$(DESTDIR)$(INSTALLTOP)\$(LIBDIR)"

uninstall_dev:

install_engines:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing engines
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(ENGINESDIR)"
	@if not "$(ENGINES)"=="" \
	 $(PERL) $(SRCDIR)\util\copy.pl $(ENGINES) "$(DESTDIR)$(ENGINESDIR)"

uninstall_engines:

install_runtime:
	@if "$(INSTALLTOP)"=="" ( echo INSTALLTOP should not be empty & exit 1 )
	@echo *** Installing runtime files
	@$(PERL) $(SRCDIR)\util\mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)\bin"
	@if not "$(SHLIBS)"=="" \
	 $(PERL) $(SRCDIR)\util\copy.pl $(SHLIBS) "$(DESTDIR)$(INSTALLTOP)\bin"
	@$(PERL) $(SRCDIR)\util\copy.pl $(PROGRAMS) "$(DESTDIR)$(INSTALLTOP)\bin"

uninstall_runtime:

# Building targets ###################################################

configdata.pm: {- $config{build_file_template} -} $(SRCDIR)\Configure
+8 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
    $ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
    $ nmake
    $ nmake test
    $ nmake install

 [If any of these steps fails, see section Installation in Detail below.]

@@ -74,17 +75,23 @@
 ---------------------

 There are several options to ./config (or ./Configure) to customize
 the build:
 the build (note that for Windows, the defaults for --prefix and
 --openssldir depend in what configuration is used and what Windows
 implementation OpenSSL is built on.  More notes on this in NOTES.WIN):

  --prefix=DIR     The top of the installation directory tree.  Defaults are:

                   Unix:           /usr/local
                   Windows:        C:\Program Files\OpenSSL
                                or C:\Program Files (x86)\OpenSSL
                   OpenVMS:        SYS$COMMON:[OPENSSL-'version']

  --openssldir=DIR Directory for OpenSSL configuration files, and also the
                   default certificate and key store.  Defaults are:

                   Unix:           PREFIX/ssl (PREFIX is given by --prefix)
                   Windows:        C:\Program Files\Common Files\SSL
                                or C:\Program Files (x86)\Common Files\SSL
                   OpenVMS:        SYS$COMMON:[SSL]

  --api=x.y.z      Don't build with support for deprecated APIs below the
+26 −1
Original line number Diff line number Diff line
@@ -22,6 +22,31 @@
   supported.


 Visual C++ (native Windows)
 ---------------------------

 Installation directories

 The default installation directories are derived from environment
 variables.

 For VC-WIN32, the following defaults are use:

     PREFIX:      %ProgramFiles(86)%\OpenSSL
     OPENSSLDIR:  %CommonProgramFiles(86)%\SSL

 For VC-WIN32, the following defaults are use:

     PREFIX:      %ProgramW6432%\OpenSSL
     OPENSSLDIR:  %CommonProgramW6432%\SSL

 Should those environment variables not exist (on a pure Win32
 installation for examples), these fallbacks are used:

     PREFIX:      %ProgramFiles%\OpenSSL
     OPENSSLDIR:  %CommonProgramFiles%\SSL


 GNU C (Cygwin)
 --------------

@@ -54,7 +79,7 @@
 with "conventional" Windows binaries you generate with/for MinGW.

 GNU C (MinGW/MSYS)
 -------------
 ------------------

 * Compiler and shell environment installation: