diff --git a/Kconfig b/Kconfig index bf1f1c7b4b..188f9d007b 100644 --- a/Kconfig +++ b/Kconfig @@ -45,6 +45,14 @@ config HOST_OTHER endchoice +config TOOLCHAIN_WINDOWS + bool + default n + depends on HOST_WINDOWS + ---help--- + Selected internally if the selected Windows environment is compatible + with the use of Windows native toolchains. + choice prompt "Windows Build Environment" default WINDOWS_CYGWIN @@ -52,24 +60,34 @@ choice config WINDOWS_NATIVE bool "Windows Native" + select TOOLCHAIN_WINDOWS ---help--- Build natively in a CMD.exe environment with Windows style paths (like C:\cgywin\home) config WINDOWS_CYGWIN bool "Cygwin" + select TOOLCHAIN_WINDOWS ---help--- Build natively in a Cygwin environment with POSIX style paths (like - /cygdrive/c/cgywin/home) + /cygdrive/c/Program Files) + +config WINDOWS_UBUNTU + bool "Ubuntu under Windows 10" + ---help--- + Build natively in an Unbuntu shell under Windoes 10 environment with + POSIX style paths (like /mnt/c/Program Files) config WINDOWS_MSYS bool "MSYS" + select TOOLCHAIN_WINDOWS ---help--- Build natively in a Cygwin environment with POSIX style paths (like /cygdrive/c/cgywin/home) config WINDOWS_OTHER bool "Windows POSIX-like environment" + select TOOLCHAIN_WINDOWS ---help--- Build natively in another POSIX-like environment. Additional support may be necessary diff --git a/README.txt b/README.txt index 89a544880e..80957b3b2b 100644 --- a/README.txt +++ b/README.txt @@ -1,8 +1,10 @@ README ^^^^^^ - o Installation + o Environments - Installing Cygwin + - Ubuntu Bash under Windows 10 + o Installation - Download and Unpack - Semi-Optional apps/ Package - Installation Directories with Spaces in the Path @@ -34,21 +36,49 @@ README - Window Native Toolchain Issues o Documentation -INSTALLATION +ENVIRONMENTS ^^^^^^^^^^^^ - NuttX may be installed and built on a Linux system or on a Windows - system if Cygwin is installed. The MSYS environment is an option - to Cygwin on the Windows platform. However, I have little experience - that that configuration and it will not be discussed in this README - file. + NuttX requires a POSIX development environment such as you would find under + Linux or OSX. NuttX may be also be installed and built on Windows system + if you also provde such a POSIX development environment. Options for a + POSIX development environment under Windows include: - Instructions for installation of Cygwin on Windows system are provided - in the following paragraph. + - An installation of Linux on a virtual machine (VM) in Windows. I have + not been happy using a VM myself. I have had stability problems with + open source VMs and commercial VMs cost more than I want to spend. + Sharing files with Linux running in a VM is awkward; sharing devices + connected to the Windows box with Linux in a VM is, at the very least, + confusing; Using Windows tools (such as Segger J-Link) with files + built under the Linux VM is not a possibility. - NuttX can also be installed and built on a native Windows system, but - with some potential tool-related issues (see the discussion "Native - Windows Build" below). + - The Cygwin environment. Instructions for installation of Cygwin on a + Windows system are provided in the following paragraph, "Installing + Cygwin". Cygwin is a mature, well-tested, and very convenient + environment. It is especially expecially convenient if you need to + integrate with Windows tools and files. Downsides are that the + installation time is very long and the compile times are slow. + + - Ubuntu/Bash shell under Windows 10. This is a new option under + Windows 10. See the section "Ubuntu Bash under Windows 10" below. + This is an improvement over Cygwin if your concern is compile time; + its build performance is comparable to native Linux, certainly better + than the Cygwin build time. It also installs in a tiny fraction of + the time as Cygwin, perhaps 20 minutes for the basic Ubuntu install + (vs. more than a day for the complete Cygwin install). + + - The MSYS environment. I have no experience using the MSYS environment + and that configuration will not be discussed in this README file. + See http://www.mingw.org/wiki/MSYS if you are interested in + using MSYS. People report to me that they have used MSYS + successfully. I suppose that the advantages of the MSYS environemnt + is that it is closer to a native Windows environment and uses only a + minimal of add-on POSIX-land tools. + + - NuttX can also be installed and built on a native Windows system, but + with some potential tool-related issues (see the discussion "Native + Windows Build" under "Building NuttX" below). GNUWin32 is used to + provide compatible native windows tools. Installing Cygwin ----------------- @@ -84,6 +114,9 @@ Installing Cygwin "Publishing". You can try omitting KDE, Gnome, GTK, and other graphics packages if you don't plan to use them. + Perhaps a minimum set would be those packages listed below for the + "Ubuntu Bash under Windows 10" installation? + After installing Cygwin, you will get lots of links for installed tools and shells. I use the RXVT native shell. It is fast and reliable and does not require you to run the Cygwin X server (which is neither @@ -95,6 +128,136 @@ Installing Cygwin about 5GiB. The server I selected was also very slow so it took over a day to do the whole install! +Ubuntu Bash under Windows 10 +---------------------------- + + A better version of a command-line only Ubuntu under Windows 10 (beta) + has recently been made available from Microsoft. + + Installation + ------------ + Installation instructions abound on the Internet complete with screen + shots. I will attempt to duplicate those instructions in full here. + Here are the simplified installation steps: + + - Open "Settings". + - Click on "Update & security". + - Click on "For Developers". + - Under "Use developer features", select the "Developer mode" option to + setup the environment to install Bash. + - A message box should pop up. Click "Yes" to turn on developer mode. + - After the necessary components install, you'll need to restart your + computer. + + Once your computer reboots: + + - Open "Control Panel". + - Click on "Programs". + - Click on "Turn Windows features on or off". + - A list of features will pop up, check the "Windows Subsystem for Linux + (beta)" option. + - Click OK. + - Once the components installed on your computer, click the "Restart + now" button to complete the task. + + After your computer restarts, you will notice that Bash will not appear in + the "Recently added" list of apps, this is because Bash isn't actually + installed yet. Now that you have setup the necessary components, use the + following steps to complete the installation of Bash: + + - Open "Start", do a search for bash.exe, and press "Enter". + - On the command prompt, type y and press Enter to download and install + Bash from the Windows Store. This will take awhile. + - Then you'll need to create a default UNIX user account. This account + doesn't have to be the same as your Windows account. Enter the + username in the required field and press Enter (you can't use the + username "admin"). + - Close the "bash.exe" command prompt. + + Now that you completed the installation and setup, you can open the Bash + tool from the Start menu like you would with any other app. + + Accessing Windows Files from Ubuntu + ----------------------------------- + File sysems will be mounted under "/mnt" so for example "C:\Program Files" + appears at "/mnt/c/Program Files". This is as opposed to Cgwin where + the same directory would appear at "/cygdrive/c/Program Files". + + With these differences (perhaps a few other Windows quirks) the Ubuntu + install works just like Ubuntu running natively on your PC. + + Accessing Ubuntu Files From Windows + ----------------------------------- + In Ubuntu Userspace for Windows, the Ubuntu file system root directory is + at: + + %localappdata%\lxss\rootfs + + Or + + C:\Users\Username\AppData\Local\lxss\rootfs + + Install Linux Software. + ----------------------- + Use "sudo apt-get install ". As examples, this is how + you would get GIT: + + $ sudo apt-get install git + + This will get you a compiler for your host PC: + + $ sudo apt-get install gcc + + This will get you an ARM compiler for your target: + + $ sudo apt-get install gcc-arm-none-eabi + + NOTE: That is just an example. I am not sure if apt-get will give you a + current or usable compiler. You should carefully select your toolchain + for the needs of your project.] + + You will also need to the get the kconfig-frontends configuration as + described below under "NuttX Configuration tool". In order build the + kconfig-frontends configuration tool you will also need: make, gperf, + flex, bison, and libncurses-dev. + + That is enough to do a basic NuttX build. + + Integrating with Windows Tools + ------------------------------ + If you want to integrate with Windows native tools, then you would need + deal with the same kind of craziness as with integrating Cygwin with + native toolchains, see the section "Cygwin Build Problems" below. + + However, there is currently no build support for using Windows native + tools with Ubuntu under Windows. This tool combination is made to work + with Cygwin through the use of the 'cygpath -w' tool that converts paths + from say '/cydrive/c/Program Files' to 'C:\Program Files'. There is, + however, no corresponding tool to convert '/mnt/c/Program Files' in the + Ubuntu environment. + + Graphics Support + ---------------- + The Ubuntu version support by Microsoft is a command-line only version. + There is no support for Linux graphics utilities. + + This limititation is not a limitation of Ubuntu, however, only in what + Microsoft is willing to support. If you install a X-Server, then you + can also use basic graphics utilities. See for example: + + http://www.howtogeek.com/261575/how-to-run-graphical-linux-desktop-applications-from-windows-10s-bash-shell/ + + Many Linux graphics programs would, however, also require a graphics + framework like GTK or Qt. So this might be a trip down the rabbit hole. + +INSTALLATION +^^^^^^^^^^^^ + + There are two ways to get NuttX: You may download released, stable + tarballs from wither the Bitbucket or Sourceforge download locations. + Or you may get NuttX by cloning the Bitbucket GIT repositories. Let's + consider the released tarballs first: + Download and Unpack ------------------- @@ -105,6 +268,11 @@ Download and Unpack match the various instructions in the documentation and some scripts in the source tree. + Download locations: + + https://bitbucket.org/nuttx/nuttx/downloads + https://sourceforge.net/projects/nuttx/files/nuttx/ + Semi-Optional apps/ Package --------------------------- diff --git a/arch/arm/src/arm/Kconfig b/arch/arm/src/arm/Kconfig index 53f0958b2e..4b9ce18551 100644 --- a/arch/arm/src/arm/Kconfig +++ b/arch/arm/src/arm/Kconfig @@ -7,8 +7,8 @@ comment "ARM Configuration Options" choice prompt "Toolchain Selection" - default ARM_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS - default ARM_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS + default ARM_TOOLCHAIN_GNU_EABIW if TOOLCHAIN_WINDOWS + default ARM_TOOLCHAIN_GNU_EABIL if !TOOLCHAIN_WINDOWS config ARM_TOOLCHAIN_BUILDROOT bool "Buildroot (Cygwin or Linux)" @@ -24,11 +24,11 @@ config ARM_TOOLCHAIN_CODESOURCERYL config ARM_TOOLCHAIN_CODESOURCERYW bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARM_TOOLCHAIN_DEVKITARM bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARM_TOOLCHAIN_GNU_EABIL bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)" @@ -38,7 +38,7 @@ config ARM_TOOLCHAIN_GNU_EABIL config ARM_TOOLCHAIN_GNU_EABIW bool "Generic GNU EABI toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) configured for arm-none-eabi-. diff --git a/arch/arm/src/armv6-m/Kconfig b/arch/arm/src/armv6-m/Kconfig index ed8b54a8e1..ed56bc9a71 100644 --- a/arch/arm/src/armv6-m/Kconfig +++ b/arch/arm/src/armv6-m/Kconfig @@ -7,12 +7,12 @@ comment "ARMV6M Configuration Options" choice prompt "Toolchain Selection" - default ARMV6M_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS - default ARMV6M_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS + default ARMV6M_TOOLCHAIN_GNU_EABIW if TOOLCHAIN_WINDOWS + default ARMV6M_TOOLCHAIN_GNU_EABIL if !TOOLCHAIN_WINDOWS config ARMV6M_TOOLCHAIN_ATOLLIC bool "Atollic Lite/Pro for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV6M_TOOLCHAIN_BUILDROOT bool "Buildroot (Cygwin or Linux)" @@ -24,7 +24,7 @@ config ARMV6M_TOOLCHAIN_CODEREDL config ARMV6M_TOOLCHAIN_CODEREDW bool "CodeRed for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV6M_TOOLCHAIN_CODESOURCERYL bool "CodeSourcery GNU toolchain under Linux" @@ -32,11 +32,11 @@ config ARMV6M_TOOLCHAIN_CODESOURCERYL config ARMV6M_TOOLCHAIN_CODESOURCERYW bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV6M_TOOLCHAIN_DEVKITARM bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV6M_TOOLCHAIN_GNU_EABIL bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)" @@ -46,7 +46,7 @@ config ARMV6M_TOOLCHAIN_GNU_EABIL config ARMV6M_TOOLCHAIN_GNU_EABIW bool "Generic GNU EABI toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) configured for arm-none-eabi. diff --git a/arch/arm/src/armv7-a/Kconfig b/arch/arm/src/armv7-a/Kconfig index 85ad10bbee..312ed8d441 100644 --- a/arch/arm/src/armv7-a/Kconfig +++ b/arch/arm/src/armv7-a/Kconfig @@ -128,8 +128,8 @@ endif # ARMV7A_HAVE_L2CC choice prompt "Toolchain Selection" - default ARMV7A_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS - default ARMV7A_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS + default ARMV7A_TOOLCHAIN_GNU_EABIW if TOOLCHAIN_WINDOWS + default ARMV7A_TOOLCHAIN_GNU_EABIL if !TOOLCHAIN_WINDOWS config ARMV7A_TOOLCHAIN_BUILDROOT bool "Buildroot (Cygwin or Linux)" @@ -145,11 +145,11 @@ config ARMV7A_TOOLCHAIN_CODESOURCERYL config ARMV7A_TOOLCHAIN_CODESOURCERYW bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV7A_TOOLCHAIN_DEVKITARM bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV7A_TOOLCHAIN_GNU_EABIL bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)" @@ -159,7 +159,7 @@ config ARMV7A_TOOLCHAIN_GNU_EABIL config ARMV7A_TOOLCHAIN_GNU_EABIW bool "Generic GNU EABI toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) configured for arm-none-eabi-. diff --git a/arch/arm/src/armv7-m/Kconfig b/arch/arm/src/armv7-m/Kconfig index 404dce0753..4c66b55d54 100644 --- a/arch/arm/src/armv7-m/Kconfig +++ b/arch/arm/src/armv7-m/Kconfig @@ -48,12 +48,12 @@ config ARMV7M_DTCM choice prompt "Toolchain Selection" - default ARMV7M_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS - default ARMV7M_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS + default ARMV7M_TOOLCHAIN_GNU_EABIW if TOOLCHAIN_WINDOWS + default ARMV7M_TOOLCHAIN_GNU_EABIL if !TOOLCHAIN_WINDOWS config ARMV7M_TOOLCHAIN_IARW bool "IAR for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_IAR config ARMV7M_TOOLCHAIN_IARL @@ -63,7 +63,7 @@ config ARMV7M_TOOLCHAIN_IARL config ARMV7M_TOOLCHAIN_ATOLLIC bool "Atollic Lite/Pro for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU config ARMV7M_TOOLCHAIN_BUILDROOT @@ -78,7 +78,7 @@ config ARMV7M_TOOLCHAIN_CODEREDL config ARMV7M_TOOLCHAIN_CODEREDW bool "CodeRed for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU config ARMV7M_TOOLCHAIN_CODESOURCERYL @@ -88,12 +88,12 @@ config ARMV7M_TOOLCHAIN_CODESOURCERYL config ARMV7M_TOOLCHAIN_CODESOURCERYW bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU config ARMV7M_TOOLCHAIN_DEVKITARM bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU config ARMV7M_TOOLCHAIN_GNU_EABIL @@ -106,7 +106,7 @@ config ARMV7M_TOOLCHAIN_GNU_EABIL config ARMV7M_TOOLCHAIN_GNU_EABIW bool "Generic GNU EABI toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) @@ -114,7 +114,7 @@ config ARMV7M_TOOLCHAIN_GNU_EABIW config ARMV7M_TOOLCHAIN_RAISONANCE bool "STMicro Raisonance for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS select ARM_TOOLCHAIN_GNU endchoice diff --git a/arch/arm/src/armv7-r/Kconfig b/arch/arm/src/armv7-r/Kconfig index 1f46770cb6..03012b5da2 100644 --- a/arch/arm/src/armv7-r/Kconfig +++ b/arch/arm/src/armv7-r/Kconfig @@ -144,8 +144,8 @@ endif # ARMV7R_HAVE_L2CC choice prompt "Toolchain Selection" - default ARMV7R_TOOLCHAIN_GNU_EABIW if HOST_WINDOWS - default ARMV7R_TOOLCHAIN_GNU_EABIL if !HOST_WINDOWS + default ARMV7R_TOOLCHAIN_GNU_EABIW if TOOLCHAIN_WINDOWS + default ARMV7R_TOOLCHAIN_GNU_EABIL if !TOOLCHAIN_WINDOWS config ARMV7R_TOOLCHAIN_BUILDROOT bool "Buildroot (Cygwin or Linux)" @@ -161,11 +161,11 @@ config ARMV7R_TOOLCHAIN_CODESOURCERYL config ARMV7R_TOOLCHAIN_CODESOURCERYW bool "CodeSourcery GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV7R_TOOLCHAIN_DEVKITARM bool "devkitARM GNU toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config ARMV7R_TOOLCHAIN_GNU_EABIL bool "Generic GNU EABI toolchain under Linux (or other POSIX environment)" @@ -175,7 +175,7 @@ config ARMV7R_TOOLCHAIN_GNU_EABIL config ARMV7R_TOOLCHAIN_GNU_EABIW bool "Generic GNU EABI toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) configured for arm-none-eabi-. diff --git a/arch/arm/src/stm32/stm32_sdio.c b/arch/arm/src/stm32/stm32_sdio.c index 860eff8b9c..58071e84f4 100644 --- a/arch/arm/src/stm32/stm32_sdio.c +++ b/arch/arm/src/stm32/stm32_sdio.c @@ -2574,11 +2574,11 @@ static bool stm32_dmasupported(FAR struct sdio_dev_s *dev) static int stm32_dmapreflight(FAR struct sdio_dev_s *dev, FAR const uint8_t *buffer, size_t buflen) { +#if !defined(CONFIG_STM32_STM32F40XX) struct stm32_dev_s *priv = (struct stm32_dev_s *)dev; DEBUGASSERT(priv != NULL && buffer != NULL && buflen > 0); -#if !defined(CONFIG_STM32_STM32F40XX) /* Wide bus operation is required for DMA */ if (!priv->widebus) diff --git a/arch/avr/src/avr/Kconfig b/arch/avr/src/avr/Kconfig index 496529f32c..2ddfa4e194 100644 --- a/arch/avr/src/avr/Kconfig +++ b/arch/avr/src/avr/Kconfig @@ -8,13 +8,13 @@ comment "AVR Configuration Options" choice prompt "Toolchain" - default AVR_WINAVR_TOOLCHAIN if HOST_WINDOWS + default AVR_WINAVR_TOOLCHAIN if TOOLCHAIN_WINDOWS default AVR_BUILDROOT_TOOLCHAIN if HOST_LINUX default AVR_CROSSPACK_TOOLCHAIN if HOST_OSX config AVR_WINAVR_TOOLCHAIN bool "WinAVR" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- For Cygwin development environment on Windows machines, you can use WinAVR: http://sourceforge.net/projects/winavr/files/ @@ -29,7 +29,7 @@ config AVR_WINAVR_TOOLCHAIN config AVR_ATMEL_AVR_TOOLCHAIN bool "Atmel AVR Toolchain" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- Atmel provides GNU Toolchain for AVR development. It can be obtained by installing Atmel Studio 6 and later or @@ -55,7 +55,6 @@ config AVR_CROSSPACK_TOOLCHAIN config AVR_BUILDROOT_TOOLCHAIN bool "Buildroot" - depends on HOST_LINUX || HOST_WINDOWS ---help--- There is a DIY buildroot version for the AVR boards here: http://sourceforge.net/projects/nuttx/files/buildroot/. See diff --git a/arch/avr/src/avr32/Kconfig b/arch/avr/src/avr32/Kconfig index 14d5c0f33b..05a056b698 100644 --- a/arch/avr/src/avr32/Kconfig +++ b/arch/avr/src/avr32/Kconfig @@ -8,12 +8,12 @@ comment "AVR32 Configuration Options" choice prompt "Toolchain" - default AVR32_AVRTOOLSW if HOST_WINDOWS + default AVR32_AVRTOOLSW if TOOLCHAIN_WINDOWS default AVR32_AVRTOOLSL if HOST_LINUX config AVR32_AVRTOOLSW bool "AVR tools for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config AVR32_AVRTOOLSL bool "AVR tools for Linux" diff --git a/arch/mips/src/mips32/Kconfig b/arch/mips/src/mips32/Kconfig index 228c28557f..5363ecbd54 100644 --- a/arch/mips/src/mips32/Kconfig +++ b/arch/mips/src/mips32/Kconfig @@ -8,8 +8,8 @@ comment "MIPS32 Configuration Options" choice prompt "Toolchain Selection" - default MIPS32_TOOLCHAIN_MICROCHIPW_LITE if HOST_WINDOWS - default MIPS32_TOOLCHAIN_GNU_ELF if !HOST_WINDOWS + default MIPS32_TOOLCHAIN_MICROCHIPW_LITE if TOOLCHAIN_WINDOWS + default MIPS32_TOOLCHAIN_GNU_ELF if !TOOLCHAIN_WINDOWS config MIPS32_TOOLCHAIN_GNU_ELF bool "Generic GNU ELF toolchain" @@ -31,15 +31,15 @@ config MIPS32_TOOLCHAIN_MICROCHIPL_LITE config MIPS32_TOOLCHAIN_MICROCHIPW_XC32 bool "Microchip XC32 toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config MIPS32_TOOLCHAIN_MICROCHIPW bool "Microchip C32 toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config MIPS32_TOOLCHAIN_MICROCHIPW_LITE bool "Microchip C32 toolchain under Windows (Lite edition)" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config MIPS32_TOOLCHAIN_MICROCHIPOPENL bool "microchipOpen toolchain under Linux" @@ -47,7 +47,7 @@ config MIPS32_TOOLCHAIN_MICROCHIPOPENL config MIPS32_TOOLCHAIN_PINGUINOW bool "Pinguino mips-elf toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS config MIPS32_TOOLCHAIN_PINGUINOL bool "Pinguino mips-elf toolchain under OS X or Linux" diff --git a/arch/misoc/src/lm32/Kconfig b/arch/misoc/src/lm32/Kconfig index b9178978e7..c10407ef28 100644 --- a/arch/misoc/src/lm32/Kconfig +++ b/arch/misoc/src/lm32/Kconfig @@ -7,8 +7,8 @@ if ARCH_CHIP_LM32 choice prompt "Toolchain Selection" - default LM32_TOOLCHAIN_GNUW if HOST_WINDOWS - default LM32_TOOLCHAIN_GNUL if !HOST_WINDOWS + default LM32_TOOLCHAIN_GNUW if TOOLCHAIN_WINDOWS + default LM32_TOOLCHAIN_GNUL if !TOOLCHAIN_WINDOWS config LM32_TOOLCHAIN_BUILDROOT bool "Buildroot (Cygwin or Linux)" @@ -22,7 +22,7 @@ config LM32_TOOLCHAIN_GNUL config LM32_TOOLCHAIN_GNUW bool "Generic GNU toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 4.5 or newer) configured for lm32-elf-. diff --git a/arch/risc-v/src/rv32im/Kconfig b/arch/risc-v/src/rv32im/Kconfig index 9bc4b560f5..e1607047b0 100644 --- a/arch/risc-v/src/rv32im/Kconfig +++ b/arch/risc-v/src/rv32im/Kconfig @@ -7,8 +7,8 @@ comment "RV32IM Configuration Options" choice prompt "Toolchain Selection" - default RV32IM_TOOLCHAIN_GNU_RVGW if HOST_WINDOWS - default RV32IM_TOOLCHAIN_GNU_RVGL if !HOST_WINDOWS + default RV32IM_TOOLCHAIN_GNU_RVGW if TOOLCHAIN_WINDOWS + default RV32IM_TOOLCHAIN_GNU_RVGL if !TOOLCHAIN_WINDOWS config RV32IM_TOOLCHAIN_GNU_RVGL bool "Generic GNU RVG toolchain under Linux (or other POSIX environment)" @@ -18,7 +18,7 @@ config RV32IM_TOOLCHAIN_GNU_RVGL config RV32IM_TOOLCHAIN_GNU_RVGW bool "Generic GNU RVG toolchain under Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS ---help--- This option should work for any modern GNU toolchain (GCC 5.2 or newer) configured for riscv32-unknown-elf. diff --git a/arch/sim/Kconfig b/arch/sim/Kconfig index 975d0449a5..5168c7796e 100644 --- a/arch/sim/Kconfig +++ b/arch/sim/Kconfig @@ -37,7 +37,7 @@ config SIM_CYGWIN_DECORATED default n depends on WINDOWS_CYGWIN ---help--- - Older versions of Cygwin toolsdecorated C symbol names by adding an + Older versions of Cygwin tools decorated C symbol names by adding an underscore to the beginning of the symbol name. Newer versions of Cygwin do not seem to do this. diff --git a/arch/z80/src/z180/Kconfig b/arch/z80/src/z180/Kconfig index ce26721f76..f2359d4694 100644 --- a/arch/z80/src/z180/Kconfig +++ b/arch/z80/src/z180/Kconfig @@ -7,8 +7,8 @@ if ARCH_CHIP_Z180 choice prompt "Toolchain Selection" - default Z180_TOOLCHAIN_SDCCW if HOST_WINDOWS - default Z180_TOOLCHAIN_SDCCL if !HOST_WINDOWS + default Z180_TOOLCHAIN_SDCCW if TOOLCHAIN_WINDOWS + default Z180_TOOLCHAIN_SDCCL if !TOOLCHAIN_WINDOWS config Z180_TOOLCHAIN_SDCCL bool "SDCC for Linux, MAC OSX, or Cygwin" @@ -16,7 +16,7 @@ config Z180_TOOLCHAIN_SDCCL config Z180_TOOLCHAIN_SDCCW bool "SDCC for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS endchoice diff --git a/arch/z80/src/z80/Kconfig b/arch/z80/src/z80/Kconfig index 7a05eb08ef..46b9f8c08a 100644 --- a/arch/z80/src/z80/Kconfig +++ b/arch/z80/src/z80/Kconfig @@ -7,8 +7,8 @@ if ARCH_CHIP_Z80 choice prompt "Toolchain Selection" - default Z80_TOOLCHAIN_SDCCW if HOST_WINDOWS - default Z80_TOOLCHAIN_SDCCL if !HOST_WINDOWS + default Z80_TOOLCHAIN_SDCCW if TOOLCHAIN_WINDOWS + default Z80_TOOLCHAIN_SDCCL if !TOOLCHAIN_WINDOWS config Z80_TOOLCHAIN_SDCCL bool "SDCC for Linux, MAC OSX, or Cygwin" @@ -16,7 +16,7 @@ config Z80_TOOLCHAIN_SDCCL config Z80_TOOLCHAIN_SDCCW bool "SDCC for Windows" - depends on HOST_WINDOWS + depends on TOOLCHAIN_WINDOWS endchoice diff --git a/graphics/Kconfig b/graphics/Kconfig index 6264f3da29..4347326f84 100644 --- a/graphics/Kconfig +++ b/graphics/Kconfig @@ -555,6 +555,13 @@ config NXFONT_X11_MISC_FIXED_10X20 This option enables support for a "x11-misc-fixed-10x20". (font ID FONTID_X11_MISC_FIXED_10X20 == 42). +config NXFONT_TOM_THUMB_4X6 + bool "Tom Thumb Monospace 4x6" + default n + ---help--- + This option enables support for a small, 3x5 font (with blank space + padding to 4x6) (font ID FONTID_TOM_THUMB_4X6 == 43). + endmenu menuconfig NXTERM diff --git a/include/nuttx/nx/nxfonts.h b/include/nuttx/nx/nxfonts.h index 5d5dcf0d36..aca51a0874 100644 --- a/include/nuttx/nx/nxfonts.h +++ b/include/nuttx/nx/nxfonts.h @@ -1,7 +1,7 @@ /**************************************************************************** * include/nuttx/nx/nxfonts.h * - * Copyright (C) 2008, 2009, 2011, 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2008, 2009, 2011, 2015, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -50,6 +50,7 @@ /**************************************************************************** * Pre-processor definitions ****************************************************************************/ + /* Select the default font. If no fonts are selected, then a compilation * error is likely down the road. */ @@ -194,6 +195,11 @@ #elif defined(CONFIG_NXFONT_MONO5X8) # define NXFONT_DEFAULT FONTID_MONO5X8 +/* Tom Thumb mono-space 4x6 font */ + +#elif defined(CONFIG_NXFONT_TOM_THUMB_4X6) +# define NXFONT_DEFAULT FONTID_TOM_THUMB_4X6 + #endif /**************************************************************************** @@ -387,6 +393,10 @@ enum nx_fontid_e #ifdef CONFIG_NXFONT_X11_MISC_FIXED_10X20 , FONTID_X11_MISC_FIXED_10X20 = 42 /* X11 misc fixed 10x20 */ #endif + +#ifdef CONFIG_NXFONT_TOM_THUMB_4X6 + , FONTID_TOM_THUMB_4X6 = 43 /* Tom Thumb monospace 4x6 */ +#endif }; /* This structures provides the metrics for one glyph */ diff --git a/libnx/Makefile b/libnx/Makefile index 295d64e85d..af0da579f4 100644 --- a/libnx/Makefile +++ b/libnx/Makefile @@ -225,6 +225,10 @@ ifeq ($(CONFIG_NXFONT_X11_MISC_FIXED_10X20),y) $(Q) $(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=42 EXTRADEFINES=$(EXTRADEFINES) endif +ifeq ($(CONFIG_NXFONT_TOM_THUMB_4X6),y) + $(Q) $(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=43 EXTRADEFINES=$(EXTRADEFINES) +endif + gensources: gen1bppsources gen2bppsource gen4bppsource gen8bppsource gen16bppsource gen24bppsource gen32bppsources genfontsources $(AOBJS): $(BINDIR)$(DELIM)%$(OBJEXT): %.S diff --git a/libnx/nxfonts/Make.defs b/libnx/nxfonts/Make.defs index cc3bb80f81..9403f08bdd 100644 --- a/libnx/nxfonts/Make.defs +++ b/libnx/nxfonts/Make.defs @@ -1,7 +1,7 @@ ############################################################################ # libnx/nxfonts/Make.defs # -# Copyright (C) 2008, 2013 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2013, 2017 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -225,7 +225,11 @@ ifeq ($(CONFIG_NXFONT_X11_MISC_FIXED_10X20),y) CSRCS += nxfonts_bitmaps_x11-misc-fixed-10x20.c endif +# Tom Thumb mono-space 4x6 font +ifeq ($(CONFIG_NXFONT_TOM_THUMB_4X6),y) +CSRCS += nxfonts_tom-thumb-4x6.c +endif # Add the nxfont/ directory to the build diff --git a/libnx/nxfonts/Makefile.sources b/libnx/nxfonts/Makefile.sources index 7df446bda0..5c079cddcc 100644 --- a/libnx/nxfonts/Makefile.sources +++ b/libnx/nxfonts/Makefile.sources @@ -1,7 +1,7 @@ ############################################################################ # libnx/nxfonts/Makefile.sources # -# Copyright (C) 2008, 2013 Gregory Nutt. All rights reserved. +# Copyright (C) 2008, 2013, 2017 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -296,6 +296,12 @@ NXFONTS_PREFIX := g_x11_misc_fixed_10x20_ GEN_CSRC = nxfonts_bitmaps_x11-misc-fixed-10x20.c endif +# Tom Thumb mono-space 4x6 font + +ifeq ($(NXFONTS_FONTID),43) +NXFONTS_PREFIX := g_tom_thumb_4x6_ +GEN_CSRC = nxfonts_tom-thumb-4x6.c +endif DEPENDENCY := nxfonts_bitmaps.c CPPFLAGS += -DNXFONTS_FONTID=$(NXFONTS_FONTID) diff --git a/libnx/nxfonts/nxfonts.h b/libnx/nxfonts/nxfonts.h index 1e3fa18bb3..1d8a348903 100644 --- a/libnx/nxfonts/nxfonts.h +++ b/libnx/nxfonts/nxfonts.h @@ -54,10 +54,6 @@ # define CONFIG_NXFONTS_CHARBITS 7 #endif -/**************************************************************************** - * Public Types - ****************************************************************************/ - /**************************************************************************** * Public Data ****************************************************************************/ @@ -65,7 +61,8 @@ #undef EXTERN #if defined(__cplusplus) # define EXTERN extern "C" -extern "C" { +extern "C" +{ #else # define EXTERN extern #endif diff --git a/libnx/nxfonts/nxfonts_bitmaps.c b/libnx/nxfonts/nxfonts_bitmaps.c index 28e6aa18dc..b9a6fc1ca4 100644 --- a/libnx/nxfonts/nxfonts_bitmaps.c +++ b/libnx/nxfonts/nxfonts_bitmaps.c @@ -130,6 +130,8 @@ # include "nxfonts_x11-misc-fixed-9x18B.h" #elif NXFONTS_FONTID == 42 # include "nxfonts_x11-misc-fixed-10x20.h" +#elif NXFONTS_FONTID == 43 +# include "nxfonts_tom-thumb-4x6.h" #else # error "No font ID specified" #endif diff --git a/libnx/nxfonts/nxfonts_getfont.c b/libnx/nxfonts/nxfonts_getfont.c index 1e8f80edc2..afe0f7bc68 100644 --- a/libnx/nxfonts/nxfonts_getfont.c +++ b/libnx/nxfonts/nxfonts_getfont.c @@ -1,7 +1,7 @@ /**************************************************************************** * libnx/nxfonts/nxfonts_getfont.c * - * Copyright (C) 2008-2009, 2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2008-2009, 2011, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -48,14 +48,6 @@ #include "nxfonts.h" -/**************************************************************************** - * Pre-Processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Types - ****************************************************************************/ - /**************************************************************************** * Private Data ****************************************************************************/ @@ -246,9 +238,12 @@ extern const struct nx_fontpackage_s g_x11_misc_fixed_9x18B_package; extern const struct nx_fontpackage_s g_x11_misc_fixed_10x20_package; #endif +#ifdef CONFIG_NXFONT_TOM_THUMB_4X6 +extern const struct nx_fontpackage_s g_tom_thumb_4x6_package; +#endif + static FAR const struct nx_fontpackage_s *g_fontpackages[] = { - /* MONO */ #ifdef CONFIG_NXFONT_MONO5X8 @@ -431,13 +426,15 @@ static FAR const struct nx_fontpackage_s *g_fontpackages[] = &g_x11_misc_fixed_10x20_package, #endif +/* Tom Thumb mono-space 4x6 font */ + +#ifdef CONFIG_NXFONT_TOM_THUMB_4X6 + &g_tom_thumb_4x6_package, +#endif + NULL }; -/**************************************************************************** - * Public Data - ****************************************************************************/ - /**************************************************************************** * Private Functions ****************************************************************************/ diff --git a/libnx/nxfonts/nxfonts_tom-thumb-4x6.h b/libnx/nxfonts/nxfonts_tom-thumb-4x6.h new file mode 100644 index 0000000000..dcd34efe97 --- /dev/null +++ b/libnx/nxfonts/nxfonts_tom-thumb-4x6.h @@ -0,0 +1,827 @@ +/**************************************************************************** + * libnx/nxfonts/nxfonts_tom-thumb-4x6.h + * + * Copyright (C) 2017 Alan Carvalho de Assis. All rights reserved. + * Author: Alan Carvalho de Assis + * + * Based on Tom Thumb font: + * https://robey.lag.net/2010/01/23/tiny-monospace-font.html + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT} + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING} + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __LIBNX_NXFONTS_NXFONTS_TOM_THUMB_4X6_H +#define __LIBNX_NXFONTS_NXFONTS_TOM_THUMB_4X6_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* Font ID */ + +#define NXFONT_ID FONTID_TOM_THUMB_4X6 + +/* Ranges of 7-bit and 8-bit fonts */ + +#define NXFONT_MIN7BIT 33 +#define NXFONT_MAX7BIT 126 + +#define NXFONT_MIN8BIT 161 +#define NXFONT_MAX8BIT 255 + +/* Maximum height and width of any glyph in the set */ + +#define NXFONT_MAXHEIGHT 6 +#define NXFONT_MAXWIDTH 4 + +/* The width of a space */ + +#define NXFONT_SPACEWIDTH 4 + +/* exclam (33) */ +#define NXFONT_METRICS_33 {1, 2, 5, 1, 0, 0} +#define NXFONT_BITMAP_33 {0x80, 0x80, 0x80, 0x0, 0x80} + +/* quotedbl (34) */ +#define NXFONT_METRICS_34 {1, 4, 2, 0, 0, 0} +#define NXFONT_BITMAP_34 {0xa0, 0xa0} + +/* numbersign (35) */ +#define NXFONT_METRICS_35 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_35 {0xa0, 0xe0, 0xa0, 0xe0, 0xa0} + +/* dollar (36) */ +#define NXFONT_METRICS_36 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_36 {0x60, 0xc0, 0x60, 0xc0, 0x40} + +/* percent (37) */ +#define NXFONT_METRICS_37 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_37 {0x80, 0x20, 0x40, 0x80, 0x20} + +/* ampersand (38) */ +#define NXFONT_METRICS_38 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_38 {0xc0, 0xc0, 0xe0, 0xa0, 0x60} + +/* quotesingle (39) */ +#define NXFONT_METRICS_39 {1, 2, 2, 1, 0, 0} +#define NXFONT_BITMAP_39 {0x80, 0x80} + +/* parenleft (40) */ +#define NXFONT_METRICS_40 {1, 3, 5, 1, 0, 0} +#define NXFONT_BITMAP_40 {0x40, 0x80, 0x80, 0x80, 0x40} + +/* parenright (41) */ +#define NXFONT_METRICS_41 {1, 3, 5, 0, 0, 0} +#define NXFONT_BITMAP_41 {0x80, 0x40, 0x40, 0x40, 0x80} + +/* asterisk (42) */ +#define NXFONT_METRICS_42 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_42 {0xa0, 0x40, 0xa0} + +/* plus (43) */ +#define NXFONT_METRICS_43 {1, 4, 3, 0, 1, 0} +#define NXFONT_BITMAP_43 {0x40, 0xe0, 0x40} + +/* comma (44) */ +#define NXFONT_METRICS_44 {1, 3, 2, 0, 3, 0} +#define NXFONT_BITMAP_44 {0x40, 0x80} + +/* hyphen (45) */ +#define NXFONT_METRICS_45 {1, 4, 1, 0, 2, 0} +#define NXFONT_BITMAP_45 {0xe0} + +/* period (46) */ +#define NXFONT_METRICS_46 {1, 2, 1, 1, 4, 0} +#define NXFONT_BITMAP_46 {0x80} + +/* slash (47) */ +#define NXFONT_METRICS_47 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_47 {0x20, 0x20, 0x40, 0x80, 0x80} + +/* zero (48) */ +#define NXFONT_METRICS_48 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_48 {0x60, 0xa0, 0xa0, 0xa0, 0xc0} + +/* one (49) */ +#define NXFONT_METRICS_49 {1, 3, 5, 0, 0, 0} +#define NXFONT_BITMAP_49 {0x40, 0xc0, 0x40, 0x40, 0x40} + +/* two (50) */ +#define NXFONT_METRICS_50 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_50 {0xc0, 0x20, 0x40, 0x80, 0xe0} + +/* three (51) */ +#define NXFONT_METRICS_51 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_51 {0xc0, 0x20, 0x40, 0x20, 0xc0} + +/* four (52) */ +#define NXFONT_METRICS_52 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_52 {0xa0, 0xa0, 0xe0, 0x20, 0x20} + +/* five (53) */ +#define NXFONT_METRICS_53 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_53 {0xe0, 0x80, 0xc0, 0x20, 0xc0} + +/* six (54) */ +#define NXFONT_METRICS_54 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_54 {0x60, 0x80, 0xe0, 0xa0, 0xe0} + +/* seven (55) */ +#define NXFONT_METRICS_55 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_55 {0xe0, 0x20, 0x40, 0x80, 0x80} + +/* eight (56) */ +#define NXFONT_METRICS_56 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_56 {0xe0, 0xa0, 0xe0, 0xa0, 0xe0} + +/* nine (57) */ +#define NXFONT_METRICS_57 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_57 {0xe0, 0xa0, 0xe0, 0x20, 0xc0} + +/* colon (58) */ +#define NXFONT_METRICS_58 {1, 2, 3, 1, 1, 0} +#define NXFONT_BITMAP_58 {0x80, 0x0, 0x80} + +/* semicolon (59) */ +#define NXFONT_METRICS_59 {1, 3, 4, 0, 1, 0} +#define NXFONT_BITMAP_59 {0x40, 0x0, 0x40, 0x80} + +/* less (60) */ +#define NXFONT_METRICS_60 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_60 {0x20, 0x40, 0x80, 0x40, 0x20} + +/* equal (61) */ +#define NXFONT_METRICS_61 {1, 4, 3, 0, 1, 0} +#define NXFONT_BITMAP_61 {0xe0, 0x0, 0xe0} + +/* greater (62) */ +#define NXFONT_METRICS_62 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_62 {0x80, 0x40, 0x20, 0x40, 0x80} + +/* question (63) */ +#define NXFONT_METRICS_63 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_63 {0xe0, 0x20, 0x40, 0x0, 0x40} + +/* at (64) */ +#define NXFONT_METRICS_64 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_64 {0x40, 0xa0, 0xe0, 0x80, 0x60} + +/* A (65) */ +#define NXFONT_METRICS_65 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_65 {0x40, 0xa0, 0xe0, 0xa0, 0xa0} + +/* B (66) */ +#define NXFONT_METRICS_66 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_66 {0xc0, 0xa0, 0xc0, 0xa0, 0xc0} + +/* C (67) */ +#define NXFONT_METRICS_67 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_67 {0x60, 0x80, 0x80, 0x80, 0x60} + +/* D (68) */ +#define NXFONT_METRICS_68 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_68 {0xc0, 0xa0, 0xa0, 0xa0, 0xc0} + +/* E (69) */ +#define NXFONT_METRICS_69 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_69 {0xe0, 0x80, 0xe0, 0x80, 0xe0} + +/* F (70) */ +#define NXFONT_METRICS_70 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_70 {0xe0, 0x80, 0xe0, 0x80, 0x80} + +/* G (71) */ +#define NXFONT_METRICS_71 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_71 {0x60, 0x80, 0xe0, 0xa0, 0x60} + +/* H (72) */ +#define NXFONT_METRICS_72 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_72 {0xa0, 0xa0, 0xe0, 0xa0, 0xa0} + +/* I (73) */ +#define NXFONT_METRICS_73 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_73 {0xe0, 0x40, 0x40, 0x40, 0xe0} + +/* J (74) */ +#define NXFONT_METRICS_74 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_74 {0x20, 0x20, 0x20, 0xa0, 0x40} + +/* K (75) */ +#define NXFONT_METRICS_75 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_75 {0xa0, 0xa0, 0xc0, 0xa0, 0xa0} + +/* L (76) */ +#define NXFONT_METRICS_76 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_76 {0x80, 0x80, 0x80, 0x80, 0xe0} + +/* M (77) */ +#define NXFONT_METRICS_77 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_77 {0xa0, 0xe0, 0xe0, 0xa0, 0xa0} + +/* N (78) */ +#define NXFONT_METRICS_78 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_78 {0xa0, 0xe0, 0xe0, 0xe0, 0xa0} + +/* O (79) */ +#define NXFONT_METRICS_79 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_79 {0x40, 0xa0, 0xa0, 0xa0, 0x40} + +/* P (80) */ +#define NXFONT_METRICS_80 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_80 {0xc0, 0xa0, 0xc0, 0x80, 0x80} + +/* Q (81) */ +#define NXFONT_METRICS_81 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_81 {0x40, 0xa0, 0xa0, 0xe0, 0x60} + +/* R (82) */ +#define NXFONT_METRICS_82 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_82 {0xc0, 0xa0, 0xe0, 0xc0, 0xa0} + +/* S (83) */ +#define NXFONT_METRICS_83 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_83 {0x60, 0x80, 0x40, 0x20, 0xc0} + +/* T (84) */ +#define NXFONT_METRICS_84 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_84 {0xe0, 0x40, 0x40, 0x40, 0x40} + +/* U (85) */ +#define NXFONT_METRICS_85 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_85 {0xa0, 0xa0, 0xa0, 0xa0, 0x60} + +/* V (86) */ +#define NXFONT_METRICS_86 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_86 {0xa0, 0xa0, 0xa0, 0x40, 0x40} + +/* W (87) */ +#define NXFONT_METRICS_87 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_87 {0xa0, 0xa0, 0xe0, 0xe0, 0xa0} + +/* X (88) */ +#define NXFONT_METRICS_88 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_88 {0xa0, 0xa0, 0x40, 0xa0, 0xa0} + +/* Y (89) */ +#define NXFONT_METRICS_89 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_89 {0xa0, 0xa0, 0x40, 0x40, 0x40} + +/* Z (90) */ +#define NXFONT_METRICS_90 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_90 {0xe0, 0x20, 0x40, 0x80, 0xe0} + +/* bracketleft (91) */ +#define NXFONT_METRICS_91 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_91 {0xe0, 0x80, 0x80, 0x80, 0xe0} + +/* backslash (92) */ +#define NXFONT_METRICS_92 {1, 4, 3, 0, 1, 0} +#define NXFONT_BITMAP_92 {0x80, 0x40, 0x20} + +/* bracketright (93) */ +#define NXFONT_METRICS_93 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_93 {0xe0, 0x20, 0x20, 0x20, 0xe0} + +/* asciicircum (94) */ +#define NXFONT_METRICS_94 {1, 4, 2, 0, 0, 0} +#define NXFONT_BITMAP_94 {0x40, 0xa0} + +/* underscore (95) */ +#define NXFONT_METRICS_95 {1, 4, 1, 0, 4, 0} +#define NXFONT_BITMAP_95 {0xe0} + +/* grave (96) */ +#define NXFONT_METRICS_96 {1, 3, 2, 0, 0, 0} +#define NXFONT_BITMAP_96 {0x80, 0x40} + +/* a (97) */ +#define NXFONT_METRICS_97 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_97 {0xc0, 0x60, 0xa0, 0xe0} + +/* b (98) */ +#define NXFONT_METRICS_98 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_98 {0x80, 0xc0, 0xa0, 0xa0, 0xc0} + +/* c (99) */ +#define NXFONT_METRICS_99 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_99 {0x60, 0x80, 0x80, 0x60} + +/* d (100) */ +#define NXFONT_METRICS_100 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_100 {0x20, 0x60, 0xa0, 0xa0, 0x60} + +/* e (101) */ +#define NXFONT_METRICS_101 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_101 {0x60, 0xa0, 0xc0, 0x60} + +/* f (102) */ +#define NXFONT_METRICS_102 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_102 {0x20, 0x40, 0xe0, 0x40, 0x40} + +/* g (103) */ +#define NXFONT_METRICS_103 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_103 {0x60, 0xa0, 0xe0, 0x20, 0x40} + +/* h (104) */ +#define NXFONT_METRICS_104 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_104 {0x80, 0xc0, 0xa0, 0xa0, 0xa0} + +/* i (105) */ +#define NXFONT_METRICS_105 {1, 2, 5, 1, 0, 0} +#define NXFONT_BITMAP_105 {0x80, 0x0, 0x80, 0x80, 0x80} + +/* j (106) */ +#define NXFONT_METRICS_106 {1, 4, 6, 0, 0, 0} +#define NXFONT_BITMAP_106 {0x20, 0x0, 0x20, 0x20, 0xa0, 0x40} + +/* k (107) */ +#define NXFONT_METRICS_107 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_107 {0x80, 0xa0, 0xc0, 0xc0, 0xa0} + +/* l (108) */ +#define NXFONT_METRICS_108 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_108 {0xc0, 0x40, 0x40, 0x40, 0xe0} + +/* m (109) */ +#define NXFONT_METRICS_109 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_109 {0xe0, 0xe0, 0xe0, 0xa0} + +/* n (110) */ +#define NXFONT_METRICS_110 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_110 {0xc0, 0xa0, 0xa0, 0xa0} + +/* o (111) */ +#define NXFONT_METRICS_111 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_111 {0x40, 0xa0, 0xa0, 0x40} + +/* p (112) */ +#define NXFONT_METRICS_112 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_112 {0xc0, 0xa0, 0xa0, 0xc0, 0x80} + +/* q (113) */ +#define NXFONT_METRICS_113 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_113 {0x60, 0xa0, 0xa0, 0x60, 0x20} + +/* r (114) */ +#define NXFONT_METRICS_114 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_114 {0x60, 0x80, 0x80, 0x80} + +/* s (115) */ +#define NXFONT_METRICS_115 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_115 {0x60, 0xc0, 0x60, 0xc0} + +/* t (116) */ +#define NXFONT_METRICS_116 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_116 {0x40, 0xe0, 0x40, 0x40, 0x60} + +/* u (117) */ +#define NXFONT_METRICS_117 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_117 {0xa0, 0xa0, 0xa0, 0x60} + +/* v (118) */ +#define NXFONT_METRICS_118 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_118 {0xa0, 0xa0, 0xe0, 0x40} + +/* w (119) */ +#define NXFONT_METRICS_119 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_119 {0xa0, 0xe0, 0xe0, 0xe0} + +/* x (120) */ +#define NXFONT_METRICS_120 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_120 {0xa0, 0x40, 0x40, 0xa0} + +/* y (121) */ +#define NXFONT_METRICS_121 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_121 {0xa0, 0xa0, 0x60, 0x20, 0x40} + +/* z (122) */ +#define NXFONT_METRICS_122 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_122 {0xe0, 0x60, 0xc0, 0xe0} + +/* braceleft (123) */ +#define NXFONT_METRICS_123 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_123 {0x60, 0x40, 0x80, 0x40, 0x60} + +/* bar (124) */ +#define NXFONT_METRICS_124 {1, 2, 5, 1, 0, 0} +#define NXFONT_BITMAP_124 {0x80, 0x80, 0x0, 0x80, 0x80} + +/* braceright (125) */ +#define NXFONT_METRICS_125 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_125 {0xc0, 0x40, 0x20, 0x40, 0xc0} + +/* asciitilde (126) */ +#define NXFONT_METRICS_126 {1, 4, 2, 0, 0, 0} +#define NXFONT_BITMAP_126 {0x60, 0xc0} + +/* exclamdown (161) */ +#define NXFONT_METRICS_161 {1, 2, 5, 1, 0, 0} +#define NXFONT_BITMAP_161 {0x80, 0x0, 0x80, 0x80, 0x80} + +/* cent (162) */ +#define NXFONT_METRICS_162 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_162 {0x40, 0xe0, 0x80, 0xe0, 0x40} + +/* sterling (163) */ +#define NXFONT_METRICS_163 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_163 {0x60, 0x40, 0xe0, 0x40, 0xe0} + +/* currency (164) */ +#define NXFONT_METRICS_164 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_164 {0xa0, 0x40, 0xe0, 0x40, 0xa0} + +/* yen (165) */ +#define NXFONT_METRICS_165 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_165 {0xa0, 0xa0, 0x40, 0xe0, 0x40} + +/* brokenbar (166) */ +#define NXFONT_METRICS_166 {1, 2, 5, 1, 0, 0} +#define NXFONT_BITMAP_166 {0x80, 0x80, 0x0, 0x80, 0x80} + +/* section (167) */ +#define NXFONT_METRICS_167 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_167 {0x60, 0x40, 0xa0, 0x40, 0xc0} + +/* dieresis (168) */ +#define NXFONT_METRICS_168 {1, 4, 1, 0, 0, 0} +#define NXFONT_BITMAP_168 {0xa0} + +/* copyright (169) */ +#define NXFONT_METRICS_169 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_169 {0x60, 0x80, 0x60} + +/* ordfeminine (170) */ +#define NXFONT_METRICS_170 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_170 {0x60, 0xa0, 0xe0, 0x0, 0xe0} + +/* guillemotleft (171) */ +#define NXFONT_METRICS_171 {1, 3, 3, 0, 0, 0} +#define NXFONT_BITMAP_171 {0x40, 0x80, 0x40} + +/* logicalnot (172) */ +#define NXFONT_METRICS_172 {1, 4, 2, 0, 1, 0} +#define NXFONT_BITMAP_172 {0xe0, 0x20} + +/* softhyphen (173) */ +#define NXFONT_METRICS_173 {1, 3, 1, 0, 2, 0} +#define NXFONT_BITMAP_173 {0xc0} + +/* registered (174) */ +#define NXFONT_METRICS_174 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_174 {0xc0, 0xc0, 0xa0} + +/* macron (175) */ +#define NXFONT_METRICS_175 {1, 4, 1, 0, 0, 0} +#define NXFONT_BITMAP_175 {0xe0} + +/* degree (176) */ +#define NXFONT_METRICS_176 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_176 {0x40, 0xa0, 0x40} + +/* plusminus (177) */ +#define NXFONT_METRICS_177 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_177 {0x40, 0xe0, 0x40, 0x0, 0xe0} + +/* twosuperior (178) */ +#define NXFONT_METRICS_178 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_178 {0xc0, 0x40, 0x60} + +/* threesuperior (179) */ +#define NXFONT_METRICS_179 {1, 4, 3, 0, 0, 0} +#define NXFONT_BITMAP_179 {0xe0, 0x60, 0xe0} + +/* acute (180) */ +#define NXFONT_METRICS_180 {1, 3, 2, 1, 0, 0} +#define NXFONT_BITMAP_180 {0x40, 0x80} + +/* mu (181) */ +#define NXFONT_METRICS_181 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_181 {0xa0, 0xa0, 0xa0, 0xc0, 0x80} + +/* paragraph (182) */ +#define NXFONT_METRICS_182 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_182 {0x60, 0xa0, 0x60, 0x60, 0x60} + +/* periodcentered (183) */ +#define NXFONT_METRICS_183 {1, 4, 3, 0, 1, 0} +#define NXFONT_BITMAP_183 {0xe0, 0xe0, 0xe0} + +/* cedilla (184) */ +#define NXFONT_METRICS_184 {1, 4, 3, 0, 2, 0} +#define NXFONT_BITMAP_184 {0x40, 0x20, 0xc0} + +/* onesuperior (185) */ +#define NXFONT_METRICS_185 {1, 2, 3, 1, 0, 0} +#define NXFONT_BITMAP_185 {0x80, 0x80, 0x80} + +/* ordmasculine (186) */ +#define NXFONT_METRICS_186 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_186 {0x40, 0xa0, 0x40, 0x0, 0xe0} + +/* guillemotright (187) */ +#define NXFONT_METRICS_187 {1, 3, 3, 1, 0, 0} +#define NXFONT_BITMAP_187 {0x80, 0x40, 0x80} + +/* onequarter (188) */ +#define NXFONT_METRICS_188 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_188 {0x80, 0x80, 0x0, 0x60, 0x20} + +/* onehalf (189) */ +#define NXFONT_METRICS_189 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_189 {0x80, 0x80, 0x0, 0xc0, 0x60} + +/* threequarters (190) */ +#define NXFONT_METRICS_190 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_190 {0xc0, 0xc0, 0x0, 0x60, 0x20} + +/* questiondown (191) */ +#define NXFONT_METRICS_191 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_191 {0x40, 0x0, 0x40, 0x80, 0xe0} + +/* Agrave (192) */ +#define NXFONT_METRICS_192 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_192 {0x40, 0x20, 0x40, 0xe0, 0xa0} + +/* Aacute (193) */ +#define NXFONT_METRICS_193 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_193 {0x40, 0x80, 0x40, 0xe0, 0xa0} + +/* Acircumflex (194) */ +#define NXFONT_METRICS_194 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_194 {0xe0, 0x0, 0x40, 0xe0, 0xa0} + +/* Atilde (195) */ +#define NXFONT_METRICS_195 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_195 {0x60, 0xc0, 0x40, 0xe0, 0xa0} + +/* Adieresis (196) */ +#define NXFONT_METRICS_196 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_196 {0xa0, 0x40, 0xa0, 0xe0, 0xa0} + +/* Aring (197) */ +#define NXFONT_METRICS_197 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_197 {0xc0, 0xc0, 0xa0, 0xe0, 0xa0} + +/* AE (198) */ +#define NXFONT_METRICS_198 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_198 {0x60, 0xc0, 0xe0, 0xc0, 0xe0} + +/* Ccedilla (199) */ +#define NXFONT_METRICS_199 {1, 4, 6, 0, 0, 0} +#define NXFONT_BITMAP_199 {0x60, 0x80, 0x80, 0x60, 0x20, 0x40} + +/* Egrave (200) */ +#define NXFONT_METRICS_200 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_200 {0x40, 0x20, 0xe0, 0xc0, 0xe0} + +/* Eacute (201) */ +#define NXFONT_METRICS_201 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_201 {0x40, 0x80, 0xe0, 0xc0, 0xe0} + +/* Ecircumflex (202) */ +#define NXFONT_METRICS_202 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_202 {0xe0, 0x0, 0xe0, 0xc0, 0xe0} + +/* Edieresis (203) */ +#define NXFONT_METRICS_203 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_203 {0xa0, 0x0, 0xe0, 0xc0, 0xe0} + +/* Igrave (204) */ +#define NXFONT_METRICS_204 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_204 {0x40, 0x20, 0xe0, 0x40, 0xe0} + +/* Iacute (205) */ +#define NXFONT_METRICS_205 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_205 {0x40, 0x80, 0xe0, 0x40, 0xe0} + +/* Icircumflex (206) */ +#define NXFONT_METRICS_206 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_206 {0xe0, 0x0, 0xe0, 0x40, 0xe0} + +/* Idieresis (207) */ +#define NXFONT_METRICS_207 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_207 {0xa0, 0x0, 0xe0, 0x40, 0xe0} + +/* Eth (208) */ +#define NXFONT_METRICS_208 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_208 {0xc0, 0xa0, 0xe0, 0xa0, 0xc0} + +/* Ntilde (209) */ +#define NXFONT_METRICS_209 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_209 {0xc0, 0x60, 0xa0, 0xe0, 0xa0} + +/* Ograve (210) */ +#define NXFONT_METRICS_210 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_210 {0x40, 0x20, 0xe0, 0xa0, 0xe0} + +/* Oacute (211) */ +#define NXFONT_METRICS_211 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_211 {0x40, 0x80, 0xe0, 0xa0, 0xe0} + +/* Ocircumflex (212) */ +#define NXFONT_METRICS_212 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_212 {0xe0, 0x0, 0xe0, 0xa0, 0xe0} + +/* Otilde (213) */ +#define NXFONT_METRICS_213 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_213 {0xc0, 0x60, 0xe0, 0xa0, 0xe0} + +/* Odieresis (214) */ +#define NXFONT_METRICS_214 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_214 {0xa0, 0x0, 0xe0, 0xa0, 0xe0} + +/* multiply (215) */ +#define NXFONT_METRICS_215 {1, 4, 3, 0, 1, 0} +#define NXFONT_BITMAP_215 {0xa0, 0x40, 0xa0} + +/* Oslash (216) */ +#define NXFONT_METRICS_216 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_216 {0x60, 0xa0, 0xe0, 0xa0, 0xc0} + +/* Ugrave (217) */ +#define NXFONT_METRICS_217 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_217 {0x80, 0x40, 0xa0, 0xa0, 0xe0} + +/* Uacute (218) */ +#define NXFONT_METRICS_218 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_218 {0x20, 0x40, 0xa0, 0xa0, 0xe0} + +/* Ucircumflex (219) */ +#define NXFONT_METRICS_219 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_219 {0xe0, 0x0, 0xa0, 0xa0, 0xe0} + +/* Udieresis (220) */ +#define NXFONT_METRICS_220 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_220 {0xa0, 0x0, 0xa0, 0xa0, 0xe0} + +/* Yacute (221) */ +#define NXFONT_METRICS_221 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_221 {0x20, 0x40, 0xa0, 0xe0, 0x40} + +/* Thorn (222) */ +#define NXFONT_METRICS_222 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_222 {0x80, 0xe0, 0xa0, 0xe0, 0x80} + +/* germandbls (223) */ +#define NXFONT_METRICS_223 {1, 4, 6, 0, 0, 0} +#define NXFONT_BITMAP_223 {0x60, 0xa0, 0xc0, 0xa0, 0xc0, 0x80} + +/* agrave (224) */ +#define NXFONT_METRICS_224 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_224 {0x40, 0x20, 0x60, 0xa0, 0xe0} + +/* aacute (225) */ +#define NXFONT_METRICS_225 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_225 {0x40, 0x80, 0x60, 0xa0, 0xe0} + +/* acircumflex (226) */ +#define NXFONT_METRICS_226 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_226 {0xe0, 0x0, 0x60, 0xa0, 0xe0} + +/* atilde (227) */ +#define NXFONT_METRICS_227 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_227 {0x60, 0xc0, 0x60, 0xa0, 0xe0} + +/* adieresis (228) */ +#define NXFONT_METRICS_228 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_228 {0xa0, 0x0, 0x60, 0xa0, 0xe0} + +/* aring (229) */ +#define NXFONT_METRICS_229 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_229 {0x60, 0x60, 0x60, 0xa0, 0xe0} + +/* ae (230) */ +#define NXFONT_METRICS_230 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_230 {0x60, 0xe0, 0xe0, 0xc0} + +/* ccedilla (231) */ +#define NXFONT_METRICS_231 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_231 {0x60, 0x80, 0x60, 0x20, 0x40} + +/* egrave (232) */ +#define NXFONT_METRICS_232 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_232 {0x40, 0x20, 0x60, 0xe0, 0x60} + +/* eacute (233) */ +#define NXFONT_METRICS_233 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_233 {0x40, 0x80, 0x60, 0xe0, 0x60} + +/* ecircumflex (234) */ +#define NXFONT_METRICS_234 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_234 {0xe0, 0x0, 0x60, 0xe0, 0x60} + +/* edieresis (235) */ +#define NXFONT_METRICS_235 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_235 {0xa0, 0x0, 0x60, 0xe0, 0x60} + +/* igrave (236) */ +#define NXFONT_METRICS_236 {1, 3, 5, 1, 0, 0} +#define NXFONT_BITMAP_236 {0x80, 0x40, 0x80, 0x80, 0x80} + +/* iacute (237) */ +#define NXFONT_METRICS_237 {1, 3, 5, 0, 0, 0} +#define NXFONT_BITMAP_237 {0x40, 0x80, 0x40, 0x40, 0x40} + +/* icircumflex (238) */ +#define NXFONT_METRICS_238 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_238 {0xe0, 0x0, 0x40, 0x40, 0x40} + +/* idieresis (239) */ +#define NXFONT_METRICS_239 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_239 {0xa0, 0x0, 0x40, 0x40, 0x40} + +/* eth (240) */ +#define NXFONT_METRICS_240 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_240 {0x60, 0xc0, 0x60, 0xa0, 0x60} + +/* ntilde (241) */ +#define NXFONT_METRICS_241 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_241 {0xc0, 0x60, 0xc0, 0xa0, 0xa0} + +/* ograve (242) */ +#define NXFONT_METRICS_242 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_242 {0x40, 0x20, 0x40, 0xa0, 0x40} + +/* oacute (243) */ +#define NXFONT_METRICS_243 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_243 {0x40, 0x80, 0x40, 0xa0, 0x40} + +/* ocircumflex (244) */ +#define NXFONT_METRICS_244 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_244 {0xe0, 0x0, 0x40, 0xa0, 0x40} + +/* otilde (245) */ +#define NXFONT_METRICS_245 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_245 {0xc0, 0x60, 0x40, 0xa0, 0x40} + +/* odieresis (246) */ +#define NXFONT_METRICS_246 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_246 {0xa0, 0x0, 0x40, 0xa0, 0x40} + +/* divide (247) */ +#define NXFONT_METRICS_247 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_247 {0x40, 0x0, 0xe0, 0x0, 0x40} + +/* oslash (248) */ +#define NXFONT_METRICS_248 {1, 4, 4, 0, 1, 0} +#define NXFONT_BITMAP_248 {0x60, 0xe0, 0xa0, 0xc0} + +/* ugrave (249) */ +#define NXFONT_METRICS_249 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_249 {0x80, 0x40, 0xa0, 0xa0, 0x60} + +/* uacute (250) */ +#define NXFONT_METRICS_250 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_250 {0x20, 0x40, 0xa0, 0xa0, 0x60} + +/* ucircumflex (251) */ +#define NXFONT_METRICS_251 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_251 {0xe0, 0x0, 0xa0, 0xa0, 0x60} + +/* udieresis (252) */ +#define NXFONT_METRICS_252 {1, 4, 5, 0, 0, 0} +#define NXFONT_BITMAP_252 {0xa0, 0x0, 0xa0, 0xa0, 0x60} + +/* yacute (253) */ +#define NXFONT_METRICS_253 {1, 4, 6, 0, 0, 0} +#define NXFONT_BITMAP_253 {0x20, 0x40, 0xa0, 0x60, 0x20, 0x40} + +/* thorn (254) */ +#define NXFONT_METRICS_254 {1, 4, 5, 0, 1, 0} +#define NXFONT_BITMAP_254 {0x80, 0xc0, 0xa0, 0xc0, 0x80} + +/* ydieresis (255) */ +#define NXFONT_METRICS_255 {1, 4, 6, 0, 0, 0} +#define NXFONT_BITMAP_255 {0xa0, 0x0, 0xa0, 0x60, 0x20, 0x40} + +#endif diff --git a/sched/pthread/pthread_cancel.c b/sched/pthread/pthread_cancel.c index 6b974629a0..a9b7e8270b 100644 --- a/sched/pthread/pthread_cancel.c +++ b/sched/pthread/pthread_cancel.c @@ -1,7 +1,7 @@ /**************************************************************************** * sched/pthread/pthread_cancel.c * - * Copyright (C) 2007, 2009, 2013 Gregory Nutt. All rights reserved. + * Copyright (C) 2007, 2009, 2013, 2016 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -120,8 +120,6 @@ int pthread_cancel(pthread_t thread) /* If the thread is waiting at a cancellation point, then notify of the * cancellation thereby waking the task up with an ECANCELED error. - * - * REVISIT: is locking the scheduler sufficent in SMP mode? */ if (tcb->cmn.cpcount > 0) diff --git a/sched/sched/sched_unlock.c b/sched/sched/sched_unlock.c index 885e0c778c..d22a4b48bd 100644 --- a/sched/sched/sched_unlock.c +++ b/sched/sched/sched_unlock.c @@ -67,10 +67,14 @@ int sched_unlock(void) { FAR struct tcb_s *rtcb = this_task(); +#ifdef CONFIG_SMP int cpu; cpu = this_cpu(); rtcb = current_task(cpu); +#else + rtcb = this_task(); +#endif /* Check for some special cases: (1) rtcb may be NULL only during * early boot-up phases, and (2) sched_unlock() should have no diff --git a/sched/task/task_delete.c b/sched/task/task_delete.c index 755584fd0c..ebf94c8bd8 100644 --- a/sched/task/task_delete.c +++ b/sched/task/task_delete.c @@ -152,8 +152,6 @@ int task_delete(pid_t pid) /* If the task is waiting at a cancellation point, then notify of the * cancellation thereby waking the task up with an ECANCELED error. - * - * REVISIT: is locking the scheduler sufficent in SMP mode? */ if (dtcb->cpcount > 0) diff --git a/tools/README.txt b/tools/README.txt index e8bb6135a3..b0f36793e9 100644 --- a/tools/README.txt +++ b/tools/README.txt @@ -269,7 +269,7 @@ bdf-convert.c 2. Use the bdf-converter program to convert the BDF font to the NuttX font format. This will result in a C header file containing definitions. That header file should be installed at, for example, - graphics/nxfonts/nxfonts_myfont.h. + libnx/nxfonts/nxfonts_myfont.h. Create a new NuttX configuration variable. For example, suppose you define the following variable: CONFIG_NXFONT_MYFONT. Then @@ -324,7 +324,7 @@ bdf-convert.c @$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=2 EXTRADEFINES=$(EXTRADEFINES) endif - 6. nuttx/graphics/nxfonts/Make.defs. Set the make variable NXFSET_CSRCS. + 6. nuttx/libnx/nxfonts/Make.defs. Set the make variable NXFSET_CSRCS. NXFSET_CSRCS determines the name of the font C file to build when NXFONTS_FONTID=2: @@ -335,12 +335,12 @@ bdf-convert.c NXFSET_CSRCS += nxfonts_bitmaps_myfont.c endif - 7. nuttx/graphics/nxfonts/Makefile.sources. This is the Makefile used + 7. nuttx/libnx/nxfonts/Makefile.sources. This is the Makefile used in step 5 that will actually generate the font C file. So, given your NXFONTS_FONTID=2, it needs to determine a prefix to use for auto-generated variable and function names and (again) the name of the auto-generated file to create (this must be the same name that - was used in nuttx/graphics/nxfonts/Make.defs): + was used in nuttx/libnx/nxfonts/Make.defs): ifeq ($(NXFONTS_FONTID),1) NXFONTS_PREFIX := g_sans23x27_ @@ -351,9 +351,9 @@ bdf-convert.c GEN_CSRC = nxfonts_bitmaps_myfont.c endif - 8. graphics/nxfonts/nxfonts_bitmaps.c. This is the file that contains + 8. graphics/libnx/nxfonts_bitmaps.c. This is the file that contains the generic font structures. It is used as a "template" file by - nuttx/graphics/nxfonts/Makefile.sources to create your customized + nuttx/libnx/nxfonts/Makefile.sources to create your customized font data set. #if NXFONTS_FONTID == 1 @@ -367,7 +367,7 @@ bdf-convert.c Where nxfonts_myfont.h is the NuttX font file that we generated in step 2 using the bdf-converter tool. - 9. graphics/nxfonts/nxfonts_getfont.c. Finally, we need to extend the + 9. libnx/nxfonts/nxfonts_getfont.c. Finally, we need to extend the logic that does the run-time font lookups so that can find our new font. The lookup function is NXHANDLE nxf_getfonthandle(enum nx_fontid_e fontid). The new font information needs to be added to data structures used by diff --git a/tools/sethost.sh b/tools/sethost.sh index 085361f5b6..c8bc0e4f95 100755 --- a/tools/sethost.sh +++ b/tools/sethost.sh @@ -1,7 +1,7 @@ #!/bin/bash # tools/sethost.sh # -# Copyright (C) 2016 Gregory Nutt. All rights reserved. +# Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -42,13 +42,14 @@ unset configfile function showusage { echo "" - echo "USAGE: $progname [-w|l] [-c|n] [-32|64] []" + echo "USAGE: $progname [-w|l] [-c|u|n] [-32|64] []" echo " $progname -h" echo "" echo "Where:" echo " -w|l selects Windows (w) or Linux (l). Default: Linux" - echo " -c|n selects Windows native (n) or Cygwin (c). Default Cygwin" - echo " -32|64 selects 32- or 64-bit host (Only for Cygwin). Default 64" + echo " -c|u|n selects Windows environment option: Cygwin (c), Ubuntu under" + echo " Windows 10 (u), or Windows native (n). Default Cygwin" + echo " -32|64 selects 32- or 64-bit host. Default 64" echo " -h will show this help test and terminate" echo " selects configuration file. Default: .config" exit 1 @@ -65,9 +66,15 @@ while [ ! -z "$1" ]; do host=linux ;; -c ) + host=windows wenv=cygwin ;; + -u ) + host=windows + wenv=ubuntu + ;; -n ) + host=windows wenv=native ;; -32 ) @@ -170,6 +177,7 @@ if [ "X$host" == "Xlinux" ]; then kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_NATIVE kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_CYGWIN + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_UBUNTU kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_MSYS kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_OTHER @@ -184,11 +192,19 @@ else if [ "X$wenv" == "Xcygwin" ]; then echo " Select CONFIG_WINDOWS_CYGWIN=y" kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_CYGWIN + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_UBUNTU kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_NATIVE else - echo " Select CONFIG_WINDOWS_NATIVE=y" - kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_NATIVE kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_CYGWIN + if [ "X$wenv" == "Xubuntu" ]; then + echo " Select CONFIG_WINDOWS_UBUNTU=y" + kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_UBUNTU + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_NATIVE + else + echo " Select CONFIG_WINDOWS_NATIVE=y" + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_UBUNTU + kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_NATIVE + fi fi kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_MSYS diff --git a/tools/testbuild.sh b/tools/testbuild.sh index 775dcab3fb..0d10702c75 100755 --- a/tools/testbuild.sh +++ b/tools/testbuild.sh @@ -1,7 +1,7 @@ #!/bin/bash # testbuild.sh # -# Copyright (C) 2016 Gregory Nutt. All rights reserved. +# Copyright (C) 2016-2017 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -47,12 +47,13 @@ unset testfile function showusage { echo "" - echo "USAGE: $progname [-w|l] [-c|n] [-s] [-a ] [-n ] " + echo "USAGE: $progname [-w|l] [-c|u|n] [-s] [-a ] [-n ] " echo " $progname -h" echo "" echo "Where:" echo " -w|l selects Windows (w) or Linux (l). Default: Linux" - echo " -c|n selects Windows native (n) or Cygwin (c). Default Cygwin" + echo " -c|u|n selects Windows environment option: Cygwin (c), Ubuntu under" + echo " Windows 10 (u), or Windows native (n). Default Cygwin" echo " -s Use C++ unsigned long size_t in new operator. Default unsigned int" echo " -a provides the relative path to the apps/ directory. Default ../apps" echo " -n provides the relative path to the NxWidgets/ directory. Default ../NxWidgets" @@ -76,12 +77,19 @@ while [ ! -z "$1" ]; do host=linux ;; -c ) + host=windows wenv=cygwin ;; + -u ) + host=windows + wenv=ubuntu + ;; -n ) + host=windows wenv=native ;; -s ) + host=windows sizet=long ;; -a ) @@ -165,11 +173,19 @@ function configure { if [ "X$wenv" == "Xcygwin" ]; then echo " Select CONFIG_WINDOWS_CYGWIN=y" kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_CYGWIN + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_UBUNTU kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_NATIVE else - echo " Select CONFIG_WINDOWS_NATIVE=y" - kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_NATIVE kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_CYGWIN + if [ "X$wenv" == "Xubuntu" ]; then + echo " Select CONFIG_WINDOWS_UBUNTU=y" + kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_UBUNTU + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_NATIVE + else + echo " Select CONFIG_WINDOWS_NATIVE=y" + kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_UBUNTU + kconfig-tweak --file $nuttx/.config --enable CONFIG_WINDOWS_NATIVE + fi fi kconfig-tweak --file $nuttx/.config --disable CONFIG_WINDOWS_MSYS