77INCLUDE (ProcessorCount) # require CMake 3.15+
88PROCESSORCOUNT(_cpu_count)
99
10- RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_GC" "8.2.2" "" "" )
10+ SET (_target
11+ "RV_DEPS_GC"
12+ )
13+
14+ SET (_version
15+ "8.2.2"
16+ )
1117
1218SET (_download_url
1319 "https://github.com/ivmai/bdwgc/archive/refs/tags/v${_version} .zip"
@@ -20,16 +26,42 @@ SET(_install_dir
2026 ${RV_DEPS_BASE_DIR} /${_target} /install
2127)
2228
23- IF (RV_TARGET_LINUX)
24- SET (_lib_dir
25- ${_install_dir} /lib64
29+ SET (_make_command
30+ make
31+ )
32+ SET (_autogen_command
33+ sh ./autogen.sh
34+ )
35+ SET (_configure_command
36+ sh ./configure
37+ )
38+
39+ IF (${RV_OSX_EMULATION} )
40+ SET (_darwin_x86_64
41+ "arch" "${RV_OSX_EMULATION_ARCH} "
2642 )
27- ELSE ()
28- SET (_lib_dir
29- ${_install_dir} /lib
43+
44+ SET (_make_command
45+ ${_darwin_x86_64} ${_make_command}
46+ )
47+ SET (_autogen_command
48+ ${_darwin_x86_64} ${_autogen_command}
49+ )
50+ SET (_configure_command
51+ ${_darwin_x86_64} ${_configure_command}
52+ )
53+ ENDIF ()
54+ IF (RV_TARGET_WINDOWS)
55+ # MSYS2/CMake defaults to Ninja
56+ SET (_make_command
57+ ninja
3058 )
3159ENDIF ()
3260
61+ SET (_lib_dir
62+ ${_install_dir} /lib
63+ )
64+
3365SET (_gc_lib_name
3466 ${CMAKE_SHARED_LIBRARY_PREFIX} gc.1${CMAKE_SHARED_LIBRARY_SUFFIX}
3567)
@@ -83,33 +115,64 @@ SET(_include_dir
83115)
84116FILE (MAKE_DIRECTORY ${_include_dir} )
85117
86- LIST (APPEND _configure_options "-Denable_parallel_mark=ON" )
87- LIST (APPEND _configure_options "-Denable_cplusplus=ON" )
88118IF (RV_TARGET_WINDOWS)
89- LIST (APPEND _configure_options "-DCMAKE_USE_WIN32_THREADS_INIT=1" )
119+ SET (_cmake_configure_command
120+ ${CMAKE_COMMAND}
121+ )
122+ LIST (APPEND _cmake_configure_command "-DCMAKE_INSTALL_PREFIX=${_install_dir} " )
123+ LIST (APPEND _cmake_configure_command "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} " )
124+ LIST (APPEND _cmake_configure_command "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} " )
125+ LIST (APPEND _cmake_configure_command "-Denable_parallel_mark=ON" )
126+ LIST (APPEND _cmake_configure_command "-Denable_cplusplus=ON" )
127+ LIST (APPEND _cmake_configure_command "-DCMAKE_USE_WIN32_THREADS_INIT=1" )
128+ LIST (APPEND _cmake_configure_command "${RV_DEPS_BASE_DIR} /${_target} /src" )
129+ EXTERNALPROJECT_ADD(
130+ ${_target}
131+ DOWNLOAD_NAME ${_target} _${_version} .zip
132+ DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
133+ DOWNLOAD_EXTRACT_TIMESTAMP TRUE
134+ SOURCE_DIR ${RV_DEPS_BASE_DIR} /${_target} /src
135+ INSTALL_DIR ${_install_dir}
136+ URL ${_download_url}
137+ URL_MD5 ${_download_hash}
138+ CONFIGURE_COMMAND ${_cmake_configure_command}
139+ BUILD_COMMAND ${_make_command} -j${_cpu_count}
140+ INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${RV_DEPS_BASE_DIR} /${_target} /src/include ${_include_dir} /gc
141+ COMMAND ${CMAKE_COMMAND} -E copy ${RV_DEPS_BASE_DIR} /${_target} /src/${_gc_lib_name} ${_gc_lib}
142+ BUILD_IN_SOURCE TRUE
143+ BUILD_ALWAYS FALSE
144+ BUILD_BYPRODUCTS ${_gc_byproducts}
145+ USES_TERMINAL_BUILD TRUE
146+ )
147+ ADD_LIBRARY (BDWGC::Gc STATIC IMPORTED GLOBAL )
90148ELSE ()
91- LIST (APPEND _configure_options "-DCMAKE_USE_PTHREADS_INIT=1" )
149+ SET (_configure_args
150+ "--enable-cplusplus"
151+ )
152+ LIST (APPEND _configure_args "--prefix=${_install_dir} " )
153+
154+ EXTERNALPROJECT_ADD(
155+ ${_target}
156+ DOWNLOAD_NAME ${_target} _${_version} .zip
157+ DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
158+ DOWNLOAD_EXTRACT_TIMESTAMP TRUE
159+ SOURCE_DIR ${RV_DEPS_BASE_DIR} /${_target} /src
160+ INSTALL_DIR ${_install_dir}
161+ URL ${_download_url}
162+ URL_MD5 ${_download_hash}
163+ CONFIGURE_COMMAND ${_autogen_command} && ${_configure_command} ${_configure_args}
164+ BUILD_COMMAND ${_make_command} -j${_cpu_count}
165+ INSTALL_COMMAND ${_make_command} install
166+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${_install_dir} ${CMAKE_BINARY_DIR}
167+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${_install_dir} /lib ${RV_STAGE_LIB_DIR}
168+ BUILD_IN_SOURCE TRUE
169+ BUILD_ALWAYS FALSE
170+ BUILD_BYPRODUCTS ${_gc_byproducts}
171+ USES_TERMINAL_BUILD TRUE
172+ )
173+ ADD_LIBRARY (BDWGC::Gc SHARED IMPORTED GLOBAL )
92174ENDIF ()
93175
94- EXTERNALPROJECT_ADD(
95- ${_target}
96- DOWNLOAD_NAME ${_target} _${_version} .zip
97- DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
98- DOWNLOAD_EXTRACT_TIMESTAMP TRUE
99- SOURCE_DIR ${RV_DEPS_BASE_DIR} /${_target} /src
100- INSTALL_DIR ${_install_dir}
101- URL ${_download_url}
102- URL_MD5 ${_download_hash}
103- CONFIGURE_COMMAND ${CMAKE_COMMAND} ${_configure_options}
104- BUILD_COMMAND ${_cmake_build_command}
105- INSTALL_COMMAND ${_cmake_install_command}
106- BUILD_IN_SOURCE TRUE
107- BUILD_ALWAYS FALSE
108- BUILD_BYPRODUCTS ${_gc_byproducts}
109- USES_TERMINAL_BUILD TRUE
110- )
111- ADD_LIBRARY (BDWGC::Gc STATIC IMPORTED GLOBAL )
112-
113176ADD_DEPENDENCIES (BDWGC::Gc ${_target} )
114177SET_PROPERTY (
115178 TARGET BDWGC::Gc
0 commit comments