Skip to content

Commit def3b80

Browse files
committed
WIP: Start Windows ARM64 port
Compiles, and links. Not tested loading. Without any assembly, and setjmp is questionable. Signed-off-by: Jorgen Lundman <lundman@lundman.net>
1 parent bce453c commit def3b80

42 files changed

Lines changed: 1321 additions & 1094 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ find_package(WDK REQUIRED)
1010

1111
option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
1212

13-
set(OPENSSL_CRYPTO_LIBRARY "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MTd/libcrypto_static.lib")
14-
set(OPENSSL_SSL_LIBRARY "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MTd/libssl_static.lib")
13+
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
14+
set(OPENSSL_CRYPTO_LIBRARY "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MTd/libcrypto_static.lib")
15+
set(OPENSSL_SSL_LIBRARY "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MTd/libssl_static.lib")
16+
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
17+
set(OPENSSL_CRYPTO_LIBRARY "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MTd/libcrypto_static.lib")
18+
set(OPENSSL_SSL_LIBRARY "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MTd/libssl_static.lib")
19+
endif()
1520

1621
set(OPENSSL_USE_STATIC_LIBS TRUE)
1722
set(OPENSSL_MSVC_STATIC_RT TRUE)
@@ -38,10 +43,15 @@ function(use_clang)
3843
add_compile_options(/FI ${CMAKE_SOURCE_DIR}/include/os/windows/zfs/zfs_config.h)
3944
set(CMAKE_C_COMPILER clang-cl.exe PARENT_SCOPE)
4045
set(CMAKE_CXX_COMPILER clang-cl.exe PARENT_SCOPE)
41-
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
42-
add_compile_options(-m32)
43-
else()
44-
add_compile_options(-m64)
46+
47+
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
48+
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
49+
add_compile_options(-m32)
50+
else()
51+
add_compile_options(-m64)
52+
endif()
53+
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") # all except wdk_add_library
54+
add_compile_options(-target aarch64-pc-windows-msvc)
4555
endif()
4656

4757
add_compile_options(
@@ -67,12 +77,18 @@ add_compile_options(
6777
)
6878
endfunction()
6979

70-
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
71-
add_definitions(-D__x86_32__ -D__i386 -D__i386__ -D_LP32 -DWIN32)
72-
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
73-
add_definitions(-D__x86_64__ -D_LP64 -D__LP64__ -D__x86_64 -D_AMD64_ -D_WIN64 -DAMD64 -DWIN64)
74-
else()
75-
message(FATAL_ERROR "Unsupported architecture")
80+
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
81+
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
82+
add_definitions(-D__x86_32__ -D__i386 -D__i386__ -D_LP32 -DWIN32)
83+
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
84+
add_definitions(-D__x86_64__ -D_LP64 -D__LP64__ -D__x86_64 -D_AMD64_ -D_WIN64 -DAMD64 -DWIN64)
85+
endif()
86+
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
87+
add_definitions(-DARM64 -D_ARM64_ -D__aarch64__ -D_LP64 -D__LP64__ -D_WIN64 -DWIN64)
88+
# Fix up wdk_add_library
89+
set(WDK_COMPILE_FLAGS "--target=arm64-windows-msvc" CACHE STRING "" FORCE)
90+
#set(WDK_C_FLAGS "/target:aarch64-pc-windows-msvc" CACHE STRING "" FORCE)
91+
#set(WDK_CXX_FLAGS "/target:aarch64-pc-windows-msvc" CACHE STRING "" FORCE)
7692
endif()
7793

7894
# Add .pdb debug symbols - always.
@@ -84,6 +100,10 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "x64-Debug")
84100
add_definitions(-DDBG -DZFS_DEBUG)
85101
endif()
86102

103+
if(CMAKE_BUILD_TYPE STREQUAL "arm64-Debug")
104+
add_definitions(-DDBG -DZFS_DEBUG)
105+
endif()
106+
87107
# Avoid dependency add_compile_definitions vcruntime140.dll
88108
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
89109
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")

CMakeSettings.json

Lines changed: 75 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,76 @@
11
{
2-
"configurations": [
3-
{
4-
"name": "x64-Debug",
5-
"generator": "Ninja",
6-
"configurationType": "Debug",
7-
"inheritEnvironments": [ "msvc_x64" ],
8-
"buildRoot": "${projectDir}\\out\\build\\${name}",
9-
"installRoot": "${projectDir}\\out\\install\\${name}",
10-
"cmakeCommandArgs": "",
11-
"buildCommandArgs": "",
12-
"ctestCommandArgs": "",
13-
"variables": [
14-
{
15-
"name": "OPENZFS_SIGNTOOL_SHA1",
16-
"value": "60FCE297ADEBD3D557CFB183BAD47A0D62CB30E9",
17-
"type": "STRING"
18-
}
19-
]
20-
},
21-
{
22-
"name": "x64-Release",
23-
"generator": "Ninja",
24-
"configurationType": "RelWithDebInfo",
25-
"buildRoot": "${projectDir}\\out\\build\\${name}",
26-
"installRoot": "${projectDir}\\out\\install\\${name}",
27-
"cmakeCommandArgs": "",
28-
"buildCommandArgs": "",
29-
"ctestCommandArgs": "",
30-
"inheritEnvironments": [ "msvc_x64_x64" ]
31-
}
32-
]
33-
}
2+
"configurations": [
3+
{
4+
"name": "x64-Debug",
5+
"generator": "Ninja",
6+
"configurationType": "Debug",
7+
"inheritEnvironments": [ "msvc_x64" ],
8+
"buildRoot": "${projectDir}\\out\\build\\${name}",
9+
"installRoot": "${projectDir}\\out\\install\\${name}",
10+
"cmakeCommandArgs": "",
11+
"buildCommandArgs": "-v",
12+
"ctestCommandArgs": "",
13+
"variables": [
14+
{
15+
"name": "OPENZFS_SIGNTOOL_SHA1",
16+
"value": "60FCE297ADEBD3D557CFB183BAD47A0D62CB30E9",
17+
"type": "STRING"
18+
}
19+
]
20+
},
21+
{
22+
"name": "x64-Release",
23+
"generator": "Ninja",
24+
"configurationType": "RelWithDebInfo",
25+
"buildRoot": "${projectDir}\\out\\build\\${name}",
26+
"installRoot": "${projectDir}\\out\\install\\${name}",
27+
"cmakeCommandArgs": "",
28+
"buildCommandArgs": "",
29+
"ctestCommandArgs": "",
30+
"inheritEnvironments": [ "msvc_x64_x64" ]
31+
},
32+
{
33+
"name": "arm64-Debug",
34+
"generator": "Ninja",
35+
"configurationType": "Debug",
36+
"buildRoot": "${projectDir}\\out\\build\\${name}",
37+
"installRoot": "${projectDir}\\out\\install\\${name}",
38+
"cmakeCommandArgs": "",
39+
"ctestCommandArgs": "",
40+
"inheritEnvironments": [ "msvc_arm64_x64" ],
41+
"variables": [
42+
{
43+
"name": "LIB_EAY_DEBUG",
44+
"value": "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MTd/libcrypto_static.lib",
45+
"type": "FILEPATH"
46+
},
47+
{
48+
"name": "SSL_EAY_DEBUG",
49+
"value": "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MTd/libssl_static.lib",
50+
"type": "FILEPATH"
51+
},
52+
{
53+
"name": "OPENSSL_ROOT_DIR",
54+
"value": "C:/Program Files/OpenSSL-Win64-ARM/",
55+
"type": "FILEPATH"
56+
},
57+
{
58+
"name": "CRYPTO_STATIC_TEST",
59+
"value": "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MTd/libcrypto_static.lib",
60+
"type": "FILEPATH"
61+
},
62+
{
63+
"name": "SSL_EAY_RELEASE",
64+
"value": "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MT/libssl_static.lib",
65+
"type": "FILEPATH"
66+
},
67+
{
68+
"name": "LIB_EAY_RELEASE",
69+
"value": "C:/Program Files/OpenSSL-Win64-ARM/lib/VC/arm64/MT/libcrypto_static.lib",
70+
"type": "FILEPATH"
71+
}
72+
],
73+
"buildCommandArgs": "-v"
74+
}
75+
]
76+
}

cmd/zed/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ add_custom_command(
4646
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows/zed.inf.temp" "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows/zed.inf"
4747
COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows/zed.inf.temp"
4848
COMMAND "${INF2CAT_PROGRAM}" /verbose "/driver:${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows" /os:10_19H1_X86,10_19H1_X64,ServerRS5_X64 /uselocaltime
49-
COMMAND "${SIGNTOOL_PROGRAM}" sign /v /as /fd sha256 /td sha256 /sha1 "${OPENZFS_SIGNTOOL_SHA1}" /tr "${OPENZFS_SIGNTOOL_TSA}" "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows/zed.cat"
49+
# COMMAND "${SIGNTOOL_PROGRAM}" sign /v /as /fd sha256 /td sha256 /sha1 "${OPENZFS_SIGNTOOL_SHA1}" /tr "${OPENZFS_SIGNTOOL_TSA}" "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows/zed.cat"
5050
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/cmd/zed/os/windows"
5151
COMMENT "Generating and signing zed.cat file"
5252
VERBATIM

contrib/windows/OpenZFS/.gitignore

Lines changed: 0 additions & 3 deletions
This file was deleted.

contrib/windows/OpenZFS/OpenZFS.sln

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)