Merge remote-tracking branch 'xiaoqiang/7.0' into PSI-7.0
This commit is contained in:
13
.github/workflows/ci-scripts-build.yml
vendored
13
.github/workflows/ci-scripts-build.yml
vendored
@ -45,8 +45,9 @@ jobs:
|
|||||||
CI_CROSS_TARGETS: ${{ matrix.cross }}
|
CI_CROSS_TARGETS: ${{ matrix.cross }}
|
||||||
EXTRA: ${{ matrix.extra }}
|
EXTRA: ${{ matrix.extra }}
|
||||||
TEST: ${{ matrix.test }}
|
TEST: ${{ matrix.test }}
|
||||||
|
CHOCO: llvm
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
# Job names also name artifacts, character limitations apply
|
# Job names also name artifacts, character limitations apply
|
||||||
include:
|
include:
|
||||||
@ -170,10 +171,16 @@ jobs:
|
|||||||
configuration: debug
|
configuration: debug
|
||||||
name: "Win2019 MSC-19, debug"
|
name: "Win2019 MSC-19, debug"
|
||||||
|
|
||||||
- os: windows-2019
|
- os: windows-2022
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
name: "Win2019 mingw"
|
name: "Win2022 mingw"
|
||||||
|
|
||||||
|
- os: windows-2019
|
||||||
|
cmp: clang+vs2019
|
||||||
|
configuration: default
|
||||||
|
name: "Win2019 clang-cl"
|
||||||
|
choco: ["llvm"]
|
||||||
|
|
||||||
# Cross builds
|
# Cross builds
|
||||||
|
|
||||||
|
280
configure/CONFIG.msvcCommon
Normal file
280
configure/CONFIG.msvcCommon
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
# MSVC/clang-cl compiler defaults
|
||||||
|
|
||||||
|
CMPLR_CLASS = msvc
|
||||||
|
|
||||||
|
OPT_WHOLE_PROGRAM = YES
|
||||||
|
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
WINLINK = link
|
||||||
|
|
||||||
|
RCCMD = $(MSVC_PREFIX)rc$(MSVC_SUFFIX) -nologo -l 0x409 $(INCLUDES) -fo $@ $<
|
||||||
|
|
||||||
|
ARCMD = $(MSVC_PREFIX)lib$(MSVC_SUFFIX) -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Configure OS vendor C compiler
|
||||||
|
CC = cl
|
||||||
|
|
||||||
|
# OS vendor c preprocessor
|
||||||
|
CPP = $(CC) -nologo -C -E
|
||||||
|
|
||||||
|
# Configure OS vendor C++ compiler
|
||||||
|
#
|
||||||
|
# -EHsc - generate code for exceptions
|
||||||
|
# -GR - generate code for run time type identification
|
||||||
|
#
|
||||||
|
CCC = $(CC) -EHsc -GR
|
||||||
|
|
||||||
|
# Override CONFIG.gnuCommon settings for cross builds.
|
||||||
|
GNU = NO
|
||||||
|
HDEPENDS_METHOD = MKMF
|
||||||
|
|
||||||
|
# Compiler flags for C files (C++ is below)
|
||||||
|
|
||||||
|
#
|
||||||
|
# -W<d> display warnings at level d
|
||||||
|
# -W4 is for maximum (lint type) warnings
|
||||||
|
# -W3 is for production quality warnings
|
||||||
|
# -W2 displays significant warnings
|
||||||
|
# -W1 is the default and shows severe warnings only
|
||||||
|
# -w<d><n> Set warning C<n> to be shown at level <d>
|
||||||
|
WARN_CFLAGS_YES = -W3
|
||||||
|
WARN_CFLAGS_NO = -W1
|
||||||
|
|
||||||
|
#
|
||||||
|
# -Ox maximum optimizations
|
||||||
|
# -GL whole program optimization
|
||||||
|
# -Oy- re-enable creation of frame pointers
|
||||||
|
OPT_CFLAGS_YES_YES = -Ox -GL -Oy-
|
||||||
|
OPT_CFLAGS_YES_NO = -Ox -Oy-
|
||||||
|
OPT_CFLAGS_YES = $(OPT_CFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||||
|
|
||||||
|
#
|
||||||
|
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||||
|
# -RTCsu enable run-time error checks
|
||||||
|
OPT_CFLAGS_NO = -Z7 -RTCsu
|
||||||
|
|
||||||
|
# specify object file name and location
|
||||||
|
OBJ_CFLAG = -Fo
|
||||||
|
|
||||||
|
#
|
||||||
|
# the following options are required when
|
||||||
|
# vis c++ compiles the code (and includes
|
||||||
|
# the header files)
|
||||||
|
#
|
||||||
|
# -MT static multithreaded C RTL
|
||||||
|
# -MTd static multithreaded C RTL (debug version)
|
||||||
|
# -MD multithreaded C RTL in DLL
|
||||||
|
# -MDd multithreaded C RTL in DLL (debug version)
|
||||||
|
BUILD_DLL_CFLAGS_NO =
|
||||||
|
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
|
||||||
|
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
|
||||||
|
VISC_CFLAGS_DEBUG_NO = d
|
||||||
|
VISC_CFLAGS_DEBUG_YES =
|
||||||
|
VISC_CFLAGS_DEBUG = $(VISC_CFLAGS_DEBUG_$(HOST_OPT))
|
||||||
|
STATIC_CFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||||
|
STATIC_CFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||||
|
|
||||||
|
# Other compiler flags, used for CPP, C and C++
|
||||||
|
#
|
||||||
|
# -FC - Show absolute path of source file in diagnostics
|
||||||
|
# -D__STDC__=0 gives us both:
|
||||||
|
# 1) define STDC for code (pretend ANSI conformance)
|
||||||
|
# 2) set it to 0 to use MS C "extensions" (open for _open etc.)
|
||||||
|
# because MS uses: if __STDC__ ... disable many nice things
|
||||||
|
#
|
||||||
|
CODE_CPPFLAGS += -nologo -FC -D__STDC__=0
|
||||||
|
CODE_CPPFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
||||||
|
|
||||||
|
# Compiler flags for C++ files
|
||||||
|
|
||||||
|
#
|
||||||
|
# -W<n> disable warnings from levels > n
|
||||||
|
# -w<n><m> set warning m to level n
|
||||||
|
# -w44355 "'this' used in the base initializer list"
|
||||||
|
# -w44344 "behavior change: use of explicit template arguments results in ..."
|
||||||
|
# -w44251 "class needs to have dll-interface to be used by clients of ..."
|
||||||
|
WARN_CXXFLAGS_YES = -W3 -w44355 -w44344 -w44251
|
||||||
|
WARN_CXXFLAGS_NO = -W1
|
||||||
|
|
||||||
|
# Silence tr1 namespace deprecation warnings
|
||||||
|
WARN_CXXFLAGS += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
||||||
|
|
||||||
|
#
|
||||||
|
# -Ox maximum optimizations
|
||||||
|
# -GL whole program optimization
|
||||||
|
# -Oy- re-enable creation of frame pointers
|
||||||
|
OPT_CXXFLAGS_YES_YES = -Ox -GL -Oy-
|
||||||
|
OPT_CXXFLAGS_YES_NO = -Ox -Oy-
|
||||||
|
OPT_CXXFLAGS_YES = $(OPT_CXXFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||||
|
|
||||||
|
#
|
||||||
|
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||||
|
# -RTCsu enable run-time error checks
|
||||||
|
OPT_CXXFLAGS_NO = -RTCsu -Z7
|
||||||
|
|
||||||
|
# specify object file name and location
|
||||||
|
OBJ_CXXFLAG = -Fo
|
||||||
|
|
||||||
|
#
|
||||||
|
# the following options are required when
|
||||||
|
# vis c++ compiles the code (and includes
|
||||||
|
# the header files)
|
||||||
|
#
|
||||||
|
# -MT static multithreaded C RTL
|
||||||
|
# -MTd static multithreaded C RTL (debug version)
|
||||||
|
# -MD multithreaded C RTL in DLL
|
||||||
|
# -MDd multithreaded C RTL in DLL (debug version)
|
||||||
|
STATIC_CXXFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||||
|
STATIC_CXXFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||||
|
|
||||||
|
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib dbghelp.lib
|
||||||
|
STATIC_LDLIBS_NO=
|
||||||
|
STATIC_LDFLAGS=
|
||||||
|
RANLIB=
|
||||||
|
|
||||||
|
# add -profile here to run the ms profiler
|
||||||
|
# -LTCG whole program optimization
|
||||||
|
# -incremental:no full linking
|
||||||
|
# -fixed:no generate relocatable code
|
||||||
|
# -version:<major>.<minor> - only 2 components allowed, 0-65535 each
|
||||||
|
# -debug generate debugging info
|
||||||
|
LINK_OPT_FLAGS_WHOLE_YES = -LTCG
|
||||||
|
LINK_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||||
|
LINK_OPT_FLAGS_YES += -incremental:no -opt:ref
|
||||||
|
LINK_OPT_FLAGS_YES += -release $(PROD_VERSION:%=-version:%)
|
||||||
|
LINK_OPT_FLAGS_NO = -debug -incremental:no -fixed:no
|
||||||
|
OPT_LDFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
|
||||||
|
|
||||||
|
LIB_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||||
|
LIB_OPT_LDFLAGS = $(LIB_OPT_FLAGS_$(HOST_OPT))
|
||||||
|
|
||||||
|
ARCH_DEP_CFLAGS=
|
||||||
|
SHRLIB_CFLAGS=
|
||||||
|
|
||||||
|
OS_CLASS=WIN32
|
||||||
|
POSIX=NO
|
||||||
|
|
||||||
|
# ifdef WIN32 looks better that ifeq ($(OS_CLASS),WIN32) ??
|
||||||
|
WIN32=1
|
||||||
|
|
||||||
|
EXE=.exe
|
||||||
|
OBJ=.obj
|
||||||
|
RES=.res
|
||||||
|
|
||||||
|
# MS Visual C++ doesn't recognize *.cc as a C++ source file,
|
||||||
|
# so C++ compiles get the flag -TP
|
||||||
|
COMPILER_CXXFLAGS = -TP
|
||||||
|
|
||||||
|
# Operating system flags
|
||||||
|
OP_SYS_CFLAGS =
|
||||||
|
OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
|
||||||
|
|
||||||
|
# Files and flags needed to link DLLs (used in RULES_BUILD)
|
||||||
|
WIN32_DLLFLAGS = -subsystem:windows -dll $(OPT_LDFLAGS) \
|
||||||
|
$(USR_LDFLAGS) $(CMD_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
||||||
|
|
||||||
|
# Specify dll .def file only if it exists
|
||||||
|
DLL_DEF_FLAG = $(addprefix -def:,$(wildcard ../$(addsuffix .def,$*)))
|
||||||
|
|
||||||
|
# A WIN32 dll has three parts:
|
||||||
|
# x.dll: the real dll (SHRLIBNAME)
|
||||||
|
# x.lib: what you link to progs that use the dll (DLLSTUB_LIBNAME)
|
||||||
|
# x.exp: what you need to build the dll (in no variable)
|
||||||
|
LINK.shrlib = $(WINLINK) -nologo $(WIN32_DLLFLAGS) -out:$@ \
|
||||||
|
-implib:$(@:%$(SHRLIB_SUFFIX)=%$(LIB_SUFFIX)) \
|
||||||
|
$(DLL_DEF_FLAG) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
|
||||||
|
|
||||||
|
# Adjust names of libraries to build
|
||||||
|
SHRLIB_SUFFIX_BASE = .dll
|
||||||
|
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||||
|
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||||
|
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||||
|
TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX_BASE))
|
||||||
|
|
||||||
|
# When SHARED_LIBRARIES is YES we are building a DLL shared library.
|
||||||
|
# When SHARED_LIBRARIES is NO we are building an object library
|
||||||
|
DLLSTUB_SUFFIX = .lib
|
||||||
|
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
|
||||||
|
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||||
|
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||||
|
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||||
|
|
||||||
|
LIB_PREFIX=
|
||||||
|
LIB_SUFFIX=.lib
|
||||||
|
LIBNAME_NO = $(BUILD_LIBRARY:%=%.lib)
|
||||||
|
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
|
||||||
|
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||||
|
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
|
||||||
|
|
||||||
|
# dll install location
|
||||||
|
INSTALL_SHRLIB = $(INSTALL_BIN)
|
||||||
|
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# Products dependancy definitions
|
||||||
|
|
||||||
|
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
||||||
|
$(firstword $(wildcard \
|
||||||
|
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||||
|
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||||
|
|
||||||
|
|
||||||
|
PROD_LDLIBS += $($*_DEPLIBS) $(PROD_DEPLIBS)
|
||||||
|
PROD_LDLIBS += $(addsuffix .lib, \
|
||||||
|
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
|
||||||
|
|
||||||
|
LDLIBS_STATIC_YES = LDLIBS
|
||||||
|
LDLIBS_SHARED_NO = LDLIBS
|
||||||
|
PROD_LDLIBS += $(STATIC_LDLIBS) \
|
||||||
|
$($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
||||||
|
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# Libraries dependancy definitions
|
||||||
|
|
||||||
|
# libs that we need to link the DLL with
|
||||||
|
# (it isnt necessary to rebuild the dll if these change)
|
||||||
|
|
||||||
|
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
||||||
|
$(firstword $(wildcard \
|
||||||
|
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||||
|
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||||
|
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||||
|
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||||
|
|
||||||
|
|
||||||
|
SHRLIB_LDLIBS += $($*_DLL_DEPLIBS) $($*_DEPLIBS) $(SHRLIB_DEPLIBS)
|
||||||
|
SHRLIB_LDLIBS += $(addsuffix .lib, \
|
||||||
|
$($*_SYS_DLL_LIBS) \
|
||||||
|
$($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS) )
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# Linker definition
|
||||||
|
LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LDFLAGS) \
|
||||||
|
-out:$@ $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
|
||||||
|
|
||||||
|
#--------------------------------------------------
|
||||||
|
# UseManifestTool.pl checks MS Visual c++ compiler version number to
|
||||||
|
# decide whether or not to use the Manifest Tool command to embed the
|
||||||
|
# linker created .manifest file into a library or product target.
|
||||||
|
# useManifestTool.pl returns 0(don't use) or 1(use).
|
||||||
|
#
|
||||||
|
MT.exe = $(MSVC_PREFIX)mt$(MSVC_SUFFIX) -nologo -manifest $@.manifest
|
||||||
|
MT_DLL_COMMAND1 = $(MT.exe) "-outputresource:$@;\#2"
|
||||||
|
MT_EXE_COMMAND_YES =
|
||||||
|
MT_EXE_COMMAND_NO = $(MT.exe) "-outputresource:$@;\#1"
|
||||||
|
MT_EXE_COMMAND1 = $(MT_EXE_COMMAND_$(STATIC_BUILD))
|
||||||
|
MT_DLL_COMMAND = $(MT_DLL_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
||||||
|
MT_EXE_COMMAND = $(MT_EXE_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
18
configure/os/CONFIG.Common.win32-x86-clang
Normal file
18
configure/os/CONFIG.Common.win32-x86-clang
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# CONFIG.Common.win32-x86-clang
|
||||||
|
#
|
||||||
|
# Definitions for win32-x86-clang target build
|
||||||
|
# Override these definitions in CONFIG_SITE.Common.win32-x86-clang
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
#Include definitions common to msvc compiler
|
||||||
|
include $(CONFIG)/CONFIG.msvcCommon
|
||||||
|
|
||||||
|
VALID_BUILDS = Ioc Host Command
|
||||||
|
|
||||||
|
# Override CONFIG.msvcCommon settings:
|
||||||
|
MSVC_PREFIX = llvm-
|
||||||
|
CC = clang-cl$(MSVC_SUFFIX) --target=i686-pc-windows-msvc
|
||||||
|
WINLINK = lld-link$(MSVC_SUFFIX)
|
||||||
|
|
||||||
|
# clang-cl does not support /GL option
|
||||||
|
OPT_WHOLE_PROGRAM = NO
|
18
configure/os/CONFIG.Common.windows-x64-clang
Normal file
18
configure/os/CONFIG.Common.windows-x64-clang
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# CONFIG.Common.windows-x64-clang
|
||||||
|
#
|
||||||
|
# Definitions for windows-x64-clang target builds
|
||||||
|
# Sites may override these definitions in CONFIG_SITE.Common.windows-x64-clang
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
#Include definitions common to msvc compiler
|
||||||
|
include $(CONFIG)/CONFIG.msvcCommon
|
||||||
|
|
||||||
|
VALID_BUILDS = Ioc Host Command
|
||||||
|
|
||||||
|
# Override CONFIG.msvcCommon settings:
|
||||||
|
MSVC_PREFIX = llvm-
|
||||||
|
CC = clang-cl$(MSVC_SUFFIX) --target=x86_64-pc-windows-msvc
|
||||||
|
WINLINK = lld-link$(MSVC_SUFFIX)
|
||||||
|
|
||||||
|
# clang-cl does not support /GL option
|
||||||
|
OPT_WHOLE_PROGRAM = NO
|
9
configure/os/CONFIG.win32-x86-clang.Common
Normal file
9
configure/os/CONFIG.win32-x86-clang.Common
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# CONFIG.win32-x86-clang.Common
|
||||||
|
#
|
||||||
|
# Definitions for win32-x86-clang host arch
|
||||||
|
# Override these definitions in CONFIG_SITE.win32-x86-clang.Common
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
#Include definitions common to win32-x86 hosts
|
||||||
|
include $(CONFIG)/os/CONFIG.win32-x86.Common
|
||||||
|
|
@ -4,286 +4,7 @@
|
|||||||
# Override these definitions in CONFIG_SITE.win32-x86.win32-x86
|
# Override these definitions in CONFIG_SITE.win32-x86.win32-x86
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# Win32 valid build types and include directory suffixes
|
# Include common msvc compiler definitions
|
||||||
|
include $(CONFIG)/CONFIG.msvcCommon
|
||||||
|
|
||||||
VALID_BUILDS = Host Ioc Command
|
VALID_BUILDS = Host Ioc Command
|
||||||
|
|
||||||
CMPLR_CLASS = msvc
|
|
||||||
|
|
||||||
OPT_WHOLE_PROGRAM = YES
|
|
||||||
|
|
||||||
#-------------------------------------------------------
|
|
||||||
|
|
||||||
WINLINK = link
|
|
||||||
|
|
||||||
RCCMD = rc -nologo -l 0x409 $(INCLUDES) -fo $@ $<
|
|
||||||
|
|
||||||
ARCMD = lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
|
||||||
|
|
||||||
#
|
|
||||||
# Configure OS vendor C compiler
|
|
||||||
CC = cl
|
|
||||||
|
|
||||||
# Override CONFIG.gnuCommon settings for cross builds.
|
|
||||||
GNU = NO
|
|
||||||
HDEPENDS_METHOD = MKMF
|
|
||||||
|
|
||||||
# Compiler flags for C files (C++ is below)
|
|
||||||
|
|
||||||
#
|
|
||||||
# -W<d> display warnings at level d
|
|
||||||
# -W4 is for maximum (lint type) warnings
|
|
||||||
# -W3 is for production quality warnings
|
|
||||||
# -W2 displays significant warnings
|
|
||||||
# -W1 is the default and shows severe warnings only
|
|
||||||
# -w<d><n> Set warning C<n> to be shown at level <d>
|
|
||||||
WARN_CFLAGS_YES = -W3
|
|
||||||
WARN_CFLAGS_NO = -W1
|
|
||||||
|
|
||||||
#
|
|
||||||
# -Ox maximum optimizations
|
|
||||||
# -GL whole program optimization
|
|
||||||
# -Oy- re-enable creation of frame pointers
|
|
||||||
OPT_CFLAGS_YES_YES = -Ox -GL -Oy-
|
|
||||||
OPT_CFLAGS_YES_NO = -Ox -Oy-
|
|
||||||
OPT_CFLAGS_YES = $(OPT_CFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
|
||||||
|
|
||||||
#
|
|
||||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
|
||||||
# -RTCsu enable run-time error checks
|
|
||||||
OPT_CFLAGS_NO = -Z7 -RTCsu
|
|
||||||
|
|
||||||
# specify object file name and location
|
|
||||||
OBJ_CFLAG = -Fo
|
|
||||||
|
|
||||||
#
|
|
||||||
# the following options are required when
|
|
||||||
# vis c++ compiles the code (and includes
|
|
||||||
# the header files)
|
|
||||||
#
|
|
||||||
# -MT static multithreaded C RTL
|
|
||||||
# -MTd static multithreaded C RTL (debug version)
|
|
||||||
# -MD multithreaded C RTL in DLL
|
|
||||||
# -MDd multithreaded C RTL in DLL (debug version)
|
|
||||||
BUILD_DLL_CFLAGS_NO =
|
|
||||||
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
|
|
||||||
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
|
|
||||||
VISC_CFLAGS_DEBUG_NO = d
|
|
||||||
VISC_CFLAGS_DEBUG_YES =
|
|
||||||
VISC_CFLAGS_DEBUG = $(VISC_CFLAGS_DEBUG_$(HOST_OPT))
|
|
||||||
STATIC_CFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
|
||||||
STATIC_CFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
|
||||||
|
|
||||||
# OS vendor c preprocessor
|
|
||||||
CPP = cl -nologo -C -E
|
|
||||||
|
|
||||||
# Configure OS vendor C++ compiler
|
|
||||||
#
|
|
||||||
# -EHsc - generate code for exceptions
|
|
||||||
# -GR - generate code for run time type identification
|
|
||||||
#
|
|
||||||
CCC = cl -EHsc -GR
|
|
||||||
|
|
||||||
# Other compiler flags, used for CPP, C and C++
|
|
||||||
#
|
|
||||||
# -FC - Show absolute path of source file in diagnostics
|
|
||||||
# -D__STDC__=0 gives us both:
|
|
||||||
# 1) define STDC for code (pretend ANSI conformance)
|
|
||||||
# 2) set it to 0 to use MS C "extensions" (open for _open etc.)
|
|
||||||
# because MS uses: if __STDC__ ... disable many nice things
|
|
||||||
#
|
|
||||||
CODE_CPPFLAGS += -nologo -FC -D__STDC__=0
|
|
||||||
CODE_CPPFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
|
||||||
|
|
||||||
|
|
||||||
# Compiler flags for C++ files
|
|
||||||
|
|
||||||
#
|
|
||||||
# -W<n> disable warnings from levels > n
|
|
||||||
# -w<n><m> set warning m to level n
|
|
||||||
# -w44355 "'this' used in the base initializer list"
|
|
||||||
# -w44344 "behavior change: use of explicit template arguments results in ..."
|
|
||||||
# -w44251 "class needs to have dll-interface to be used by clients of ..."
|
|
||||||
WARN_CXXFLAGS_YES = -W3 -w44355 -w44344 -w44251
|
|
||||||
WARN_CXXFLAGS_NO = -W1
|
|
||||||
|
|
||||||
# Silence tr1 namespace deprecation warnings
|
|
||||||
WARN_CXXFLAGS += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
|
||||||
|
|
||||||
#
|
|
||||||
# -Ox maximum optimizations
|
|
||||||
# -GL whole program optimization
|
|
||||||
# -Oy- re-enable creation of frame pointers
|
|
||||||
OPT_CXXFLAGS_YES_YES = -Ox -GL -Oy-
|
|
||||||
OPT_CXXFLAGS_YES_NO = -Ox -Oy-
|
|
||||||
OPT_CXXFLAGS_YES = $(OPT_CXXFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
|
||||||
|
|
||||||
#
|
|
||||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
|
||||||
# -RTCsu enable run-time error checks
|
|
||||||
OPT_CXXFLAGS_NO = -RTCsu -Z7
|
|
||||||
|
|
||||||
# specify object file name and location
|
|
||||||
OBJ_CXXFLAG = -Fo
|
|
||||||
|
|
||||||
#
|
|
||||||
# the following options are required when
|
|
||||||
# vis c++ compiles the code (and includes
|
|
||||||
# the header files)
|
|
||||||
#
|
|
||||||
# -MT static multithreaded C RTL
|
|
||||||
# -MTd static multithreaded C RTL (debug version)
|
|
||||||
# -MD multithreaded C RTL in DLL
|
|
||||||
# -MDd multithreaded C RTL in DLL (debug version)
|
|
||||||
STATIC_CXXFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
|
||||||
STATIC_CXXFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
|
||||||
|
|
||||||
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib dbghelp.lib
|
|
||||||
STATIC_LDLIBS_NO=
|
|
||||||
STATIC_LDFLAGS=
|
|
||||||
RANLIB=
|
|
||||||
|
|
||||||
# add -profile here to run the ms profiler
|
|
||||||
# -LTCG whole program optimization
|
|
||||||
# -incremental:no full linking
|
|
||||||
# -fixed:no generate relocatable code
|
|
||||||
# -version:<major>.<minor> - only 2 components allowed, 0-65535 each
|
|
||||||
# -debug generate debugging info
|
|
||||||
LINK_OPT_FLAGS_WHOLE_YES = -LTCG
|
|
||||||
LINK_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
|
||||||
LINK_OPT_FLAGS_YES += -incremental:no -opt:ref
|
|
||||||
LINK_OPT_FLAGS_YES += -release $(PROD_VERSION:%=-version:%)
|
|
||||||
LINK_OPT_FLAGS_NO = -debug -incremental:no -fixed:no
|
|
||||||
OPT_LDFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
|
|
||||||
|
|
||||||
LIB_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
|
||||||
LIB_OPT_LDFLAGS = $(LIB_OPT_FLAGS_$(HOST_OPT))
|
|
||||||
|
|
||||||
ARCH_DEP_CFLAGS=
|
|
||||||
SHRLIB_CFLAGS=
|
|
||||||
|
|
||||||
OS_CLASS=WIN32
|
|
||||||
POSIX=NO
|
|
||||||
|
|
||||||
# ifdef WIN32 looks better that ifeq ($(OS_CLASS),WIN32) ??
|
|
||||||
WIN32=1
|
|
||||||
|
|
||||||
EXE=.exe
|
|
||||||
OBJ=.obj
|
|
||||||
RES=.res
|
|
||||||
|
|
||||||
# MS Visual C++ doesn't recognize *.cc as a C++ source file,
|
|
||||||
# so C++ compiles get the flag -TP
|
|
||||||
COMPILER_CXXFLAGS = -TP
|
|
||||||
|
|
||||||
# Operating system flags
|
|
||||||
OP_SYS_CFLAGS =
|
|
||||||
OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
|
|
||||||
|
|
||||||
# Files and flags needed to link DLLs (used in RULES_BUILD)
|
|
||||||
WIN32_DLLFLAGS = -subsystem:windows -dll $(OPT_LDFLAGS) \
|
|
||||||
$(USR_LDFLAGS) $(CMD_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
|
||||||
|
|
||||||
# Specify dll .def file only if it exists
|
|
||||||
DLL_DEF_FLAG = $(addprefix -def:,$(wildcard ../$(addsuffix .def,$*)))
|
|
||||||
|
|
||||||
# A WIN32 dll has three parts:
|
|
||||||
# x.dll: the real dll (SHRLIBNAME)
|
|
||||||
# x.lib: what you link to progs that use the dll (DLLSTUB_LIBNAME)
|
|
||||||
# x.exp: what you need to build the dll (in no variable)
|
|
||||||
LINK.shrlib = $(WINLINK) -nologo $(WIN32_DLLFLAGS) -out:$@ \
|
|
||||||
-implib:$(@:%$(SHRLIB_SUFFIX)=%$(LIB_SUFFIX)) \
|
|
||||||
$(DLL_DEF_FLAG) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
|
|
||||||
|
|
||||||
# Adjust names of libraries to build
|
|
||||||
SHRLIB_SUFFIX_BASE = .dll
|
|
||||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
|
||||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
|
||||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
|
||||||
TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX_BASE))
|
|
||||||
|
|
||||||
# When SHARED_LIBRARIES is YES we are building a DLL shared library.
|
|
||||||
# When SHARED_LIBRARIES is NO we are building an object library
|
|
||||||
DLLSTUB_SUFFIX = .lib
|
|
||||||
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
|
|
||||||
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
|
||||||
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
|
|
||||||
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
|
||||||
|
|
||||||
LIB_PREFIX=
|
|
||||||
LIB_SUFFIX=.lib
|
|
||||||
LIBNAME_NO = $(BUILD_LIBRARY:%=%.lib)
|
|
||||||
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
|
|
||||||
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%.lib)
|
|
||||||
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
|
|
||||||
|
|
||||||
# dll install location
|
|
||||||
INSTALL_SHRLIB = $(INSTALL_BIN)
|
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------
|
|
||||||
# Products dependancy definitions
|
|
||||||
|
|
||||||
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
|
||||||
$(firstword $(wildcard \
|
|
||||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
|
||||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
|
||||||
|
|
||||||
|
|
||||||
PROD_LDLIBS += $($*_DEPLIBS) $(PROD_DEPLIBS)
|
|
||||||
PROD_LDLIBS += $(addsuffix .lib, \
|
|
||||||
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
|
|
||||||
|
|
||||||
LDLIBS_STATIC_YES = LDLIBS
|
|
||||||
LDLIBS_SHARED_NO = LDLIBS
|
|
||||||
PROD_LDLIBS += $(STATIC_LDLIBS) \
|
|
||||||
$($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
|
||||||
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
|
||||||
|
|
||||||
#--------------------------------------------------
|
|
||||||
# Libraries dependancy definitions
|
|
||||||
|
|
||||||
# libs that we need to link the DLL with
|
|
||||||
# (it isnt necessary to rebuild the dll if these change)
|
|
||||||
|
|
||||||
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
|
||||||
$(firstword $(wildcard \
|
|
||||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
|
||||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
|
||||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
|
||||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
|
||||||
|
|
||||||
|
|
||||||
SHRLIB_LDLIBS += $($*_DLL_DEPLIBS) $($*_DEPLIBS) $(SHRLIB_DEPLIBS)
|
|
||||||
SHRLIB_LDLIBS += $(addsuffix .lib, \
|
|
||||||
$($*_SYS_DLL_LIBS) \
|
|
||||||
$($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS) )
|
|
||||||
|
|
||||||
#--------------------------------------------------
|
|
||||||
# Linker definition
|
|
||||||
LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LDFLAGS) \
|
|
||||||
-out:$@ $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
|
|
||||||
|
|
||||||
#--------------------------------------------------
|
|
||||||
# UseManifestTool.pl checks MS Visual c++ compiler version number to
|
|
||||||
# decide whether or not to use the Manifest Tool command to embed the
|
|
||||||
# linker created .manifest file into a library or product target.
|
|
||||||
# useManifestTool.pl returns 0(don't use) or 1(use).
|
|
||||||
#
|
|
||||||
MT.exe = mt.exe -nologo -manifest $@.manifest
|
|
||||||
MT_DLL_COMMAND1 = $(MT.exe) "-outputresource:$@;\#2"
|
|
||||||
MT_EXE_COMMAND_YES =
|
|
||||||
MT_EXE_COMMAND_NO = $(MT.exe) "-outputresource:$@;\#1"
|
|
||||||
MT_EXE_COMMAND1 = $(MT_EXE_COMMAND_$(STATIC_BUILD))
|
|
||||||
MT_DLL_COMMAND = $(MT_DLL_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
|
||||||
MT_EXE_COMMAND = $(MT_EXE_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
|
||||||
|
9
configure/os/CONFIG.windows-x64-clang.Common
Normal file
9
configure/os/CONFIG.windows-x64-clang.Common
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# CONFIG.windows-x64-clang.Common
|
||||||
|
#
|
||||||
|
# Definitions for windows-x64-clang host arch
|
||||||
|
# Override these definitions in CONFIG_SITE.windows-x64-clang.Common
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
#Include definitions common to windows-x64 hosts
|
||||||
|
include $(CONFIG)/os/CONFIG.windows-x64.Common
|
||||||
|
|
@ -4,9 +4,10 @@
|
|||||||
# Override these definitions in CONFIG_SITE.windows-x64.windows-x64
|
# Override these definitions in CONFIG_SITE.windows-x64.windows-x64
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
#Include definitions common to win32-x86 builds
|
# Include common msvc compiler definitions
|
||||||
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
include $(CONFIG)/CONFIG.msvcCommon
|
||||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86.win32-x86
|
|
||||||
|
VALID_BUILDS = Host Ioc Command
|
||||||
|
|
||||||
OPT_LDFLAGS += -MACHINE:X64
|
OPT_LDFLAGS += -MACHINE:X64
|
||||||
# -MACHINE:X64
|
# -MACHINE:X64
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
* Enable format-string checking if compiler supports it (if msvc is 2015 or newer)
|
* Enable format-string checking if compiler supports it (if msvc is 2015 or newer)
|
||||||
*/
|
*/
|
||||||
#if _MSC_VER >= 1900
|
#if _MSC_VER >= 1900
|
||||||
|
# include <sal.h>
|
||||||
# define EPICS_PRINTF_FMT(a) _Printf_format_string_ a
|
# define EPICS_PRINTF_FMT(a) _Printf_format_string_ a
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user