Edit

kc3-lang/libiconv/INSTALL.windows

Branch :

  • Show log

    Commit

  • Author : Bruno Haible
    Date : 2024-05-23 11:22:54
    Hash : ee9ea2e5
    Message : INSTALL.windows: Fix MSVC instructions. * INSTALL.windows: Mention the tools needed for 'windres'.

  • INSTALL.windows
  • Installation on Microsoft Windows:
    
    There are three ways to create binaries of this package for Microsoft Windows:
    1) Native binaries, built using the mingw tool chain.
    2) Native binaries, built using the MS Visual C/C++ tool chain.
    3) Binaries for the Cygwin environment.
    
    ===============================================================================
    1) Native binaries, built using the mingw tool chain.
    
       I recommend to use the Cygwin environment as the development environment (*)
       and mingw only as the target (runtime, deployment) environment.
       For this, you need to install
         * Cygwin (from https://cygwin.com/),
         * some packages available from the Cygwin package installer:
             make
         * the mingw cross-compilation tools and runtime package, available from
           the Cygwin package installer (setup-x86_64.exe):
           - for creating 32-bit binaries: packages
               mingw64-i686-gcc-core,
               mingw64-i686-headers,
               mingw64-i686-runtime
           - for creating 64-bit binaries: packages
               mingw64-x86_64-gcc-core,
               mingw64-x86_64-headers,
               mingw64-x86_64-runtime
    
       Building 32-bit binaries for mingw is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/mingw32/bin:$PATH
          export PATH
          ./configure --host=i686-w64-mingw32 --prefix=/usr/local/mingw32 \
                CC=i686-w64-mingw32-gcc \
                CPPFLAGS="-I/usr/local/mingw32/include -Wall" \
                LDFLAGS="-L/usr/local/mingw32/lib"
          make
          make check
    
       Building 64-bit binaries for mingw is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/mingw64/bin:$PATH
          export PATH
          ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/mingw64 \
                CC=x86_64-w64-mingw32-gcc \
                CPPFLAGS="-I/usr/local/mingw64/include -Wall" \
                LDFLAGS="-L/usr/local/mingw64/lib"
          make
          make check
    
       Installation:
    
          make install
    
       (*) Note: The MSYS2 environment as a development environment is *not*
           supported.  This environment contains an ignoble and ignominious hack:
           In a program invocation, the program *by default* receives different
           arguments than the ones that the caller has passed.  See
           <https://www.msys2.org/wiki/Porting/#filesystem-namespaces>.
           All program invocations in this environment are therefore unreliable.
    
    ===============================================================================
    2) Native binaries, built using the MS Visual C/C++ tool chain.
    
       Note that binaries created with MSVC have a distribution constraint: They
       depend on a closed-source library ('msvcr90.dll' for MSVC 9.0,
       'vcruntime140.dll' for MSVC 14.0, and so on) which is not normally part of
       a Windows installation.
       You cannot distribute 'vcruntime*.dll' with the binaries - this would be a
       violation of the GPL and of the Microsoft EULA.
       You can distribute the binaries without including 'vcruntime*.dll'. Users
       who don't have this library on their system will require to pull some files
       (api-ms-win*.dll) through the Windows Update mechanism, see
       https://support.microsoft.com/en-us/kb/2999226 .
    
       This recipe requires MS Visual C/C++ 9.0 or newer.
       You don't need the Visual Studio IDE, just the C/C++ tool chain.
       As of 2016, you can install the MS Visual C/C++ 14.0 tool chain from
       http://landinghub.visualstudio.com/visual-cpp-build-tools (it's the file
       visualcppbuildtools_full.exe).
    
       This recipe requires also a Cygwin environment (with 'bash', the common POSIX
       commands, and 'make') as a build environment. Building with 'nmake' is not
       supported.
       For this, you need to install
         * Cygwin (from https://cygwin.com/),
         * some packages available from the Cygwin package installer:
             make
         * the mingw cross-compilation tool named 'windres', available from the
           Cygwin package installer (setup-x86_64.exe):
           - for creating 32-bit binaries: packages
               mingw64-i686-binutils,
               mingw64-i686-gcc-core
           - for creating 64-bit binaries: packages
               mingw64-x86_64-binutils,
               mingw64-x86_64-gcc-core
    
       You also need the scripts 'ar-lib' and 'compile' from
         https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEAD
         https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEAD
       respectively.
       They may also be included in this package, in directory 'build-aux/'.
       Save them; the instructions below assume that you stored them in $HOME/msvc/.
       Make them executable:
          chmod a+x ar-lib compile
    
       Start a bash (from Cygwin).
    
       Make sure that the MSVC tools ("cl" etc.) are found in PATH and the
       environment variables INCLUDE and LIB are set appropriately.
       In a typical MSVC 9.0 installation, it can be achieved by running
         C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
       In a typical MSVC 14.0 installation on Windows 10, it can be achieved
       - for creating 32-bit binaries: through the following bash commands:
    
          # Set environment variables for using MSVC 14,
          # for creating native 32-bit Windows executables.
    
          # Windows C library headers and libraries.
          WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
          WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
          INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
          LIB="${WindowsCrtLibDir}x86;$LIB"
    
          # Windows API headers and libraries.
          WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
          WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
          INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
          LIB="${WindowsSdkLibDir}x86;$LIB"
    
          # Visual C++ tools, headers and libraries.
          VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
          VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
          PATH=`cygpath -u "${VCINSTALLDIR}"`/bin:"$PATH"
          INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
          LIB="${VCINSTALLDIR}"'\lib;'"${LIB}"
    
          export INCLUDE LIB
    
       - for creating 64-bit binaries: through the following bash commands:
    
         # Set environment variables for using MSVC 14,
         # for creating native 64-bit Windows executables.
    
         # Windows C library headers and libraries.
         WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
         WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
         INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
         LIB="${WindowsCrtLibDir}x64;$LIB"
    
         # Windows API headers and libraries.
         WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
         WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
         INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
         LIB="${WindowsSdkLibDir}x64;$LIB"
    
         # Visual C++ tools, headers and libraries.
         VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
         VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
         PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
         INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
         LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"
    
         export INCLUDE LIB
    
       Building 32-bit binaries with MSVC is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/msvc32/bin:$PATH
          export PATH
    
          win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
          win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
          win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
          win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
    
          ./configure --host=i686-w64-mingw32 --prefix=/usr/local/msvc32 \
                CC="$HOME/msvc/compile cl -nologo" \
                CFLAGS="-MD" \
                CXX="$HOME/msvc/compile cl -nologo" \
                CXXFLAGS="-MD" \
                CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc32/include" \
                LDFLAGS="-L/usr/local/msvc32/lib" \
                LD="link" \
                NM="dumpbin -symbols" \
                STRIP=":" \
                AR="$HOME/msvc/ar-lib lib" \
                RANLIB=":"
          make
          make check
    
       Building 64-bit binaries with MSVC is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/msvc64/bin:$PATH
          export PATH
    
          win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
          win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
          win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
          win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
    
          ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \
                CC="$HOME/msvc/compile cl -nologo" \
                CFLAGS="-MD" \
                CXX="$HOME/msvc/compile cl -nologo" \
                CXXFLAGS="-MD" \
                CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \
                LDFLAGS="-L/usr/local/msvc64/lib" \
                LD="link" \
                NM="dumpbin -symbols" \
                STRIP=":" \
                AR="$HOME/msvc/ar-lib lib" \
                RANLIB=":"
          make
          make check
    
       Installation:
    
          make install
    
    ===============================================================================
    3) Binaries for the Cygwin environment.
    
       The generic instructions in the INSTALL file apply. But here are more
       specific ones.
    
       You need to install
         * Cygwin (from https://cygwin.com/),
         * some packages available from the Cygwin package installer:
             make
         * the Cygwin [cross-]compilation tools package, available from
           the Cygwin package installer (setup-x86_64.exe):
           - for creating 32-bit binaries: packages
               cygwin32-gcc-core,
               cygwin32
           - for creating 64-bit binaries: packages
               gcc-core
    
       Building 32-bit binaries for Cygwin must be done in a directory *outside*
       the Cygwin /home and /usr hierarchies. It is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/cygwin32/bin:/usr/i686-pc-cygwin/sys-root/usr/bin:$PATH
          export PATH
          ./configure --host=i686-pc-cygwin --prefix=/usr/local/cygwin32 \
                CC=i686-pc-cygwin-gcc \
                CPPFLAGS="-I/usr/local/cygwin32/include -Wall" \
                LDFLAGS="-L/usr/local/cygwin32/lib"
          make
          make check
    
       Building 64-bit binaries for Cygwin is achieved through the following
       preparation, configure, and build commands:
    
          PATH=/usr/local/cygwin64/bin:$PATH
          export PATH
          ./configure --host=x86_64-pc-cygwin --prefix=/usr/local/cygwin64 \
                CC=x86_64-pc-cygwin-gcc \
                CPPFLAGS="-I/usr/local/cygwin64/include -Wall" \
                LDFLAGS="-L/usr/local/cygwin64/lib"
          make
          make check
    
       Installation:
    
          make install
    
    ===============================================================================