Skip to content

Commit 7a2fba7

Browse files
committed
* Add support for i386 architecture in CMakeLists.txt
1 parent b88a9d2 commit 7a2fba7

2 files changed

Lines changed: 49 additions & 15 deletions

File tree

.github/workflows/windows_build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ on:
55
paths:
66
- '**.c'
77
- '**.h'
8+
- '**/CMakeLists.txt'
89
- '.github/workflows/windows_build.yml'
910
pull_request:
1011
paths:
1112
- '**.c'
1213
- '**.h'
14+
- '**/CMakeLists.txt'
1315
- '.github/workflows/windows_build.yml'
1416

1517
jobs:

CMakeLists.txt

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ endif()
1313
# Set paths
1414
set(RING_INCLUDE "${RING}/language/include")
1515
set(RING_LIB "${RING}/lib")
16+
set(RING_BIN "${RING}/bin")
1617

1718
set(RING_WEBVIEW_C_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/src/ring_webview.c")
1819

@@ -29,13 +30,31 @@ else()
2930
message(FATAL_ERROR "Unsupported operating system: ${CMAKE_SYSTEM_NAME}")
3031
endif()
3132

32-
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LC)
33-
if(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86_64|amd64")
34-
set(ARCH_DIR "amd64")
35-
elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "aarch64|arm64")
36-
set(ARCH_DIR "arm64")
37-
else()
38-
message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}")
33+
# Determine architecture
34+
if(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND DEFINED CMAKE_GENERATOR_PLATFORM)
35+
if(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")
36+
set(ARCH_DIR "i386")
37+
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64")
38+
set(ARCH_DIR "amd64")
39+
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
40+
set(ARCH_DIR "arm64")
41+
else()
42+
message(WARNING "Unsupported CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}, falling back to CMAKE_SYSTEM_PROCESSOR")
43+
endif()
44+
endif()
45+
46+
# Fallback to CMAKE_SYSTEM_PROCESSOR if ARCH_DIR is not set
47+
if(NOT DEFINED ARCH_DIR)
48+
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LC)
49+
if(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "i386|i686|x86")
50+
set(ARCH_DIR "i386")
51+
elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86_64|amd64")
52+
set(ARCH_DIR "amd64")
53+
elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "aarch64|arm64")
54+
set(ARCH_DIR "arm64")
55+
else()
56+
message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}")
57+
endif()
3958
endif()
4059

4160
# Set the destination directory for the built library
@@ -90,14 +109,27 @@ else()
90109
endif()
91110

92111
# Move the built library to the OS/architecture-specific directory after build
93-
add_custom_command(
94-
TARGET ring_webview
95-
POST_BUILD
96-
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_DEST_DIR}
97-
COMMAND ${CMAKE_COMMAND} -E rename $<TARGET_FILE:ring_webview> ${LIB_DEST_DIR}/$<TARGET_FILE_NAME:ring_webview>
98-
COMMENT "Moving built library to ${LIB_DEST_DIR}"
99-
VERBATIM
100-
)
112+
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
113+
add_custom_command(
114+
TARGET ring_webview
115+
POST_BUILD
116+
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_DEST_DIR}
117+
COMMAND ${CMAKE_COMMAND} -E make_directory ${RING_BIN}
118+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:ring_webview> ${RING_BIN}/
119+
COMMAND ${CMAKE_COMMAND} -E rename $<TARGET_FILE:ring_webview> ${LIB_DEST_DIR}/$<TARGET_FILE_NAME:ring_webview>
120+
COMMENT "Moving library to ${LIB_DEST_DIR} and copying to ${RING_BIN}"
121+
VERBATIM
122+
)
123+
else()
124+
add_custom_command(
125+
TARGET ring_webview
126+
POST_BUILD
127+
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIB_DEST_DIR}
128+
COMMAND ${CMAKE_COMMAND} -E rename $<TARGET_FILE:ring_webview> ${LIB_DEST_DIR}/$<TARGET_FILE_NAME:ring_webview>
129+
COMMENT "Moving built library to ${LIB_DEST_DIR}"
130+
VERBATIM
131+
)
132+
endif()
101133

102134
# Install rule
103135
get_filename_component(NORMALIZED_RING_LIB "${RING_LIB}" ABSOLUTE)

0 commit comments

Comments
 (0)