diff --git a/etc/bashrc b/etc/bashrc index 0634bee9f5..d74b2bb61b 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -6,7 +6,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2021 OpenCFD Ltd. +# Copyright (C) 2016-2022 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -86,6 +86,8 @@ export WM_COMPILE_OPTION=Opt # [WM_COMPILE_CONTROL] - additional control for compiler rules # +gold : with gold linker +# +lld : with lld linker (with clang) +# +mold : with mold linker (with clang) # ~openmp : without openmp # version=... : compiler suffix (eg, "11" for gcc-11) #export WM_COMPILE_CONTROL="+gold" diff --git a/etc/cshrc b/etc/cshrc index ae50d92ba9..1ae0e25093 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -6,7 +6,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2021 OpenCFD Ltd. +# Copyright (C) 2016-2022 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -86,6 +86,8 @@ setenv WM_COMPILE_OPTION Opt # [WM_COMPILE_CONTROL] - additional control for compiler rules # +gold : with gold linker +# +lld : with lld linker (with clang) +# +mold : with mold linker (with clang) # ~openmp : without openmp # version=... : compiler suffix (eg, "11" for gcc-11) #setenv WM_COMPILE_CONTROL "+gold" diff --git a/wmake/makefiles/general b/wmake/makefiles/general index 9ef44faa3d..a4d6e11cf3 100644 --- a/wmake/makefiles/general +++ b/wmake/makefiles/general @@ -6,7 +6,7 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2019-2020 OpenCFD Ltd. +# Copyright (C) 2019-2022 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. @@ -146,7 +146,7 @@ silent: $(EXE)$(EXT_EXE): $(OBJECTS) @$(WM_SCRIPTS)/makeTargetDir $(EXE) - $(call QUIET_MESSAGE,ld,$(EXE)$(EXT_EXE)) + $(call QUIET_MESSAGE,link,$(EXE)$(EXT_EXE)) $E $(LINKEXE) $(OBJECTS) -L$(LIB_PLATFORMS) \ $(EXE_LIBS) $(PROJECT_LIBS) $(SYS_LIBS) \ $(LINK_LIBS) $(GLIBS) -o $(EXE)$(EXT_EXE) @@ -156,7 +156,7 @@ exe: $(SEXE)$(EXT_EXE) | silent $(SEXE)$(EXT_EXE): $(OBJECTS) @$(WM_SCRIPTS)/makeTargetDir $(SEXE) - $(call QUIET_MESSAGE,ld,$(SEXE)$(EXT_EXE)) + $(call QUIET_MESSAGE,link,$(SEXE)$(EXT_EXE)) $E $(LINKEXE) $(OBJECTS) $(EXE_LIBS) \ $(SYS_LIBS) $(LINK_LIBS) $(GLIBS) -o $(SEXE)$(EXT_EXE) @@ -174,13 +174,13 @@ libso: $(LIB)$(EXT_SO) | silent ifneq (,$(findstring windows,$(WM_OSTYPE))) $(LIB)$(EXT_SO): $(OBJECTS) @$(WM_SCRIPTS)/makeTargetDir $(LIB) - $(call QUIET_MESSAGE,ld,$(LIB)$(EXT_SO)) + $(call QUIET_MESSAGE,link,$(LIB)$(EXT_SO)) $E $(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \ $(PROJECT_LIBS) $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB)$(EXT_SO) else $(LIB)$(EXT_SO): $(OBJECTS) @$(WM_SCRIPTS)/makeTargetDir $(LIB) - $(call QUIET_MESSAGE,ld,$(LIB)$(EXT_SO)) + $(call QUIET_MESSAGE,link,$(LIB)$(EXT_SO)) $E $(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \ $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB)$(EXT_SO) endif diff --git a/wmake/rules/General/Clang/link-lld-c++ b/wmake/rules/General/Clang/link-lld-c++ new file mode 100644 index 0000000000..dbfa03192d --- /dev/null +++ b/wmake/rules/General/Clang/link-lld-c++ @@ -0,0 +1,10 @@ +LINK_LIBS = $(c++DBUG) + +LINKLIBSO = $(CC) $(c++FLAGS) -shared \ + -fuse-ld=lld \ + $(FOAM_EXTRA_LDFLAGS) + +LINKEXE = $(CC) $(c++FLAGS) \ + -fuse-ld=lld \ + -L$(FOAM_LIBBIN)/dummy -lPstream \ + $(FOAM_EXTRA_LDFLAGS) diff --git a/wmake/rules/General/Clang/link-mold-c++ b/wmake/rules/General/Clang/link-mold-c++ new file mode 100644 index 0000000000..b5fa124c99 --- /dev/null +++ b/wmake/rules/General/Clang/link-mold-c++ @@ -0,0 +1,10 @@ +LINK_LIBS = $(c++DBUG) + +LINKLIBSO = $(CC) $(c++FLAGS) -shared \ + -fuse-ld=mold \ + $(FOAM_EXTRA_LDFLAGS) + +LINKEXE = $(CC) $(c++FLAGS) \ + -fuse-ld=mold \ + -L$(FOAM_LIBBIN)/dummy -lPstream \ + $(FOAM_EXTRA_LDFLAGS) diff --git a/wmake/rules/linux64Clang/c++ b/wmake/rules/linux64Clang/c++ index 7dbcbba7eb..bb4d4f8dcd 100644 --- a/wmake/rules/linux64Clang/c++ +++ b/wmake/rules/linux64Clang/c++ @@ -12,8 +12,17 @@ cctoo = $(Ctoo) cpptoo = $(Ctoo) cxxtoo = $(Ctoo) +# Linking: + ifneq (,$(findstring +gold,$(WM_COMPILE_CONTROL))) include $(GENERAL_RULES)/Clang/link-gold-c++ + +else ifneq (,$(findstring +mold,$(WM_COMPILE_CONTROL))) + include $(GENERAL_RULES)/Clang/link-mold-c++ + +else ifneq (,$(findstring +lld,$(WM_COMPILE_CONTROL))) + include $(GENERAL_RULES)/Clang/link-lld-c++ + else include $(GENERAL_RULES)/Clang/link-c++ endif diff --git a/wmake/rules/linuxClang/c++ b/wmake/rules/linuxClang/c++ index 8376bc30ce..8e9501272f 100644 --- a/wmake/rules/linuxClang/c++ +++ b/wmake/rules/linuxClang/c++ @@ -12,8 +12,17 @@ cctoo = $(Ctoo) cpptoo = $(Ctoo) cxxtoo = $(Ctoo) +# Linking: + ifneq (,$(findstring +gold,$(WM_COMPILE_CONTROL))) include $(GENERAL_RULES)/Clang/link-gold-c++ + +else ifneq (,$(findstring +mold,$(WM_COMPILE_CONTROL))) + include $(GENERAL_RULES)/Clang/link-mold-c++ + +else ifneq (,$(findstring +lld,$(WM_COMPILE_CONTROL))) + include $(GENERAL_RULES)/Clang/link-lld-c++ + else include $(GENERAL_RULES)/Clang/link-c++ endif