| ~~~~~~~~~~~~~~~~~ |
| BRLTTY on Windows |
| ~~~~~~~~~~~~~~~~~ |
| |
| .. include:: prologue.rst |
| .. _Cygwin's Web Site: http://www.cygwin.com/ |
| .. _MinGW's Web Site: http://mingw.sourceforge.net/ |
| .. _LibUSB-Win32's Web Site: http://libusb-win32.sourceforge.net/ |
| .. _LibUSB-1.0's Web Site: http://www.libusb.org/wiki/windows_backend |
| .. _Cygwin Ports: http://cygwinports.org/ |
| .. _Cygwin java-ecj jar: ftp://sourceware.org/pub/java/ecj-4.5.jar |
| |
| Building BRLTTY |
| =============== |
| |
| System Requirements |
| ------------------- |
| |
| The earliest release of Windows that is supported by BRLTTY is Windows 98. |
| |
| Pre-built versions of BRLTTY are available for download on |
| `BRLTTY's Web Site`_. Their names begin with ``brltty-win-``. Those with the |
| ``.zip`` extension are archives, and those with the ``.exe`` extension are |
| installers. |
| |
| In order to build BRLTTY yourself from a prepared source tarball, you'll need |
| Cygwin (see `Cygwin's Web Site`_) and/or MinGW (see `MinGW's Web Site`_). |
| You'll also need the following additional packages: |
| |
| * gcc |
| * make |
| * w32api (version 3.6 or later) |
| |
| If you'd like to build BRLTTY from its source repository (rather than from one |
| of the prepared source tarballs) then you'll also need these packages: |
| |
| * autoconf |
| * tcltk |
| |
| If you'd like to prepare the documentation (by doing ``make`` within the |
| ``Documents/`` subdirectory) then you'll need these packages: |
| |
| * linuxdoc-tools (not pre-packaged in Cygwin) |
| * doxygen |
| |
| If you're using MSYS (the MinGW command shell) for running ``configure`` and |
| ``make``, you should always use Windows-like paths (e.g. ``c:/brltty``) rather |
| than MSYS paths (e.g. ``/c/brltty``) because BRLTTY does **not** understand |
| MSYS paths. |
| |
| Windows 98 and ME Limitation |
| ---------------------------- |
| |
| On Windows versions 2000, XP, 2003, and later, BRLTTY automatically accesses |
| the Windows console that you're currently using as you switch between them. |
| This isn't possible on earlier versions. One way to still achieve this |
| functionality, though, is to run one BRLTTY on the root window that directly |
| accesses your braille device, and another one on each console that indirectly |
| accesses your braille device via BrlAPI. This scheme may sound complicated, |
| but it can be set up to run automatically. |
| |
| The first (or root) BRLTTY should be run as part of Windows startup. It must be |
| run with the options that are necessary for it to access your braille device, |
| e.g. ``-b`` (to specify the driver), ``-d`` (to specify the device), and |
| (maybe) ``-B`` (to specify driver-sspecific parameters). It must also be given |
| the ``-Xroot=yes`` option (which attaches it to the root window). |
| |
| An additional BRLTTY must then be run for each new console. It should be |
| invoked like this:: |
| |
| brltty -bba -N |
| |
| The ``-bba`` option tells it to access the root BRLTTY via BrlAPI, and the |
| ``-N`` option tells it not to start a BrlAPI server of its own. |
| |
| These (non-root) BRLTTYs can be started automatically by, for example, invoking |
| them from your ``.bashrc`` script. Each of these BRLTTYs only reviews the |
| console it's running within, and connects, via BrlAPI, to the root BRLTTY in |
| order to access your braille device. |
| |
| If you're not concerned with security, and would rather not fiddle with the |
| ``brlapi.key`` file, then add the ``-Aauth=none`` option to the command line |
| that starts the root BRLTTY. You don't need to worry about unauthorized access |
| over the network since the default is that only locally running programs can |
| connect to BrlAPI. |
| |
| Package Management via the Command Line |
| --------------------------------------- |
| |
| Managing Cygwin Packages |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| A convenient way to manage Cygwin packages from the command line |
| is to use the ``apt-cyg`` command. |
| It's similar to the ``apt-get`` command which some Linux distributions use. |
| |
| As of the time of this writing, this is how you can install it:: |
| |
| svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /usr/local/bin/ |
| chmod +x /usr/local/bin/apt-cyg |
| |
| If you're using the 64-bit Cygwin platform, then, after installing apt-cyg, |
| you'll need to make a couple of simple modifications to it. Using your |
| favourite text editor, and remembering that the actual line numbers within your |
| version may differ from those shown below, edit ``/usr/local/bin/apt-cyg`` and |
| make the following changes: |
| |
| 1) On line 98, change ``$mirror/setup.bz2`` to ``$mirror/x86_64/setup.bz2``. |
| |
| 2) On line 105, change ``$mirror/setup.ini`` to ``$mirror/x86_64/setup.ini``. |
| |
| To search for a package, you can do: |
| |
| .. parsed-literal:: apt-cyg find *pattern* |
| |
| To install a package, you can do: |
| |
| .. parsed-literal:: apt-cyg install *name* |
| |
| For full details, you can do: |
| |
| .. parsed-literal:: apt-cyg help |
| |
| Managing MinGW Packages |
| ~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| A convenient way to manage MinGW packages from the command line |
| is to use the ``mingw-get`` command. |
| Be sure to invoke it with arguments because |
| when invoked with no arguments its graphical interface is used. |
| |
| To list all of the packages, you can do: |
| |
| .. parsed-literal:: mingw-get list |
| |
| To install a package, you can do: |
| |
| .. parsed-literal:: mingw-get install *name* |
| |
| For full details, you can do: |
| |
| .. parsed-literal:: mingw-get -h |
| |
| USB Support |
| ----------- |
| |
| USB devices are supported thanks to the ``LibUSB-Win32`` and the ``LibUSB-1.0`` |
| packages. If both are installed, preferrence is given to ``LibUSB-1.0``. |
| |
| Pre-built versions of BRLTTY have USB support compiled in, and the required |
| Windows drivers are also included, so you just need to let the installer set |
| them up. |
| |
| In order to build BRLTTY yourself with USB support enabled, you'll need to |
| **first** install at least one of LibUSB-Win32 or LibUSB-1.0. |
| |
| LibUSB-Win32 |
| ~~~~~~~~~~~~ |
| |
| At the time of this writing, LibUSB-Win32 binaries can be found on |
| `LibUSB-Win32's Web Site`_. They'll be named something like |
| ``libusb-win32-bin-<version>.exe``, and should be available on |
| ``http://sourceforge.net/project/showfiles.php?group_id=78138``. |
| |
| * On Cygwin: |
| |
| 1) Install the ``libusb-win32`` package. |
| |
| * On MinGW: |
| |
| 1) Unpack the archive somewhere. |
| |
| 2) Symlink the header and library files into your MinGW |
| installation:: |
| |
| ln -s LibUSB-Win32/include/lusb0_usb.h /mingw/include/usb.h |
| ln -s LibUSB-Win32/lib/gcc/libusb.a /mingw/lib/ |
| ln -s LibUSB-Win32/bin/x86/libusb0_x86.dll /mingw/bin/libusb0.dll |
| |
| In order to be able to use the LibUSB-Win32 driver, you'll need to copy its |
| run-time files into BRLTTY's source tree:: |
| |
| cp LibUSB-Win32/bin/x86/libusb0.sys brltty/hotplug/libusb0.sys |
| cp LibUSB-Win32/bin/x86/libusb0_x86.dll brltty/hotplug/libusb0.dll |
| cp LibUSB-Win32/bin/amd64/libusb0.sys brltty/hotplug/libusb0_x64.sys |
| cp LibUSB-Win32/bin/amd64/libusb0.dll brltty/hotplug/libusb0_x64.dll |
| |
| Then, either right-click on ``brltty/hotplug/brltty.inf`` and select |
| ``install``, or, on braille device plug, point at the |
| ``brltty/hotplug/brltty.inf`` file. |
| |
| LibUSB-1.0 |
| ~~~~~~~~~~ |
| |
| As of the time of this writing, LibUSB-1.0 binary snapshots can be found on |
| `LibUSB-1.0's Web Site`_. They'll be named something like |
| ``libusb_<date>.7z``. |
| |
| * On Cygwin: |
| |
| 1) Install the ``libusb1.0-devel`` package. |
| |
| * On MinGW: |
| |
| 1) Unpack the archive somewhere. |
| |
| 2) Symlink the header and library files into your MinGW |
| installation:: |
| |
| ln -s LibUSB-1.0/include/libusbx-1.0 /mingw/include/libusb-1.0 |
| ln -s LibUSB-1.0/MinGW32/dll/libusb-1.0.dll.a /mingw/lib/ |
| ln -s LibUSB-1.0/MinGW32/dll/libusb-1.0.dll /mingw/bin/ |
| |
| 3) Copy the file ``libusb-1.0.pc`` in the ``Windows/`` subdirectory of |
| BRLTTY's source tree into MinGW's ``/mingw/lib/pkgconfig/`` directory. If |
| the ``pkgconfig/`` subdirectory doesn't already exist then create it. |
| |
| In order to be able to use the LibUSB-1.0 driver, you'll need to either |
| right-click on ``brltty/hotplug/brltty-libusb-1.0.inf`` and select ``install``, |
| or, on braille device plug, point at the |
| ``brltty/hotplug/brltty-libusb-1.0.inf`` file. |
| |
| Configuring a BRLTTY Build |
| -------------------------- |
| |
| Some of BRLTTY's configure options are of particular interest to users of the |
| Windows platform: |
| |
| --enable-relocatable-install |
| The default is for BRLTTY to refer to its components via absolute paths. On |
| the Windows platform, however, the convention is for a package to use |
| relative paths so that it's entirely self-contained. This enables it to be |
| installed into an arbitrary directory, and to be moved around thereafter at |
| well. This option builds BRLTTY such that relative paths are used. |
| |
| Missing Java Class Definitions on Cygwin |
| ---------------------------------------- |
| |
| You may get a Java failure that looks something like this:: |
| |
| Exception in thread "main" java.lang.NoClassDefFoundError: |
| org.eclipse.jdt.internal.compiler.batch.GCCMain |
| at gnu.java.lang.MainThread.run(Unknown Source) |
| Caused by: java.lang.ClassNotFoundException: |
| org.eclipse.jdt.internal.compiler.batch.GCCMain |
| not found in gnu.gcj.runtime.SystemClassLoader |
| {urls=[], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}} |
| |
| This problem occurs when the ``java-ecj`` package isn't installed. It can be |
| obtained from `Cygwin Ports`_. You can also resolve the probem by downloading |
| the `Cygwin java-ecj jar`_, and installing it into ``/usr/share/java/ecj.jar``. |
| |
| Using BRLTTY |
| ============ |
| |
| Windows Scripts for Managing BRLTTY |
| ----------------------------------- |
| |
| These ``.bat`` scripts are in the top-level folder where BRLTTY has been installed. |
| They should be run by a user that has administrative privileges. |
| |
| ``run-brltty.bat`` |
| ~~~~~~~~~~~~~~~~~~ |
| |
| Manually run BRLTTY with a log level of ``info``. |
| Logs are written to the file ``brltty.log`` |
| in the top-level folder where BRLTTY has been installed. |
| All arguments are passed through to BRLTTY. |
| |
| ``debug-brltty.bat`` |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| Manually run BRLTTY, via the ``run-brltty.bat`` script, with options that |
| set the log level to ``debug`` and enable several useful log categories. |
| All arguments are passed through to the ``run-brltty.bat`` script. |
| |
| ``kill-brltty.bat`` |
| ~~~~~~~~~~~~~~~~~~~ |
| |
| Forceably terminate the manually-run BRLTTY process. |
| |
| ``enable-brlapi.bat`` |
| ~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Install the BrlAPI service and start it. |
| |
| ``disable-brlapi.bat`` |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Stop the BrlAPI service and uninstall it. |
| |
| Sticking to a Console |
| --------------------- |
| |
| It may be useful to have BRLTTY only review the console that it's started in, |
| i.e. for it not to follow the keyboard focus. To achieve this, set the |
| ``FollowFocus`` parameter of BRLTTY's ``Windows`` screen driver to ``no``. This |
| can be done: |
| |
| On the Command Line: |
| ``-Xwn:FollowFocus=no`` |
| |
| In ``brltty.conf``: |
| ``screen-parameter wn:FollowFocus=no`` |
| |
| Sharing the Braille Device with Other Screen Readers |
| ---------------------------------------------------- |
| |
| When you're not on a window that BRLTTY can handle, its default action is to |
| retain control of the braille device and to present a short message explaining |
| the problem. If you have another braille-capable screen reader and would like |
| it to take over instead, then both BRLTTY and that other screen reader must be |
| instructed to share the braille device. |
| |
| BRLTTY can be instructed to share the braille device via its |
| ``--release-device`` option (the short form of this option is ``-r``). When |
| this option is in effect, BRLTTY releases the braille device when you move onto |
| a window that it can't handle, and then tries to regain control of the braille |
| device when you move onto a window that it can handle. Note that these actions |
| take a noticeable amount of time so you should only use this option if it's |
| actually needed. |
| |
| Sharing with JAWS |
| ~~~~~~~~~~~~~~~~~ |
| |
| A common case wherein a JAWS user might want BRLTTY to be in control of the |
| braille device when on a console window is when using Cygwin. |
| |
| There are two phases to configuring JAWS to run in the background while BRLTTY |
| controls the braille device. First, a usable window title must be established |
| and stable. Second, JAWS braille must be put to sleep. |
| |
| .. topic:: What is a Window Title? |
| |
| Every window in Windows has a title bar that contains the name of the |
| application that's running in it, as well as some controls to do things like |
| move and resize the window. BRLTTY doesn't show this title bar. |
| |
| For a program window, JAWS uses the name of the program's executable as the |
| name of the configuration files to load when that program gains focus. For a |
| console application such as Cygwin, however, it uses the title of the window |
| instead. You must, therefore, tell JAWS within the window title that this is |
| a Cygwin window. |
| |
| .. topic:: Setting the Window Title |
| |
| JAWS uses one of the words in the window title as the name of the |
| configuration file set to load. This file set is what tells JAWS the |
| specifics of how to handle the application. It is, therefore, where JAWS |
| must be instructed to put its braille component to sleep. |
| |
| As of this writing, it appears that JAWS uses the following algorithm for |
| choosing which word in the title to use as the name of the file set: |
| |
| 1) If there are no slashes (``/``) or backslashes (``\``) in the title then |
| JAWS uses the first word. Thus, if the title is ``Cygwin Bash Shell`` |
| then JAWS will load the ``Cygwin`` configuration file set. |
| |
| 2) If there's at least one slash (``/``) or backslash (``\``) in the title |
| then JAWS uses the last word. Thus, if the title is ``$PWD - Cygwin`` |
| then JAWS will similarly load the ``Cygwin`` configuration file set. |
| |
| .. topic:: Setting Cygwin's Window Title |
| |
| First, it is imperative that you replace, or at least modify, the default |
| ``PS1`` (primary shell prompt) setting. The default for this setting, as |
| distributed by Cygwin, places ``$PWD`` (the path to the current working |
| directory) in the window title, thus requiring you to have a separate JAWS |
| configuration for every directory on the system! One possible way to resolve |
| this "problem" is to uncomment the ``settitle`` function (which can be found |
| near the end of ``.bashrc``). This function allows you to place a string of |
| your own choice in the title. You can use this function, therefore, as |
| follows:: |
| |
| export PROMPT_COMMAND='settitle "$PWD - Cygwin"' |
| export PS1='$ ' |
| |
| The first of these lines causes the window title to be set just before each |
| shell prompt. Since ``$PWD`` always contains at least one slash (``/``), the |
| operative word in the title will be ``Cygwin`` (the last word), and JAWS, |
| therefore, will load any ``Cygwin`` configuration files that it finds. |
| |
| The second of these lines sets the primary shell prompt to the customary |
| dollar (``$``) sign. More importantly, though, it replaces Cygwin's default |
| ``PS1`` setting which, because it contains escape sequences that overwrite |
| the title with ``$PWD``, renders the window unrecognizable by JAWS. |
| |
| .. topic:: Putting JAWS Braille to Sleep |
| |
| Now that a stable window title has been established, JAWS braille can |
| finally be put to sleep. While in Cygwin, and with BRLTTY not running, do |
| the following: |
| |
| 1) Press Insert+F2 to bring up the ``Run JAWS Manager`` dialog. |
| |
| 2) Down-Arrow to ``Configuration Manager``, and press Enter. Verify that the |
| title on the top line contains ``Cygwin.jcf``. |
| |
| 3) Press Alt+S for ``Set Options``. |
| |
| 4) Press B for ``Braille``. |
| |
| 5) Press S for ``Braille Sleep Mode``. |
| |
| 6) Verify that the box is checked. It should look like ``<x>`` (rather than |
| like ``< >``). Press Space to toggle the setting if the ``x`` isn't there. |
| |
| 7) Press Enter to leave the menu. |
| |
| 8) Press Control+S to save the file. |
| |
| 9) Press Alt+F4 to exit the configuration manager. |
| |
| .. topic:: Putting JAWS Speech to Sleep |
| |
| If you'd like to use JAWS speech in Windows, but not in Cygwin, you can do |
| the following: |
| |
| 1) Press Insert+F2 to bring up the ``Run JAWS Manager`` dialog. |
| |
| 2) Down-Arrow to ``Configuration Manager`` and press Enter. Verify that the |
| title on the top line contains ``Cygwin.jcf``. |
| |
| 3) Press Alt+S for ``Set Options``. |
| |
| 4) Press A for ``Advanced``. |
| |
| 5) You should be on an item labelled ``Sleep Mode Enable`` with an empty |
| check box (``< >``). Press Space to check it (``<x>``). |
| |
| 6) Press Enter to leave the menu. |
| |
| 7) Press Control+S to save the file. |
| |
| 8) Press Alt+F4 to exit the configuration manager. |
| |
| .. topic:: Known Problem |
| |
| You'll always be able to switch to Cygwin, and BRLTTY (if it's running) will |
| take control of the braille device automatically. Switching back to Windows |
| and JAWS, however, may be problematic. The degree of success seems to depend |
| on the type of braille device being used. It usually works properly. |
| Sometimes, however, when using a USB device, the cable needs to be |
| unplugged/replugged to allow JAWS to regain control. In extreme cases, you |
| may need to exit BRLTTY before going to Windows. |
| |
| MinGW Scripts for Building BRLTTY |
| ================================= |
| |
| The ``mkwin`` Script |
| -------------------- |
| |
| The ``mkwin`` script, |
| which can be found in the ``Windows/`` subdirectory of BRLTTY's source tree, |
| builds the Windows archive and installer for BRLTTY. |
| |
| Software Components Required by ``mkwin`` |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Links to the pages where we found these |
| installers, components, and files are listed. |
| In case any of these links becomes out-of-date, however, |
| copies of some of them have been preserived at |
| `<http://BRLTTY.app/archive/Windows/>`_. |
| |
| The following software components should already be installed: |
| |
| * ``MinGW`` [32-bit] (from `<http://mingw.org/>`_) |
| |
| The following ``MinGW`` packages may still need to be installed: |
| |
| * ``msys-bison`` |
| * ``msys-dos2unix`` |
| * ``msys-groff`` |
| * ``msys-m4`` |
| * ``msys-tar`` |
| * ``msys-unzip`` |
| * ``msys-wget`` |
| * ``msys-zip`` |
| * ``mingw32-libpdcurses`` |
| * ``mingw32-pthreads-w32`` |
| * ``mingw32-tcl`` |
| |
| The following packages should also be installed: |
| |
| * ``AutoHotkey`` (from `<http://www.autohotkey.com/>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in |
| ``C:\Program Files (x86)\AutoHotkey``. |
| The ``-A`` (AutoHotkey) option can be used to specify another location. |
| The installer currently being used is named ``AutoHotkey104805_Install.exe``. |
| |
| * ``NSIS`` (from `<http://nsis.sourceforge.net/>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in |
| ``C:\Program Files (x86)\NSIS``. |
| The ``-N`` (NSIS) option can be used to specify another location. |
| The installer currently being used is named ``nsis-3.0b0-setup.exe``. |
| |
| * ``Python`` (from `<http://www.python.org/>`_) |
| |
| The 32-bit variants are required. Version 2 or 3 may be used. If the |
| ``python`` command isn't in your command search path, or if you'd like to |
| use a different version of ``Python``, then use the ``-P`` (Python) option |
| to specify the top-level directory of the desired ``Python`` version. |
| |
| * ``Cython`` (from `<http://cython.org/>`_) |
| |
| A corresponding version of ``Cython`` must be installed for each version of |
| ``Python``. Each ``Cython`` version is installed within the corresponding |
| ``Python`` version's hierarchy. Install ``Cython`` with the command:: |
| |
| pip install cython |
| |
| Some systems, either in addition to or in place of the ``pip`` command, |
| have the ``pip2`` and/or the ``pip3`` command. As you might have guessed, |
| ``pip2`` corresponds to ``Python2`` and ``pip3`` corresponds to ``Python3``. |
| It's best to use the one with the most explicit version suffix. |
| |
| If the ``pip`` command isn't already included within the version of |
| ``Python`` that you're using (usually within its ``scripts`` subdirectory) |
| then you can install it from `<https://pip.pypa.io/en/stable/installing/>`_. |
| |
| Copies of the files mentioned below are at |
| `<http://BRLTTY.app/archive/Windows/Cython/>`_: |
| |
| + To force use of MinGW's (rather than Microsoft's) C compiler, |
| add ``distutils.cfg`` to the ``Python/lib/distutils/`` directory. |
| It should contain these lines:: |
| |
| [build] |
| compiler = mingw32 |
| |
| + If you get a message like "Unknown MS Compiler version 1900" |
| then you'll probably need to apply the patch ``patch1`` |
| (from `<https://bugs.python.org/file40608/patch.diff>`_) |
| when within the ``Python/lib/distutils/`` directory:: |
| |
| cd Python/lib/distutils |
| patch patch1 |
| |
| + If you get a message like "cannot find -lvcruntime140" |
| then you'll need to add the 32-bit version of ``vcruntime140.dll`` |
| (from `<http://www.dll-files.com/>`_) |
| to the ``Python/libs/`` directory. |
| You can verify that you have the 32-bit version with the ``file`` command:: |
| |
| file vcruntime140.dll |
| vcruntime140.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows |
| |
| A message like "vcruntime140.dll: file not recognized: File format not recognized" |
| probably means that you don't have the 32-bit version of the DLL. |
| |
| * ``LibUSB-Win32`` (from `<http://libusb-win32.sourceforge.net/>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in |
| ``C:\LibUSB-Win32``. |
| The ``-U`` (LibUSB-Win32) option can be used to specify another location. |
| The archive currently being used is named ``libusb-win32-bin-1.2.6.0.zip``. |
| Our copy of this archive has a top-level directory named ``libusb-win32-bin-1.2.6.0``. |
| |
| * ``LibUSB-1.0`` (from `<http://www.libusb.org/wiki/windows_backend>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in |
| ``C:\LibUSB-1.0``. |
| The ``-X`` (libusbx) option can be used to specify another location. |
| The archive currently being used is named ``libusbx-1.0.18-win.7z``. |
| Our copy of this archive doesn't have a top-level directory. |
| We have an alternate copy of this archive named ``libusbx-1.0.18-win.tar.gz``. |
| |
| * ``WinUSB`` (from `<http://www.libusb.org/wiki/windows_backend>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in |
| ``C:\WinUSB``. |
| The ``-W`` (WinUSB) option can be used to specify another location. |
| The archive currently being used is named ``winusb.zip``. |
| Our copy of this archive doesn't have a top-level directory. |
| |
| * ``ICU`` (from `<http://icu-project.org/>`_) |
| |
| The ``mkwin`` script assumes that it has been installed in ``C:\ICU``. |
| The ``-I`` (ICU) option can be used to specify another location. |
| The archive currently being used is named ``icu4c-53_1-Win32-msvc10.zip``. |
| Our copy of this archive has a top-level directory named ``icu``. |
| Since Windows file systems don't have case sensitive names, |
| renaming it from ``icu`` to ``ICU`` is optional. |
| |
| * ``pkg-config`` (from `<http://gtk.org/download/win32.php>`_) |
| |
| The archive currently being used is named ``pkg-config_0.28-1_win32.zip``. |
| Our copy of this archive doesn't have a top-level directory. |
| It should be unpacked when in MinGW's ``/mingw/`` directory. |
| |
| * ``Glib`` (from `<http://gtk.org/download/win32.php>`_) |
| |
| The archive currently being used is named ``glib_2.34.3-1_win32.zip``. |
| Our copy of this archive doesn't have a top-level directory. |
| It should be unpacked when in MinGW's ``/mingw/`` directory. |
| |
| * ``gettext-runtime`` (from `<http://gtk.org/download/win32.php>`_) |
| |
| Only install it if your MinGW installation doesn't already have it. |
| Check for the presence of a ``libintl`` DLL in MinGW's ``/mingw/bin/`` directory. |
| |
| The ``mkwin`` script uses the ``lib`` command, |
| which belongs to MSVC (Microsoft Visual C++). |
| On newer Windows systems, MSVC has become |
| a component of Microsoft Visual Studio. |
| If you don't have it then you'll need to get |
| the following files from someone who does. |
| Copies of them are at `<http://BRLTTY.app/archive/Windows/MSVC/>`_. |
| |
| * lib.exe |
| * link.exe |
| * mspdb100.dll |
| * msvcr100.dll |
| |
| All of them should be placed within the same directory |
| (MinGW's ``/usr/local/bin/`` directory may be a good place). |
| Either add this directory to your command search path |
| or use the ``-M`` (MSVC) option to specify its location. |
| |
| If you'd like to have USB support then create the symbolic links as described |
| within the MinGW instructions for using `LibUSB-Win32`_ and/or `LibUSB-1.0`_. |
| You'll also need to create ``.pc`` (pkg-config) files for them within MinGW's |
| ``/mingw/lib/pkgconfig>`` directory. The ones we've created are at |
| `<http://BRLTTY.app/archive/Windows/pkgconfig/>`_. |
| |
| If you'd like to have Bluetooth support then you'll need to add |
| the files listed below to MinGW's ``/mingw/include/`` directory. |
| Copies of them are at `<http://BRLTTY.app/archive/Windows/Bluetooth/>`_. |
| |
| * ws2bth.h |
| * bthdef.h |
| * bthsdpdef.h |
| |
| More ``mkwin`` Options |
| ~~~~~~~~~~~~~~~~~~~~~~ |
| |
| ``-u`` (USB) |
| Specify which USB package is to be used. The following USB packages are |
| supported: |
| |
| * libusb (for LibUSB-Win32) |
| * libusb-1.0 (for LibUSB-1.0 + WinUSB) |
| |
| ``-C`` (Cygwin) |
| Specify the root (top-level) directory of a Cygwin installation. |
| If it isn't specified then ``/cygwin`` (if it exists) is assumed. |
| Cygwin's ``bin/`` directory is added to the end of the command search path |
| as a last resort for finding needed commands that MinGW may not have. |
| |
| ``-s`` (shell) |
| Invoke an interactive shell just before the archive is created so that you |
| can have a look at and/or modify what it will contain. If the ``SHELL`` |
| environment variable is set then that shell is used. If not, ``/bin/sh`` is |
| assumed. |
| |
| ``-t`` (temporary directory) |
| Specify the temporary directory that is to be used for the build. |
| It must not already exist. |
| If it isn't specified then an internally generated path is used. |
| |
| ``-k`` (keep) |
| Don't remove the temporary directory |
| at the end of a successful build. |
| It isn't removed if the build fails |
| so that you can have a look at what went wrong. |
| |
| .. include:: common-options.rst |
| |
| ``mkwin`` Parameters |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| The ``mkwin`` script accepts two parameters: |
| |
| 1) The path to the top-level directory of BRLTTY's source tree. |
| It may be either relative or absolute. |
| This parameter is required. |
| |
| 2) The build revision. |
| It may be any character sequence that doesn't include whitespace. |
| It is appended, with a prepended dash (``-``), to |
| BRLTTY's version number in order to construct the build version. |
| This parameter is optional - if it isn't specified then |
| the revision number part of the build identifier is used. |
| |
| The build name is used as: |
| |
| * the name of the top-level directory within the archive |
| * the file name of the archive (which has the ``.zip`` extension) |
| * the file name of the installer (which has the ``.exe`` extension) |
| |
| It has the following form:: |
| |
| brltty-win-buildVersion-buildRevision-usbPackage |
| |
| For example: |
| |
| * if your current working directory is the ``Windows/`` subdirectory of |
| BRLTTY's source tree, |
| |
| * if the current BRLTTY version is 5.2, |
| |
| * and remembering that the default USB package is ``libusb``, |
| |
| then invoking the following command:: |
| |
| ./mkwin .. 4 |
| |
| will create these files within the current working directory: |
| |
| * brltty-win-5.2-4-libusb.zip (the archive) |
| * brltty-win-5.2-4-libusb.exe (the installer) |
| |
| The ``winsetup`` Script |
| ----------------------- |
| |
| The ``winsetup`` script, |
| which can be found in the ``Windows/`` subdirectory of BRLTTY's source tree, |
| ensures that all needed components are installed on your system |
| so that `the mkwin script`_ can successfully build BRLTTY. |
| |
| ``winsetup`` Options |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| ``-a`` (archive URL) |
| Specify the location for BRLTTY's Windows archive. |
| |
| ``-d`` (dry run) |
| Don't actually install anything. |
| |
| ``-k`` (keep) |
| Don't remove the temporary directory. |
| |
| ``-p`` (Python directory) |
| Specify the location where Python has been installed. |
| |
| ``-t`` (temporary directory) |
| Specify the temporary directory that is to be used for the installs. |
| It must not already exist. |
| If it isn't specified then an internally generated path is used. |
| |
| .. include:: common-options.rst |
| |