patch 9.1.1386: MS-Windows: some minor problems building on AARCH64
Problem: MS-Windows: some minor problems building on AARCH64
Solution: Update Make_cyg_ming with aarch64 specific changes,
document how to build on aarch64 using msys2 packages
closes: #17048
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
INSTALLpc.txt - Installation of Vim on PC - Last Update: 2024 Dec 27
|
INSTALLpc.txt - Installation of Vim on PC - Last Update: 2025 May 14
|
||||||
|
|
||||||
This file contains instructions for compiling Vim. If you already have an
|
This file contains instructions for compiling Vim. If you already have an
|
||||||
executable version of Vim, you don't need this.
|
executable version of Vim, you don't need this.
|
||||||
@ -183,7 +183,9 @@ src/INSTALLpc.txt file for instructions.
|
|||||||
2. MSYS2 with MinGW
|
2. MSYS2 with MinGW
|
||||||
===================
|
===================
|
||||||
|
|
||||||
2.1. Setup the basic msys2 environment
|
2.1 Buidling x86 32bit or 64bit versions.
|
||||||
|
|
||||||
|
2.1.1. Setup the basic msys2 environment
|
||||||
|
|
||||||
Go to the official page of MSYS2: https://www.msys2.org
|
Go to the official page of MSYS2: https://www.msys2.org
|
||||||
Download an installer:
|
Download an installer:
|
||||||
@ -208,7 +210,7 @@ If pacman complains that `catgets` and `libcatgets` conflict with another
|
|||||||
package, select `y` to remove them.
|
package, select `y` to remove them.
|
||||||
|
|
||||||
|
|
||||||
2.2. Install additional packages for building Vim
|
2.1.2. Install additional packages for building Vim
|
||||||
|
|
||||||
The following package groups are required for building Vim:
|
The following package groups are required for building Vim:
|
||||||
|
|
||||||
@ -230,7 +232,7 @@ Or you can use the `pacboy` command to avoid long package names:
|
|||||||
|
|
||||||
The suffix ":" means that it disables the package name translation.
|
The suffix ":" means that it disables the package name translation.
|
||||||
The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix
|
The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix
|
||||||
to install only i686, and the ":x" suffix to install only x86_64.
|
to install only i686, the ":x" suffix for x86_64 and ":a" for "aarch64".
|
||||||
(See `pacboy help` for the help.)
|
(See `pacboy help` for the help.)
|
||||||
|
|
||||||
See also the pacman page in ArchWiki for the general usage of pacman:
|
See also the pacman page in ArchWiki for the general usage of pacman:
|
||||||
@ -241,7 +243,7 @@ MSYS2 has its own git package, and you can also install it via pacman:
|
|||||||
$ pacman -S git
|
$ pacman -S git
|
||||||
|
|
||||||
|
|
||||||
2.3. Keep the build environment up-to-date
|
2.1.3. Keep the build environment up-to-date
|
||||||
|
|
||||||
After you have installed the build environment, you may want to keep it
|
After you have installed the build environment, you may want to keep it
|
||||||
up-to-date (E.g. always use the latest GCC).
|
up-to-date (E.g. always use the latest GCC).
|
||||||
@ -249,7 +251,7 @@ In that case, you just need to execute the command:
|
|||||||
$ pacman -Syu
|
$ pacman -Syu
|
||||||
|
|
||||||
|
|
||||||
2.4. Build Vim
|
2.1.4. Build Vim
|
||||||
|
|
||||||
Select one of the following icon from the Start Menu:
|
Select one of the following icon from the Start Menu:
|
||||||
|
|
||||||
@ -276,7 +278,7 @@ This command is in msys32.bat. Or for the 64 bit compiler use msys64.bat:
|
|||||||
If you have msys64 in another location you will need to adjust the paths for
|
If you have msys64 in another location you will need to adjust the paths for
|
||||||
that.
|
that.
|
||||||
|
|
||||||
2.5. Build Vim with Clang
|
2.1.5. Build Vim with Clang
|
||||||
|
|
||||||
The following package group is required for building Vim with Clang:
|
The following package group is required for building Vim with Clang:
|
||||||
|
|
||||||
@ -301,6 +303,71 @@ To build Vim with the address sanitizer (ASAN), execute the following command:
|
|||||||
CXX=clang++
|
CXX=clang++
|
||||||
make -f Make_ming.mak DEBUG=yes ASAN=yes
|
make -f Make_ming.mak DEBUG=yes ASAN=yes
|
||||||
|
|
||||||
|
2.2 Buidling an Arch64 version of Vim
|
||||||
|
|
||||||
|
2.2.1. Setup the basic msys2 environment
|
||||||
|
|
||||||
|
See also https://www.msys2.org/wiki/arm64/
|
||||||
|
Go to the official page of MSYS2: https://www.msys2.org
|
||||||
|
|
||||||
|
Download the self-extracting archive:
|
||||||
|
|
||||||
|
* msys2-base-x86_64-latest.sfx.exe
|
||||||
|
|
||||||
|
Execute the self-extracting archive into a folder of your choice.
|
||||||
|
In the extracted folder, run clangarm64.exe
|
||||||
|
This will open a MSYS2 terminal window for you.
|
||||||
|
|
||||||
|
Execute:
|
||||||
|
$ pacman -Syu
|
||||||
|
|
||||||
|
And restart MSYS2 console. Then execute:
|
||||||
|
$ pacman -Su
|
||||||
|
|
||||||
|
|
||||||
|
2.2.2. Install additional packages for building Vim
|
||||||
|
|
||||||
|
$ pacman -S mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-toolchain base-devel git
|
||||||
|
|
||||||
|
Or you can use the `pacboy` command to avoid long package names:
|
||||||
|
|
||||||
|
$ pacboy -S base-devel: toolchain:a
|
||||||
|
|
||||||
|
The suffix ":" means that it disables the package name translation.
|
||||||
|
The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix
|
||||||
|
to install only i686, the ":x" suffix for x86_64 and ":a" for "aarch64".
|
||||||
|
(See `pacboy help` for the help.)
|
||||||
|
|
||||||
|
See also the pacman page in ArchWiki for the general usage of pacman:
|
||||||
|
https://wiki.archlinux.org/index.php/pacman
|
||||||
|
|
||||||
|
2.2.3. Keep the build environment up-to-date
|
||||||
|
|
||||||
|
After you have installed the build environment, you may want to keep it
|
||||||
|
up-to-date (E.g. always use the latest GCC).
|
||||||
|
In that case, you just need to execute the command:
|
||||||
|
$ pacman -Syu
|
||||||
|
|
||||||
|
|
||||||
|
2.2.4. Build Vim
|
||||||
|
|
||||||
|
Before building look through notes for MinGW in part 3 below.
|
||||||
|
|
||||||
|
Go to the source directory of Vim, then execute the make command. E.g.:
|
||||||
|
|
||||||
|
CC=clang
|
||||||
|
CXX=clang++
|
||||||
|
make -f Make_ming.mak
|
||||||
|
make -f Make_ming.mak GUI=yes
|
||||||
|
make -f Make_ming.mak GUI=no DEBUG=yes
|
||||||
|
|
||||||
|
NOTE: you can't execute vim.exe in the MSYS2 console, open a normal Windows
|
||||||
|
console for that.
|
||||||
|
|
||||||
|
To build Vim with the address sanitizer (ASAN), execute the following command:
|
||||||
|
|
||||||
|
make -f Make_ming.mak DEBUG=yes ASAN=yes
|
||||||
|
|
||||||
3. MinGW
|
3. MinGW
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
# http://www.matcode.com/mpress.htm
|
# http://www.matcode.com/mpress.htm
|
||||||
#
|
#
|
||||||
# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
|
# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
|
||||||
# Updated 2014 Oct 13.
|
# Last Update: 2025 May 14.
|
||||||
|
|
||||||
#>>>>> choose options:
|
#>>>>> choose options:
|
||||||
# FEATURES=[TINY | NORMAL | HUGE]
|
# FEATURES=[TINY | NORMAL | HUGE]
|
||||||
@ -58,6 +58,7 @@ GUI=yes
|
|||||||
|
|
||||||
# Set to no if you do not want to use DirectWrite (DirectX).
|
# Set to no if you do not want to use DirectWrite (DirectX).
|
||||||
# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
|
# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
|
||||||
|
# Note: Does not work with AARCH64
|
||||||
DIRECTX=yes
|
DIRECTX=yes
|
||||||
|
|
||||||
# Disable Color emoji support
|
# Disable Color emoji support
|
||||||
@ -66,6 +67,7 @@ DIRECTX=yes
|
|||||||
|
|
||||||
# Set to one of i386, i486, i586, i686 as the minimum target processor.
|
# Set to one of i386, i486, i586, i686 as the minimum target processor.
|
||||||
# For amd64/x64 architecture set ARCH=x86-64 .
|
# For amd64/x64 architecture set ARCH=x86-64 .
|
||||||
|
# For AARCH64, set to native
|
||||||
# If not set, it will be automatically detected. (Normally i686 or x86-64.)
|
# If not set, it will be automatically detected. (Normally i686 or x86-64.)
|
||||||
#ARCH=i686
|
#ARCH=i686
|
||||||
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
|
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
|
||||||
@ -221,9 +223,14 @@ MKDIR = mkdir
|
|||||||
DIRSLASH = \\
|
DIRSLASH = \\
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# for AARCH64, set to clang
|
||||||
|
# CC := clang
|
||||||
# set $CC to "gcc" unless it matches "clang"
|
# set $CC to "gcc" unless it matches "clang"
|
||||||
ifeq ($(findstring clang,$(CC)),)
|
ifeq ($(findstring clang,$(CC)),)
|
||||||
CC := $(CROSS_COMPILE)gcc
|
CC := $(CROSS_COMPILE)gcc
|
||||||
|
else ifeq ($(findstring clang,$(CXX)),)
|
||||||
|
CXX := clang++
|
||||||
endif
|
endif
|
||||||
# set $CXX to "g++" unless it matches "clang"
|
# set $CXX to "g++" unless it matches "clang"
|
||||||
ifeq ($(findstring clang,$(CXX)),)
|
ifeq ($(findstring clang,$(CXX)),)
|
||||||
@ -238,8 +245,15 @@ WINDRES := llvm-windres
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Get the default ARCH.
|
# Get the default ARCH.
|
||||||
|
# clang on AARCH64 does not like the native arch64-w64-windows-gnu
|
||||||
|
# so set to native instead
|
||||||
ifndef ARCH
|
ifndef ARCH
|
||||||
|
ARCH := $(shell $(CC) -dumpmachine)
|
||||||
|
ifeq ($(ARCH), aarch64-w64-windows-gnu)
|
||||||
|
ARCH := native
|
||||||
|
else
|
||||||
ARCH := $(shell $(CC) -dumpmachine | sed -e "s/-.*//" -e "s/_/-/" -e "s/^mingw32$$/i686/")
|
ARCH := $(shell $(CC) -dumpmachine | sed -e "s/-.*//" -e "s/_/-/" -e "s/^mingw32$$/i686/")
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@ -718,6 +732,9 @@ XPM = xpm/x86
|
|||||||
ifeq ($(ARCH),x86-64)
|
ifeq ($(ARCH),x86-64)
|
||||||
XPM = xpm/x64
|
XPM = xpm/x64
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(ARCH),native)
|
||||||
|
XPM = no
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
ifdef XPM
|
ifdef XPM
|
||||||
ifneq ($(XPM),no)
|
ifneq ($(XPM),no)
|
||||||
@ -1186,7 +1203,7 @@ tee/tee.exe: tee/tee.c
|
|||||||
$(MAKE) -C tee -f Make_ming.mak CC='$(CC)'
|
$(MAKE) -C tee -f Make_ming.mak CC='$(CC)'
|
||||||
|
|
||||||
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
||||||
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
|
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX=$(CXX) STATIC_STDCPLUS=$(STATIC_STDCPLUS)
|
||||||
|
|
||||||
tags: notags
|
tags: notags
|
||||||
$(CTAGS) $(TAGS_FILES)
|
$(CTAGS) $(TAGS_FILES)
|
||||||
|
|||||||
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1386,
|
||||||
/**/
|
/**/
|
||||||
1385,
|
1385,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user