Kaydet (Commit) 0a99b5a1 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

When building with clang-cl on Windows, build CLR code with MSVC

...as clang-cl doesn't support the /clr switch.

* In configure.ac, capture the MSCV version (that would be used if CC hadn't
  been overridden to use clang-cl) into MSVC_CXX.

* The logic which flags to pass into gb_CObject__command_pattern is coded into
  the platform-agnostic LinkTarget.mk, so it's too late to try and filter all
  relevant flags in com_GCC_class.mk, depending on whether a given .cxx file is
  a normal one built with the normal $CXX or a special /clr one built with
  $MSVC_CXX.  Thus, a new CxxClrObject class had to be introduced that captures
  this information early.

* When building with clang-cl, the generated config_host/config_*.h files
  contain values suitable for clang-cl, but not for MSVC.  But the .cxx files
  compiled with MSVC happen to include config_global.h, and would fail.  Hack
  around that problem for now by introducing a hard-coded, minimal
  solenv/clang-cl/config_global.h that is found first when buliding such a
  CxxClrObject.  Needs cleaning-up properly.

Change-Id: Iff8aac51c0b4fa906b14503c692640dda0996d33
Reviewed-on: https://gerrit.libreoffice.org/34509Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 06496229
...@@ -13,11 +13,8 @@ $(eval $(call gb_Executable_use_package,climaker,\ ...@@ -13,11 +13,8 @@ $(eval $(call gb_Executable_use_package,climaker,\
cli_basetypes_copy \ cli_basetypes_copy \
)) ))
$(eval $(call gb_Executable_add_cxxflags,climaker,\ $(eval $(call gb_Executable_add_cxxclrflags,climaker,\
-AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \
-EHa -clr \
-LN \ -LN \
-wd4339 \
-wd4715 \ -wd4715 \
)) ))
...@@ -43,7 +40,7 @@ $(eval $(call gb_Executable_use_system_win32_libs,climaker,\ ...@@ -43,7 +40,7 @@ $(eval $(call gb_Executable_use_system_win32_libs,climaker,\
msvcmrt \ msvcmrt \
)) ))
$(eval $(call gb_Executable_add_exception_objects,climaker,\ $(eval $(call gb_Executable_add_cxxclrobjects,climaker,\
cli_ure/source/climaker/climaker_app \ cli_ure/source/climaker/climaker_app \
cli_ure/source/climaker/climaker_emit \ cli_ure/source/climaker/climaker_emit \
)) ))
......
...@@ -11,15 +11,6 @@ include $(SRCDIR)/cli_ure/version/version.txt ...@@ -11,15 +11,6 @@ include $(SRCDIR)/cli_ure/version/version.txt
$(eval $(call gb_Library_Assembly,cli_cppuhelper)) $(eval $(call gb_Library_Assembly,cli_cppuhelper))
# When compiling for CLR, disable "warning C4339: use of undefined type detected
# in CLR meta-data - use of this type may lead to a runtime exception":
$(eval $(call gb_Library_add_cxxflags,cli_cppuhelper,\
-AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \
-EHa \
-clr \
-wd4339 \
))
$(eval $(call gb_Library_add_ldflags,cli_cppuhelper,\ $(eval $(call gb_Library_add_ldflags,cli_cppuhelper,\
-ignore:4248 \ -ignore:4248 \
-keyfile:$(SRCDIR)/cli_ure/source/cliuno.snk \ -keyfile:$(SRCDIR)/cli_ure/source/cliuno.snk \
...@@ -48,12 +39,12 @@ $(eval $(call gb_Library_use_system_win32_libs,cli_cppuhelper,\ ...@@ -48,12 +39,12 @@ $(eval $(call gb_Library_use_system_win32_libs,cli_cppuhelper,\
msvcmrt \ msvcmrt \
)) ))
$(eval $(call gb_Library_add_exception_objects,cli_cppuhelper,\ $(eval $(call gb_Library_add_cxxclrobjects,cli_cppuhelper,\
cli_ure/source/native/native_bootstrap \ cli_ure/source/native/native_bootstrap \
cli_ure/source/native/path \ cli_ure/source/native/path \
)) ))
$(eval $(call gb_Library_add_generated_exception_objects,cli_cppuhelper,\ $(eval $(call gb_Library_add_generated_cxxclrobjects,cli_cppuhelper,\
CustomTarget/cli_ure/source/native/assembly \ CustomTarget/cli_ure/source/native/assembly \
)) ))
......
...@@ -9,13 +9,6 @@ ...@@ -9,13 +9,6 @@
$(eval $(call gb_Library_Library,cli_uno)) $(eval $(call gb_Library_Library,cli_uno))
$(eval $(call gb_Library_add_cxxflags,cli_uno,\
-AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \
-EHa \
-clr \
-wd4339 \
))
$(eval $(call gb_Library_add_ldflags,cli_uno,\ $(eval $(call gb_Library_add_ldflags,cli_uno,\
-ignore:4248 \ -ignore:4248 \
)) ))
...@@ -32,7 +25,7 @@ $(eval $(call gb_Library_use_system_win32_libs,cli_uno,\ ...@@ -32,7 +25,7 @@ $(eval $(call gb_Library_use_system_win32_libs,cli_uno,\
msvcmrt \ msvcmrt \
)) ))
$(eval $(call gb_Library_add_exception_objects,cli_uno,\ $(eval $(call gb_Library_add_cxxclrobjects,cli_uno,\
cli_ure/source/uno_bridge/cli_bridge \ cli_ure/source/uno_bridge/cli_bridge \
cli_ure/source/uno_bridge/cli_data \ cli_ure/source/uno_bridge/cli_data \
cli_ure/source/uno_bridge/cli_environment \ cli_ure/source/uno_bridge/cli_environment \
......
...@@ -392,6 +392,7 @@ export MPL_SUBSET=@MPL_SUBSET@ ...@@ -392,6 +392,7 @@ export MPL_SUBSET=@MPL_SUBSET@
export MSM_PATH=@MSM_PATH@ export MSM_PATH=@MSM_PATH@
export MSPUB_CFLAGS=$(gb_SPACE)@MSPUB_CFLAGS@ export MSPUB_CFLAGS=$(gb_SPACE)@MSPUB_CFLAGS@
export MSPUB_LIBS=$(gb_SPACE)@MSPUB_LIBS@ export MSPUB_LIBS=$(gb_SPACE)@MSPUB_LIBS@
export MSVC_CXX=@MSVC_CXX@
export MSVC_DLLS=@MSVC_DLLS@ export MSVC_DLLS=@MSVC_DLLS@
export MSVC_DLL_PATH=@MSVC_DLL_PATH@ export MSVC_DLL_PATH=@MSVC_DLL_PATH@
export MSVC_USE_DEBUG_RUNTIME=@MSVC_USE_DEBUG_RUNTIME@ export MSVC_USE_DEBUG_RUNTIME=@MSVC_USE_DEBUG_RUNTIME@
......
...@@ -3558,25 +3558,35 @@ if test "$_os" = "WINNT"; then ...@@ -3558,25 +3558,35 @@ if test "$_os" = "WINNT"; then
# location, isn't it likely that lots of other things needs changes, too, and just setting CC # location, isn't it likely that lots of other things needs changes, too, and just setting CC
# is not enough? # is not enough?
if test -z "$CC"; then dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
dnl needed when building CLR code:
if test -z "$MSVC_CXX"; then
if test "$BITNESS_OVERRIDE" = ""; then if test "$BITNESS_OVERRIDE" = ""; then
if test -f "$VC_PRODUCT_DIR/bin/cl.exe"; then if test -f "$VC_PRODUCT_DIR/bin/cl.exe"; then
CC="$VC_PRODUCT_DIR/$CL_DIR/cl.exe" MSVC_CXX="$VC_PRODUCT_DIR/$CL_DIR/cl.exe"
fi fi
else else
if test "$vcexpress" = "Express"; then if test "$vcexpress" = "Express"; then
if test -f "$VC_PRODUCT_DIR/bin/x86_amd64/cl.exe"; then if test -f "$VC_PRODUCT_DIR/bin/x86_amd64/cl.exe"; then
CC="$VC_PRODUCT_DIR/bin/x86_amd64/cl.exe" MSVC_CXX="$VC_PRODUCT_DIR/bin/x86_amd64/cl.exe"
fi fi
else else
if test -f "$VC_PRODUCT_DIR/$CL_DIR/cl.exe"; then if test -f "$VC_PRODUCT_DIR/$CL_DIR/cl.exe"; then
CC="$VC_PRODUCT_DIR/$CL_DIR/cl.exe" MSVC_CXX="$VC_PRODUCT_DIR/$CL_DIR/cl.exe"
fi fi
fi fi
fi fi
# This gives us a posix path with 8.3 filename restrictions # This gives us a posix path with 8.3 filename restrictions
CC=`win_short_path_for_make "$CC"` MSVC_CXX=`win_short_path_for_make "$MSVC_CXX"`
fi
if test -z "$CC"; then
CC=$MSVC_CXX
fi
if test "$BITNESS_OVERRIDE" = ""; then
dnl since MSVC 2012, default for x86 is -arch:SSE2:
MSVC_CXX="$MSVC_CXX -arch:SSE"
fi fi
if test -n "$CC"; then if test -n "$CC"; then
...@@ -3720,6 +3730,7 @@ AC_SUBST(VCVER) ...@@ -3720,6 +3730,7 @@ AC_SUBST(VCVER)
AC_SUBST(DEVENV) AC_SUBST(DEVENV)
PathFormat "$MSPDB_PATH" PathFormat "$MSPDB_PATH"
MSPDB_PATH="$formatted_path" MSPDB_PATH="$formatted_path"
AC_SUBST(MSVC_CXX)
AC_SUBST(SHOWINCLUDES_PREFIX) AC_SUBST(SHOWINCLUDES_PREFIX)
if test "$_os" = "WINNT"; then if test "$_os" = "WINNT"; then
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* 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/.
*/
/* A partial copy of config_host/config_global.h.in, with hardcoded values that
suffice to compile CxxClr code in cli_ure/ with MSVC when building the rest
with clang-cl. A bad hack, should be replaced with a better copy that is
actually filled in by configure.
*/
#ifndef CONFIG_GLOBAL_H
#define CONFIG_GLOBAL_H
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
...@@ -40,6 +40,8 @@ $(eval $(foreach method, \ ...@@ -40,6 +40,8 @@ $(eval $(foreach method, \
add_objcobjects \ add_objcobjects \
add_objcxxobject \ add_objcxxobject \
add_objcxxobjects \ add_objcxxobjects \
add_cxxclrobject \
add_cxxclrobjects \
use_udk_api \ use_udk_api \
, \ , \
$(call gb_CompilerTest__forward_to_Linktarget,$(method)) \ $(call gb_CompilerTest__forward_to_Linktarget,$(method)) \
......
...@@ -423,6 +423,8 @@ $(eval $(foreach method,\ ...@@ -423,6 +423,8 @@ $(eval $(foreach method,\
add_objcobjects \ add_objcobjects \
add_objcxxobject \ add_objcxxobject \
add_objcxxobjects \ add_objcxxobjects \
add_cxxclrobject \
add_cxxclrobjects \
add_asmobject \ add_asmobject \
add_asmobjects \ add_asmobjects \
use_package \ use_package \
...@@ -435,6 +437,7 @@ $(eval $(foreach method,\ ...@@ -435,6 +437,7 @@ $(eval $(foreach method,\
set_yaccflags \ set_yaccflags \
add_objcflags \ add_objcflags \
add_objcxxflags \ add_objcxxflags \
add_cxxclrflags \
add_defs \ add_defs \
set_include \ set_include \
add_ldflags \ add_ldflags \
......
...@@ -99,6 +99,8 @@ $(eval $(foreach method,\ ...@@ -99,6 +99,8 @@ $(eval $(foreach method,\
add_objcobjects \ add_objcobjects \
add_objcxxobject \ add_objcxxobject \
add_objcxxobjects \ add_objcxxobjects \
add_cxxclrobject \
add_cxxclrobjects \
add_grammar \ add_grammar \
add_grammars \ add_grammars \
add_scanner \ add_scanner \
...@@ -111,6 +113,7 @@ $(eval $(foreach method,\ ...@@ -111,6 +113,7 @@ $(eval $(foreach method,\
add_cxxflags \ add_cxxflags \
add_objcflags \ add_objcflags \
add_objcxxflags \ add_objcxxflags \
add_cxxclrflags \
add_defs \ add_defs \
set_include \ set_include \
add_ldflags \ add_ldflags \
......
...@@ -175,6 +175,8 @@ $(eval $(foreach method,\ ...@@ -175,6 +175,8 @@ $(eval $(foreach method,\
add_objcobjects \ add_objcobjects \
add_objcxxobject \ add_objcxxobject \
add_objcxxobjects \ add_objcxxobjects \
add_cxxclrobject \
add_cxxclrobjects \
add_asmobject \ add_asmobject \
add_asmobjects \ add_asmobjects \
add_exception_objects \ add_exception_objects \
...@@ -191,6 +193,7 @@ $(eval $(foreach method,\ ...@@ -191,6 +193,7 @@ $(eval $(foreach method,\
add_cxxflags \ add_cxxflags \
add_objcxxflags \ add_objcxxflags \
add_objcflags \ add_objcflags \
add_cxxclrflags \
add_defs \ add_defs \
set_include \ set_include \
add_ldflags \ add_ldflags \
......
This diff is collapsed.
...@@ -74,6 +74,8 @@ $(eval $(foreach method,\ ...@@ -74,6 +74,8 @@ $(eval $(foreach method,\
add_cxxobjects \ add_cxxobjects \
add_objcxxobject \ add_objcxxobject \
add_objcxxobjects \ add_objcxxobjects \
add_cxxclrobject \
add_cxxclrobjects \
add_asmobject \ add_asmobject \
add_asmobjects \ add_asmobjects \
add_exception_objects \ add_exception_objects \
...@@ -86,6 +88,7 @@ $(eval $(foreach method,\ ...@@ -86,6 +88,7 @@ $(eval $(foreach method,\
add_cxxflags \ add_cxxflags \
add_objcflags \ add_objcflags \
add_objcxxflags \ add_objcxxflags \
add_cxxclrflags \
add_defs \ add_defs \
set_include \ set_include \
add_ldflags \ add_ldflags \
......
...@@ -127,6 +127,7 @@ gb_Module_get_uicheck_target = $(WORKDIR)/Module/uicheck/$(1) ...@@ -127,6 +127,7 @@ gb_Module_get_uicheck_target = $(WORKDIR)/Module/uicheck/$(1)
gb_Module_get_target = $(WORKDIR)/Module/$(1) gb_Module_get_target = $(WORKDIR)/Module/$(1)
gb_ObjCxxObject_get_target = $(WORKDIR)/ObjCxxObject/$(1).o gb_ObjCxxObject_get_target = $(WORKDIR)/ObjCxxObject/$(1).o
gb_ObjCObject_get_target = $(WORKDIR)/ObjCObject/$(1).o gb_ObjCObject_get_target = $(WORKDIR)/ObjCObject/$(1).o
gb_CxxClrObject_get_target = $(WORKDIR)/CxxClrObject/$(1).o
gb_Pagein_get_target = $(WORKDIR)/Pagein/pagein-$(1) gb_Pagein_get_target = $(WORKDIR)/Pagein/pagein-$(1)
gb_Package_get_preparation_target = $(WORKDIR)/Package/prepared/$(1) gb_Package_get_preparation_target = $(WORKDIR)/Package/prepared/$(1)
gb_Package_get_target = $(WORKDIR)/Package/$(1).filelist gb_Package_get_target = $(WORKDIR)/Package/$(1).filelist
...@@ -313,6 +314,7 @@ $(eval $(call gb_Helper_make_dep_targets,\ ...@@ -313,6 +314,7 @@ $(eval $(call gb_Helper_make_dep_targets,\
CxxObject \ CxxObject \
ObjCObject \ ObjCObject \
ObjCxxObject \ ObjCxxObject \
CxxClrObject \
AsmObject \ AsmObject \
GenCObject \ GenCObject \
GenCxxObject \ GenCxxObject \
......
...@@ -55,6 +55,7 @@ $(call gb_Executable_get_command,gbuildtojson) \ ...@@ -55,6 +55,7 @@ $(call gb_Executable_get_command,gbuildtojson) \
--yaccobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(YACCOBJECTS)) \ --yaccobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(YACCOBJECTS)) \
--objcobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(OBJCOBJECTS)) \ --objcobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(OBJCOBJECTS)) \
--objcxxobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(OBJCXXOBJECTS)) \ --objcxxobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(OBJCXXOBJECTS)) \
--cxxclrobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(CXXCLROBJECTS)) \
--asmobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(ASMOBJECTS)) \ --asmobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(ASMOBJECTS)) \
--lexobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(LEXOBJECTS)) \ --lexobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(LEXOBJECTS)) \
--gencobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(GENCOBJECTS)) \ --gencobjects=$(call var2file,$(shell $(gb_MKTEMP)),100,$(GENCOBJECTS)) \
...@@ -70,6 +71,8 @@ $(call gb_Executable_get_command,gbuildtojson) \ ...@@ -70,6 +71,8 @@ $(call gb_Executable_get_command,gbuildtojson) \
--objcflagsappend=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCFLAGS_APPEND)) \ --objcflagsappend=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCFLAGS_APPEND)) \
--objcxxflags=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCXXFLAGS)) \ --objcxxflags=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCXXFLAGS)) \
--objcxxflagsappend=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCXXFLAGS_APPEND)) \ --objcxxflagsappend=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_OBJCXXFLAGS_APPEND)) \
--cxxclrflags=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_CXXCLRFLAGS)) \
--cxxclrflagsappend=$(call var2file,$(shell $(gb_MKTEMP)),100,$(T_CXXCLRFLAGS_APPEND)) \
--defs=$(call var2file,$(shell $(gb_MKTEMP)),100,$(DEFS)) \ --defs=$(call var2file,$(shell $(gb_MKTEMP)),100,$(DEFS)) \
--include=$(call var2file,$(shell $(gb_MKTEMP)),100,$(INCLUDE)) \ --include=$(call var2file,$(shell $(gb_MKTEMP)),100,$(INCLUDE)) \
--linked_libs=$(call var2file,$(shell $(gb_MKTEMP)),100,$(LINKED_LIBS)) \ --linked_libs=$(call var2file,$(shell $(gb_MKTEMP)),100,$(LINKED_LIBS)) \
...@@ -118,6 +121,10 @@ endef ...@@ -118,6 +121,10 @@ endef
define gb_LinkTarget_add_objcxxobject define gb_LinkTarget_add_objcxxobject
$(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS += $(2) $(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS += $(2)
endef
define gb_LinkTarget_add_cxxclrobject
$(call gb_LinkTarget_get_target,$(1)) : CXXCLROBJECTS += $(2)
endef endef
define gb_LinkTarget_add_scanners define gb_LinkTarget_add_scanners
$(call gb_LinkTarget_get_target,$(1)) : LEXOBJECTS += $(2) $(call gb_LinkTarget_get_target,$(1)) : LEXOBJECTS += $(2)
......
...@@ -40,11 +40,15 @@ $(call gb_Helper_abbreviate_dirs,\ ...@@ -40,11 +40,15 @@ $(call gb_Helper_abbreviate_dirs,\
mkdir -p $(dir $(1)) $(dir $(4)) && \ mkdir -p $(dir $(1)) $(dir $(4)) && \
unset INCLUDE && \ unset INCLUDE && \
$(if $(filter YES,$(CXXOBJECT_X64)), $(CXX_X64_BINARY), \ $(if $(filter YES,$(CXXOBJECT_X64)), $(CXX_X64_BINARY), \
$(if $(filter %.c,$(3)), $(gb_CC), $(gb_CXX))) \ $(if $(filter %.c,$(3)), $(gb_CC), \
$(if $(filter -clr,$(2)), \
$(MSVC_CXX) -I$(SRCDIR)/solenv/clang-cl,$(gb_CXX)))) \
$(DEFS) \ $(DEFS) \
$(gb_LTOFLAGS) \ $(gb_LTOFLAGS) \
$(2) \ $(2) \
$(if $(EXTERNAL_CODE),$(if $(COM_IS_CLANG),-Wno-undef),$(gb_DEFS_INTERNAL)) \ $(if $(EXTERNAL_CODE), \
$(if $(filter -clr,$(2)),,$(if $(COM_IS_CLANG),-Wno-undef)), \
$(gb_DEFS_INTERNAL)) \
$(if $(WARNINGS_NOT_ERRORS),,$(gb_CFLAGS_WERROR)) \ $(if $(WARNINGS_NOT_ERRORS),,$(gb_CFLAGS_WERROR)) \
-Fd$(PDBFILE) \ -Fd$(PDBFILE) \
$(PCHFLAGS) \ $(PCHFLAGS) \
...@@ -105,6 +109,7 @@ endef ...@@ -105,6 +109,7 @@ endef
gb_LinkTarget_CFLAGS := $(gb_CFLAGS) gb_LinkTarget_CFLAGS := $(gb_CFLAGS)
gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS)
gb_LinkTarget_CXXCLRFLAGS := $(gb_CXXCLRFLAGS)
gb_LinkTarget_INCLUDE :=\ gb_LinkTarget_INCLUDE :=\
$(subst -I. , ,$(SOLARINC)) \ $(subst -I. , ,$(SOLARINC)) \
...@@ -157,6 +162,7 @@ $(call gb_Helper_abbreviate_dirs,\ ...@@ -157,6 +162,7 @@ $(call gb_Helper_abbreviate_dirs,\
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
$(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \ $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \
$(foreach object,$(CXXCLROBJECTS),$(call gb_CxxClrObject_get_target,$(object))) \
$(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),$(shell cat $(extraobjectlist))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),$(shell cat $(extraobjectlist))) \
$(PCHOBJS) $(NATIVERES)) && \ $(PCHOBJS) $(NATIVERES)) && \
......
...@@ -152,16 +152,7 @@ gb_CFLAGS := \ ...@@ -152,16 +152,7 @@ gb_CFLAGS := \
-wd4706 \ -wd4706 \
-wd4800 \ -wd4800 \
ifeq ($(COM_IS_CLANG),TRUE) ifneq ($(COM_IS_CLANG),TRUE)
gb_CFLAGS += \
-Wdeclaration-after-statement \
-Wendif-labels \
-Wshadow \
-Wstrict-prototypes \
-Wundef \
-Wunused-macros \
else
gb_CFLAGS += \ gb_CFLAGS += \
$(if $(filter-out 120,$(VCVER)), -Wv:18 -wd4267) \ $(if $(filter-out 120,$(VCVER)), -Wv:18 -wd4267) \
...@@ -212,19 +203,7 @@ gb_CFLAGS += \ ...@@ -212,19 +203,7 @@ gb_CFLAGS += \
endif endif
ifeq ($(COM_IS_CLANG),TRUE) ifneq ($(COM_IS_CLANG),TRUE)
gb_CXXFLAGS += \
-Wendif-labels \
-Wimplicit-fallthrough \
-Wno-missing-braces \
-Wno-missing-braces \
-Wnon-virtual-dtor \
-Woverloaded-virtual \
-Wshadow \
-Wundef \
-Wunused-macros \
else
gb_CXXFLAGS += \ gb_CXXFLAGS += \
$(if $(filter-out 120,$(VCVER)), -Wv:18 -wd4267) \ $(if $(filter-out 120,$(VCVER)), -Wv:18 -wd4267) \
...@@ -290,6 +269,38 @@ endif ...@@ -290,6 +269,38 @@ endif
gb_LTOFLAGS := $(if $(filter TRUE,$(ENABLE_LTO)),-GL) gb_LTOFLAGS := $(if $(filter TRUE,$(ENABLE_LTO)),-GL)
# When compiling for CLR, disable "warning C4339: use of undefined type detected
# in CLR meta-data - use of this type may lead to a runtime exception":
gb_CXXCLRFLAGS := $(gb_CXXFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
-AI $(INSTDIR)/$(LIBO_URE_LIB_FOLDER) \
-EHa \
-clr \
-wd4339 \
$(if $(filter-out 120,$(VCVER)), -Wv:18 -wd4267) \
ifeq ($(COM_IS_CLANG),TRUE)
gb_CFLAGS += \
-Wdeclaration-after-statement \
-Wendif-labels \
-Wshadow \
-Wstrict-prototypes \
-Wundef \
-Wunused-macros \
gb_CXXFLAGS += \
-Wendif-labels \
-Wimplicit-fallthrough \
-Wno-missing-braces \
-Wno-missing-braces \
-Wnon-virtual-dtor \
-Woverloaded-virtual \
-Wshadow \
-Wundef \
-Wunused-macros \
endif
# Helper class # Helper class
ifeq ($(GNUMAKE_WIN_NATIVE),TRUE) ifeq ($(GNUMAKE_WIN_NATIVE),TRUE)
......
...@@ -62,7 +62,7 @@ class CheckGbuildToJson(unittest.TestCase): ...@@ -62,7 +62,7 @@ class CheckGbuildToJson(unittest.TestCase):
gbuildlibs.append(json.load(f)) gbuildlibs.append(json.load(f))
foundlibs = set() foundlibs = set()
for lib in gbuildlibs: for lib in gbuildlibs:
self.assertEqual(set(lib.keys()), set(['MAKEFILE', 'ASMOBJECTS', 'CFLAGS', 'CFLAGSAPPEND', 'COBJECTS', 'CXXFLAGS', 'CXXFLAGSAPPEND', 'CXXOBJECTS', 'DEFS', 'LEXOBJECTS', 'GENCOBJECTS', 'GENCXXOBJECTS', 'ILIBTARGET', 'INCLUDE', 'JAVAOBJECTS', 'LINKED_LIBS', 'LINKED_STATIC_LIBS', 'LINKTARGET', 'OBJCFLAGS', 'OBJCFLAGSAPPEND', 'OBJCOBJECTS', 'OBJCXXFLAGS', 'OBJCXXFLAGSAPPEND', 'OBJCXXOBJECTS', 'PYTHONOBJECTS', 'YACCOBJECTS'])) self.assertEqual(set(lib.keys()), set(['MAKEFILE', 'ASMOBJECTS', 'CFLAGS', 'CFLAGSAPPEND', 'COBJECTS', 'CXXCLRFLAGS', 'CXXCLRFLAGSAPPEND', 'CXXCLROBJECTS', 'CXXFLAGS', 'CXXFLAGSAPPEND', 'CXXOBJECTS', 'DEFS', 'LEXOBJECTS', 'GENCOBJECTS', 'GENCXXOBJECTS', 'ILIBTARGET', 'INCLUDE', 'JAVAOBJECTS', 'LINKED_LIBS', 'LINKED_STATIC_LIBS', 'LINKTARGET', 'OBJCFLAGS', 'OBJCFLAGSAPPEND', 'OBJCOBJECTS', 'OBJCXXFLAGS', 'OBJCXXFLAGSAPPEND', 'OBJCXXOBJECTS', 'PYTHONOBJECTS', 'YACCOBJECTS']))
if lib['LINKTARGET'].find('gbuildselftestdep') != -1: if lib['LINKTARGET'].find('gbuildselftestdep') != -1:
foundlibs.add('gbuildselftestdep') foundlibs.add('gbuildselftestdep')
elif lib['LINKTARGET'].find('gbuildselftest') != -1: elif lib['LINKTARGET'].find('gbuildselftest') != -1:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment