On Fri, Jan 26, 2024 at 04:41:36PM +0000, David Carlier wrote: > Hi, > > Please find the revised patch.
OK thanks, it looks good and addresses the build issue. I noticed that when building with the dummy lib, we continue to link with -lstdc++ even if it's not used (unless DEVICEATLAS_NOCACHE=1) while nothing was using c++. At first I thought it was useless, but I spotted that there was this for the dummy lib: OPTIONS_OBJS += $(DEVICEATLAS_SRC)/dacache.cpp instead of: OPTIONS_OBJS += $(DEVICEATLAS_SRC)/dacache.o So I fixed it and it went fine. I'm still seeing another issue, the last patch adds a check on $(uname -s) to figure dependencies, which should never be used in a makefile since it breaks cross-compilation. From what I'm seeing, the offending part is: OS := $(shell uname -s) ... ifeq ($(OS), Linux) LDFLAGS += -lrt endif ifeq ($(OS), SunOS) LDFLAGS += -lrt endif We already have this in the main makefile: ifneq ($(USE_RT),) RT_LDFLAGS = -lrt endif And USE_RT is automatically set on Linux and Solaris targets, so normally you should be able to build this new check. Another point, I'm seeing that the c++ output is printed not "prettified", the whole c++ command line is always printed. With a small change I have it clean like other ones: CXX addons/deviceatlas/dummy/dacache.o CC addons/deviceatlas/dummy/dac.o CC addons/deviceatlas/dummy/json.o CC addons/deviceatlas/dummy/dasch.o CC addons/deviceatlas/dummy/dadwarc.o CC addons/deviceatlas/dummy/dadwcom.o CC addons/deviceatlas/dummy/dadwcurl.o CC src/version.o LD haproxy The whole diff is below, if you're OK, I'll directly apply the changes there instead of doing another round trip, otherwise feel free to suggest a different approach (I'll merge the verbose.mk change separately). Willy --- diff --git a/addons/deviceatlas/Makefile.inc b/addons/deviceatlas/Makefile.inc index 6ca2be6b3..63719bf50 100644 --- a/addons/deviceatlas/Makefile.inc +++ b/addons/deviceatlas/Makefile.inc @@ -1,7 +1,6 @@ # DEVICEATLAS_SRC : DeviceAtlas API source root path -OS := $(shell uname -s) CXX := c++ CXXLIB := -lstdc++ @@ -21,7 +20,7 @@ OPTIONS_CFLAGS += -DDATLAS_CURL -DDATLAS_CURLSSET -DDATLAS_GZ -DDATLAS_ZIP OPTIONS_CFLAGS += -I$(DEVICEATLAS_INC) -I$(CURL_INC) ifeq ($(DEVICEATLAS_NOCACHE),) CXXFLAGS := $(OPTIONS_CFLAGS) -std=gnu++11 -OPTIONS_OBJS += $(DEVICEATLAS_SRC)/dacache.cpp +OPTIONS_OBJS += $(DEVICEATLAS_SRC)/dacache.o OPTIONS_LDFLAGS += $(CXXLIB) else OPTIONS_CFLAGS += -DAPINOCACHE @@ -35,9 +34,5 @@ OPTIONS_OBJS += $(DEVICEATLAS_SRC)/dadwcurl.o OPTIONS_OBJS += $(DEVICEATLAS_SRC)/Os/daunix.o endif -ifeq ($(OS), Linux) -LDFLAGS += -lrt -endif -ifeq ($(OS), SunOS) -LDFLAGS += -lrt -endif +addons/deviceatlas/dummy/%.o: addons/deviceatlas/dummy/%.cpp + $(cmd_CXX) $(CXXFLAGS) -c -o $@ $< diff --git a/include/make/verbose.mk b/include/make/verbose.mk index c37d513c4..9a546312d 100644 --- a/include/make/verbose.mk +++ b/include/make/verbose.mk @@ -10,6 +10,7 @@ endif # or to themselves depending on the verbosity level. ifeq ($V,1) cmd_CC = $(CC) +cmd_CXX = $(CXX) cmd_LD = $(LD) cmd_AR = $(AR) cmd_MAKE = +$(MAKE) @@ -17,12 +18,14 @@ else ifeq (3.81,$(firstword $(sort $(MAKE_VERSION) 3.81))) # 3.81 or above cmd_CC = $(info $ CC $@) $(Q)$(CC) +cmd_CXX = $(info $ CXX $@) $(Q)$(CC) cmd_LD = $(info $ LD $@) $(Q)$(LD) cmd_AR = $(info $ AR $@) $(Q)$(AR) cmd_MAKE = $(info $ MAKE $@) $(Q)+$(MAKE) else # 3.80 or older cmd_CC = $(Q)echo " CC $@";$(CC) +cmd_CXX = $(Q)echo " CXX $@";$(CC) cmd_LD = $(Q)echo " LD $@";$(LD) cmd_AR = $(Q)echo " AR $@";$(AR) cmd_MAKE = $(Q)echo " MAKE $@";$(MAKE)