чт, 11 апр. 2024 г. в 21:05, Willy Tarreau <w...@1wt.eu>: > Hi Ilya, > > On Thu, Apr 11, 2024 at 08:27:39PM +0200, ???? ??????? wrote: > > do you know maybe how this was supposed to work ? > > haproxy/Makefile at master · haproxy/haproxy (github.com) > > <https://github.com/haproxy/haproxy/blob/master/Makefile#L499> > > That's this: > > ifneq ($(shell $(CC) $(CFLAGS) -dM -E -xc - </dev/null 2>/dev/null | > grep -c 'LOCK_FREE.*1'),0) > USE_LIBATOMIC = implicit > endif > > It calls the compiler with the known flags and checks if for this arch, > it's configured to require libatomic. >
macros has changed from 1 to 2: ilia@fedora:~/Downloads$ cc -dM -E -xc - </dev/null 2>/dev/null | grep LOCK #define __GCC_ATOMIC_CHAR_LOCK_FREE 2 #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 #define __GCC_ATOMIC_BOOL_LOCK_FREE 2 #define __GCC_ATOMIC_POINTER_LOCK_FREE 2 #define __GCC_ATOMIC_INT_LOCK_FREE 2 #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 #define __GCC_ATOMIC_LONG_LOCK_FREE 2 #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 #define __GCC_ATOMIC_LLONG_LOCK_FREE 2 #define __GCC_ATOMIC_SHORT_LOCK_FREE 2 the following patch works, but I'll play a bit more .... diff --git a/Makefile b/Makefile index 4bd263498..370ac7ed0 100644 --- a/Makefile +++ b/Makefile @@ -493,7 +493,7 @@ $(set_target_defaults) # linking with it by default as it's not always available nor deployed # (especially on archs which do not need it). ifneq ($(USE_THREAD:0=),) - ifneq ($(shell $(CC) $(OPT_CFLAGS) $(ARCH_FLAGS) $(CPU_CFLAGS) $(STD_CFLAGS) $(WARN_CFLAGS) $(NOWARN_CFLAGS) $(ERROR_CFLAGS) $(CFLAGS) -dM -E -xc - </dev/null 2>/dev/null | grep -c 'LOCK_FREE.*1'),0) + ifneq ($(shell $(CC) $(OPT_CFLAGS) $(ARCH_FLAGS) $(CPU_CFLAGS) $(STD_CFLAGS) $(WARN_CFLAGS) $(NOWARN_CFLAGS) $(ERROR_CFLAGS) $(CFLAGS) -dM -E -xc - </dev/null 2>/dev/null | grep -c 'LOCK_FREE.*[12]'),0) USE_LIBATOMIC = implicit endif endif > > > I had to enable atomic explicitly despite it was supposed to be detected > on > > the fly (I haven't had a deeper look yet) > > > > haproxy/.github/workflows/fedora-rawhide.yml at master · haproxy/haproxy > > < > https://github.com/haproxy/haproxy/blob/master/.github/workflows/fedora-rawhide.yml#L17-L18 > > > > I honestly don't know why it's not working, it could be useful to achive > the output of this command, either by calling it directly or for example > by inserting "tee /tmp/log |" before grep. If you have a copy of the linker > erorr you got without the lib, maybe it will reveal something. But honestly > this is a perfect example of the reasons why I prefer generic makefiles to > automatic detection: you see that you need libatomic, you add it, done. No > need to patch a configure to mask an error due to an unhandled special case > etc. The test above was mostly meant to ease the build for the most common > cases (and for me till now it has always worked, on various systems and > hardware), but I wouldn't mind too much. > > In fact you could simplify your build script by just passing > USE_LIBATOMIC=1 to enable it. > > BTW, is there a reason for "make -j3" in the build script ? Limiting > oneself > to 3 build processes when modern machines rarely have less than 8 cores is > a bit of a waste of time, especially if every other package does the same > in the distro! I'd just do "make -j$(nproc)" as usual there. > > Cheers, > Willy >