@@ -155,79 +155,83 @@ if(NOT UMF_BUILD_LIBUMF_POOL_JEMALLOC)
155155 set (UMF_POOL_JEMALLOC_ENABLED FALSE )
156156 set (JEMALLOC_FOUND FALSE )
157157 set (JEMALLOC_LIBRARIES FALSE )
158- elseif (WINDOWS)
159- pkg_check_modules(JEMALLOC jemalloc)
160- if (NOT JEMALLOC_FOUND)
161- find_package (JEMALLOC REQUIRED jemalloc)
162- endif ()
163158else ()
164- if (NOT DEFINED UMF_JEMALLOC_REPO)
165- set (UMF_JEMALLOC_REPO "https://github.com/jemalloc/jemalloc.git" )
159+ set (JEMALLOC_VER 5.3.0)
160+ pkg_check_modules(JEMALLOC QUIET jemalloc)
161+ if (NOT JEMALLOC_FOUND)
162+ find_package (JEMALLOC ${JEMALLOC_VER} QUIET )
166163 endif ()
164+ if (JEMALLOC_FOUND)
165+ set (SYSTEM_JEMALLOC_FOUND TRUE )
166+ else ()
167+ if (NOT DEFINED UMF_JEMALLOC_REPO)
168+ set (UMF_JEMALLOC_REPO "https://github.com/jemalloc/jemalloc.git" )
169+ endif ()
167170
168- if (NOT DEFINED UMF_JEMALLOC_TAG)
169- set (UMF_JEMALLOC_TAG 5.3.0 )
170- endif ()
171+ if (NOT DEFINED UMF_JEMALLOC_TAG)
172+ set (UMF_JEMALLOC_TAG ${JEMALLOC_VER} )
173+ endif ()
171174
172- message (
173- STATUS
174- "Will fetch jemalloc from ${UMF_JEMALLOC_REPO} (tag: ${UMF_JEMALLOC_TAG} )"
175- )
175+ message (
176+ STATUS
177+ "Will fetch jemalloc from ${UMF_JEMALLOC_REPO} (tag: ${UMF_JEMALLOC_TAG} )"
178+ )
176179
177- FetchContent_Declare(
178- jemalloc_targ
179- GIT_REPOSITORY ${UMF_JEMALLOC_REPO}
180- GIT_TAG ${UMF_JEMALLOC_TAG} )
181- FetchContent_MakeAvailable(jemalloc_targ)
180+ FetchContent_Declare(
181+ jemalloc_targ
182+ GIT_REPOSITORY ${UMF_JEMALLOC_REPO}
183+ GIT_TAG ${UMF_JEMALLOC_TAG} )
184+ FetchContent_MakeAvailable(jemalloc_targ)
182185
183- add_custom_command (
184- COMMAND ./autogen.sh
185- WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
186- OUTPUT ${jemalloc_targ_SOURCE_DIR} /configure)
187- add_custom_command (
188- # Custom jemalloc build. Non-default options used:
189- # --with-jemalloc-prefix=je_ - add je_ prefix to all public APIs
190- # --disable-cxx - Disable C++ integration. This will cause new and
191- # delete operators implementations to be omitted.
192- # --disable-initial-exec-tls - Disable the initial-exec TLS model for
193- # jemalloc's internal thread-local storage (on those platforms that
194- # support explicit settings). This can allow jemalloc to be dynamically
195- # loaded after program startup (e.g. using dlopen). --disable-doc -
196- # Disable building and installing the documentation.
197- COMMAND
198- ./configure --prefix =${jemalloc_targ_BINARY_DIR}
199- --with-jemalloc-prefix =je_ --disable-cxx --disable-initial-exec-tls
200- --disable-doc CFLAGS=-fPIC
201- WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
202- OUTPUT ${jemalloc_targ_SOURCE_DIR} /Makefile
203- DEPENDS ${jemalloc_targ_SOURCE_DIR} /configure)
204-
205- if (NOT UMF_QEMU_BUILD)
206- set (MAKE_ARGUMENTS "-j$(nproc)" )
207- endif ()
186+ add_custom_command (
187+ COMMAND ./autogen.sh
188+ WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
189+ OUTPUT ${jemalloc_targ_SOURCE_DIR} /configure)
190+ add_custom_command (
191+ # Custom jemalloc build. Non-default options used:
192+ # --with-jemalloc-prefix=je_ - add je_ prefix to all public APIs
193+ # --disable-cxx - Disable C++ integration. This will cause new and
194+ # delete operators implementations to be omitted.
195+ # --disable-initial-exec-tls - Disable the initial-exec TLS model
196+ # for jemalloc's internal thread-local storage (on those platforms
197+ # that support explicit settings). This can allow jemalloc to be
198+ # dynamically loaded after program startup (e.g. using dlopen).
199+ # --disable-doc - Disable building and installing the documentation.
200+ COMMAND
201+ ./configure --prefix =${jemalloc_targ_BINARY_DIR}
202+ --with-jemalloc-prefix =je_ --disable-cxx
203+ --disable-initial-exec-tls --disable-doc CFLAGS=-fPIC
204+ WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
205+ OUTPUT ${jemalloc_targ_SOURCE_DIR} /Makefile
206+ DEPENDS ${jemalloc_targ_SOURCE_DIR} /configure)
207+
208+ if (NOT UMF_QEMU_BUILD)
209+ set (MAKE_ARGUMENTS "-j$(nproc)" )
210+ endif ()
208211
209- add_custom_command (
210- COMMAND make ${MAKE_ARGUMENTS}
211- WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
212- OUTPUT ${jemalloc_targ_SOURCE_DIR} /lib/libjemalloc.a
213- DEPENDS ${jemalloc_targ_SOURCE_DIR} /Makefile)
214- add_custom_command (
215- COMMAND make install
216- WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
217- OUTPUT ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a
218- DEPENDS ${jemalloc_targ_SOURCE_DIR} /lib/libjemalloc.a)
219-
220- add_custom_target (jemalloc_prod
221- DEPENDS ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
222- add_library (jemalloc INTERFACE )
223- target_link_libraries (
224- jemalloc INTERFACE ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
225- add_dependencies (jemalloc jemalloc_prod)
226-
227- set (JEMALLOC_FOUND TRUE )
228- set (JEMALLOC_LIBRARY_DIRS ${jemalloc_targ_BINARY_DIR} /lib)
229- set (JEMALLOC_INCLUDE_DIRS ${jemalloc_targ_BINARY_DIR} /include )
230- set (JEMALLOC_LIBRARIES ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
212+ add_custom_command (
213+ COMMAND make ${MAKE_ARGUMENTS}
214+ WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
215+ OUTPUT ${jemalloc_targ_SOURCE_DIR} /lib/libjemalloc.a
216+ DEPENDS ${jemalloc_targ_SOURCE_DIR} /Makefile)
217+ add_custom_command (
218+ COMMAND make install
219+ WORKING_DIRECTORY ${jemalloc_targ_SOURCE_DIR}
220+ OUTPUT ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a
221+ DEPENDS ${jemalloc_targ_SOURCE_DIR} /lib/libjemalloc.a)
222+
223+ add_custom_target (jemalloc_prod
224+ DEPENDS ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
225+ add_library (jemalloc INTERFACE )
226+ target_link_libraries (
227+ jemalloc INTERFACE ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
228+ add_dependencies (jemalloc jemalloc_prod)
229+
230+ set (JEMALLOC_FOUND TRUE )
231+ set (JEMALLOC_LIBRARY_DIRS ${jemalloc_targ_BINARY_DIR} /lib)
232+ set (JEMALLOC_INCLUDE_DIRS ${jemalloc_targ_BINARY_DIR} /include )
233+ set (JEMALLOC_LIBRARIES ${jemalloc_targ_BINARY_DIR} /lib/libjemalloc.a)
234+ endif ()
231235endif ()
232236
233237if (JEMALLOC_FOUND)
0 commit comments