[Lldb-commits] [lldb] [lldb] Update LLDB testsuite's Makefile.rules in order to support the cross builds on Windows host. (PR #93639)
via lldb-commits
lldb-commits at lists.llvm.org
Wed May 29 09:35:24 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Vladimir Vereschaka (vvereschaka)
<details>
<summary>Changes</summary>
These changes do the following:
* avoids usage of $(findstring) within $(CC) to detect a type of specified C compiler. Also they change a way to get a counterpart C++ compiler instead of modifying the original $(CC) variable. Both of those fixes a problem when a compiler name is a part of some word (or itself) used in the path to the compiler. Here is an example where the `cc` compiler is getting detected instead of `clang` compiler inside of $(CC) with the following path:
> `".../accesssoftek/.../bin/clang.exe"`
and replaces the 'cc' sequence of 'accesssoftek' word with 'c++' sequence to get the C++ compiler name:
> `".../ac++esssoftek/.../bin/clang.exe"`
The change parses the source $(CC) and put every part into a separate variable instead and uses these parts to build the required tool's references subsequently.
Also these parts are used within the conditions to direct comparison instead of using $(findstring) where it is necessary or possible.
* avoids the compiler comparison with $(findstring) within the conditions.
* fixes SHELL initialization on the Windows build hosts.
* moves LLVM_AR initialization from the test's Makefile into Makefile.rules.
* adds `USE_LLVM_TOOLS` variable to force using of llvm-ar/llvm-objcopy tool instead of the system default. Passing this variable as `USE_LLVM_TOOLS=1` will configure the build to use `llvm-ar`, `llvm-objcopy` and `llvm-strip` tools for the tests. This variable could be passed via `LLDB_TEST_USER_ARGS="...;--env;USE_LLVM_TOOL=1;..."`.
* fix of LDFLAGS guiding through Makefile.rules.
---
Full diff: https://github.com/llvm/llvm-project/pull/93639.diff
1 Files Affected:
- (modified) lldb/packages/Python/lldbsuite/test/make/Makefile.rules (+176-84)
``````````diff
diff --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
index bd8eea3d6f5a0..8cf67068af34d 100644
--- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
+++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
@@ -26,6 +26,9 @@
# SPLIT_DEBUG_SYMBOLS := YES
# CROSS_COMPILE :=
# USE_PRIVATE_MODULE_CACHE := YES
+#
+# Specifying USE_LLVM_TOOLS=1 will force usage of the LLVM tools, such as llvm-ar/llvm-objcopy/llvm-strip,
+# instead of the system defaults (ar/objcopy/strip accordingly).
# Uncomment line below for debugging shell commands
# SHELL = /bin/sh -x
@@ -39,6 +42,11 @@ MAKEFILE_RULES := $(lastword $(MAKEFILE_LIST))
THIS_FILE_DIR := $(shell dirname $(MAKEFILE_RULES))
LLDB_BASE_DIR := $(THIS_FILE_DIR)/../../../../../
+STRIP ?= strip
+
+# Empty if not specified.
+LDFLAGS ?=
+
# The test harness invokes the test Makefiles with an explicit 'all'
# target, but its handy to be able to recursively call this Makefile
# without specifying a goal. You almost certainly want to build 'all',
@@ -51,23 +59,25 @@ LLDB_BASE_DIR := $(THIS_FILE_DIR)/../../../../../
#
# GNUWin32 uname gives "windows32" or "server version windows32" while
# some versions of MSYS uname return "MSYS_NT*", but most environments
-# standardize on "Windows_NT", so we'll make it consistent here.
+# standardize on "Windows_NT", so we'll make it consistent here.
# When running tests from Visual Studio, the environment variable isn't
# inherited all the way down to the process spawned for make.
#----------------------------------------------------------------------
HOST_OS := $(shell uname -s)
-ifneq (,$(findstring windows32,$(HOST_OS)))
- HOST_OS := Windows_NT
-endif
-
-ifneq (,$(findstring MSYS_NT,$(HOST_OS)))
- HOST_OS := Windows_NT
+ifneq (,$(or \
+ $(findstring windows32,$(HOST_OS)),\
+ $(findstring MSYS_NT,$(HOST_OS))))
+ HOST_OS := Windows_NT
endif
ifeq "$(OS)" ""
OS := $(HOST_OS)
endif
+# Retrieve the host arch. We are going to use $HOST_OS/$HOST_ARCH to
+# detect the cross platform testing.
+HOST_ARCH := $(shell uname -m)
+
#----------------------------------------------------------------------
# If OS is Windows, force SHELL to be cmd
#
@@ -77,9 +87,10 @@ endif
# Also reset BUILDDIR value because "pwd" returns cygwin or msys path
# which needs to be converted to windows path.
#----------------------------------------------------------------------
-ifeq "$(OS)" "Windows_NT"
- SHELL = $(WINDIR)\system32\cmd.exe
- BUILDDIR := $(shell echo %cd%)
+ifeq "$(HOST_OS)" "Windows_NT"
+ # The latest Windows has the lower-case 'windir' env variable.
+ SHELL := $(or $(windir),$(WINDIR),C:\WINDOWS)\system32\cmd.exe
+ BUILDDIR := $(shell echo %cd%)
endif
#----------------------------------------------------------------------
@@ -91,16 +102,18 @@ endif
ifeq "$(HOST_OS)" "Windows_NT"
QUOTE = "
FIXUP_SYNTAX_HIGHLIGHTING_IN_MY_EDITOR = "
+ EXE_EXT := .exe
else
QUOTE = '
FIXUP_SYNTAX_HIGHLIGHTING_IN_MY_EDITOR = '
+ EXE_EXT :=
endif
#----------------------------------------------------------------------
# If TRIPLE is not defined try to set the ARCH, CC, CFLAGS, and more
# from the triple alone
#----------------------------------------------------------------------
-ARCH_CFLAGS :=
+ARCH_CFLAGS ?=
ifeq "$(OS)" "Android"
include $(THIS_FILE_DIR)/Android.rules
endif
@@ -231,23 +244,52 @@ DEBUG_INFO_FLAG ?= -g
CFLAGS ?= $(DEBUG_INFO_FLAG) -O0
+path_wrapper = $(1)
+ifeq "$(HOST_OS)" "Windows_NT"
+ ifeq "$(OS)" "Linux"
+ path_wrapper = $(subst \,/,$(1))
+ # Normalize base pathes at the same time.
+ override SRCDIR := $(call path_wrapper,$(SRCDIR))
+ override THIS_FILE_DIR := $(call path_wrapper,$(THIS_FILE_DIR))
+ endif
+endif
+
ifeq "$(OS)" "Darwin"
ifneq "$(SDKROOT)" ""
CFLAGS += -isysroot "$(SDKROOT)"
endif
endif
+# The cross platform build needs some adjustments and requirements.
+ifneq ("$(HOST_OS)-$(HOST_ARCH)", "$(OS)-$(ARCH)")
+ # We need --sysroot for the most cases, but currently do not throw the error.
+ ifeq ("", "$(SDKROOT)")
+ $(warning SDKROOT (sysroot) parameter must be specified for the cross platform builds.)
+ endif
+
+ # Override the target arch options for the compiler.
+ ifeq "$(OS)" "Linux"
+ TOOL_PREFIX := $(subst -unknown,,$(ARCH))
+ # Always specify the target sysroot for the compiler/linker.
+ ARCH_CFLAGS += --sysroot $(SDKROOT)
+ # USE_LIBSTDCPP := 1
+ override MAKEFILE_RULES := $(call path_wrapper,$(MAKEFILE_RULES))
+
+ LDFLAGS += -fuse-ld=lld
+ endif
+endif
+
ifeq "$(OS)" "Darwin"
CFLAGS += $(ARCHFLAG) $(ARCH) $(FRAMEWORK_INCLUDES)
else
CFLAGS += $(ARCHFLAG)$(ARCH)
endif
-CFLAGS += -I$(LLDB_BASE_DIR)include -I$(LLDB_OBJ_ROOT)/include
+CFLAGS += -I$(call path_wrapper,$(LLDB_BASE_DIR)include) -I$(call path_wrapper,$(LLDB_OBJ_ROOT)/include)
-CFLAGS += -I$(SRCDIR) -I$(THIS_FILE_DIR)
+CFLAGS += -I$(call path_wrapper,$(SRCDIR)) -I$(call path_wrapper,$(THIS_FILE_DIR))
ifndef NO_TEST_COMMON_H
- CFLAGS += -include $(THIS_FILE_DIR)/test_common.h
+ CFLAGS += -include $(call path_wrapper,$(THIS_FILE_DIR))/test_common.h
endif
CFLAGS += $(NO_LIMIT_DEBUG_INFO_FLAGS) $(ARCH_CFLAGS)
@@ -269,7 +311,7 @@ else
THE_CLANG_MODULE_CACHE_DIR := $(CLANG_MODULE_CACHE_DIR)
endif
-MODULE_BASE_FLAGS := -fmodules -gmodules -fmodules-cache-path=$(THE_CLANG_MODULE_CACHE_DIR)
+MODULE_BASE_FLAGS := -fmodules -gmodules -fmodules-cache-path=$(call path_wrapper,$(THE_CLANG_MODULE_CACHE_DIR))
MANDATORY_MODULE_BUILD_CFLAGS := $(MODULE_BASE_FLAGS) -gmodules
# Build flags for building with C++ modules.
# -glldb is necessary for emitting information about what modules were imported.
@@ -286,14 +328,14 @@ endif
CFLAGS += $(CFLAGS_EXTRAS)
CXXFLAGS += -std=c++11 $(CFLAGS) $(ARCH_CXXFLAGS)
-LD = $(CC)
-LDFLAGS ?= $(CFLAGS)
LDFLAGS += $(LD_EXTRAS) $(ARCH_LDFLAGS)
+
ifeq (,$(filter $(OS), Windows_NT Android Darwin))
ifneq (,$(filter YES,$(ENABLE_THREADS)))
- LDFLAGS += -pthread
+ LDFLAGS += -lpthread
endif
endif
+
OBJECTS =
EXE ?= a.out
@@ -317,48 +359,81 @@ ifneq "$(DYLIB_NAME)" ""
endif
endif
-# Function that returns the counterpart C++ compiler, given $(CC) as arg.
-cxx_compiler_notdir = $(if $(findstring icc,$(1)), \
- $(subst icc,icpc,$(1)), \
- $(if $(findstring llvm-gcc,$(1)), \
- $(subst llvm-gcc,llvm-g++,$(1)), \
- $(if $(findstring gcc,$(1)), \
- $(subst gcc,g++,$(1)), \
- $(subst cc,c++,$(1)))))
-cxx_compiler = $(if $(findstring /,$(1)),$(join $(dir $(1)), $(call cxx_compiler_notdir,$(notdir $(1)))),$(call cxx_compiler_notdir,$(1)))
-
-# Function that returns the C++ linker, given $(CC) as arg.
-cxx_linker_notdir = $(if $(findstring icc,$(1)), \
- $(subst icc,icpc,$(1)), \
- $(if $(findstring llvm-gcc,$(1)), \
- $(subst llvm-gcc,llvm-g++,$(1)), \
- $(if $(findstring gcc,$(1)), \
- $(subst gcc,g++,$(1)), \
- $(subst cc,c++,$(1)))))
-cxx_linker = $(if $(findstring /,$(1)),$(join $(dir $(1)), $(call cxx_linker_notdir,$(notdir $(1)))),$(call cxx_linker_notdir,$(1)))
+# Remove all " and ' characters from the path. Also remove surrounding space chars.
+cstrip = $(strip $(subst ",,$(subst ',,$(1))))
+
+CC_PATH := $(dir $(call cstrip,$(CC)))
+# Compiler name without extension
+CC_NAME := $(basename $(notdir $(call cstrip,$(CC))))
+# A kind of compiler: clang, gcc, cc & etc.
+CCC := $(or $(lastword $(subst -, ,$(CC_NAME))), $(CC_NAME))
+# A triple prefix of compiler name: <armv7-none-linux-gnu->gcc
+CC_PREFIX := $(if $(findstring -,$(CC_NAME)),$(subst -$(CCC),,$(CC_NAME)),)
+
+# Function returns the tool/compiler name including the triple (or whatnever) prefix
+# if it presents in the original CC.
+cname_with_prefix = $(if $(CC_PREFIX),$(CC_PREFIX)-$(1),$(1))
+
+# A kind of C++ compiler. Get the counterpart C++ compiler based on CC/CCC.
+CXXC = $(strip $(if $(filter $(CCC), icc),icpc,\
+ $(if $(filter $(CCC), llvm-gcc),llvm-g++,\
+ $(if $(filter $(CCC), gcc),g++,\
+ $(if $(filter $(CCC), cc),c++,\
+ $(CCC))))))
+# A name of C++ compiler including the prefix.
+CXX_NAME := $(call cname_with_prefix,$(CXXC))
+
+# These functions return the fully qualified tool name (compiler or whatnevet) based on the previously parsed CC,
+# given a simple tool (clang, gcc, objcopy & etc) name as arg.
+# The first arg is the simplyfied tool name
+# The second arg is a path to the tool (CC_PATH otherwise)
+toolpath_base = $(join $(dir $(or $(2),$(CC_PATH))),$(addsuffix $(EXE_EXT),$(1)))
+# This function assemblies the tool name with the triple prefix.
+toolpath_with_prefix_base = $(join $(dir $(or $(CC_PATH),$(2))),$(addsuffix $(EXE_EXT),$(call cname_with_prefix,$(1))))
+
+TOOLSDIR = $(call path_wrapper,$(call cstrip,$(or $(abspath,$(LLVM_TOOLS_DIR)),$(CC_PATH)))))
-ifneq "$(OS)" "Darwin"
- CLANG_OR_GCC := $(strip $(if $(findstring clang,$(CC)), \
- $(findstring clang,$(CC)), \
- $(if $(findstring gcc,$(CC)), \
- $(findstring gcc,$(CC)), \
- cc)))
+ifeq "$(HOST_OS)" "Windows_NT"
+ wrap_quotes = $(QUOTE)$(1)$(QUOTE)
+ # This function enframes the full path with the platform specific quotes. This is necessary to run the c++ executable
+ # properly under 'sh' on Windows host (prevent the path breakage because of Windows style path separators).
+ cxx_compiler = $(if $(CC_PATH),$(call wrap_quotes,$(call toolpath_with_prefix_base,$(1))),$(call toolpath_with_prefix_base,$(1)))
+ # Normalize CC on Windows build host. Wrap it in quotes if CC contains a path to the compiler.
+ override CC := $(call cxx_compiler,$(CCC))
+else
+ cxx_compiler = $(call toolpath_with_prefix_base,$(1))
+endif
- CC_LASTWORD := $(strip $(lastword $(subst -, ,$(CC))))
+# Always override the linker. Assign already normalized CC.
+LD = $(CC)
+# A kind of linker. It always gets retrieved from CC.
+LDC := $(CCC)
- replace_with = $(strip $(if $(findstring $(3),$(CC_LASTWORD)), \
- $(subst $(3),$(1),$(2)), \
- $(subst $(3),$(1),$(subst -$(CC_LASTWORD),,$(2)))))
+# Function that returns the C++ linker, given kind of compiler (CCC or CXXC) as arg.
+cxx_linker = $(call cxx_compiler,$(1))
- ifeq "$(notdir $(CC))" "$(CC)"
- replace_cc_with = $(call replace_with,$(1),$(CC),$(CLANG_OR_GCC))
- else
- replace_cc_with = $(join $(dir $(CC)),$(call replace_with,$(1),$(notdir $(CC)),$(CLANG_OR_GCC)))
- endif
+#Note: LLVM_AR is currently required by API TestBSDArchives.py tests.
+# Assembly a full path to llvm-ar for give n LLVM_TOOLS_DIR;
+# otherwise assume we have llvm-ar at the same place where is CC specified.
+LLVM_AR = $(call toolpath_base,llvm-ar,$(TOOLSDIR))
- OBJCOPY ?= $(call replace_cc_with,objcopy)
- ARCHIVER ?= $(call replace_cc_with,ar)
- override AR = $(ARCHIVER)
+ifneq "$(OS)" "Darwin"
+ # Use the llvm project tool instead of the system defaults.
+ #Note: do not override explicity specified tool from the cmd line.
+ ifdef USE_LLVM_TOOLS
+ OBJCOPY := $(call toolpath_base,llvm-objcopy,$(TOOLSDIR))
+ STRIP := $(call toolpath_base,llvm-strip,$(TOOLSDIR))
+ ARCHIVER := $(call toolpath_base,llvm-ar,$(TOOLSDIR))
+ override AR = $(ARCHIVER)
+ override LLVM_AR = $(ARCHIVER)
+ endif
+ # Assembly a toolchain side tool cmd based on passed CC properties we parsed early.
+ ifneq (,$(filter $(CCC), clang gcc cc))
+ OBJCOPY ?= $(call toolpath_with_prefix_base,objcopy)
+ STRIP ?= $(call toolpath_with_prefix_base,strip)
+ ARCHIVER ?= $(call toolpath_with_prefix_base,ar)
+ override AR = $(ARCHIVER)
+ endif
endif
ifdef PIE
@@ -369,7 +444,7 @@ endif
# Windows specific options
#----------------------------------------------------------------------
ifeq "$(OS)" "Windows_NT"
- ifneq (,$(findstring clang,$(CC)))
+ ifeq ($(CCC), clang)
# Clang for Windows doesn't support C++ Exceptions
CXXFLAGS += -fno-exceptions
CXXFLAGS += -D_HAS_EXCEPTIONS=0
@@ -398,11 +473,33 @@ ifeq (1, $(USE_SYSTEM_STDLIB))
endif
endif
+ifeq (,$(or $(USE_LIBSTDCPP), $(USE_LIBCPP), $(USE_SYSTEM_STDLIB)))
+ # If no explicit request was made, but we have paths to a custom libcxx, use
+ # them.
+ ifneq ($(and $(LIBCPP_INCLUDE_DIR), $(LIBCPP_LIBRARY_DIR)),)
+ CXXFLAGS += -nostdlib++ -nostdinc++ -cxx-isystem $(LIBCPP_INCLUDE_DIR)
+ ifneq "$(LIBCPP_INCLUDE_TARGET_DIR)" ""
+ CXXFLAGS += -cxx-isystem $(LIBCPP_INCLUDE_TARGET_DIR)
+ endif
+ LDFLAGS += -L$(LIBCPP_LIBRARY_DIR) -Wl,-rpath,$(LIBCPP_LIBRARY_DIR) -lc++ -lc++abi
+ # Otherwise no C++ library has been specified. Use stdc++ by default.
+ else
+ USE_LIBSTDCPP := 1
+ endif
+endif
+
ifeq (1,$(USE_LIBSTDCPP))
# Clang requires an extra flag: -stdlib=libstdc++
- ifneq (,$(findstring clang,$(CC)))
+ ifeq ($(CCC),clang)
CXXFLAGS += -stdlib=libstdc++
LDFLAGS += -stdlib=libstdc++
+
+ # A case for the cross platform builds.
+ ifneq ("$(HOST_OS)-$(HOST_ARCH)", "$(OS)-$(ARCH)")
+ # Force clang looking for the gcc's headers at specific rootfs folder.
+ CXXFLAGS += --gcc-toolchain=$(SDKROOT)/usr
+ LDFLAGS += --gcc-toolchain=$(SDKROOT)/usr
+ endif
endif
endif
@@ -412,14 +509,14 @@ ifeq (1,$(USE_LIBCPP))
ifneq "$(LIBCPP_INCLUDE_TARGET_DIR)" ""
CXXFLAGS += -cxx-isystem $(LIBCPP_INCLUDE_TARGET_DIR)
endif
- LDFLAGS += -L$(LIBCPP_LIBRARY_DIR) -Wl,-rpath,$(LIBCPP_LIBRARY_DIR) -lc++
+ LDFLAGS += -L$(LIBCPP_LIBRARY_DIR) -Wl,-rpath,$(LIBCPP_LIBRARY_DIR) -lc++ -lc++abi
else
ifeq "$(OS)" "Android"
# Nothing to do, this is already handled in
# Android.rules.
else
CXXFLAGS += -stdlib=libc++
- LDFLAGS += -stdlib=libc++
+ LDFLAGS += -stdlib=libc++ -lc++abi
endif
ifneq (,$(filter $(OS), FreeBSD Linux NetBSD))
ifneq (,$(LLVM_LIBS_DIR))
@@ -436,21 +533,15 @@ ifeq (1, $(USE_SYSTEM_STDLIB))
endif
CXXFLAGS += -nostdlib++ -nostdinc++ -cxx-isystem $(SDKROOT)/usr/include/c++/v1
LDFLAGS += -L$(SDKROOT)/usr/lib -Wl,-rpath,$(SDKROOT)/usr/lib -lc++
+ else
+ ifneq ("$(HOST_OS)-$(HOST_ARCH)", "$(OS)-$(ARCH)")
+ # Force clang looking for the gcc's headers at specific rootfs folder.
+ CXXFLAGS += -stdlib=libstdc++ --gcc-toolchain=$(SDKROOT)/usr
+ LDFLAGS += -stdlib=libstdc++ --gcc-toolchain=$(SDKROOT)/usr
+ endif
endif
endif
-# If no explicit request was made, but we have paths to a custom libcxx, use
-# them.
-ifeq ($(or $(USE_LIBSTDCPP), $(USE_LIBCPP), $(USE_SYSTEM_STDLIB)),)
- ifneq ($(and $(LIBCPP_INCLUDE_DIR), $(LIBCPP_LIBRARY_DIR)),)
- CXXFLAGS += -nostdlib++ -nostdinc++ -cxx-isystem $(LIBCPP_INCLUDE_DIR)
- ifneq "$(LIBCPP_INCLUDE_TARGET_DIR)" ""
- CXXFLAGS += -cxx-isystem $(LIBCPP_INCLUDE_TARGET_DIR)
- endif
- LDFLAGS += -L$(LIBCPP_LIBRARY_DIR) -Wl,-rpath,$(LIBCPP_LIBRARY_DIR) -lc++
- endif
-endif
-
#----------------------------------------------------------------------
# Additional system libraries
#----------------------------------------------------------------------
@@ -470,8 +561,8 @@ DYLIB_OBJECTS +=$(strip $(DYLIB_C_SOURCES:.c=.o))
DYLIB_OBJECTS +=$(strip $(DYLIB_OBJC_SOURCES:.m=.o))
ifneq "$(strip $(DYLIB_CXX_SOURCES))" ""
DYLIB_OBJECTS +=$(strip $(patsubst %.mm, %.o, $(DYLIB_CXX_SOURCES:.cpp=.o)))
- CXX = $(call cxx_compiler,$(CC))
- LD = $(call cxx_linker,$(CC))
+ CXX = $(call cxx_compiler,$(CXXC))
+ LD = $(call cxx_linker,$(CXXC))
endif
#----------------------------------------------------------------------
@@ -494,8 +585,8 @@ endif
#----------------------------------------------------------------------
ifneq "$(strip $(CXX_SOURCES))" ""
OBJECTS +=$(strip $(CXX_SOURCES:.cpp=.o))
- CXX = $(call cxx_compiler,$(CC))
- LD = $(call cxx_linker,$(CC))
+ CXX = $(call cxx_compiler,$(CXXC))
+ LD = $(call cxx_linker,$(CXXC))
endif
#----------------------------------------------------------------------
@@ -511,19 +602,20 @@ endif
#----------------------------------------------------------------------
ifneq "$(strip $(OBJCXX_SOURCES))" ""
OBJECTS +=$(strip $(OBJCXX_SOURCES:.mm=.o))
- CXX = $(call cxx_compiler,$(CC))
- LD = $(call cxx_linker,$(CC))
+ CXX = $(call cxx_compiler,$(CXXC))
+ LD = $(call cxx_linker,$(CXXC))
ifeq "$(findstring lobjc,$(LDFLAGS))" ""
LDFLAGS +=-lobjc
endif
endif
-ifeq ($(findstring clang, $(CXX)), clang)
+ifeq ($(CCC), clang)
CXXFLAGS += --driver-mode=g++
endif
ifneq "$(CXX)" ""
- ifeq ($(findstring clang, $(LD)), clang)
+ # Specify the driver mode parameter if we use clang as the linker.
+ ifeq ($(LDC), clang)
LDFLAGS += --driver-mode=g++
endif
endif
@@ -622,20 +714,20 @@ endif
ifneq "$(PCH_OUTPUT)" ""
$(PCH_OUTPUT) : $(PCH_CXX_SOURCE)
- $(CXX) $(CXXFLAGS) -x c++-header -o $@ $<
+ $(CXX) $(CXXFLAGS) -x c++-header -o $@ $(call path_wrapper,$<)
endif
%.o: %.c %.d
- $(CC) $(CFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $<
+ $(CC) $(CFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $(call path_wrapper,$<)
%.o: %.cpp %.d $(PCH_OUTPUT)
- $(CXX) $(PCHFLAGS) $(CXXFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $<
+ $(CXX) $(PCHFLAGS) $(CXXFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $(call path_wrapper,$<)
%.o: %.m %.d
- $(CC) $(CFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $<
+ $(CC) $(CFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $(call path_wrapper,$<)
%.o: %.mm %.d
- $(CXX) $(CXXFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $<
+ $(CXX) $(CXXFLAGS) -MT $@ -MD -MP -MF $*.d -c -o $@ $(call path_wrapper,$<)
#----------------------------------------------------------------------
# Automatic variables based on items already entered. Below we create
``````````
</details>
https://github.com/llvm/llvm-project/pull/93639
More information about the lldb-commits
mailing list