diff --git a/ChangeLog.txt b/ChangeLog.txt index 595139662d..d27e126243 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -7,6 +7,17 @@ Entries may not always be in chronological/commit order. See license at the end of file. */ +2025-07-07 16:17 UTC+0200 Aleksander Czajczynski (hb fki.pl) + * config/win/clang.mk + + add resource compiler detection chain to first stage, + now harbour.exe binary should also have manifest resource + compiled in when clang is used. Previously second stage rc + calling was implemented only in hbmk2. + + * utils/hbmk2/hbmk2.prg + ! fixed disappearing llvm-ar with fallback to ar, spotted + in windows-ci/MSYS2 + 2025-07-07 13:42 UTC+0200 Aleksander Czajczynski (hb fki.pl) * .github/workflows/windows-ci.yml * libgd, qt5-base not available in MSYS x86 diff --git a/config/win/clang.mk b/config/win/clang.mk index ca881587ea..94445490b7 100644 --- a/config/win/clang.mk +++ b/config/win/clang.mk @@ -50,11 +50,40 @@ LDLIBS := $(foreach lib,$(HB_USER_LIBS) $(LIBS) $(SYSLIBS),-l$(lib)) LDFLAGS += $(LIBPATHS) -AR := $(HB_CCPREFIX)llvm-ar +HB_AR_PATH := $(call find_in_path,$(HB_CCPREFIX)llvm-ar) +ifneq ($(HB_AR_PATH),) + AR := $(HB_CCPREFIX)llvm-ar +else + AR := $(HB_CCPREFIX)ar +endif AR_RULE = ( $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) rcs $(LIB_DIR)/$@ $(^F) $(ARSTRIP) ) || ( $(RM) $(subst /,$(DIRSEP),$(LIB_DIR)/$@) && $(FALSE) ) -# TODO: add resource compiler detect chain in this stage: GNU windres, llvm-windres, llvm-rc +# order of resource compiler detect chain in this stage (hbmk2 uses similar): +# GNU windres, llvm-windres, llvm-rc +# non-GNU shown resource file encoding issues + +RC_OUT := -o$(subst x,x, ) +RCFLAGS += -I. -I$(HB_HOST_INC) -O coff +RES_EXT := .reso + +HB_RC_PATH := $(call find_in_path,$(HB_CCPREFIX)windres) +ifneq ($(HB_RC_PATH),) + RC := $(HB_CCPREFIX)windres +else + HB_RC_PATH := $(call find_in_path,$(HB_CCPREFIX)llvm-windres) + ifneq ($(HB_RC_PATH),) + RC := $(HB_CCPREFIX)llvm-windres + else + HB_RC_PATH := $(call find_in_path,$(HB_CCPREFIX)llvm-rc) + ifneq ($(HB_RC_PATH),) + RC := $(HB_CCPREFIX)llvm-rc + RCFLAGS := /I. /I$(HB_HOST_INC) /C 1252 + RC_OUT := /FO$(subst x,x, ) + RES_EXT := .res + endif + endif +endif DY := $(CC) DFLAGS += -shared $(LIBPATHS) diff --git a/utils/hbmk2/hbmk2.prg b/utils/hbmk2/hbmk2.prg index f3ac61dd69..650f6ef7ef 100644 --- a/utils/hbmk2/hbmk2.prg +++ b/utils/hbmk2/hbmk2.prg @@ -4481,7 +4481,8 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit cLibLibExt := ".a" ENDIF cImpLibExt := cLibLibExt - IF hbmk[ _HBMK_cCOMP ] == "clang" + IF hbmk[ _HBMK_cCOMP ] == "clang" .AND. !( FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "llvm-ar" + hbmk[ _HBMK_cCCEXT ] ) == NIL ) + /* new clang toolchains not always distribute llvm-ar (or it is renamed) */ cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "llvm-ar" + hbmk[ _HBMK_cCCEXT ] ELSEIF hbmk[ _HBMK_cCOMP ] == "tcc" cBin_Lib := "tiny_libmaker.exe"