Skip to content

Commit

Permalink
build: add basic arm64 support
Browse files Browse the repository at this point in the history
This commit adds basic arm64 support to the build.  Building the bundled
openssl is disabled pending an upgrade to openssl 1.2, the currently
bundled version has some hand-rolled assembly that is 32 bits only.

PR-URL: #1028
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Rod Vagg <rod@vagg.org>
  • Loading branch information
bnoordhuis committed Mar 2, 2015
1 parent 3d6440c commit ca3c50b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
15 changes: 12 additions & 3 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ parser.add_option('--debug',
parser.add_option('--dest-cpu',
action='store',
dest='dest_cpu',
help='CPU architecture to build for. Valid values are: arm, ia32, x32, x64')
help='CPU architecture to build for. '
'Valid values are: arm, arm64, ia32, x32, x64')

parser.add_option('--dest-os',
action='store',
Expand Down Expand Up @@ -436,10 +437,11 @@ def host_arch_cc():
k = cc_macros()

matchup = {
'__x86_64__' : 'x64',
'__i386__' : 'ia32',
'__aarch64__' : 'arm64',
'__arm__' : 'arm',
'__i386__' : 'ia32',
'__mips__' : 'mips',
'__x86_64__' : 'x64',
}

rtn = 'ia32' # default
Expand Down Expand Up @@ -510,6 +512,13 @@ def configure_node(o):

if target_arch == 'arm':
configure_arm(o)
elif (target_arch == 'arm64' and
not options.shared_openssl and
not options.without_ssl):
# FIXME(bnoordhuis) It's not possible to build the bundled openssl due to
# deps/openssl/asm/arm-elf-gas/modes/ghash-armv4.S, which is 32 bits only.
warn('not building openssl, arm64 not yet supported')
options.without_ssl = True

if flavor in ('solaris', 'mac', 'linux', 'freebsd'):
use_dtrace = not options.without_dtrace
Expand Down
4 changes: 2 additions & 2 deletions deps/openssl/config/opensslconf.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
* boundary. See crypto/rc4/rc4_enc.c for further details.
*/
# undef RC4_CHUNK
# if defined(_M_X64) || defined(__x86_64__)
# if defined(_M_X64) || defined(__aarch64__) || defined(__x86_64__)
# define RC4_CHUNK unsigned long long
# elif defined(__arm__)
# define RC4_CHUNK unsigned long
Expand Down Expand Up @@ -220,7 +220,7 @@
# undef THIRTY_TWO_BIT
# undef SIXTEEN_BIT
# undef EIGHT_BIT
# if defined(_M_X64) || defined(__x86_64__)
# if defined(_M_X64) || defined(__aarch64__) || defined(__x86_64__)
# if defined(_LP64)
# define SIXTY_FOUR_BIT_LONG
# else
Expand Down

0 comments on commit ca3c50b

Please sign in to comment.