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