@@ -13,6 +13,7 @@ endif()
1313# Set paths
1414set (RING_INCLUDE "${RING} /language/include" )
1515set (RING_LIB "${RING} /lib" )
16+ set (RING_BIN "${RING} /bin" )
1617
1718set (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} " )
3031endif ()
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 ()
3958endif ()
4059
4160# Set the destination directory for the built library
@@ -90,14 +109,27 @@ else()
90109endif ()
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
103135get_filename_component (NORMALIZED_RING_LIB "${RING_LIB} " ABSOLUTE )
0 commit comments