@@ -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" )
166-     endif ()
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 )
163+       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+         )
179+ 
180+         FetchContent_Declare(
181+             jemalloc_targ
182+             GIT_REPOSITORY ${UMF_JEMALLOC_REPO} 
183+             GIT_TAG ${UMF_JEMALLOC_TAG} )
184+         FetchContent_MakeAvailable(jemalloc_targ)
176185
177-     FetchContent_Declare(
178-         jemalloc_targ
179-         GIT_REPOSITORY ${UMF_JEMALLOC_REPO} 
180-         GIT_TAG ${UMF_JEMALLOC_TAG} )
181-     FetchContent_MakeAvailable(jemalloc_targ)
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 ()
182211
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)" )
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)
207234    endif ()
208- 
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)
231235endif ()
232236
233237if (JEMALLOC_FOUND)
0 commit comments