mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 888016 - Support compilation in subdirectories without VPATH; r=gps
This commit is contained in:
parent
fe75363400
commit
dd73712024
@ -24,19 +24,7 @@ HOST_CPPSRCS = \
|
||||
|
||||
OS_CXXFLAGS := $(filter-out -fno-exceptions,$(OS_CXXFLAGS)) -fexceptions
|
||||
|
||||
ifneq (,$(filter %86,$(TARGET_CPU)))
|
||||
CPU := x86
|
||||
else
|
||||
ifneq (,$(filter arm%,$(TARGET_CPU)))
|
||||
CPU := arm
|
||||
else
|
||||
CPU := $(TARGET_CPU)
|
||||
endif
|
||||
endif
|
||||
|
||||
CSRCS := \
|
||||
inject/$(CPU).c \
|
||||
inject/$(CPU)-noinit.c \
|
||||
test-ctors.c \
|
||||
test-array.c \
|
||||
$(NULL)
|
||||
@ -86,16 +74,5 @@ libs:: dummy
|
||||
GARBAGE += dummy
|
||||
endif
|
||||
|
||||
inject:
|
||||
$(NSINSTALL) -D $@
|
||||
|
||||
inject/%.c: inject.c $(call mkdir_deps,inject)
|
||||
cp $< $@
|
||||
|
||||
GARBAGE_DIRS += inject
|
||||
|
||||
inject/%.$(OBJ_SUFFIX): DEFINES += -DBITS=$(if $(HAVE_64BIT_OS),64,32)
|
||||
inject/%.$(OBJ_SUFFIX): CFLAGS := -O2 -fno-stack-protector $(filter -m% -I%,$(CFLAGS))
|
||||
inject/$(CPU)-noinit.$(OBJ_SUFFIX): DEFINES += -DNOINIT
|
||||
test.$(OBJ_SUFFIX): CFLAGS := -O0
|
||||
host_elf.$(OBJ_SUFFIX) host_elfhack.$(OBJ_SUFFIX): elfxx.h
|
||||
|
42
build/unix/elfhack/inject/Makefile.in
Normal file
42
build/unix/elfhack/inject/Makefile.in
Normal file
@ -0,0 +1,42 @@
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DEPTH = @DEPTH@
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
INTERNAL_TOOLS = 1
|
||||
NO_PROFILE_GUIDED_OPTIMIZE = 1
|
||||
|
||||
ifneq (,$(filter %86,$(TARGET_CPU)))
|
||||
CPU := x86
|
||||
else
|
||||
ifneq (,$(filter arm%,$(TARGET_CPU)))
|
||||
CPU := arm
|
||||
else
|
||||
CPU := $(TARGET_CPU)
|
||||
endif
|
||||
endif
|
||||
|
||||
CSRCS := \
|
||||
$(CPU).c \
|
||||
$(CPU)-noinit.c \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
export:: $(CSRCS:.c=.$(OBJ_SUFFIX))
|
||||
|
||||
$(CSRCS): %.c: ../inject.c
|
||||
cp $< $@
|
||||
|
||||
GARBAGE += $(CSRCS)
|
||||
|
||||
DEFINES += -DBITS=$(if $(HAVE_64BIT_OS),64,32)
|
||||
CFLAGS := -O2 -fno-stack-protector $(filter -m% -I%,$(CFLAGS))
|
||||
$(CPU)-noinit.$(OBJ_SUFFIX): DEFINES += -DNOINIT
|
7
build/unix/elfhack/inject/moz.build
Normal file
7
build/unix/elfhack/inject/moz.build
Normal file
@ -0,0 +1,7 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
NO_DIST_INSTALL = True
|
@ -5,3 +5,4 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
NO_DIST_INSTALL = True
|
||||
DIRS += ['inject']
|
||||
|
@ -362,15 +362,15 @@ ifndef TARGETS
|
||||
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=.$(OBJ_SUFFIX))
|
||||
SOBJS = $(SSRCS:.S=.$(OBJ_SUFFIX))
|
||||
CCOBJS = $(patsubst %.cc,%.$(OBJ_SUFFIX),$(filter %.cc,$(CPPSRCS)))
|
||||
CPPOBJS = $(patsubst %.cpp,%.$(OBJ_SUFFIX),$(filter %.cpp,$(CPPSRCS)))
|
||||
CMOBJS = $(CMSRCS:.m=.$(OBJ_SUFFIX))
|
||||
CMMOBJS = $(CMMSRCS:.mm=.$(OBJ_SUFFIX))
|
||||
ASOBJS = $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX))
|
||||
COBJS = $(notdir $(CSRCS:.c=.$(OBJ_SUFFIX)))
|
||||
SOBJS = $(notdir $(SSRCS:.S=.$(OBJ_SUFFIX)))
|
||||
# CPPSRCS can have different extensions (eg: .cpp, .cc)
|
||||
CPPOBJS = $(notdir $(addsuffix .$(OBJ_SUFFIX),$(basename $(CPPSRCS))))
|
||||
CMOBJS = $(notdir $(CMSRCS:.m=.$(OBJ_SUFFIX)))
|
||||
CMMOBJS = $(notdir $(CMMSRCS:.mm=.$(OBJ_SUFFIX)))
|
||||
ASOBJS = $(notdir $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)))
|
||||
ifndef OBJS
|
||||
_OBJS = $(COBJS) $(SOBJS) $(CCOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
|
||||
_OBJS = $(COBJS) $(SOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
|
||||
OBJS = $(strip $(_OBJS))
|
||||
endif
|
||||
|
||||
@ -1087,6 +1087,16 @@ fi
|
||||
endef
|
||||
endif # Sun Studio on Solaris
|
||||
|
||||
# The object file is in the current directory, and the source file can be any
|
||||
# relative path. This macro adds the dependency obj: src for each source file.
|
||||
# This dependency must be first for the $< flag to work correctly, and the
|
||||
# rules that have commands for these targets must not list any other
|
||||
# prerequisites, or they will override the $< variable.
|
||||
define src_objdep
|
||||
$(basename $(notdir $1)).$(OBJ_SUFFIX): $1 $(call mkdir_deps,$(MDDEPDIR))
|
||||
endef
|
||||
$(foreach f,$(CSRCS) $(SSRCS) $(CPPSRCS) $(CMSRCS) $(CMMSRCS) $(ASFILES),$(eval $(call src_objdep,$(f))))
|
||||
|
||||
$(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS)
|
||||
|
||||
# Rules for building native targets must come first because of the host_ prefix
|
||||
@ -1110,7 +1120,7 @@ $(HOST_CMMOBJS): host_%.$(OBJ_SUFFIX): %.mm
|
||||
$(REPORT_BUILD)
|
||||
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
|
||||
|
||||
$(COBJS): %.$(OBJ_SUFFIX): %.c $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(COBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
@ -1130,32 +1140,24 @@ qrc_%.cpp: %.qrc
|
||||
ifdef ASFILES
|
||||
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
|
||||
# a '-c' flag.
|
||||
$(ASOBJS): %.$(OBJ_SUFFIX): %.$(ASM_SUFFIX)
|
||||
$(ASOBJS):
|
||||
$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
|
||||
endif
|
||||
|
||||
$(SOBJS): %.$(OBJ_SUFFIX): %.S
|
||||
$(SOBJS):
|
||||
$(AS) -o $@ $(ASFLAGS) $(LOCAL_INCLUDES) $(TARGET_LOCAL_INCLUDES) -c $<
|
||||
|
||||
#
|
||||
# Please keep the next two rules in sync.
|
||||
#
|
||||
$(CCOBJS): %.$(OBJ_SUFFIX): %.cc $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CPPOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CPPOBJS): %.$(OBJ_SUFFIX): %.cpp $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.mm $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CMMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.m $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
@ -362,15 +362,15 @@ ifndef TARGETS
|
||||
TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(HOST_LIBRARY) $(HOST_PROGRAM) $(HOST_SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
|
||||
endif
|
||||
|
||||
COBJS = $(CSRCS:.c=.$(OBJ_SUFFIX))
|
||||
SOBJS = $(SSRCS:.S=.$(OBJ_SUFFIX))
|
||||
CCOBJS = $(patsubst %.cc,%.$(OBJ_SUFFIX),$(filter %.cc,$(CPPSRCS)))
|
||||
CPPOBJS = $(patsubst %.cpp,%.$(OBJ_SUFFIX),$(filter %.cpp,$(CPPSRCS)))
|
||||
CMOBJS = $(CMSRCS:.m=.$(OBJ_SUFFIX))
|
||||
CMMOBJS = $(CMMSRCS:.mm=.$(OBJ_SUFFIX))
|
||||
ASOBJS = $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX))
|
||||
COBJS = $(notdir $(CSRCS:.c=.$(OBJ_SUFFIX)))
|
||||
SOBJS = $(notdir $(SSRCS:.S=.$(OBJ_SUFFIX)))
|
||||
# CPPSRCS can have different extensions (eg: .cpp, .cc)
|
||||
CPPOBJS = $(notdir $(addsuffix .$(OBJ_SUFFIX),$(basename $(CPPSRCS))))
|
||||
CMOBJS = $(notdir $(CMSRCS:.m=.$(OBJ_SUFFIX)))
|
||||
CMMOBJS = $(notdir $(CMMSRCS:.mm=.$(OBJ_SUFFIX)))
|
||||
ASOBJS = $(notdir $(ASFILES:.$(ASM_SUFFIX)=.$(OBJ_SUFFIX)))
|
||||
ifndef OBJS
|
||||
_OBJS = $(COBJS) $(SOBJS) $(CCOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
|
||||
_OBJS = $(COBJS) $(SOBJS) $(CPPOBJS) $(CMOBJS) $(CMMOBJS) $(ASOBJS)
|
||||
OBJS = $(strip $(_OBJS))
|
||||
endif
|
||||
|
||||
@ -1087,6 +1087,16 @@ fi
|
||||
endef
|
||||
endif # Sun Studio on Solaris
|
||||
|
||||
# The object file is in the current directory, and the source file can be any
|
||||
# relative path. This macro adds the dependency obj: src for each source file.
|
||||
# This dependency must be first for the $< flag to work correctly, and the
|
||||
# rules that have commands for these targets must not list any other
|
||||
# prerequisites, or they will override the $< variable.
|
||||
define src_objdep
|
||||
$(basename $(notdir $1)).$(OBJ_SUFFIX): $1 $(call mkdir_deps,$(MDDEPDIR))
|
||||
endef
|
||||
$(foreach f,$(CSRCS) $(SSRCS) $(CPPSRCS) $(CMSRCS) $(CMMSRCS) $(ASFILES),$(eval $(call src_objdep,$(f))))
|
||||
|
||||
$(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS)
|
||||
|
||||
# Rules for building native targets must come first because of the host_ prefix
|
||||
@ -1110,7 +1120,7 @@ $(HOST_CMMOBJS): host_%.$(OBJ_SUFFIX): %.mm
|
||||
$(REPORT_BUILD)
|
||||
$(ELOG) $(HOST_CXX) $(HOST_OUTOPTION)$@ -c $(HOST_CXXFLAGS) $(HOST_CMMFLAGS) $(INCLUDES) $(NSPR_CFLAGS) $(_VPATH_SRCS)
|
||||
|
||||
$(COBJS): %.$(OBJ_SUFFIX): %.c $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(COBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
@ -1130,32 +1140,24 @@ qrc_%.cpp: %.qrc
|
||||
ifdef ASFILES
|
||||
# The AS_DASH_C_FLAG is needed cause not all assemblers (Solaris) accept
|
||||
# a '-c' flag.
|
||||
$(ASOBJS): %.$(OBJ_SUFFIX): %.$(ASM_SUFFIX)
|
||||
$(ASOBJS):
|
||||
$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
|
||||
endif
|
||||
|
||||
$(SOBJS): %.$(OBJ_SUFFIX): %.S
|
||||
$(SOBJS):
|
||||
$(AS) -o $@ $(ASFLAGS) $(LOCAL_INCLUDES) $(TARGET_LOCAL_INCLUDES) -c $<
|
||||
|
||||
#
|
||||
# Please keep the next two rules in sync.
|
||||
#
|
||||
$(CCOBJS): %.$(OBJ_SUFFIX): %.cc $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CPPOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CPPOBJS): %.$(OBJ_SUFFIX): %.cpp $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.mm $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CMMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMOBJS): $(OBJ_PREFIX)%.$(OBJ_SUFFIX): %.m $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(CMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
Loading…
Reference in New Issue
Block a user