-
Notifications
You must be signed in to change notification settings - Fork 491
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add arm64 cross compilation support to makepkg-mingw (experimental) #2283
Closed
dennisameling
wants to merge
2
commits into
msys2:master
from
dennisameling:add-arm64-cross-compilation-support
Closed
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
# | ||
# /etc/makepkg_mingw64.conf | ||
# | ||
|
||
######################################################################### | ||
# SOURCE ACQUISITION | ||
######################################################################### | ||
# | ||
#-- The download utilities that makepkg should use to acquire sources | ||
# Format: 'protocol::agent' | ||
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' | ||
'http::/usr/bin/curl -qb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'https::/usr/bin/curl -qb "" -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'rsync::/usr/bin/rsync --no-motd -z %u %o' | ||
'scp::/usr/bin/scp -C %u %o') | ||
|
||
# Other common tools: | ||
# /usr/bin/snarf | ||
# /usr/bin/lftpget -c | ||
# /usr/bin/wget | ||
|
||
#-- The package required by makepkg to download VCS sources | ||
# Format: 'protocol::package' | ||
VCSCLIENTS=('bzr::bzr' | ||
'git::git' | ||
'hg::mercurial' | ||
'svn::subversion') | ||
|
||
#-- Using git am to apply patches has benefits, but also downsides | ||
# one being that people without their .gitconfig set get prompts | ||
# and the other being that the sha1s vary each time, so fix them | ||
GIT_COMMITTER_NAME="makepkg" | ||
GIT_COMMITTER_EMAIL="makepkg@msys2.org" | ||
function gitam_mkpkg() { | ||
git am --committer-date-is-author-date "$@" | ||
} | ||
|
||
######################################################################### | ||
# ARCHITECTURE, COMPILE FLAGS | ||
######################################################################### | ||
# | ||
CARCH="arm64" | ||
CHOST="x86_64-w64-mingw32" | ||
|
||
######################################################################### | ||
# Mingw toolchains stuff | ||
######################################################################### | ||
# | ||
MINGW_CHOST="x86_64-w64-mingw32" | ||
MINGW_PREFIX="/arm64" | ||
MINGW_PACKAGE_PREFIX="mingw-w64-arm64" | ||
|
||
# DirectX compatibility environment variable | ||
DXSDK_DIR=${MINGW_PREFIX}/${MINGW_CHOST} | ||
|
||
#-- Compiler and Linker Flags | ||
# -march (or -mcpu) builds exclusively for an architecture | ||
# -mtune optimizes for an architecture, but builds for whole processor family | ||
CPPFLAGS="-D_FORTIFY_SOURCE=2 -D__USE_MINGW_ANSI_STDIO=1" | ||
CFLAGS="-march=arm64 -mtune=generic -O2 -pipe" | ||
CXXFLAGS="-march=arm64 -mtune=generic -O2 -pipe" | ||
LDFLAGS="-pipe" | ||
# Uncomment to enable hardening (ASLR, High entropy ASLR, DEP) | ||
#LDFLAGS="-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat" | ||
#-- Make Flags: change this for DistCC/SMP systems | ||
MAKEFLAGS="-j$(($(nproc)+1))" | ||
#-- Debugging flags | ||
DEBUG_CFLAGS="-ggdb -Og" | ||
DEBUG_CXXFLAGS="-ggdb -Og" | ||
|
||
ACLOCAL_PATH="${MINGW_PREFIX}/share/aclocal:/usr/share/aclocal" | ||
PKG_CONFIG_PATH="${MINGW_PREFIX}/lib/pkgconfig:${MINGW_PREFIX}/share/pkgconfig" | ||
|
||
######################################################################### | ||
# BUILD ENVIRONMENT | ||
######################################################################### | ||
# | ||
# Defaults: BUILDENV=(fakeroot !distcc color !ccache check !sign) | ||
# A negated environment option will do the opposite of the comments below. | ||
# | ||
#-- distcc: Use the Distributed C/C++/ObjC compiler | ||
#-- color: Colorize output messages | ||
#-- ccache: Use ccache to cache compilation | ||
#-- check: Run the check() function if present in the PKGBUILD | ||
#-- sign: Generate PGP signature file | ||
# | ||
BUILDENV=(!distcc color !ccache check !sign) | ||
# | ||
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition, | ||
#-- specify a space-delimited list of hosts running in the DistCC cluster. | ||
#DISTCC_HOSTS="" | ||
# | ||
#-- Specify a directory for package building. | ||
#BUILDDIR=/tmp/makepkg | ||
|
||
######################################################################### | ||
# GLOBAL PACKAGE OPTIONS | ||
# These are default values for the options=() settings | ||
######################################################################### | ||
# | ||
# Default: OPTIONS=(strip docs !libtool staticlibs emptydirs zipman purge !upx !debug) | ||
# A negated option will do the opposite of the comments below. | ||
# | ||
#-- strip: Strip symbols from binaries/libraries | ||
#-- docs: Save doc directories specified by DOC_DIRS | ||
#-- libtool: Leave libtool (.la) files in packages | ||
#-- staticlibs: Leave static library (.a) files in packages | ||
#-- emptydirs: Leave empty directories in packages | ||
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip | ||
#-- purge: Remove files specified by PURGE_TARGETS | ||
#-- upx: Compress binary executable files using UPX | ||
#-- debug: Add debugging flags as specified in DEBUG_* variables | ||
# | ||
OPTIONS=(strip docs !libtool staticlibs emptydirs zipman purge !upx !debug) | ||
|
||
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 | ||
INTEGRITY_CHECK=(md5) | ||
#-- Options to be used when stripping binaries. See `man strip' for details. | ||
STRIP_BINARIES="--strip-all" | ||
#-- Options to be used when stripping shared libraries. See `man strip' for details. | ||
STRIP_SHARED="--strip-unneeded" | ||
#-- Options to be used when stripping static libraries. See `man strip' for details. | ||
STRIP_STATIC="--strip-debug" | ||
#-- Manual (man and info) directories to compress (if zipman is specified) | ||
MAN_DIRS=(arm64{{,/local}{,/share},/opt/*}/{man,info}) | ||
#-- Doc directories to remove (if !docs is specified) | ||
DOC_DIRS=(arm64/{,local/}{,share/}{doc,gtk-doc}) | ||
#-- Files to be removed from all packages (if purge is specified) | ||
PURGE_TARGETS=(arm64/{,share}/info/dir .packlist *.pod) | ||
|
||
######################################################################### | ||
# PACKAGE OUTPUT | ||
######################################################################### | ||
# | ||
# Default: put built package and cached source in build directory | ||
# | ||
#-- Destination: specify a fixed directory where all packages will be placed | ||
#PKGDEST=/var/packages-mingw64 | ||
#-- Source cache: specify a fixed directory where source files will be cached | ||
#SRCDEST=/var/sources | ||
#-- Source packages: specify a fixed directory where all src packages will be placed | ||
#SRCPKGDEST=/var/srcpackages-mingw64 | ||
#-- Log files: specify a fixed directory where all log files will be placed | ||
#LOGDEST=/var/makepkglogs | ||
#-- Packager: name/email of the person or organization building packages | ||
#PACKAGER="John Doe <john@doe.com>" | ||
#-- Specify a key to use for package signing | ||
#GPGKEY="" | ||
|
||
######################################################################### | ||
# COMPRESSION DEFAULTS | ||
######################################################################### | ||
# | ||
COMPRESSGZ=(gzip -c -f -n) | ||
COMPRESSBZ2=(bzip2 -c -f) | ||
COMPRESSXZ=(xz -c -z -T0 -) | ||
COMPRESSLRZ=(lrzip -q) | ||
COMPRESSLZO=(lzop -q) | ||
COMPRESSZ=(compress -c -f) | ||
|
||
######################################################################### | ||
# EXTENSION DEFAULTS | ||
######################################################################### | ||
# | ||
# WARNING: Do NOT modify these variables unless you know what you are | ||
# doing. | ||
# | ||
PKGEXT='.pkg.tar.xz' | ||
SRCEXT='.src.tar.gz' | ||
|
||
# vim: set ft=sh ts=2 sw=2 et: |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something like
PATH=/arm64/bin:mingw32/bin:$(echo ....
might also work, but I'm currently not sure what the implications of this would be. I assume it would first look for a native binary in/arm64/bin
, and if that fails, look at/mingw32/bin
instead.