Importing netbsd clang -- pristine
Change-Id: Ia40e9ffdf29b5dab2f122f673ff6802a58bc690f
This commit is contained in:
parent
83a31a3592
commit
f4a2713ac8
20797 changed files with 3669737 additions and 2 deletions
1
build.sh
1
build.sh
|
@ -1770,7 +1770,6 @@ MAKEWRAPPERMACHINE=${makewrappermachine:-${MACHINE}}; export MAKEWRAPPERMACHINE
|
|||
USETOOLS=yes; export USETOOLS
|
||||
# LSC We are cross compiling, so do not install to root!
|
||||
MKINSTALLBOOT=no; export MKINSTALLBOOT
|
||||
MKGCC=yes; export MKGCC
|
||||
EOF
|
||||
} | eval sort -u "${makewrapout}"
|
||||
eval cat <<EOF "${makewrapout}"
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
./usr/games/hide gname=games mode=0750
|
||||
./usr/include
|
||||
./usr/include/arpa
|
||||
./usr/include/clang-3.4
|
||||
./usr/include/compat
|
||||
./usr/include/compat/machine
|
||||
./usr/include/ddekit
|
||||
|
|
33
external/bsd/llvm/Makefile
vendored
Normal file
33
external/bsd/llvm/Makefile
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
# $NetBSD: Makefile,v 1.6 2013/11/28 14:19:59 joerg Exp $
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
SUBDIR= include \
|
||||
.WAIT \
|
||||
lib \
|
||||
.WAIT \
|
||||
bin
|
||||
|
||||
.if ${MKCLANGRT:Uno} == "yes"
|
||||
SUBDIR+= librt
|
||||
.endif
|
||||
|
||||
.include "Makefile.inc"
|
||||
|
||||
checkout:
|
||||
svn co -r ${CLANG_REVISION} ${SVN_ROOT}/cfe/${SVN_BRANCH} ${CLANG_SRCDIR}
|
||||
svn co -r ${COMPILER_RT_REVISION} ${SVN_ROOT}/compiler-rt/${SVN_BRANCH} \
|
||||
${COMPILER_RT_SRCDIR}
|
||||
svn co -r ${LLD_REVISION} ${SVN_ROOT}/lld/${SVN_BRANCH} ${LLD_SRCDIR}
|
||||
svn co -r ${LLDB_REVISION} ${SVN_ROOT}/lldb/${SVN_BRANCH} ${LLDB_SRCDIR}
|
||||
svn co -r ${LLVM_REVISION} ${SVN_ROOT}/llvm/${SVN_BRANCH} ${LLVM_SRCDIR}
|
||||
|
||||
checkout-mclinker:
|
||||
if [ -d ${MCLINKER_SRCDIR}/.git ]; then \
|
||||
cd ${MCLINKER_SRCDIR}; git pull ${MCLINKER_ROOT} ; \
|
||||
else \
|
||||
git clone ${MCLINKER_ROOT} ${MCLINKER_SRCDIR}; \
|
||||
fi
|
||||
cd ${MCLINKER_SRCDIR} && git checkout ${MCLINKER_REVISION}
|
||||
|
||||
.include <bsd.subdir.mk>
|
80
external/bsd/llvm/Makefile.inc
vendored
Normal file
80
external/bsd/llvm/Makefile.inc
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
# $NetBSD: Makefile.inc,v 1.63 2013/11/28 14:19:59 joerg Exp $
|
||||
|
||||
.if !defined(LLVM_TOPLEVEL_MK)
|
||||
LLVM_TOPLEVEL_MK=
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
SVN_ROOT= http://llvm.org/svn/llvm-project
|
||||
SVN_BRANCH= branches/release_34
|
||||
|
||||
COMMON_REVISION= 195771
|
||||
CLANG_REVISION= ${COMMON_REVISION}
|
||||
COMPILER_RT_REVISION= ${COMMON_REVISION}
|
||||
LLD_REVISION= ${COMMON_REVISION}
|
||||
LLDB_REVISION= ${COMMON_REVISION}
|
||||
LLVM_REVISION= ${COMMON_REVISION}
|
||||
|
||||
MCLINKER_REVISION= deeb2a77b4165827316f88e0a7ba4ba6b743a080
|
||||
MCLINKER_ROOT= https://code.google.com/p/mclinker/
|
||||
|
||||
LLVM_VERSION= 3.4
|
||||
CLANG_VERSION= 3.4
|
||||
|
||||
COMPILER_RT_SRCDIR:= ${.PARSEDIR}/dist/compiler-rt
|
||||
CLANG_SRCDIR:= ${.PARSEDIR}/dist/clang
|
||||
LLD_SRCDIR:= ${.PARSEDIR}/dist/lld
|
||||
LLDB_SRCDIR:= ${.PARSEDIR}/dist/lldb
|
||||
LLVM_SRCDIR:= ${.PARSEDIR}/dist/llvm
|
||||
MCLINKER_SRCDIR:= ${.PARSEDIR}/dist/mclinker
|
||||
LLVM_TOPLEVEL:= ${.PARSEDIR}
|
||||
|
||||
CPPFLAGS+= -I. -I${CLANG_SRCDIR}/include -I${LLD_SRCDIR}/include \
|
||||
-I${LLVM_SRCDIR}/include -I${MCLINKER_SRCDIR}/include \
|
||||
-I${LLDB_SRCDIR}/include \
|
||||
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS \
|
||||
-D__STDC_FORMAT_MACROS -DCLANG_ENABLE_STATIC_ANALYZER
|
||||
|
||||
.if defined(HOSTLIB) || defined(HOSTPROG)
|
||||
LLVM_INCLUDE_CONFIG= ${LLVM_TOOLCONF_OBJDIR}/config/include
|
||||
CLANG_INCLUDE_CONFIG= ${LLVM_TOOLCONF_OBJDIR}/config/tools/clang/include
|
||||
MCLINKER_INCLUDE_CONFIG= ${LLVM_TOPLEVEL}/config/mclinker
|
||||
LLVM_INCLUDE_OBJDIR!= cd ${NETBSDSRCDIR}/tools/llvm-include && ${PRINTOBJDIR}
|
||||
LLVM_TOOLCONF_OBJDIR!= cd ${NETBSDSRCDIR}/tools/llvm && ${PRINTOBJDIR}
|
||||
HOST_CPPFLAGS+= ${CPPFLAGS}
|
||||
HOST_CXXFLAGS+= -O2 -g -fno-rtti -fno-exceptions
|
||||
.if ${MKLLD:Uno} == "yes"
|
||||
HOST_CPPFLAGS+= -std=c++11
|
||||
.endif
|
||||
.else
|
||||
LLVM_INCLUDE_CONFIG= ${LLVM_TOPLEVEL}/config
|
||||
CLANG_INCLUDE_CONFIG= ${LLVM_TOPLEVEL}/config
|
||||
MCLINKER_INCLUDE_CONFIG= ${LLVM_TOPLEVEL}/config/mclinker
|
||||
LLVM_INCLUDE_OBJDIR!= cd ${LLVM_TOPLEVEL}/include && ${PRINTOBJDIR}
|
||||
|
||||
.if ${MKLLD:Uno} == "yes" || ${MKLLDB:Uno} == "yes"
|
||||
CPPFLAGS+= -std=c++11
|
||||
.endif
|
||||
.if ${MKLLDB:Uno} == "yes"
|
||||
CPPFLAGS+= -DLLDB_DISABLE_PYTHON
|
||||
.endif
|
||||
CXXFLAGS+= -fno-rtti -fno-exceptions
|
||||
CXXFLAGS+= -ffunction-sections -fdata-sections
|
||||
LDFLAGS+= -Wl,--gc-sections
|
||||
.endif
|
||||
CPPFLAGS+= -I${LLVM_INCLUDE_OBJDIR} -I${LLVM_INCLUDE_CONFIG} \
|
||||
-I${CLANG_INCLUDE_CONFIG} -I${MCLINKER_INCLUDE_CONFIG}
|
||||
|
||||
LLVM_CONFIGURE_ARGS= \
|
||||
--enable-targets=x86,powerpc,sparc,aarch64,arm,mips \
|
||||
--with-c-include-dirs=/usr/include/clang-${CLANG_VERSION}:/usr/include \
|
||||
--disable-timestamps --prefix=/usr --sysconfdir=/etc/llvm \
|
||||
--with-clang-srcdir=${CLANG_SRCDIR} \
|
||||
--host=${MACHINE_GNU_PLATFORM} \
|
||||
llvm_cv_gnu_make_command=${MAKE}
|
||||
|
||||
.for tool in circo dot dotty fdp neato twopi xdot
|
||||
LLVM_CONFIGURE_ARGS+= ac_cv_path_${tool:tu}="echo ${tool}"
|
||||
.endfor
|
||||
|
||||
.endif
|
49
external/bsd/llvm/bin/Makefile
vendored
Normal file
49
external/bsd/llvm/bin/Makefile
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
# $NetBSD: Makefile,v 1.13 2013/10/14 01:37:39 joerg Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
SUBDIR= clang \
|
||||
clang-tblgen \
|
||||
tblgen
|
||||
|
||||
.if ${MKLLD} != "no"
|
||||
SUBDIR+= \
|
||||
lld
|
||||
.endif
|
||||
|
||||
.if ${MKLLDB} != "no"
|
||||
SUBDIR+= \
|
||||
lldb
|
||||
.endif
|
||||
|
||||
.if ${MKMCLINKER} != "no"
|
||||
SUBDIR+= \
|
||||
llvm-mcld
|
||||
.endif
|
||||
|
||||
.if defined(LLVM_DEVELOPER)
|
||||
SUBDIR+= \
|
||||
bugpoint \
|
||||
clang-format \
|
||||
llc \
|
||||
lli \
|
||||
llvm-ar \
|
||||
llvm-as \
|
||||
llvm-bcanalyzer \
|
||||
llvm-cov \
|
||||
llvm-diff \
|
||||
llvm-dis \
|
||||
llvm-dwarfdump \
|
||||
llvm-extract \
|
||||
llvm-link \
|
||||
llvm-mc \
|
||||
llvm-nm \
|
||||
llvm-objdump \
|
||||
llvm-readobj \
|
||||
llvm-size \
|
||||
llvm-symbolizer \
|
||||
macho-dumpx \
|
||||
opt
|
||||
.endif
|
||||
|
||||
.include <bsd.subdir.mk>
|
5
external/bsd/llvm/bin/Makefile.inc
vendored
Normal file
5
external/bsd/llvm/bin/Makefile.inc
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
# $NetBSD: Makefile.inc,v 1.1 2011/02/06 01:13:43 joerg Exp $
|
||||
|
||||
BINDIR= /usr/bin
|
||||
|
||||
.include "${.PARSEDIR}/../Makefile.inc"
|
41
external/bsd/llvm/bin/bugpoint/Makefile
vendored
Normal file
41
external/bsd/llvm/bin/bugpoint/Makefile
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
# $NetBSD: Makefile,v 1.6 2013/04/25 13:59:55 joerg Exp $
|
||||
|
||||
PROG_CXX= bugpoint
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/bugpoint
|
||||
|
||||
SRCS= BugDriver.cpp \
|
||||
CrashDebugger.cpp \
|
||||
ExecutionDriver.cpp \
|
||||
ExtractFunction.cpp \
|
||||
FindBugs.cpp \
|
||||
Miscompilation.cpp \
|
||||
OptimizerDriver.cpp \
|
||||
ToolRunner.cpp \
|
||||
bugpoint.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
ObjCARC \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
InstCombine \
|
||||
Instrumentation \
|
||||
Linker \
|
||||
ScalarOpts \
|
||||
Target \
|
||||
ipo \
|
||||
Vectorize \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
ipa \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
37
external/bsd/llvm/bin/clang-format/Makefile
vendored
Normal file
37
external/bsd/llvm/bin/clang-format/Makefile
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/07/07 21:36:42 joerg Exp $
|
||||
|
||||
PROG_CXX= clang-format
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${CLANG_SRCDIR}/tools/clang-format
|
||||
|
||||
SRCS= ClangFormat.cpp
|
||||
|
||||
CLANG_LIBS+= \
|
||||
clangFormat \
|
||||
clangTooling \
|
||||
clangFrontend \
|
||||
clangSerialization \
|
||||
clangDriver \
|
||||
clangParse \
|
||||
clangRewriteFrontend \
|
||||
clangRewriteCore \
|
||||
clangSema \
|
||||
clangEdit \
|
||||
clangAnalysis \
|
||||
clangAST \
|
||||
clangLex \
|
||||
clangBasic
|
||||
|
||||
LLVM_LIBS+= \
|
||||
BitReader \
|
||||
MCParser \
|
||||
MC \
|
||||
Option \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
26
external/bsd/llvm/bin/clang-tblgen/Makefile
vendored
Normal file
26
external/bsd/llvm/bin/clang-tblgen/Makefile
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
# $NetBSD: Makefile,v 1.4 2013/07/07 21:36:42 joerg Exp $
|
||||
|
||||
PROG_CXX= clang-tblgen
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${CLANG_SRCDIR}/utils/TableGen
|
||||
|
||||
SRCS= ClangASTNodesEmitter.cpp \
|
||||
ClangAttrEmitter.cpp \
|
||||
ClangCommentCommandInfoEmitter.cpp \
|
||||
ClangCommentHTMLNamedCharacterReferenceEmitter.cpp \
|
||||
ClangCommentHTMLTagsEmitter.cpp \
|
||||
ClangDiagnosticsEmitter.cpp \
|
||||
ClangSACheckersEmitter.cpp \
|
||||
NeonEmitter.cpp \
|
||||
TableGen.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
TableGen \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
98
external/bsd/llvm/bin/clang/Makefile
vendored
Normal file
98
external/bsd/llvm/bin/clang/Makefile
vendored
Normal file
|
@ -0,0 +1,98 @@
|
|||
# $NetBSD: Makefile,v 1.27 2013/07/07 21:36:42 joerg Exp $
|
||||
|
||||
PROG_CXX= clang
|
||||
NOMAN= yes
|
||||
|
||||
.if !defined(HOSTPROG)
|
||||
SYMLINKS+= clang ${BINDIR}/clang++
|
||||
SYMLINKS+= clang ${BINDIR}/clang-cpp
|
||||
.endif
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${CLANG_SRCDIR}/tools/driver
|
||||
|
||||
SRCS= driver.cpp \
|
||||
cc1_main.cpp \
|
||||
cc1as_main.cpp
|
||||
|
||||
CLANG_LIBS+= \
|
||||
clangFrontendTool \
|
||||
clangFrontend \
|
||||
clangARCMigrate \
|
||||
clangStaticAnalyzerFrontend \
|
||||
clangStaticAnalyzerCheckers \
|
||||
clangStaticAnalyzerCore \
|
||||
clangDriver \
|
||||
clangSerialization \
|
||||
clangCodeGen \
|
||||
clangParse \
|
||||
clangSema \
|
||||
clangEdit \
|
||||
clangAnalysis \
|
||||
clangRewriteFrontend \
|
||||
clangRewriteCore \
|
||||
clangAST \
|
||||
clangLex \
|
||||
clangBasic
|
||||
|
||||
LLVM_LIBS+= \
|
||||
ObjCARC \
|
||||
ipo \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmParser \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmParser \
|
||||
ARMAsmPrinter \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
MipsAsmParser \
|
||||
PowerPCCodeGen \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmParser \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86MCTargetDesc \
|
||||
X86TargetInfo \
|
||||
X86Utils \
|
||||
X86AsmParser \
|
||||
X86AsmPrinter \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
AsmPrinter \
|
||||
CodeGen \
|
||||
Vectorize \
|
||||
Target \
|
||||
InstCombine \
|
||||
Instrumentation \
|
||||
ScalarOpts \
|
||||
Analysis \
|
||||
MCDisassembler \
|
||||
MCParser \
|
||||
MC \
|
||||
Linker \
|
||||
TransformsUtils \
|
||||
ipa \
|
||||
IR \
|
||||
Option \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
61
external/bsd/llvm/bin/llc/Makefile
vendored
Normal file
61
external/bsd/llvm/bin/llc/Makefile
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
# $NetBSD: Makefile,v 1.17 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llc
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llc
|
||||
|
||||
SRCS= llc.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
AsmPrinter \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmParser \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmParser \
|
||||
ARMAsmPrinter \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsAsmParser \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
PowerPCCodeGen \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmParser \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86TargetInfo \
|
||||
X86MCTargetDesc \
|
||||
X86AsmParser \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
CodeGen \
|
||||
ScalarOpts \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
Target \
|
||||
MCParser \
|
||||
MC \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
34
external/bsd/llvm/bin/lld/Makefile
vendored
Normal file
34
external/bsd/llvm/bin/lld/Makefile
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/10/14 01:37:39 joerg Exp $
|
||||
|
||||
PROG_CXX= lld
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLD_SRCDIR}/tools/lld
|
||||
|
||||
SRCS= lld.cpp
|
||||
|
||||
LLD_LIBS+= \
|
||||
lldDriver \
|
||||
lldReaderWriterELF \
|
||||
lldReaderWriterELFHexagon \
|
||||
lldReaderWriterELFPPC \
|
||||
lldReaderWriterELFX86 \
|
||||
lldReaderWriterELFX86_64 \
|
||||
lldReaderWriterMachO \
|
||||
lldReaderWriterPECOFF \
|
||||
lldReaderWriter \
|
||||
lldReaderWriterYAML \
|
||||
lldPasses \
|
||||
lldCore \
|
||||
lldReaderWriterNative \
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Object \
|
||||
Option \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
155
external/bsd/llvm/bin/lldb/Makefile
vendored
Normal file
155
external/bsd/llvm/bin/lldb/Makefile
vendored
Normal file
|
@ -0,0 +1,155 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/10/20 14:53:22 joerg Exp $
|
||||
|
||||
PROG_CXX= lldb
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLDB_SRCDIR}/tools/driver
|
||||
|
||||
SRCS= Driver.cpp \
|
||||
ELWrapper.cpp \
|
||||
GetOptWrapper.cpp \
|
||||
IOChannel.cpp \
|
||||
Platform.cpp
|
||||
|
||||
CPPFLAGS.Driver.cpp+= -Dgetopt_long_only=getopt_long
|
||||
|
||||
LLDB_LIBS+= \
|
||||
API \
|
||||
Log \
|
||||
PluginInstructionARM \
|
||||
PluginProcessGDBRemote \
|
||||
PluginProcessMachCore \
|
||||
PluginProcessPOSIX \
|
||||
PluginProcessUtility \
|
||||
PluginSymbolFileDWARF \
|
||||
PluginSymbolFileSymtab \
|
||||
PluginSymbolVendorELF \
|
||||
PluginUnwindAssemblyInstEmulation \
|
||||
PluginUnwindAssemblyX86 \
|
||||
Breakpoint \
|
||||
Expression \
|
||||
Symbol \
|
||||
Target \
|
||||
Utility \
|
||||
HostCommon \
|
||||
Interpreter \
|
||||
Commands \
|
||||
Breakpoint \
|
||||
Core \
|
||||
DataFormatters \
|
||||
PluginABIMacOSX_arm \
|
||||
PluginABIMacOSX_i386 \
|
||||
PluginABISysV_x86_64 \
|
||||
PluginAppleObjCRuntime \
|
||||
PluginCXXItaniumABI \
|
||||
PluginDisassemblerLLVM \
|
||||
PluginDynamicLoaderMacOSXDYLD \
|
||||
PluginDynamicLoaderPosixDYLD \
|
||||
PluginDynamicLoaderStatic \
|
||||
PluginObjectContainerBSDArchive \
|
||||
PluginObjectContainerMachOArchive \
|
||||
PluginObjectFileELF \
|
||||
PluginObjectFileMachO \
|
||||
PluginObjectFilePECOFF \
|
||||
PluginPlatformNetBSD \
|
||||
PluginPlatformGDB \
|
||||
PluginPlatformLinux \
|
||||
PluginPlatformMacOSX \
|
||||
PluginPlatformPOSIX \
|
||||
PluginPlatformWindows \
|
||||
PluginProcessElfCore \
|
||||
PluginProcessNetBSD \
|
||||
PluginProcessPOSIX \
|
||||
PluginProcessUtility \
|
||||
HostCommon \
|
||||
HostNetBSD \
|
||||
Interpreter \
|
||||
|
||||
CLANG_LIBS+= \
|
||||
clangFrontend \
|
||||
clangDriver \
|
||||
clangSerialization \
|
||||
clangCodeGen \
|
||||
clangParse \
|
||||
clangSema \
|
||||
clangEdit \
|
||||
clangAnalysis \
|
||||
clangAST \
|
||||
clangLex \
|
||||
clangBasic
|
||||
|
||||
LLVM_LIBS+= \
|
||||
JIT \
|
||||
MCJIT \
|
||||
RuntimeDyld \
|
||||
ExecutionEngine \
|
||||
ObjCARC \
|
||||
ipo \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
MCDisassembler \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64AsmParser \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Disassembler \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMAsmParser \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmPrinter \
|
||||
ARMDisassembler \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsAsmParser \
|
||||
MipsDisassembler \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
PowerPCCodeGen \
|
||||
PowerPCAsmParser \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86TargetInfo \
|
||||
X86MCTargetDesc \
|
||||
X86AsmParser \
|
||||
X86Disassembler \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
AsmPrinter \
|
||||
CodeGen \
|
||||
Vectorize \
|
||||
Target \
|
||||
InstCombine \
|
||||
Instrumentation \
|
||||
ScalarOpts \
|
||||
MCDisassembler \
|
||||
MCParser \
|
||||
MC \
|
||||
Linker \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
ipa \
|
||||
IR \
|
||||
Option \
|
||||
Support
|
||||
|
||||
LDADD+= -ledit -lterminfo -lexecinfo
|
||||
DPADD+= ${LIBEDIT} ${LIBTERMINFO} ${LIBEXECINFO}
|
||||
DBG=-g
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
45
external/bsd/llvm/bin/lli/Makefile
vendored
Normal file
45
external/bsd/llvm/bin/lli/Makefile
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
# $NetBSD: Makefile,v 1.11 2013/10/14 01:37:39 joerg Exp $
|
||||
|
||||
PROG_CXX= lli
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/lli
|
||||
|
||||
SRCS= lli.cpp \
|
||||
RemoteMemoryManager.cpp \
|
||||
RemoteTarget.cpp \
|
||||
RemoteTargetExternal.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
X86CodeGen \
|
||||
X86TargetInfo \
|
||||
X86MCTargetDesc \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
AsmPrinter \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
MCParser \
|
||||
BitReader \
|
||||
JIT \
|
||||
MCJIT \
|
||||
RuntimeDyld \
|
||||
Instrumentation \
|
||||
Interpreter \
|
||||
ExecutionEngine \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
CodeGen \
|
||||
ScalarOpts \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
Target \
|
||||
MC \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
19
external/bsd/llvm/bin/llvm-ar/Makefile
vendored
Normal file
19
external/bsd/llvm/bin/llvm-ar/Makefile
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
# $NetBSD: Makefile,v 1.4 2013/09/02 14:34:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-ar
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-ar
|
||||
|
||||
SRCS= llvm-ar.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Object \
|
||||
BitReader \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
20
external/bsd/llvm/bin/llvm-as/Makefile
vendored
Normal file
20
external/bsd/llvm/bin/llvm-as/Makefile
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/01/23 15:02:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-as
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-as
|
||||
|
||||
SRCS= llvm-as.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
AsmParser \
|
||||
BitWriter \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
18
external/bsd/llvm/bin/llvm-bcanalyzer/Makefile
vendored
Normal file
18
external/bsd/llvm/bin/llvm-bcanalyzer/Makefile
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/02/04 15:00:32 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-bcanalyzer
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-bcanalyzer
|
||||
|
||||
SRCS= llvm-bcanalyzer.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
BitReader \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
18
external/bsd/llvm/bin/llvm-cov/Makefile
vendored
Normal file
18
external/bsd/llvm/bin/llvm-cov/Makefile
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/01/23 15:02:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-cov
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-cov
|
||||
|
||||
SRCS= llvm-cov.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
24
external/bsd/llvm/bin/llvm-diff/Makefile
vendored
Normal file
24
external/bsd/llvm/bin/llvm-diff/Makefile
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
# $NetBSD: Makefile,v 1.4 2013/04/25 13:59:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-diff
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-diff
|
||||
|
||||
SRCS= llvm-diff.cpp \
|
||||
DiffConsumer.cpp \
|
||||
DiffLog.cpp \
|
||||
DifferenceEngine.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
20
external/bsd/llvm/bin/llvm-dis/Makefile
vendored
Normal file
20
external/bsd/llvm/bin/llvm-dis/Makefile
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
# $NetBSD: Makefile,v 1.3 2013/01/23 15:02:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-dis
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-dis
|
||||
|
||||
SRCS= llvm-dis.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Analysis \
|
||||
BitReader \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
22
external/bsd/llvm/bin/llvm-dwarfdump/Makefile
vendored
Normal file
22
external/bsd/llvm/bin/llvm-dwarfdump/Makefile
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-dwarfdump
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-dwarfdump
|
||||
|
||||
SRCS= llvm-dwarfdump.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
DebugInfo \
|
||||
Object \
|
||||
Support
|
||||
|
||||
LDADD+= -lz
|
||||
DPADD+= ${LIBZ}
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
27
external/bsd/llvm/bin/llvm-extract/Makefile
vendored
Normal file
27
external/bsd/llvm/bin/llvm-extract/Makefile
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
# $NetBSD: Makefile,v 1.4 2013/04/25 13:59:56 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-extract
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-extract
|
||||
|
||||
SRCS= llvm-extract.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
ipo \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
Target \
|
||||
ipa \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
26
external/bsd/llvm/bin/llvm-link/Makefile
vendored
Normal file
26
external/bsd/llvm/bin/llvm-link/Makefile
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
# $NetBSD: Makefile,v 1.4 2013/04/25 13:59:56 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-link
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-link
|
||||
|
||||
SRCS= llvm-link.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
Linker \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
Target \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
64
external/bsd/llvm/bin/llvm-mc/Makefile
vendored
Normal file
64
external/bsd/llvm/bin/llvm-mc/Makefile
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
# $NetBSD: Makefile,v 1.17 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-mc
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-mc
|
||||
|
||||
SRCS= llvm-mc.cpp \
|
||||
Disassembler.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
MCDisassembler \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64AsmParser \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Disassembler \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMAsmParser \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmPrinter \
|
||||
ARMDisassembler \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsAsmParser \
|
||||
MipsDisassembler \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
PowerPCCodeGen \
|
||||
PowerPCAsmParser \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86TargetInfo \
|
||||
X86MCTargetDesc \
|
||||
X86AsmParser \
|
||||
X86Disassembler \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
CodeGen \
|
||||
Target \
|
||||
ScalarOpts \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
AsmPrinter \
|
||||
MCParser \
|
||||
MC \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
76
external/bsd/llvm/bin/llvm-mcld/Makefile
vendored
Normal file
76
external/bsd/llvm/bin/llvm-mcld/Makefile
vendored
Normal file
|
@ -0,0 +1,76 @@
|
|||
# $NetBSD: Makefile,v 1.1 2013/02/27 21:25:08 joerg Exp $
|
||||
|
||||
PROG_CXX= ld.mcld
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${MCLINKER_SRCDIR}/tools/llvm-mcld
|
||||
|
||||
SRCS= llvm-mcld.cpp
|
||||
|
||||
MCLINKER_LIBS+= \
|
||||
ARMTargetInfo \
|
||||
ARMCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsCodeGen \
|
||||
X86TargetInfo \
|
||||
X86CodeGen \
|
||||
Target \
|
||||
CodeGen \
|
||||
Core \
|
||||
Object \
|
||||
Fragment \
|
||||
MC \
|
||||
ADT \
|
||||
Support \
|
||||
LD \
|
||||
|
||||
LLVM_LIBS+= \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64AsmParser \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMAsmParser \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmPrinter \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsAsmParser \
|
||||
MipsDisassembler \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
PowerPCCodeGen \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86TargetInfo \
|
||||
X86MCTargetDesc \
|
||||
X86AsmParser \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
SelectionDAG \
|
||||
CodeGen \
|
||||
Target \
|
||||
ScalarOpts \
|
||||
TransformsUtils \
|
||||
Analysis \
|
||||
AsmPrinter \
|
||||
MCParser \
|
||||
MC \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
20
external/bsd/llvm/bin/llvm-nm/Makefile
vendored
Normal file
20
external/bsd/llvm/bin/llvm-nm/Makefile
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
# $NetBSD: Makefile,v 1.3 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-nm
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-nm
|
||||
|
||||
SRCS= llvm-nm.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
BitReader \
|
||||
IR \
|
||||
Object \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
56
external/bsd/llvm/bin/llvm-objdump/Makefile
vendored
Normal file
56
external/bsd/llvm/bin/llvm-objdump/Makefile
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
# $NetBSD: Makefile,v 1.6 2013/09/02 14:34:55 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-objdump
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-objdump
|
||||
|
||||
SRCS= llvm-objdump.cpp \
|
||||
COFFDump.cpp \
|
||||
ELFDump.cpp \
|
||||
MachODump.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
AArch64Disassembler \
|
||||
AArch64TargetInfo \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmParser \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Utils \
|
||||
ARMDisassembler \
|
||||
ARMTargetInfo \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmParser \
|
||||
ARMAsmPrinter \
|
||||
MipsDisassembler \
|
||||
MipsTargetInfo \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
MipsAsmParser \
|
||||
PowerPCAsmParser \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmPrinter \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86Disassembler \
|
||||
X86MCTargetDesc \
|
||||
X86TargetInfo \
|
||||
X86AsmParser \
|
||||
X86AsmPrinter \
|
||||
X86Utils \
|
||||
DebugInfo \
|
||||
MCParser \
|
||||
MC \
|
||||
Object \
|
||||
IR \
|
||||
Support
|
||||
|
||||
LDADD+= -lz
|
||||
DPADD+= ${LIBZ}
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
20
external/bsd/llvm/bin/llvm-ranlib/Makefile
vendored
Normal file
20
external/bsd/llvm/bin/llvm-ranlib/Makefile
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/01/23 15:02:56 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-ranlib
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-ranlib
|
||||
|
||||
SRCS= llvm-ranlib.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Archive \
|
||||
BitReader \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
33
external/bsd/llvm/bin/llvm-readobj/Makefile
vendored
Normal file
33
external/bsd/llvm/bin/llvm-readobj/Makefile
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
# $NetBSD: Makefile,v 1.5 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-readobj
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-readobj
|
||||
|
||||
SRCS= llvm-readobj.cpp \
|
||||
COFFDumper.cpp \
|
||||
ELFDumper.cpp \
|
||||
Error.cpp \
|
||||
MachODumper.cpp \
|
||||
ObjDumper.cpp \
|
||||
StreamWriter.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
AArch64TargetInfo \
|
||||
ARMTargetInfo \
|
||||
MipsTargetInfo \
|
||||
PowerPCTargetInfo \
|
||||
SparcTargetInfo \
|
||||
X86TargetInfo \
|
||||
MC \
|
||||
BitReader \
|
||||
Object \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
18
external/bsd/llvm/bin/llvm-size/Makefile
vendored
Normal file
18
external/bsd/llvm/bin/llvm-size/Makefile
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
# $NetBSD: Makefile,v 1.1 2011/10/11 13:53:58 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-size
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-size
|
||||
|
||||
SRCS= llvm-size.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Object \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
23
external/bsd/llvm/bin/llvm-symbolizer/Makefile
vendored
Normal file
23
external/bsd/llvm/bin/llvm-symbolizer/Makefile
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
# $NetBSD: Makefile,v 1.3 2013/07/07 21:36:43 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-symbolizer
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/llvm-symbolizer
|
||||
|
||||
SRCS= LLVMSymbolize.cpp \
|
||||
llvm-symbolizer.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
DebugInfo \
|
||||
Object \
|
||||
Support
|
||||
|
||||
LDADD+= -lz
|
||||
DPADD+= ${LIBZ}
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
19
external/bsd/llvm/bin/macho-dumpx/Makefile
vendored
Normal file
19
external/bsd/llvm/bin/macho-dumpx/Makefile
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
# $NetBSD: Makefile,v 1.2 2013/01/23 15:02:56 joerg Exp $
|
||||
|
||||
ROG_CXX= machdo-dumpx
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/macho-dump
|
||||
|
||||
SRCS= macho-dump.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
Object \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
64
external/bsd/llvm/bin/opt/Makefile
vendored
Normal file
64
external/bsd/llvm/bin/opt/Makefile
vendored
Normal file
|
@ -0,0 +1,64 @@
|
|||
# $NetBSD: Makefile,v 1.9 2013/05/28 17:37:34 joerg Exp $
|
||||
|
||||
PROG_CXX= opt
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/tools/opt
|
||||
|
||||
SRCS= AnalysisWrappers.cpp \
|
||||
GraphPrinters.cpp \
|
||||
PrintSCC.cpp \
|
||||
opt.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
ObjCARC \
|
||||
ipo \
|
||||
IRReader \
|
||||
AsmParser \
|
||||
BitReader \
|
||||
BitWriter \
|
||||
AArch64CodeGen \
|
||||
AArch64TargetInfo \
|
||||
AArch64MCTargetDesc \
|
||||
AArch64AsmPrinter \
|
||||
AArch64Utils \
|
||||
ARMCodeGen \
|
||||
ARMTargetInfo \
|
||||
ARMMCTargetDesc \
|
||||
ARMAsmPrinter \
|
||||
MipsCodeGen \
|
||||
MipsTargetInfo \
|
||||
MipsMCTargetDesc \
|
||||
MipsAsmPrinter \
|
||||
PowerPCCodeGen \
|
||||
PowerPCTargetInfo \
|
||||
PowerPCMCTargetDesc \
|
||||
PowerPCAsmPrinter \
|
||||
SparcCodeGen \
|
||||
SparcTargetInfo \
|
||||
SparcMCTargetDesc \
|
||||
X86CodeGen \
|
||||
X86MCTargetDesc \
|
||||
X86TargetInfo \
|
||||
X86Utils \
|
||||
X86AsmPrinter \
|
||||
Object \
|
||||
SelectionDAG \
|
||||
CodeGen \
|
||||
Vectorize \
|
||||
Target \
|
||||
InstCombine \
|
||||
Instrumentation \
|
||||
ScalarOpts \
|
||||
Analysis \
|
||||
MC \
|
||||
TransformsUtils \
|
||||
ipa \
|
||||
IR \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
50
external/bsd/llvm/bin/tblgen/Makefile
vendored
Normal file
50
external/bsd/llvm/bin/tblgen/Makefile
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
# $NetBSD: Makefile,v 1.17 2013/04/25 13:59:56 joerg Exp $
|
||||
|
||||
PROG_CXX= llvm-tblgen
|
||||
NOMAN= yes
|
||||
|
||||
.include <bsd.init.mk>
|
||||
|
||||
.PATH: ${LLVM_SRCDIR}/utils/TableGen
|
||||
|
||||
SRCS= AsmMatcherEmitter.cpp \
|
||||
AsmWriterEmitter.cpp \
|
||||
AsmWriterInst.cpp \
|
||||
CTagsEmitter.cpp \
|
||||
CallingConvEmitter.cpp \
|
||||
CodeEmitterGen.cpp \
|
||||
CodeGenDAGPatterns.cpp \
|
||||
CodeGenInstruction.cpp \
|
||||
CodeGenMapTable.cpp \
|
||||
CodeGenRegisters.cpp \
|
||||
CodeGenSchedule.cpp \
|
||||
CodeGenTarget.cpp \
|
||||
DAGISelEmitter.cpp \
|
||||
DAGISelMatcher.cpp \
|
||||
DAGISelMatcherEmitter.cpp \
|
||||
DAGISelMatcherGen.cpp \
|
||||
DAGISelMatcherOpt.cpp \
|
||||
DFAPacketizerEmitter.cpp \
|
||||
DisassemblerEmitter.cpp \
|
||||
FastISelEmitter.cpp \
|
||||
FixedLenDecoderEmitter.cpp \
|
||||
InstrInfoEmitter.cpp \
|
||||
IntrinsicEmitter.cpp \
|
||||
OptParserEmitter.cpp \
|
||||
PseudoLoweringEmitter.cpp \
|
||||
RegisterInfoEmitter.cpp \
|
||||
SetTheory.cpp \
|
||||
SubtargetEmitter.cpp \
|
||||
TGValueTypes.cpp \
|
||||
TableGen.cpp \
|
||||
X86DisassemblerTables.cpp \
|
||||
X86ModRMFilters.cpp \
|
||||
X86RecognizableInstr.cpp
|
||||
|
||||
LLVM_LIBS+= \
|
||||
TableGen \
|
||||
Support
|
||||
|
||||
.include "${.PARSEDIR}/../../link.mk"
|
||||
|
||||
.include <bsd.prog.mk>
|
25
external/bsd/llvm/config/clang/Config/config.h
vendored
Normal file
25
external/bsd/llvm/config/clang/Config/config.h
vendored
Normal file
|
@ -0,0 +1,25 @@
|
|||
/* tools/clang/include/clang/Config/config.h. Generated from config.h.in by configure. */
|
||||
/* include/clang/Config/config.h.in. */
|
||||
|
||||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
|
||||
/* Bug report URL. */
|
||||
#define BUG_REPORT_URL "http://llvm.org/bugs/"
|
||||
|
||||
/* Relative directory for resource files */
|
||||
#define CLANG_RESOURCE_DIR ""
|
||||
|
||||
/* Directories clang will search for headers */
|
||||
#define C_INCLUDE_DIRS "/usr/include/clang-3.4:/usr/include"
|
||||
|
||||
/* Linker version detected at compile time. */
|
||||
#define HOST_LINK_VERSION "2.23.2"
|
||||
|
||||
/* Default <path> to all compiler invocations for --sysroot=<path>. */
|
||||
#define DEFAULT_SYSROOT ""
|
||||
|
||||
/* Directory where gcc is installed. */
|
||||
#define GCC_INSTALL_PREFIX ""
|
||||
|
||||
#endif
|
29
external/bsd/llvm/config/llvm/Config/AsmParsers.def
vendored
Normal file
29
external/bsd/llvm/config/llvm/Config/AsmParsers.def
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the assembly-language parsers *|
|
||||
|* supported by this build of LLVM. Clients of this file should define *|
|
||||
|* the LLVM_ASM_PARSER macro to be a function-like macro with a *|
|
||||
|* single parameter (the name of the target whose assembly can be *|
|
||||
|* generated); including this file will then enumerate all of the *|
|
||||
|* targets with assembly parsers. *|
|
||||
|* *|
|
||||
|* The set of targets supported by LLVM is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef LLVM_ASM_PARSER
|
||||
# error Please define the macro LLVM_ASM_PARSER(TargetName)
|
||||
#endif
|
||||
|
||||
LLVM_ASM_PARSER(X86) LLVM_ASM_PARSER(PowerPC) LLVM_ASM_PARSER(AArch64) LLVM_ASM_PARSER(ARM) LLVM_ASM_PARSER(Mips)
|
||||
|
||||
#undef LLVM_ASM_PARSER
|
29
external/bsd/llvm/config/llvm/Config/AsmPrinters.def
vendored
Normal file
29
external/bsd/llvm/config/llvm/Config/AsmPrinters.def
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the assembly-language printers *|
|
||||
|* supported by this build of LLVM. Clients of this file should define *|
|
||||
|* the LLVM_ASM_PRINTER macro to be a function-like macro with a *|
|
||||
|* single parameter (the name of the target whose assembly can be *|
|
||||
|* generated); including this file will then enumerate all of the *|
|
||||
|* targets with assembly printers. *|
|
||||
|* *|
|
||||
|* The set of targets supported by LLVM is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef LLVM_ASM_PRINTER
|
||||
# error Please define the macro LLVM_ASM_PRINTER(TargetName)
|
||||
#endif
|
||||
|
||||
LLVM_ASM_PRINTER(X86) LLVM_ASM_PRINTER(PowerPC) LLVM_ASM_PRINTER(Sparc) LLVM_ASM_PRINTER(AArch64) LLVM_ASM_PRINTER(ARM) LLVM_ASM_PRINTER(Mips)
|
||||
|
||||
#undef LLVM_ASM_PRINTER
|
29
external/bsd/llvm/config/llvm/Config/Disassemblers.def
vendored
Normal file
29
external/bsd/llvm/config/llvm/Config/Disassemblers.def
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the assembly-language parsers *|
|
||||
|* supported by this build of LLVM. Clients of this file should define *|
|
||||
|* the LLVM_DISASSEMBLER macro to be a function-like macro with a *|
|
||||
|* single parameter (the name of the target whose assembly can be *|
|
||||
|* generated); including this file will then enumerate all of the *|
|
||||
|* targets with assembly parsers. *|
|
||||
|* *|
|
||||
|* The set of targets supported by LLVM is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef LLVM_DISASSEMBLER
|
||||
# error Please define the macro LLVM_DISASSEMBLER(TargetName)
|
||||
#endif
|
||||
|
||||
LLVM_DISASSEMBLER(X86) LLVM_DISASSEMBLER(AArch64) LLVM_DISASSEMBLER(ARM) LLVM_DISASSEMBLER(Mips)
|
||||
|
||||
#undef LLVM_DISASSEMBLER
|
28
external/bsd/llvm/config/llvm/Config/Targets.def
vendored
Normal file
28
external/bsd/llvm/config/llvm/Config/Targets.def
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the target architectures supported by *|
|
||||
|* this build of LLVM. Clients of this file should define the *|
|
||||
|* LLVM_TARGET macro to be a function-like macro with a single *|
|
||||
|* parameter (the name of the target); including this file will then *|
|
||||
|* enumerate all of the targets. *|
|
||||
|* *|
|
||||
|* The set of targets supported by LLVM is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef LLVM_TARGET
|
||||
# error Please define the macro LLVM_TARGET(TargetName)
|
||||
#endif
|
||||
|
||||
LLVM_TARGET(X86) LLVM_TARGET(PowerPC) LLVM_TARGET(Sparc) LLVM_TARGET(AArch64) LLVM_TARGET(ARM) LLVM_TARGET(Mips)
|
||||
|
||||
#undef LLVM_TARGET
|
712
external/bsd/llvm/config/llvm/Config/config.h.in
vendored
Normal file
712
external/bsd/llvm/config/llvm/Config/config.h.in
vendored
Normal file
|
@ -0,0 +1,712 @@
|
|||
/* include/llvm/Config/config.h. Generated from config.h.in by configure. */
|
||||
/* include/llvm/Config/config.h.in. Generated from autoconf/configure.ac by autoheader. */
|
||||
|
||||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
|
||||
/* Bug report URL. */
|
||||
#define BUG_REPORT_URL "http://llvm.org/bugs/"
|
||||
|
||||
/* Define if we have libxml2 */
|
||||
/* #undef CLANG_HAVE_LIBXML */
|
||||
|
||||
/* Relative directory for resource files */
|
||||
#define CLANG_RESOURCE_DIR ""
|
||||
|
||||
/* Directories clang will search for headers */
|
||||
#define C_INCLUDE_DIRS "/usr/include/clang-3.4:/usr/include"
|
||||
|
||||
/* Default <path> to all compiler invocations for --sysroot=<path>. */
|
||||
#define DEFAULT_SYSROOT ""
|
||||
|
||||
/* Define if you want backtraces on crash */
|
||||
#define ENABLE_BACKTRACES 1
|
||||
|
||||
/* Define to enable crash handling overrides */
|
||||
#define ENABLE_CRASH_OVERRIDES 1
|
||||
|
||||
/* Define if position independent code is enabled */
|
||||
#define ENABLE_PIC 1
|
||||
|
||||
/* Define if timestamp information (e.g., __DATE__) is allowed */
|
||||
#define ENABLE_TIMESTAMPS 0
|
||||
|
||||
/* Directory where gcc is installed. */
|
||||
#define GCC_INSTALL_PREFIX ""
|
||||
|
||||
/* Define to 1 if you have the `arc4random' function. */
|
||||
#define HAVE_ARC4RANDOM 1
|
||||
|
||||
/* Define to 1 if you have the `argz_append' function. */
|
||||
/* #undef HAVE_ARGZ_APPEND */
|
||||
|
||||
/* Define to 1 if you have the `argz_create_sep' function. */
|
||||
/* #undef HAVE_ARGZ_CREATE_SEP */
|
||||
|
||||
/* Define to 1 if you have the <argz.h> header file. */
|
||||
/* #undef HAVE_ARGZ_H */
|
||||
|
||||
/* Define to 1 if you have the `argz_insert' function. */
|
||||
/* #undef HAVE_ARGZ_INSERT */
|
||||
|
||||
/* Define to 1 if you have the `argz_next' function. */
|
||||
/* #undef HAVE_ARGZ_NEXT */
|
||||
|
||||
/* Define to 1 if you have the `argz_stringify' function. */
|
||||
/* #undef HAVE_ARGZ_STRINGIFY */
|
||||
|
||||
/* Define to 1 if you have the `backtrace' function. */
|
||||
/* #undef HAVE_BACKTRACE */
|
||||
|
||||
/* Define to 1 if you have the `ceilf' function. */
|
||||
#define HAVE_CEILF 1
|
||||
|
||||
/* Define if the neat program is available */
|
||||
/* #undef HAVE_CIRCO */
|
||||
|
||||
/* Define to 1 if you have the `closedir' function. */
|
||||
#define HAVE_CLOSEDIR 1
|
||||
|
||||
/* Define to 1 if you have the <CrashReporterClient.h> header file. */
|
||||
/* #undef HAVE_CRASHREPORTERCLIENT_H */
|
||||
|
||||
/* can use __crashreporter_info__ */
|
||||
#define HAVE_CRASHREPORTER_INFO 0
|
||||
|
||||
/* Define to 1 if you have the <cxxabi.h> header file. */
|
||||
#define HAVE_CXXABI_H 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_FE_ALL_EXCEPT 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `FE_INEXACT', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_FE_INEXACT 1
|
||||
|
||||
/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
|
||||
don't. */
|
||||
#define HAVE_DECL_STRERROR_S 0
|
||||
|
||||
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
||||
*/
|
||||
#define HAVE_DIRENT_H 1
|
||||
|
||||
/* Define if you have the GNU dld library. */
|
||||
/* #undef HAVE_DLD */
|
||||
|
||||
/* Define to 1 if you have the `dlerror' function. */
|
||||
#define HAVE_DLERROR 1
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define if dlopen() is available on this platform. */
|
||||
#define HAVE_DLOPEN 1
|
||||
|
||||
/* Define if the dot program is available */
|
||||
/* #undef HAVE_DOT */
|
||||
|
||||
/* Define if the dotty program is available */
|
||||
/* #undef HAVE_DOTTY */
|
||||
|
||||
/* Define if you have the _dyld_func_lookup function. */
|
||||
/* #undef HAVE_DYLD */
|
||||
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#define HAVE_ERRNO_H 1
|
||||
|
||||
/* Define to 1 if the system has the type `error_t'. */
|
||||
/* #undef HAVE_ERROR_T */
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#define HAVE_EXECINFO_H 1
|
||||
|
||||
/* Define to 1 if you have the `exp' function. */
|
||||
#define HAVE_EXP 1
|
||||
|
||||
/* Define to 1 if you have the `exp2' function. */
|
||||
#define HAVE_EXP2 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define if the neat program is available */
|
||||
/* #undef HAVE_FDP */
|
||||
|
||||
/* Define to 1 if you have the <fenv.h> header file. */
|
||||
#ifndef __ppc__
|
||||
#define HAVE_FENV_H 1
|
||||
#endif
|
||||
|
||||
/* Define if libffi is available on this platform. */
|
||||
/* #undef HAVE_FFI_CALL */
|
||||
|
||||
/* Define to 1 if you have the <ffi/ffi.h> header file. */
|
||||
/* #undef HAVE_FFI_FFI_H */
|
||||
|
||||
/* Define to 1 if you have the <ffi.h> header file. */
|
||||
/* #undef HAVE_FFI_H */
|
||||
|
||||
/* Set to 1 if the finite function is found in <ieeefp.h> */
|
||||
/* #undef HAVE_FINITE_IN_IEEEFP_H */
|
||||
|
||||
/* Define to 1 if you have the `floorf' function. */
|
||||
#define HAVE_FLOORF 1
|
||||
|
||||
/* Define to 1 if you have the `fmodf' function. */
|
||||
#define HAVE_FMODF 1
|
||||
|
||||
/* Define to 1 if you have the `futimens' function. */
|
||||
#define HAVE_FUTIMENS 1
|
||||
|
||||
/* Define to 1 if you have the `futimes' function. */
|
||||
#define HAVE_FUTIMES 1
|
||||
|
||||
/* Define to 1 if you have the `getcwd' function. */
|
||||
#define HAVE_GETCWD 1
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#define HAVE_GETPAGESIZE 1
|
||||
|
||||
/* Define to 1 if you have the `getrlimit' function. */
|
||||
#define HAVE_GETRLIMIT 1
|
||||
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#define HAVE_GETRUSAGE 1
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
|
||||
/* Define if the Graphviz program is available */
|
||||
/* #undef HAVE_GRAPHVIZ */
|
||||
|
||||
/* Define if the gv program is available */
|
||||
/* #undef HAVE_GV */
|
||||
|
||||
/* Define to 1 if the system has the type `int64_t'. */
|
||||
#define HAVE_INT64_T 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the `isatty' function. */
|
||||
#define HAVE_ISATTY 1
|
||||
|
||||
/* Set to 1 if the isinf function is found in <cmath> */
|
||||
#define HAVE_ISINF_IN_CMATH 1
|
||||
|
||||
/* Set to 1 if the isinf function is found in <math.h> */
|
||||
#define HAVE_ISINF_IN_MATH_H 1
|
||||
|
||||
/* Set to 1 if the isnan function is found in <cmath> */
|
||||
#define HAVE_ISNAN_IN_CMATH 1
|
||||
|
||||
/* Set to 1 if the isnan function is found in <math.h> */
|
||||
#define HAVE_ISNAN_IN_MATH_H 1
|
||||
|
||||
/* Define if you have the libdl library or equivalent. */
|
||||
#define HAVE_LIBDL 1
|
||||
|
||||
/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
|
||||
/* #undef HAVE_LIBIMAGEHLP */
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#define HAVE_LIBM 1
|
||||
|
||||
/* Define to 1 if you have the `psapi' library (-lpsapi). */
|
||||
/* #undef HAVE_LIBPSAPI */
|
||||
|
||||
/* Define to 1 if you have the `pthread' library (-lpthread). */
|
||||
#define HAVE_LIBPTHREAD 1
|
||||
|
||||
/* Define to 1 if you have the `shell32' library (-lshell32). */
|
||||
/* #undef HAVE_LIBSHELL32 */
|
||||
|
||||
/* Define to 1 if you have the `udis86' library (-ludis86). */
|
||||
/* #undef HAVE_LIBUDIS86 */
|
||||
|
||||
/* Define to 1 if you have the `z' library (-lz). */
|
||||
#define HAVE_LIBZ 1
|
||||
|
||||
/* Define if you can use -rdynamic. */
|
||||
#define HAVE_LINK_EXPORT_DYNAMIC 1
|
||||
|
||||
/* Define to 1 if you have the <link.h> header file. */
|
||||
#define HAVE_LINK_H 1
|
||||
|
||||
/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
|
||||
the current directory to the dynamic linker search path. */
|
||||
#define HAVE_LINK_R 1
|
||||
|
||||
/* Define to 1 if you have the `log' function. */
|
||||
#define HAVE_LOG 1
|
||||
|
||||
/* Define to 1 if you have the `log10' function. */
|
||||
#define HAVE_LOG10 1
|
||||
|
||||
/* Define to 1 if you have the `log2' function. */
|
||||
#define HAVE_LOG2 1
|
||||
|
||||
/* Define to 1 if you have the `longjmp' function. */
|
||||
/* #undef HAVE_LONGJMP */
|
||||
|
||||
/* Define to 1 if you have the <mach/mach.h> header file. */
|
||||
/* #undef HAVE_MACH_MACH_H */
|
||||
|
||||
/* Define to 1 if you have the <mach-o/dyld.h> header file. */
|
||||
/* #undef HAVE_MACH_O_DYLD_H */
|
||||
|
||||
/* Define if mallinfo() is available on this platform. */
|
||||
/* #undef HAVE_MALLINFO */
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#define HAVE_MALLOC_H 1
|
||||
|
||||
/* Define to 1 if you have the <malloc/malloc.h> header file. */
|
||||
/* #undef HAVE_MALLOC_MALLOC_H */
|
||||
|
||||
/* Define to 1 if you have the `malloc_zone_statistics' function. */
|
||||
/* #undef HAVE_MALLOC_ZONE_STATISTICS */
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `mkdtemp' function. */
|
||||
#define HAVE_MKDTEMP 1
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#define HAVE_MKSTEMP 1
|
||||
|
||||
/* Define to 1 if you have the `mktemp' function. */
|
||||
#define HAVE_MKTEMP 1
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#define HAVE_MMAP 1
|
||||
|
||||
/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
|
||||
it uses MAP_ANON */
|
||||
/* #undef HAVE_MMAP_ANONYMOUS */
|
||||
|
||||
/* Define if mmap() can map files into memory */
|
||||
#define HAVE_MMAP_FILE
|
||||
|
||||
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
||||
/* #undef HAVE_NDIR_H */
|
||||
|
||||
/* Define to 1 if you have the `nearbyintf' function. */
|
||||
#define HAVE_NEARBYINTF 1
|
||||
|
||||
/* Define if the neat program is available */
|
||||
/* #undef HAVE_NEATO */
|
||||
|
||||
/* Define to 1 if you have the `opendir' function. */
|
||||
#define HAVE_OPENDIR 1
|
||||
|
||||
/* Define to 1 if you have the `posix_spawn' function. */
|
||||
#define HAVE_POSIX_SPAWN 1
|
||||
|
||||
/* Define to 1 if you have the `powf' function. */
|
||||
#define HAVE_POWF 1
|
||||
|
||||
/* Define to 1 if you have the `pread' function. */
|
||||
#define HAVE_PREAD 1
|
||||
|
||||
/* Define if libtool can extract symbol lists from object files. */
|
||||
#define HAVE_PRELOADED_SYMBOLS 1
|
||||
|
||||
/* Define to have the %a format string */
|
||||
#define HAVE_PRINTF_A 1
|
||||
|
||||
/* Have pthread_getspecific */
|
||||
#define HAVE_PTHREAD_GETSPECIFIC 1
|
||||
|
||||
/* Define to 1 if you have the <pthread.h> header file. */
|
||||
#define HAVE_PTHREAD_H 1
|
||||
|
||||
/* Have pthread_mutex_lock */
|
||||
#define HAVE_PTHREAD_MUTEX_LOCK 1
|
||||
|
||||
/* Have pthread_rwlock_init */
|
||||
#define HAVE_PTHREAD_RWLOCK_INIT 1
|
||||
|
||||
/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
|
||||
#define HAVE_RAND48 1
|
||||
|
||||
/* Define to 1 if you have the `readdir' function. */
|
||||
#define HAVE_READDIR 1
|
||||
|
||||
/* Define to 1 if you have the `realpath' function. */
|
||||
#define HAVE_REALPATH 1
|
||||
|
||||
/* Define to 1 if you have the `rintf' function. */
|
||||
#define HAVE_RINTF 1
|
||||
|
||||
/* Define to 1 if you have the `round' function. */
|
||||
#define HAVE_ROUND 1
|
||||
|
||||
/* Define to 1 if you have the `roundf' function. */
|
||||
#define HAVE_ROUNDF 1
|
||||
|
||||
/* Define to 1 if you have the `sbrk' function. */
|
||||
#define HAVE_SBRK 1
|
||||
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
#define HAVE_SETENV 1
|
||||
|
||||
/* Define to 1 if you have the `setjmp' function. */
|
||||
/* #undef HAVE_SETJMP */
|
||||
|
||||
/* Define to 1 if you have the <setjmp.h> header file. */
|
||||
#define HAVE_SETJMP_H 1
|
||||
|
||||
/* Define to 1 if you have the `setrlimit' function. */
|
||||
#define HAVE_SETRLIMIT 1
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
/* #undef HAVE_SHL_LOAD */
|
||||
|
||||
/* Define to 1 if you have the `siglongjmp' function. */
|
||||
/* #undef HAVE_SIGLONGJMP */
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#define HAVE_SIGNAL_H 1
|
||||
|
||||
/* Define to 1 if you have the `sigsetjmp' function. */
|
||||
/* #undef HAVE_SIGSETJMP */
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Set to 1 if the std::isinf function is found in <cmath> */
|
||||
#define HAVE_STD_ISINF_IN_CMATH 1
|
||||
|
||||
/* Set to 1 if the std::isnan function is found in <cmath> */
|
||||
#define HAVE_STD_ISNAN_IN_CMATH 1
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#define HAVE_STRERROR 1
|
||||
|
||||
/* Define to 1 if you have the `strerror_r' function. */
|
||||
#define HAVE_STRERROR_R 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the `strtof' function. */
|
||||
#define HAVE_STRTOF 1
|
||||
|
||||
/* Define to 1 if you have the `strtoll' function. */
|
||||
#define HAVE_STRTOLL 1
|
||||
|
||||
/* Define to 1 if you have the `strtoq' function. */
|
||||
#define HAVE_STRTOQ 1
|
||||
|
||||
/* Define to 1 if you have the `sysconf' function. */
|
||||
#define HAVE_SYSCONF 1
|
||||
|
||||
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||
*/
|
||||
/* #undef HAVE_SYS_DIR_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#define HAVE_SYS_IOCTL_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
||||
*/
|
||||
/* #undef HAVE_SYS_NDIR_H */
|
||||
|
||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/resource.h> header file. */
|
||||
#define HAVE_SYS_RESOURCE_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/uio.h> header file. */
|
||||
#define HAVE_SYS_UIO_H 1
|
||||
|
||||
/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
|
||||
#define HAVE_SYS_WAIT_H 1
|
||||
|
||||
/* Define if the setupterm() function is supported this platform. */
|
||||
#define HAVE_TERMINFO 1
|
||||
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#define HAVE_TERMIOS_H 1
|
||||
|
||||
/* Define if the neat program is available */
|
||||
/* #undef HAVE_TWOPI */
|
||||
|
||||
/* Define to 1 if the system has the type `uint64_t'. */
|
||||
#define HAVE_UINT64_T 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to 1 if you have the <utime.h> header file. */
|
||||
#define HAVE_UTIME_H 1
|
||||
|
||||
/* Define to 1 if the system has the type `u_int64_t'. */
|
||||
/* #undef HAVE_U_INT64_T */
|
||||
|
||||
/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
|
||||
/* #undef HAVE_VALGRIND_VALGRIND_H */
|
||||
|
||||
/* Define to 1 if you have the `writev' function. */
|
||||
#define HAVE_WRITEV 1
|
||||
|
||||
/* Define if the xdot program is available */
|
||||
/* #undef HAVE_XDOT */
|
||||
|
||||
/* Define to 1 if you have the <zlib.h> header file. */
|
||||
#define HAVE_ZLIB_H 1
|
||||
|
||||
/* Have host's _alloca */
|
||||
/* #undef HAVE__ALLOCA */
|
||||
|
||||
/* Have host's __alloca */
|
||||
/* #undef HAVE___ALLOCA */
|
||||
|
||||
/* Have host's __ashldi3 */
|
||||
/* #undef HAVE___ASHLDI3 */
|
||||
|
||||
/* Have host's __ashrdi3 */
|
||||
/* #undef HAVE___ASHRDI3 */
|
||||
|
||||
/* Have host's __chkstk */
|
||||
/* #undef HAVE___CHKSTK */
|
||||
|
||||
/* Have host's __cmpdi2 */
|
||||
/* #undef HAVE___CMPDI2 */
|
||||
|
||||
/* Have host's __divdi3 */
|
||||
/* #undef HAVE___DIVDI3 */
|
||||
|
||||
/* Define to 1 if you have the `__dso_handle' function. */
|
||||
#define HAVE___DSO_HANDLE 1
|
||||
|
||||
/* Have host's __fixdfdi */
|
||||
/* #undef HAVE___FIXDFDI */
|
||||
|
||||
/* Have host's __fixsfdi */
|
||||
/* #undef HAVE___FIXSFDI */
|
||||
|
||||
/* Have host's __floatdidf */
|
||||
/* #undef HAVE___FLOATDIDF */
|
||||
|
||||
/* Have host's __lshrdi3 */
|
||||
/* #undef HAVE___LSHRDI3 */
|
||||
|
||||
/* Have host's __main */
|
||||
/* #undef HAVE___MAIN */
|
||||
|
||||
/* Have host's __moddi3 */
|
||||
/* #undef HAVE___MODDI3 */
|
||||
|
||||
/* Have host's __udivdi3 */
|
||||
/* #undef HAVE___UDIVDI3 */
|
||||
|
||||
/* Have host's __umoddi3 */
|
||||
/* #undef HAVE___UMODDI3 */
|
||||
|
||||
/* Have host's ___chkstk */
|
||||
/* #undef HAVE____CHKSTK */
|
||||
|
||||
/* Linker version detected at compile time. */
|
||||
#define HOST_LINK_VERSION "2.23.2"
|
||||
|
||||
/* Installation directory for binary executables */
|
||||
#define LLVM_BINDIR "/usr/bin"
|
||||
|
||||
/* Time at which LLVM was configured */
|
||||
#define LLVM_CONFIGTIME "(timestamp not enabled)"
|
||||
|
||||
/* Installation directory for data files */
|
||||
#define LLVM_DATADIR "/usr/share/llvm"
|
||||
|
||||
/* Target triple LLVM will generate code for by default */
|
||||
#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64--netbsd"
|
||||
|
||||
/* Installation directory for documentation */
|
||||
#define LLVM_DOCSDIR "/usr/share/doc/llvm"
|
||||
|
||||
/* Define if threads enabled */
|
||||
#define LLVM_ENABLE_THREADS 1
|
||||
|
||||
/* Define if zlib is enabled */
|
||||
#define LLVM_ENABLE_ZLIB 1
|
||||
|
||||
/* Installation directory for config files */
|
||||
#define LLVM_ETCDIR "/usr/etc/llvm"
|
||||
|
||||
/* Has gcc/MSVC atomic intrinsics */
|
||||
#define LLVM_HAS_ATOMICS 1
|
||||
|
||||
/* Host triple LLVM will be executed on */
|
||||
#define LLVM_HOST_TRIPLE "x86_64--netbsd"
|
||||
|
||||
/* Installation directory for include files */
|
||||
#define LLVM_INCLUDEDIR "/usr/include"
|
||||
|
||||
/* Installation directory for .info files */
|
||||
#define LLVM_INFODIR "/usr/info"
|
||||
|
||||
/* Installation directory for man pages */
|
||||
#define LLVM_MANDIR "/usr/man"
|
||||
|
||||
/* LLVM architecture name for the native architecture, if available */
|
||||
#define LLVM_NATIVE_ARCH X86
|
||||
|
||||
/* LLVM name for the native AsmParser init function, if available */
|
||||
#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
|
||||
|
||||
/* LLVM name for the native AsmPrinter init function, if available */
|
||||
#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
|
||||
|
||||
/* LLVM name for the native Disassembler init function, if available */
|
||||
#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
|
||||
|
||||
/* LLVM name for the native Target init function, if available */
|
||||
#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
|
||||
|
||||
/* LLVM name for the native TargetInfo init function, if available */
|
||||
#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
|
||||
|
||||
/* LLVM name for the native target MC init function, if available */
|
||||
#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
|
||||
|
||||
/* Define if this is Unixish platform */
|
||||
#define LLVM_ON_UNIX 1
|
||||
|
||||
/* Define if this is Win32ish platform */
|
||||
/* #undef LLVM_ON_WIN32 */
|
||||
|
||||
/* Define to path to circo program if found or 'echo circo' otherwise */
|
||||
/* #undef LLVM_PATH_CIRCO */
|
||||
|
||||
/* Define to path to dot program if found or 'echo dot' otherwise */
|
||||
/* #undef LLVM_PATH_DOT */
|
||||
|
||||
/* Define to path to dotty program if found or 'echo dotty' otherwise */
|
||||
/* #undef LLVM_PATH_DOTTY */
|
||||
|
||||
/* Define to path to fdp program if found or 'echo fdp' otherwise */
|
||||
/* #undef LLVM_PATH_FDP */
|
||||
|
||||
/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
|
||||
/* #undef LLVM_PATH_GRAPHVIZ */
|
||||
|
||||
/* Define to path to gv program if found or 'echo gv' otherwise */
|
||||
/* #undef LLVM_PATH_GV */
|
||||
|
||||
/* Define to path to neato program if found or 'echo neato' otherwise */
|
||||
/* #undef LLVM_PATH_NEATO */
|
||||
|
||||
/* Define to path to twopi program if found or 'echo twopi' otherwise */
|
||||
/* #undef LLVM_PATH_TWOPI */
|
||||
|
||||
/* Define to path to xdot program if found or 'echo xdot' otherwise */
|
||||
/* #undef LLVM_PATH_XDOT */
|
||||
|
||||
/* Installation prefix directory */
|
||||
#define LLVM_PREFIX "/usr"
|
||||
|
||||
/* Define if we have the Intel JIT API runtime support library */
|
||||
#define LLVM_USE_INTEL_JITEVENTS 0
|
||||
|
||||
/* Define if we have the oprofile JIT-support library */
|
||||
#define LLVM_USE_OPROFILE 0
|
||||
|
||||
/* Major version of the LLVM API */
|
||||
#define LLVM_VERSION_MAJOR 3
|
||||
|
||||
/* Minor version of the LLVM API */
|
||||
#define LLVM_VERSION_MINOR 4
|
||||
|
||||
/* Define if the OS needs help to load dependent libraries for dlopen(). */
|
||||
/* #undef LTDL_DLOPEN_DEPLIBS */
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LTDL_OBJDIR ".libs/"
|
||||
|
||||
/* Define to the extension used for shared libraries, say, ".so". */
|
||||
#define LTDL_SHLIB_EXT ".so"
|
||||
|
||||
/* Define to the system default library search path. */
|
||||
#define LTDL_SYSSEARCHPATH "/lib:/usr/lib"
|
||||
|
||||
/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
|
||||
its not necessary */
|
||||
/* #undef NEED_DEV_ZERO_FOR_MMAP */
|
||||
|
||||
/* Define if dlsym() requires a leading underscore in symbol names. */
|
||||
/* #undef NEED_USCORE */
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "http://llvm.org/bugs/"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "LLVM"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "LLVM 3.4svn"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "llvm"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "3.4svn"
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#define RETSIGTYPE void
|
||||
|
||||
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
||||
/* #undef STAT_MACROS_BROKEN */
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
/* #undef TM_IN_SYS_TIME */
|
||||
|
||||
/* Define if use udis86 library */
|
||||
#define USE_UDIS86 0
|
||||
|
||||
/* Type of 1st arg on ELM Callback */
|
||||
/* #undef WIN32_ELMCB_PCSTR */
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to a type to use for `error_t' if it is not otherwise available. */
|
||||
#define error_t int
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
/* #undef pid_t */
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
||||
|
||||
#endif
|
125
external/bsd/llvm/config/llvm/Config/llvm-config.h.in
vendored
Normal file
125
external/bsd/llvm/config/llvm/Config/llvm-config.h.in
vendored
Normal file
|
@ -0,0 +1,125 @@
|
|||
/* include/llvm/Config/llvm-config.h. Generated from llvm-config.h.in by configure. */
|
||||
/*===-- llvm/config/llvm-config.h - llvm configure variable -------*- C -*-===*/
|
||||
/* */
|
||||
/* The LLVM Compiler Infrastructure */
|
||||
/* */
|
||||
/* This file is distributed under the University of Illinois Open Source */
|
||||
/* License. See LICENSE.TXT for details. */
|
||||
/* */
|
||||
/*===----------------------------------------------------------------------===*/
|
||||
|
||||
/* This file enumerates all of the llvm variables from configure so that
|
||||
they can be in exported headers and won't override package specific
|
||||
directives. This is a C file so we can include it in the llvm-c headers. */
|
||||
|
||||
/* To avoid multiple inclusions of these variables when we include the exported
|
||||
headers and config.h, conditionally include these. */
|
||||
/* TODO: This is a bit of a hack. */
|
||||
#ifndef CONFIG_H
|
||||
|
||||
/* Installation directory for binary executables */
|
||||
#define LLVM_BINDIR "/usr/bin"
|
||||
|
||||
/* Time at which LLVM was configured */
|
||||
#define LLVM_CONFIGTIME "(timestamp not enabled)"
|
||||
|
||||
/* Installation directory for data files */
|
||||
#define LLVM_DATADIR "/usr/share/llvm"
|
||||
|
||||
/* Target triple LLVM will generate code for by default */
|
||||
#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64--netbsd"
|
||||
|
||||
/* Installation directory for documentation */
|
||||
#define LLVM_DOCSDIR "/usr/share/doc/llvm"
|
||||
|
||||
/* Define if threads enabled */
|
||||
#define LLVM_ENABLE_THREADS 1
|
||||
|
||||
/* Installation directory for config files */
|
||||
#define LLVM_ETCDIR "/usr/etc/llvm"
|
||||
|
||||
/* Has gcc/MSVC atomic intrinsics */
|
||||
#define LLVM_HAS_ATOMICS 1
|
||||
|
||||
/* Host triple LLVM will be executed on */
|
||||
#define LLVM_HOST_TRIPLE "x86_64--netbsd"
|
||||
|
||||
/* Installation directory for include files */
|
||||
#define LLVM_INCLUDEDIR "/usr/include"
|
||||
|
||||
/* Installation directory for .info files */
|
||||
#define LLVM_INFODIR "/usr/info"
|
||||
|
||||
/* Installation directory for man pages */
|
||||
#define LLVM_MANDIR "/usr/man"
|
||||
|
||||
/* LLVM architecture name for the native architecture, if available */
|
||||
#define LLVM_NATIVE_ARCH X86
|
||||
|
||||
/* LLVM name for the native AsmParser init function, if available */
|
||||
#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
|
||||
|
||||
/* LLVM name for the native AsmPrinter init function, if available */
|
||||
#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
|
||||
|
||||
/* LLVM name for the native Disassembler init function, if available */
|
||||
#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
|
||||
|
||||
/* LLVM name for the native Target init function, if available */
|
||||
#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
|
||||
|
||||
/* LLVM name for the native TargetInfo init function, if available */
|
||||
#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
|
||||
|
||||
/* LLVM name for the native target MC init function, if available */
|
||||
#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
|
||||
|
||||
/* Define if this is Unixish platform */
|
||||
#define LLVM_ON_UNIX 1
|
||||
|
||||
/* Define if this is Win32ish platform */
|
||||
/* #undef LLVM_ON_WIN32 */
|
||||
|
||||
/* Define to path to circo program if found or 'echo circo' otherwise */
|
||||
/* #undef LLVM_PATH_CIRCO */
|
||||
|
||||
/* Define to path to dot program if found or 'echo dot' otherwise */
|
||||
/* #undef LLVM_PATH_DOT */
|
||||
|
||||
/* Define to path to dotty program if found or 'echo dotty' otherwise */
|
||||
/* #undef LLVM_PATH_DOTTY */
|
||||
|
||||
/* Define to path to fdp program if found or 'echo fdp' otherwise */
|
||||
/* #undef LLVM_PATH_FDP */
|
||||
|
||||
/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
|
||||
/* #undef LLVM_PATH_GRAPHVIZ */
|
||||
|
||||
/* Define to path to gv program if found or 'echo gv' otherwise */
|
||||
/* #undef LLVM_PATH_GV */
|
||||
|
||||
/* Define to path to neato program if found or 'echo neato' otherwise */
|
||||
/* #undef LLVM_PATH_NEATO */
|
||||
|
||||
/* Define to path to twopi program if found or 'echo twopi' otherwise */
|
||||
/* #undef LLVM_PATH_TWOPI */
|
||||
|
||||
/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
|
||||
/* #undef LLVM_PATH_XDOT_PY */
|
||||
|
||||
/* Installation prefix directory */
|
||||
#define LLVM_PREFIX "/usr"
|
||||
|
||||
/* Define if we have the Intel JIT API runtime support library */
|
||||
#define LLVM_USE_INTEL_JITEVENTS 0
|
||||
|
||||
/* Define if we have the oprofile JIT-support library */
|
||||
#define LLVM_USE_OPROFILE 0
|
||||
|
||||
/* Major version of the LLVM API */
|
||||
#define LLVM_VERSION_MAJOR 3
|
||||
|
||||
/* Minor version of the LLVM API */
|
||||
#define LLVM_VERSION_MINOR 4
|
||||
|
||||
#endif
|
203
external/bsd/llvm/config/llvm/Support/DataTypes.h
vendored
Normal file
203
external/bsd/llvm/config/llvm/Support/DataTypes.h
vendored
Normal file
|
@ -0,0 +1,203 @@
|
|||
/* include/llvm/Support/DataTypes.h. Generated from DataTypes.h.in by configure. */
|
||||
/*===-- include/Support/DataTypes.h - Define fixed size types -----*- C -*-===*\
|
||||
|* *|
|
||||
|* The LLVM Compiler Infrastructure *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file contains definitions to figure out the size of _HOST_ data types.*|
|
||||
|* This file is important because different host OS's define different macros,*|
|
||||
|* which makes portability tough. This file exports the following *|
|
||||
|* definitions: *|
|
||||
|* *|
|
||||
|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
|
||||
|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *|
|
||||
|* *|
|
||||
|* No library is required when using these functions. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*/
|
||||
|
||||
/* Please leave this file C-compatible. */
|
||||
|
||||
/* Please keep this file in sync with DataTypes.h.cmake */
|
||||
|
||||
#ifndef SUPPORT_DATATYPES_H
|
||||
#define SUPPORT_DATATYPES_H
|
||||
|
||||
#define HAVE_INTTYPES_H 1
|
||||
#define HAVE_STDINT_H 1
|
||||
#define HAVE_UINT64_T 1
|
||||
/* #undef HAVE_U_INT64_T */
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <cmath>
|
||||
#else
|
||||
#include <math.h>
|
||||
#endif
|
||||
|
||||
#ifndef _MSC_VER
|
||||
|
||||
/* Note that this header's correct operation depends on __STDC_LIMIT_MACROS
|
||||
being defined. We would define it here, but in order to prevent Bad Things
|
||||
happening when system headers or C++ STL headers include stdint.h before we
|
||||
define it here, we define it on the g++ command line (in Makefile.rules). */
|
||||
#if !defined(__STDC_LIMIT_MACROS)
|
||||
# error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h"
|
||||
#endif
|
||||
|
||||
#if !defined(__STDC_CONSTANT_MACROS)
|
||||
# error "Must #define __STDC_CONSTANT_MACROS before " \
|
||||
"#including Support/DataTypes.h"
|
||||
#endif
|
||||
|
||||
/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef HAVE_INTTYPES_H
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#ifdef _AIX
|
||||
#include "llvm/Support/AIXDataTypesFix.h"
|
||||
#endif
|
||||
|
||||
/* Handle incorrect definition of uint64_t as u_int64_t */
|
||||
#ifndef HAVE_UINT64_T
|
||||
#ifdef HAVE_U_INT64_T
|
||||
typedef u_int64_t uint64_t;
|
||||
#else
|
||||
# error "Don't have a definition for uint64_t on this platform"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else /* _MSC_VER */
|
||||
/* Visual C++ doesn't provide standard integer headers, but it does provide
|
||||
built-in data types. */
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/types.h>
|
||||
#ifdef __cplusplus
|
||||
#include <cmath>
|
||||
#else
|
||||
#include <math.h>
|
||||
#endif
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
typedef signed int int32_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef signed char int8_t;
|
||||
typedef unsigned char uint8_t;
|
||||
#if defined(_WIN64)
|
||||
typedef signed __int64 ssize_t;
|
||||
#else
|
||||
typedef signed int ssize_t;
|
||||
#endif
|
||||
|
||||
#ifndef INT8_MAX
|
||||
# define INT8_MAX 127
|
||||
#endif
|
||||
#ifndef INT8_MIN
|
||||
# define INT8_MIN -128
|
||||
#endif
|
||||
#ifndef UINT8_MAX
|
||||
# define UINT8_MAX 255
|
||||
#endif
|
||||
#ifndef INT16_MAX
|
||||
# define INT16_MAX 32767
|
||||
#endif
|
||||
#ifndef INT16_MIN
|
||||
# define INT16_MIN -32768
|
||||
#endif
|
||||
#ifndef UINT16_MAX
|
||||
# define UINT16_MAX 65535
|
||||
#endif
|
||||
#ifndef INT32_MAX
|
||||
# define INT32_MAX 2147483647
|
||||
#endif
|
||||
#ifndef INT32_MIN
|
||||
/* MSC treats -2147483648 as -(2147483648U). */
|
||||
# define INT32_MIN (-INT32_MAX - 1)
|
||||
#endif
|
||||
#ifndef UINT32_MAX
|
||||
# define UINT32_MAX 4294967295U
|
||||
#endif
|
||||
/* Certain compatibility updates to VC++ introduce the `cstdint'
|
||||
* header, which defines the INT*_C macros. On default installs they
|
||||
* are absent. */
|
||||
#ifndef INT8_C
|
||||
# define INT8_C(C) C##i8
|
||||
#endif
|
||||
#ifndef UINT8_C
|
||||
# define UINT8_C(C) C##ui8
|
||||
#endif
|
||||
#ifndef INT16_C
|
||||
# define INT16_C(C) C##i16
|
||||
#endif
|
||||
#ifndef UINT16_C
|
||||
# define UINT16_C(C) C##ui16
|
||||
#endif
|
||||
#ifndef INT32_C
|
||||
# define INT32_C(C) C##i32
|
||||
#endif
|
||||
#ifndef UINT32_C
|
||||
# define UINT32_C(C) C##ui32
|
||||
#endif
|
||||
#ifndef INT64_C
|
||||
# define INT64_C(C) C##i64
|
||||
#endif
|
||||
#ifndef UINT64_C
|
||||
# define UINT64_C(C) C##ui64
|
||||
#endif
|
||||
|
||||
#ifndef PRId64
|
||||
# define PRId64 "I64d"
|
||||
#endif
|
||||
#ifndef PRIi64
|
||||
# define PRIi64 "I64i"
|
||||
#endif
|
||||
#ifndef PRIo64
|
||||
# define PRIo64 "I64o"
|
||||
#endif
|
||||
#ifndef PRIu64
|
||||
# define PRIu64 "I64u"
|
||||
#endif
|
||||
#ifndef PRIx64
|
||||
# define PRIx64 "I64x"
|
||||
#endif
|
||||
#ifndef PRIX64
|
||||
# define PRIX64 "I64X"
|
||||
#endif
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* Set defaults for constants which we cannot find. */
|
||||
#if !defined(INT64_MAX)
|
||||
# define INT64_MAX 9223372036854775807LL
|
||||
#endif
|
||||
#if !defined(INT64_MIN)
|
||||
# define INT64_MIN ((-INT64_MAX)-1)
|
||||
#endif
|
||||
#if !defined(UINT64_MAX)
|
||||
# define UINT64_MAX 0xffffffffffffffffULL
|
||||
#endif
|
||||
|
||||
#if __GNUC__ > 3
|
||||
#define END_WITH_NULL __attribute__((sentinel))
|
||||
#else
|
||||
#define END_WITH_NULL
|
||||
#endif
|
||||
|
||||
#ifndef HUGE_VALF
|
||||
#define HUGE_VALF (float)HUGE_VAL
|
||||
#endif
|
||||
|
||||
#endif /* SUPPORT_DATATYPES_H */
|
114
external/bsd/llvm/config/mclinker/mcld/Config/Config.h
vendored
Normal file
114
external/bsd/llvm/config/mclinker/mcld/Config/Config.h
vendored
Normal file
|
@ -0,0 +1,114 @@
|
|||
/* include/mcld/Config/Config.h. Generated from Config.h.in by configure. */
|
||||
/* include/mcld/Config/Config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
|
||||
//===- Config.h.in --------------------------------------------------------===//
|
||||
//
|
||||
// The MCLinker Project
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
#ifndef MCLD_CONFIG_H
|
||||
#define MCLD_CONFIG_H
|
||||
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define if you have POSIX threads libraries and header files. */
|
||||
#define HAVE_PTHREAD 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Target triple MCLinker will generate code for by default */
|
||||
#define MCLD_DEFAULT_TARGET_TRIPLE "x86_64--netbsd"
|
||||
|
||||
/* Define if this is Unixish platform */
|
||||
#define MCLD_ON_UNIX 1
|
||||
|
||||
/* Define if this is Win32ish platform */
|
||||
/* #undef MCLD_ON_WIN32 */
|
||||
|
||||
/* MCLINKER version */
|
||||
#define MCLD_VERSION "2.1.0.0-NanHu"
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "mclinker"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "mclinker@googlegroups.com"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "MCLinker"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "MCLinker NanHu"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "mclinker"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "NanHu"
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
/* #undef PTHREAD_CREATE_JOINABLE */
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define for standalone Android linker */
|
||||
/* #undef TARGET_BUILD */
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "NanHu"
|
||||
|
||||
|
||||
#define MCLD_REGION_CHUNK_SIZE 32
|
||||
#define MCLD_NUM_OF_INPUTS 32
|
||||
#define MCLD_SECTIONS_PER_INPUT 16
|
||||
#define MCLD_SYMBOLS_PER_INPUT 128
|
||||
#define MCLD_RELOCATIONS_PER_INPUT 1024
|
||||
|
||||
#endif
|
||||
|
28
external/bsd/llvm/config/mclinker/mcld/Config/Linkers.def
vendored
Normal file
28
external/bsd/llvm/config/mclinker/mcld/Config/Linkers.def
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
//===- llvm/Config/Linkers.def - MCLinkers ----------------------*- C++ -*-===//
|
||||
//
|
||||
// The MCLinker Project
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file enumerates all of the linkers supported by this build of MCLinker.
|
||||
// Clients of this file should define the MCLD_LINKER macro to be a function-like
|
||||
// macro with a single parameter (the name of the target whose exe/dso can be
|
||||
// generated); including this file will then enumerate all of the targets with
|
||||
// linkers.
|
||||
//
|
||||
// The set of targets supported by MCLD is generated at configuration
|
||||
// time, at which point this header is generated. Do not modify this
|
||||
// header directly.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef MCLD_LINKER
|
||||
# error Please define the macro MCLD_LINKER(TargetName)
|
||||
#endif
|
||||
|
||||
MCLD_LINKER(Mips) MCLD_LINKER(ARM) MCLD_LINKER(X86)
|
||||
|
||||
#undef MCLD_LINKER
|
28
external/bsd/llvm/config/mclinker/mcld/Config/Targets.def
vendored
Normal file
28
external/bsd/llvm/config/mclinker/mcld/Config/Targets.def
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*===- llvm/Config/Targets.def - MCLD Target Architectures ------*- C++ -*-===*\
|
||||
|* *|
|
||||
|* The MCLinker Project *|
|
||||
|* *|
|
||||
|* This file is distributed under the University of Illinois Open Source *|
|
||||
|* License. See LICENSE.TXT for details. *|
|
||||
|* *|
|
||||
|*===----------------------------------------------------------------------===*|
|
||||
|* *|
|
||||
|* This file enumerates all of the target architectures supported by *|
|
||||
|* this build of MCLD. Clients of this file should define the *|
|
||||
|* MCLD_TARGET macro to be a function-like macro with a single *|
|
||||
|* parameter (the name of the target); including this file will then *|
|
||||
|* enumerate all of the targets. *|
|
||||
|* *|
|
||||
|* The set of targets supported by MCLD is generated at configuration *|
|
||||
|* time, at which point this header is generated. Do not modify this *|
|
||||
|* header directly. *|
|
||||
|* *|
|
||||
\*===----------------------------------------------------------------------===*/
|
||||
|
||||
#ifndef MCLD_TARGET
|
||||
# error Please define the macro MCLD_TARGET(TargetName)
|
||||
#endif
|
||||
|
||||
MCLD_TARGET(Mips) MCLD_TARGET(ARM) MCLD_TARGET(X86)
|
||||
|
||||
#undef MCLD_TARGET
|
4
external/bsd/llvm/dist/clang/.arcconfig
vendored
Normal file
4
external/bsd/llvm/dist/clang/.arcconfig
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"project_id" : "clang",
|
||||
"conduit_uri" : "http://llvm-reviews.chandlerc.com/"
|
||||
}
|
1
external/bsd/llvm/dist/clang/.clang-format
vendored
Normal file
1
external/bsd/llvm/dist/clang/.clang-format
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
BasedOnStyle: LLVM
|
35
external/bsd/llvm/dist/clang/.gitignore
vendored
Normal file
35
external/bsd/llvm/dist/clang/.gitignore
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
#==============================================================================#
|
||||
# This file specifies intentionally untracked files that git should ignore.
|
||||
# See: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
|
||||
#
|
||||
# This file is intentionally different from the output of `git svn show-ignore`,
|
||||
# as most of those are useless.
|
||||
#==============================================================================#
|
||||
|
||||
#==============================================================================#
|
||||
# File extensions to be ignored anywhere in the tree.
|
||||
#==============================================================================#
|
||||
# Temp files created by most text editors.
|
||||
*~
|
||||
# Merge files created by git.
|
||||
*.orig
|
||||
# Byte compiled python modules.
|
||||
*.pyc
|
||||
# vim swap files
|
||||
.*.swp
|
||||
.sw?
|
||||
|
||||
#==============================================================================#
|
||||
# Explicit files to ignore (only matches one).
|
||||
#==============================================================================#
|
||||
cscope.files
|
||||
cscope.out
|
||||
|
||||
#==============================================================================#
|
||||
# Directories to ignore (do not add trailing '/'s, they skip symlinks).
|
||||
#==============================================================================#
|
||||
# Clang extra user tools, which is tracked independently (clang-tools-extra).
|
||||
tools/extra
|
||||
# Sphinx build products
|
||||
docs/_build
|
||||
docs/analyzer/_build
|
401
external/bsd/llvm/dist/clang/CMakeLists.txt
vendored
Normal file
401
external/bsd/llvm/dist/clang/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,401 @@
|
|||
# If we are not building as a part of LLVM, build Clang as an
|
||||
# standalone project, using LLVM as an external library:
|
||||
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
|
||||
project(Clang)
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
set(CLANG_PATH_TO_LLVM_SOURCE "" CACHE PATH
|
||||
"Path to LLVM source code. Not necessary if using an installed LLVM.")
|
||||
set(CLANG_PATH_TO_LLVM_BUILD "" CACHE PATH
|
||||
"Path to the directory where LLVM was built or installed.")
|
||||
|
||||
if( CLANG_PATH_TO_LLVM_SOURCE )
|
||||
if( NOT EXISTS "${CLANG_PATH_TO_LLVM_SOURCE}/cmake/config-ix.cmake" )
|
||||
message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_SOURCE to the root directory of LLVM source code.")
|
||||
else()
|
||||
get_filename_component(LLVM_MAIN_SRC_DIR ${CLANG_PATH_TO_LLVM_SOURCE}
|
||||
ABSOLUTE)
|
||||
list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/llvm-config${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
set (PATH_TO_LLVM_CONFIG "${CLANG_PATH_TO_LLVM_BUILD}/bin/llvm-config${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
elseif (EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/Debug/llvm-config${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
# Looking for bin/Debug/llvm-config is a complete hack. How can we get
|
||||
# around this?
|
||||
set (PATH_TO_LLVM_CONFIG "${CLANG_PATH_TO_LLVM_BUILD}/bin/Debug/llvm-config${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
else()
|
||||
message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_BUILD to a directory containing a LLVM build.")
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CLANG_PATH_TO_LLVM_BUILD}/share/llvm/cmake")
|
||||
|
||||
get_filename_component(PATH_TO_LLVM_BUILD ${CLANG_PATH_TO_LLVM_BUILD}
|
||||
ABSOLUTE)
|
||||
|
||||
option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
|
||||
|
||||
include(AddLLVM)
|
||||
include(TableGen)
|
||||
include("${CLANG_PATH_TO_LLVM_BUILD}/share/llvm/cmake/LLVMConfig.cmake")
|
||||
include(HandleLLVMOptions)
|
||||
|
||||
set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
|
||||
|
||||
set(LLVM_MAIN_INCLUDE_DIR "${LLVM_MAIN_SRC_DIR}/include")
|
||||
set(LLVM_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
include_directories("${PATH_TO_LLVM_BUILD}/include" "${LLVM_MAIN_INCLUDE_DIR}")
|
||||
link_directories("${PATH_TO_LLVM_BUILD}/lib")
|
||||
|
||||
exec_program("${PATH_TO_LLVM_CONFIG} --bindir" OUTPUT_VARIABLE LLVM_BINARY_DIR)
|
||||
set(LLVM_TABLEGEN_EXE "${LLVM_BINARY_DIR}/llvm-tblgen${CMAKE_EXECUTABLE_SUFFIX}")
|
||||
|
||||
# Define the default arguments to use with 'lit', and an option for the user
|
||||
# to override.
|
||||
set(LIT_ARGS_DEFAULT "-sv")
|
||||
if (MSVC OR XCODE)
|
||||
set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
|
||||
endif()
|
||||
set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")
|
||||
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
|
||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
|
||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
|
||||
|
||||
set( CLANG_BUILT_STANDALONE 1 )
|
||||
|
||||
find_package(LibXml2)
|
||||
if (LIBXML2_FOUND)
|
||||
set(CLANG_HAVE_LIBXML 1)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
set(CLANG_RESOURCE_DIR "" CACHE STRING
|
||||
"Relative directory from the Clang binary to its resource files.")
|
||||
|
||||
set(C_INCLUDE_DIRS "" CACHE STRING
|
||||
"Colon separated list of directories clang will search for headers.")
|
||||
|
||||
set(GCC_INSTALL_PREFIX "" CACHE PATH "Directory where gcc is installed." )
|
||||
set(DEFAULT_SYSROOT "" CACHE PATH
|
||||
"Default <path> to all compiler invocations for --sysroot=<path>." )
|
||||
|
||||
set(CLANG_VENDOR "" CACHE STRING
|
||||
"Vendor-specific text for showing with version information.")
|
||||
|
||||
if( CLANG_VENDOR )
|
||||
add_definitions( -DCLANG_VENDOR="${CLANG_VENDOR} " )
|
||||
endif()
|
||||
|
||||
set(CLANG_REPOSITORY_STRING "" CACHE STRING
|
||||
"Vendor-specific text for showing the repository the source is taken from.")
|
||||
|
||||
if(CLANG_REPOSITORY_STRING)
|
||||
add_definitions(-DCLANG_REPOSITORY_STRING="${CLANG_REPOSITORY_STRING}")
|
||||
endif()
|
||||
|
||||
set(CLANG_VENDOR_UTI "org.llvm.clang" CACHE STRING
|
||||
"Vendor-specific uti.")
|
||||
|
||||
set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
|
||||
message(FATAL_ERROR "In-source builds are not allowed. CMake would overwrite "
|
||||
"the makefiles distributed with LLVM. Please create a directory and run cmake "
|
||||
"from there, passing the path to this source directory as the last argument. "
|
||||
"This process created the file `CMakeCache.txt' and the directory "
|
||||
"`CMakeFiles'. Please delete them.")
|
||||
endif()
|
||||
|
||||
if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
|
||||
file(GLOB_RECURSE
|
||||
tablegenned_files_on_include_dir
|
||||
"${CLANG_SOURCE_DIR}/include/clang/*.inc")
|
||||
if( tablegenned_files_on_include_dir )
|
||||
message(FATAL_ERROR "Apparently there is a previous in-source build, "
|
||||
"probably as the result of running `configure' and `make' on "
|
||||
"${CLANG_SOURCE_DIR}. This may cause problems. The suspicious files are:\n"
|
||||
"${tablegenned_files_on_include_dir}\nPlease clean the source directory.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Compute the Clang version from the LLVM version.
|
||||
string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION
|
||||
${PACKAGE_VERSION})
|
||||
message(STATUS "Clang version: ${CLANG_VERSION}")
|
||||
|
||||
string(REGEX REPLACE "([0-9]+)\\.[0-9]+(\\.[0-9]+)?" "\\1" CLANG_VERSION_MAJOR
|
||||
${CLANG_VERSION})
|
||||
string(REGEX REPLACE "[0-9]+\\.([0-9]+)(\\.[0-9]+)?" "\\1" CLANG_VERSION_MINOR
|
||||
${CLANG_VERSION})
|
||||
if (${CLANG_VERSION} MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
|
||||
set(CLANG_HAS_VERSION_PATCHLEVEL 1)
|
||||
string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" CLANG_VERSION_PATCHLEVEL
|
||||
${CLANG_VERSION})
|
||||
else()
|
||||
set(CLANG_HAS_VERSION_PATCHLEVEL 0)
|
||||
endif()
|
||||
|
||||
# Configure the Version.inc file.
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/clang/Basic/Version.inc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/include/clang/Basic/Version.inc)
|
||||
|
||||
# Add appropriate flags for GCC
|
||||
if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing")
|
||||
|
||||
# Enable -pedantic for Clang even if it's not enabled for LLVM.
|
||||
if (NOT LLVM_ENABLE_PEDANTIC)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wno-long-long")
|
||||
endif ()
|
||||
|
||||
check_cxx_compiler_flag("-Werror -Wnested-anon-types" CXX_SUPPORTS_NO_NESTED_ANON_TYPES_FLAG)
|
||||
if( CXX_SUPPORTS_NO_NESTED_ANON_TYPES_FLAG )
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nested-anon-types" )
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (APPLE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_namespace -Wl,-undefined -Wl,suppress")
|
||||
endif ()
|
||||
|
||||
configure_file(
|
||||
${CLANG_SOURCE_DIR}/include/clang/Config/config.h.cmake
|
||||
${CLANG_BINARY_DIR}/include/clang/Config/config.h)
|
||||
|
||||
include(LLVMParseArguments)
|
||||
|
||||
function(clang_tablegen)
|
||||
# Syntax:
|
||||
# clang_tablegen output-file [tablegen-arg ...] SOURCE source-file
|
||||
# [[TARGET cmake-target-name] [DEPENDS extra-dependency ...]]
|
||||
#
|
||||
# Generates a custom command for invoking tblgen as
|
||||
#
|
||||
# tblgen source-file -o=output-file tablegen-arg ...
|
||||
#
|
||||
# and, if cmake-target-name is provided, creates a custom target for
|
||||
# executing the custom command depending on output-file. It is
|
||||
# possible to list more files to depend after DEPENDS.
|
||||
|
||||
parse_arguments( CTG "SOURCE;TARGET;DEPENDS" "" ${ARGN} )
|
||||
|
||||
if( NOT CTG_SOURCE )
|
||||
message(FATAL_ERROR "SOURCE source-file required by clang_tablegen")
|
||||
endif()
|
||||
|
||||
set( LLVM_TARGET_DEFINITIONS ${CTG_SOURCE} )
|
||||
tablegen( CLANG ${CTG_DEFAULT_ARGS} )
|
||||
|
||||
list( GET CTG_DEFAULT_ARGS 0 output_file )
|
||||
if( CTG_TARGET )
|
||||
add_custom_target( ${CTG_TARGET} DEPENDS ${output_file} ${CTG_DEPENDS} )
|
||||
set_target_properties( ${CTG_TARGET} PROPERTIES FOLDER "Clang tablegenning")
|
||||
endif()
|
||||
endfunction(clang_tablegen)
|
||||
|
||||
# FIXME: Generalize and move to llvm.
|
||||
function(add_clang_symbol_exports target_name export_file)
|
||||
# Makefile.rules contains special cases for different platforms.
|
||||
# We restrict ourselves to Darwin for the time being.
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
add_custom_command(OUTPUT symbol.exports
|
||||
COMMAND sed -e "s/^/_/" < ${export_file} > symbol.exports
|
||||
DEPENDS ${export_file}
|
||||
VERBATIM
|
||||
COMMENT "Creating export file for ${target_name}")
|
||||
add_custom_target(${target_name}_exports DEPENDS symbol.exports)
|
||||
set_property(DIRECTORY APPEND
|
||||
PROPERTY ADDITIONAL_MAKE_CLEAN_FILES symbol.exports)
|
||||
|
||||
get_property(srcs TARGET ${target_name} PROPERTY SOURCES)
|
||||
foreach(src ${srcs})
|
||||
get_filename_component(extension ${src} EXT)
|
||||
if(extension STREQUAL ".cpp")
|
||||
set(first_source_file ${src})
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Force re-linking when the exports file changes. Actually, it
|
||||
# forces recompilation of the source file. The LINK_DEPENDS target
|
||||
# property only works for makefile-based generators.
|
||||
set_property(SOURCE ${first_source_file} APPEND PROPERTY
|
||||
OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/symbol.exports)
|
||||
|
||||
set_property(TARGET ${target_name} APPEND_STRING PROPERTY
|
||||
LINK_FLAGS " -Wl,-exported_symbols_list,${CMAKE_CURRENT_BINARY_DIR}/symbol.exports")
|
||||
add_dependencies(${target_name} ${target_name}_exports)
|
||||
endif()
|
||||
endfunction(add_clang_symbol_exports)
|
||||
|
||||
macro(add_clang_library name)
|
||||
llvm_process_sources(srcs ${ARGN})
|
||||
if(MSVC_IDE OR XCODE)
|
||||
# Add public headers
|
||||
file(RELATIVE_PATH lib_path
|
||||
${CLANG_SOURCE_DIR}/lib/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
if(NOT lib_path MATCHES "^[.][.]")
|
||||
file( GLOB_RECURSE headers
|
||||
${CLANG_SOURCE_DIR}/include/clang/${lib_path}/*.h
|
||||
${CLANG_SOURCE_DIR}/include/clang/${lib_path}/*.def
|
||||
)
|
||||
set_source_files_properties(${headers} PROPERTIES HEADER_FILE_ONLY ON)
|
||||
|
||||
file( GLOB_RECURSE tds
|
||||
${CLANG_SOURCE_DIR}/include/clang/${lib_path}/*.td
|
||||
)
|
||||
source_group("TableGen descriptions" FILES ${tds})
|
||||
set_source_files_properties(${tds}} PROPERTIES HEADER_FILE_ONLY ON)
|
||||
|
||||
set(srcs ${srcs} ${headers} ${tds})
|
||||
endif()
|
||||
endif(MSVC_IDE OR XCODE)
|
||||
if (MODULE)
|
||||
set(libkind MODULE)
|
||||
elseif (SHARED_LIBRARY)
|
||||
set(libkind SHARED)
|
||||
else()
|
||||
set(libkind)
|
||||
endif()
|
||||
add_library( ${name} ${libkind} ${srcs} )
|
||||
if( LLVM_COMMON_DEPENDS )
|
||||
add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} )
|
||||
endif( LLVM_COMMON_DEPENDS )
|
||||
|
||||
llvm_config( ${name} ${LLVM_LINK_COMPONENTS} )
|
||||
target_link_libraries( ${name} ${LLVM_COMMON_LIBS} )
|
||||
link_system_libs( ${name} )
|
||||
|
||||
if (SHARED_LIBRARY AND EXPORTED_SYMBOL_FILE)
|
||||
add_clang_symbol_exports( ${name} ${EXPORTED_SYMBOL_FILE} )
|
||||
endif()
|
||||
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "libclang")
|
||||
install(TARGETS ${name}
|
||||
LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
|
||||
RUNTIME DESTINATION bin)
|
||||
endif()
|
||||
|
||||
set_target_properties(${name} PROPERTIES FOLDER "Clang libraries")
|
||||
endmacro(add_clang_library)
|
||||
|
||||
macro(add_clang_executable name)
|
||||
add_llvm_executable( ${name} ${ARGN} )
|
||||
set_target_properties(${name} PROPERTIES FOLDER "Clang executables")
|
||||
endmacro(add_clang_executable)
|
||||
|
||||
include_directories(BEFORE
|
||||
${CMAKE_CURRENT_BINARY_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||||
install(DIRECTORY include/
|
||||
DESTINATION include
|
||||
FILES_MATCHING
|
||||
PATTERN "*.def"
|
||||
PATTERN "*.h"
|
||||
PATTERN "config.h" EXCLUDE
|
||||
PATTERN ".svn" EXCLUDE
|
||||
)
|
||||
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
|
||||
DESTINATION include
|
||||
FILES_MATCHING
|
||||
PATTERN "CMakeFiles" EXCLUDE
|
||||
PATTERN "*.inc"
|
||||
)
|
||||
endif()
|
||||
|
||||
install(DIRECTORY include/clang-c
|
||||
DESTINATION include
|
||||
FILES_MATCHING
|
||||
PATTERN "*.h"
|
||||
PATTERN ".svn" EXCLUDE
|
||||
)
|
||||
|
||||
add_definitions( -D_GNU_SOURCE )
|
||||
|
||||
option(CLANG_ENABLE_ARCMT "Build ARCMT." ON)
|
||||
option(CLANG_ENABLE_REWRITER "Build rewriter." ON)
|
||||
option(CLANG_ENABLE_STATIC_ANALYZER "Build static analyzer." ON)
|
||||
|
||||
if (NOT CLANG_ENABLE_REWRITER AND CLANG_ENABLE_ARCMT)
|
||||
message(FATAL_ERROR "Cannot disable rewriter while enabling ARCMT")
|
||||
endif()
|
||||
|
||||
if (NOT CLANG_ENABLE_REWRITER AND CLANG_ENABLE_STATIC_ANALYZER)
|
||||
message(FATAL_ERROR "Cannot disable rewriter while enabling static analyzer")
|
||||
endif()
|
||||
|
||||
if (NOT CLANG_ENABLE_STATIC_ANALYZER AND CLANG_ENABLE_ARCMT)
|
||||
message(FATAL_ERROR "Cannot disable static analyzer while enabling ARCMT")
|
||||
endif()
|
||||
|
||||
if(CLANG_ENABLE_ARCMT)
|
||||
add_definitions(-DCLANG_ENABLE_ARCMT)
|
||||
endif()
|
||||
if(CLANG_ENABLE_REWRITER)
|
||||
add_definitions(-DCLANG_ENABLE_REWRITER)
|
||||
endif()
|
||||
if(CLANG_ENABLE_STATIC_ANALYZER)
|
||||
add_definitions(-DCLANG_ENABLE_STATIC_ANALYZER)
|
||||
endif()
|
||||
|
||||
# Clang version information
|
||||
set(CLANG_EXECUTABLE_VERSION
|
||||
"${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}" CACHE STRING
|
||||
"Version number that will be placed into the clang executable, in the form XX.YY")
|
||||
set(LIBCLANG_LIBRARY_VERSION
|
||||
"${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}" CACHE STRING
|
||||
"Version number that will be placed into the libclang library , in the form XX.YY")
|
||||
mark_as_advanced(CLANG_EXECUTABLE_VERSION LIBCLANG_LIBRARY_VERSION)
|
||||
|
||||
add_subdirectory(utils/TableGen)
|
||||
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(lib)
|
||||
add_subdirectory(tools)
|
||||
add_subdirectory(runtime)
|
||||
|
||||
option(CLANG_BUILD_EXAMPLES "Build CLANG example programs by default." OFF)
|
||||
add_subdirectory(examples)
|
||||
|
||||
option(CLANG_INCLUDE_TESTS
|
||||
"Generate build targets for the Clang unit tests."
|
||||
${LLVM_INCLUDE_TESTS})
|
||||
|
||||
if( CLANG_INCLUDE_TESTS )
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(unittests)
|
||||
endif()
|
||||
|
||||
option(CLANG_INCLUDE_DOCS "Generate build targets for the Clang docs."
|
||||
${LLVM_INCLUDE_DOCS})
|
||||
if( CLANG_INCLUDE_DOCS )
|
||||
add_subdirectory(docs)
|
||||
endif()
|
||||
|
||||
# Workaround for MSVS10 to avoid the Dialog Hell
|
||||
# FIXME: This could be removed with future version of CMake.
|
||||
if( CLANG_BUILT_STANDALONE AND MSVC_VERSION EQUAL 1600 )
|
||||
set(CLANG_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/Clang.sln")
|
||||
if( EXISTS "${CLANG_SLN_FILENAME}" )
|
||||
file(APPEND "${CLANG_SLN_FILENAME}" "\n# This should be regenerated!\n")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(BUG_REPORT_URL "http://llvm.org/bugs/" CACHE STRING
|
||||
"Default URL where bug reports are to be submitted.")
|
||||
|
||||
set(CLANG_ORDER_FILE "" CACHE FILEPATH
|
||||
"Order file to use when compiling clang in order to improve startup time.")
|
40
external/bsd/llvm/dist/clang/CODE_OWNERS.TXT
vendored
Normal file
40
external/bsd/llvm/dist/clang/CODE_OWNERS.TXT
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
This file is a list of the people responsible for ensuring that patches for a
|
||||
particular part of Clang are reviewed, either by themself or by someone else.
|
||||
They are also the gatekeepers for their part of Clang, with the final word on
|
||||
what goes in or not.
|
||||
|
||||
The list is sorted by surname and formatted to allow easy grepping and
|
||||
beautification by scripts. The fields are: name (N), email (E), web-address
|
||||
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
|
||||
(S).
|
||||
|
||||
N: Chandler Carruth
|
||||
E: chandlerc@gmail.com
|
||||
E: chandlerc@google.com
|
||||
D: CMake, library layering
|
||||
|
||||
N: Eric Christopher
|
||||
E: echristo@gmail.com
|
||||
D: Debug Information, autotools/configure/make build, inline assembly
|
||||
|
||||
N: Doug Gregor
|
||||
D: All parts of Clang not covered by someone else
|
||||
|
||||
N: Anton Korobeynikov
|
||||
E: anton@korobeynikov.info
|
||||
D: Exception handling, Windows codegen, ARM EABI
|
||||
|
||||
N: Ted Kremenek
|
||||
D: Clang Static Analyzer
|
||||
|
||||
N: John McCall
|
||||
E: rjmccall@apple.com
|
||||
D: Clang LLVM IR generation
|
||||
|
||||
N: Chad Rosier
|
||||
E: mcrosier@codeaurora.org
|
||||
D: MS-inline asm, and the compiler driver
|
||||
|
||||
N: Richard Smith
|
||||
E: richard@metafoo.co.uk
|
||||
D: Clang Semantic Analysis (tools/clang/lib/Sema/* tools/clang/include/clang/Sema/*)
|
2
external/bsd/llvm/dist/clang/INPUTS/Cocoa_h.m
vendored
Normal file
2
external/bsd/llvm/dist/clang/INPUTS/Cocoa_h.m
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
|
||||
#import <Cocoa/Cocoa.h>
|
86
external/bsd/llvm/dist/clang/INPUTS/all-std-headers.cpp
vendored
Normal file
86
external/bsd/llvm/dist/clang/INPUTS/all-std-headers.cpp
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <cassert>
|
||||
#include <cctype>
|
||||
#include <cerrno>
|
||||
#include <cfloat>
|
||||
#include <ciso646>
|
||||
#include <climits>
|
||||
#include <clocale>
|
||||
#include <cmath>
|
||||
#include <complex>
|
||||
#include <csetjmp>
|
||||
#include <csignal>
|
||||
#include <cstdarg>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <cwchar>
|
||||
#include <cwctype>
|
||||
#include <deque>
|
||||
#include <exception>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <iomanip>
|
||||
#include <ios>
|
||||
#include <iosfwd>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <iterator>
|
||||
#include <limits>
|
||||
#include <list>
|
||||
#include <locale>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <new>
|
||||
#include <numeric>
|
||||
#include <ostream>
|
||||
#include <queue>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <stack>
|
||||
#include <stdexcept>
|
||||
#include <streambuf>
|
||||
#include <string>
|
||||
#if __has_include(<strstream>)
|
||||
#include <strstream>
|
||||
#endif
|
||||
#include <typeinfo>
|
||||
#include <utility>
|
||||
#include <valarray>
|
||||
#include <vector>
|
||||
|
||||
#if __cplusplus >= 201103 || defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||
#include <array>
|
||||
#if __has_include(<atomic>)
|
||||
#include <atomic>
|
||||
#endif
|
||||
#include <chrono>
|
||||
#if __has_include(<codecvt>)
|
||||
#include <codecvt>
|
||||
#endif
|
||||
#include <condition_variable>
|
||||
#include <forward_list>
|
||||
#if __has_include(<future>)
|
||||
#include <future>
|
||||
#endif
|
||||
#include <initializer_list>
|
||||
#include <mutex>
|
||||
#include <random>
|
||||
#include <ratio>
|
||||
#include <regex>
|
||||
#if __has_include(<scoped_allocator>)
|
||||
#include <scoped_allocator>
|
||||
#endif
|
||||
#include <system_error>
|
||||
#include <thread>
|
||||
#include <tuple>
|
||||
#include <type_traits>
|
||||
#if __has_include(<typeindex>)
|
||||
#include <typeindex>
|
||||
#endif
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#endif
|
639
external/bsd/llvm/dist/clang/INPUTS/c99-intconst-1.c
vendored
Normal file
639
external/bsd/llvm/dist/clang/INPUTS/c99-intconst-1.c
vendored
Normal file
|
@ -0,0 +1,639 @@
|
|||
/* Test for integer constant types. */
|
||||
|
||||
/* Origin: Joseph Myers <jsm28@cam.ac.uk>. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
/* Assertion that constant C is of type T. */
|
||||
#define ASSERT_CONST_TYPE(C, T) \
|
||||
do { \
|
||||
typedef T type; \
|
||||
typedef type **typepp; \
|
||||
typedef __typeof__((C)) ctype; \
|
||||
typedef ctype **ctypepp; \
|
||||
typepp x = 0; \
|
||||
ctypepp y = 0; \
|
||||
x = y; \
|
||||
y = x; \
|
||||
} while (0)
|
||||
|
||||
/* (T *) if E is zero, (void *) otherwise. */
|
||||
#define type_if_not(T, E) __typeof__(0 ? (T *)0 : (void *)(E))
|
||||
|
||||
/* (T *) if E is nonzero, (void *) otherwise. */
|
||||
#define type_if(T, E) type_if_not(T, !(E))
|
||||
|
||||
/* Combine pointer types, all but one (void *). */
|
||||
#define type_comb2(T1, T2) __typeof__(0 ? (T1)0 : (T2)0)
|
||||
#define type_comb3(T1, T2, T3) type_comb2(T1, type_comb2(T2, T3))
|
||||
#define type_comb4(T1, T2, T3, T4) \
|
||||
type_comb2(T1, type_comb2(T2, type_comb2(T3, T4)))
|
||||
#define type_comb6(T1, T2, T3, T4, T5, T6) \
|
||||
type_comb2(T1, \
|
||||
type_comb2(T2, \
|
||||
type_comb2(T3, \
|
||||
type_comb2(T4, \
|
||||
type_comb2(T5, T6)))))
|
||||
|
||||
/* (T1 *) if E1, otherwise (T2 *) if E2. */
|
||||
#define first_of2p(T1, E1, T2, E2) type_comb2(type_if(T1, (E1)), \
|
||||
type_if(T2, (!(E1) && (E2))))
|
||||
/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3. */
|
||||
#define first_of3p(T1, E1, T2, E2, T3, E3) \
|
||||
type_comb3(type_if(T1, (E1)), \
|
||||
type_if(T2, (!(E1) && (E2))), \
|
||||
type_if(T3, (!(E1) && !(E2) && (E3))))
|
||||
/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3, otherwise
|
||||
(T4 *) if E4. */
|
||||
#define first_of4p(T1, E1, T2, E2, T3, E3, T4, E4) \
|
||||
type_comb4(type_if(T1, (E1)), \
|
||||
type_if(T2, (!(E1) && (E2))), \
|
||||
type_if(T3, (!(E1) && !(E2) && (E3))), \
|
||||
type_if(T4, (!(E1) && !(E2) && !(E3) && (E4))))
|
||||
/* (T1 *) if E1, otherwise (T2 *) if E2, otherwise (T3 *) if E3, otherwise
|
||||
(T4 *) if E4, otherwise (T5 *) if E5, otherwise (T6 *) if E6. */
|
||||
#define first_of6p(T1, E1, T2, E2, T3, E3, T4, E4, T5, E5, T6, E6) \
|
||||
type_comb6(type_if(T1, (E1)), \
|
||||
type_if(T2, (!(E1) && (E2))), \
|
||||
type_if(T3, (!(E1) && !(E2) && (E3))), \
|
||||
type_if(T4, (!(E1) && !(E2) && !(E3) && (E4))), \
|
||||
type_if(T5, (!(E1) && !(E2) && !(E3) && !(E4) && (E5))), \
|
||||
type_if(T6, (!(E1) && !(E2) && !(E3) \
|
||||
&& !(E4) && !(E5) && (E6))))
|
||||
|
||||
/* Likewise, but return the original type rather than a pointer type. */
|
||||
#define first_of2(T1, E1, T2, E2) \
|
||||
__typeof__(*((first_of2p(T1, (E1), T2, (E2)))0))
|
||||
#define first_of3(T1, E1, T2, E2, T3, E3) \
|
||||
__typeof__(*((first_of3p(T1, (E1), T2, (E2), T3, (E3)))0))
|
||||
#define first_of4(T1, E1, T2, E2, T3, E3, T4, E4) \
|
||||
__typeof__(*((first_of4p(T1, (E1), T2, (E2), T3, (E3), T4, (E4)))0))
|
||||
#define first_of6(T1, E1, T2, E2, T3, E3, T4, E4, T5, E5, T6, E6) \
|
||||
__typeof__(*((first_of6p(T1, (E1), T2, (E2), T3, (E3), \
|
||||
T4, (E4), T5, (E5), T6, (E6)))0))
|
||||
|
||||
/* Types of constants according to the C99 rules. */
|
||||
#define C99_UNSUF_DEC_TYPE(C) \
|
||||
first_of3(int, (C) <= INT_MAX, \
|
||||
long int, (C) <= LONG_MAX, \
|
||||
long long int, (C) <= LLONG_MAX)
|
||||
#define C99_UNSUF_OCTHEX_TYPE(C) \
|
||||
first_of6(int, (C) <= INT_MAX, \
|
||||
unsigned int, (C) <= UINT_MAX, \
|
||||
long int, (C) <= LONG_MAX, \
|
||||
unsigned long int, (C) <= ULONG_MAX, \
|
||||
long long int, (C) <= LLONG_MAX, \
|
||||
unsigned long long int, (C) <= ULLONG_MAX)
|
||||
#define C99_SUFu_TYPE(C) \
|
||||
first_of3(unsigned int, (C) <= UINT_MAX, \
|
||||
unsigned long int, (C) <= ULONG_MAX, \
|
||||
unsigned long long int, (C) <= ULLONG_MAX)
|
||||
#define C99_SUFl_DEC_TYPE(C) \
|
||||
first_of2(long int, (C) <= LONG_MAX, \
|
||||
long long int, (C) <= LLONG_MAX)
|
||||
#define C99_SUFl_OCTHEX_TYPE(C) \
|
||||
first_of4(long int, (C) <= LONG_MAX, \
|
||||
unsigned long int, (C) <= ULONG_MAX, \
|
||||
long long int, (C) <= LLONG_MAX, \
|
||||
unsigned long long int, (C) <= ULLONG_MAX)
|
||||
#define C99_SUFul_TYPE(C) \
|
||||
first_of2(unsigned long int, (C) <= ULONG_MAX, \
|
||||
unsigned long long int, (C) <= ULLONG_MAX)
|
||||
#define C99_SUFll_OCTHEX_TYPE(C) \
|
||||
first_of2(long long int, (C) <= LLONG_MAX, \
|
||||
unsigned long long int, (C) <= ULLONG_MAX)
|
||||
|
||||
/* Checks that constants have correct type. */
|
||||
#define CHECK_UNSUF_DEC_TYPE(C) ASSERT_CONST_TYPE((C), C99_UNSUF_DEC_TYPE((C)))
|
||||
#define CHECK_UNSUF_OCTHEX_TYPE(C) \
|
||||
ASSERT_CONST_TYPE((C), C99_UNSUF_OCTHEX_TYPE((C)))
|
||||
#define CHECK_SUFu_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFu_TYPE((C)))
|
||||
#define CHECK_SUFl_DEC_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFl_DEC_TYPE((C)))
|
||||
#define CHECK_SUFl_OCTHEX_TYPE(C) \
|
||||
ASSERT_CONST_TYPE((C), C99_SUFl_OCTHEX_TYPE((C)))
|
||||
#define CHECK_SUFul_TYPE(C) ASSERT_CONST_TYPE((C), C99_SUFul_TYPE((C)))
|
||||
#define CHECK_SUFll_DEC_TYPE(C) ASSERT_CONST_TYPE((C), long long int)
|
||||
#define CHECK_SUFll_OCTHEX_TYPE(C) \
|
||||
ASSERT_CONST_TYPE((C), C99_SUFll_OCTHEX_TYPE((C)))
|
||||
#define CHECK_SUFull_TYPE(C) ASSERT_CONST_TYPE((C), unsigned long long int)
|
||||
|
||||
/* Check a decimal value, with all suffixes. */
|
||||
#define CHECK_DEC_CONST(C) \
|
||||
CHECK_UNSUF_DEC_TYPE(C); \
|
||||
CHECK_SUFu_TYPE(C##u); \
|
||||
CHECK_SUFu_TYPE(C##U); \
|
||||
CHECK_SUFl_DEC_TYPE(C##l); \
|
||||
CHECK_SUFl_DEC_TYPE(C##L); \
|
||||
CHECK_SUFul_TYPE(C##ul); \
|
||||
CHECK_SUFul_TYPE(C##uL); \
|
||||
CHECK_SUFul_TYPE(C##Ul); \
|
||||
CHECK_SUFul_TYPE(C##UL); \
|
||||
CHECK_SUFll_DEC_TYPE(C##ll); \
|
||||
CHECK_SUFll_DEC_TYPE(C##LL); \
|
||||
CHECK_SUFull_TYPE(C##ull); \
|
||||
CHECK_SUFull_TYPE(C##uLL); \
|
||||
CHECK_SUFull_TYPE(C##Ull); \
|
||||
CHECK_SUFull_TYPE(C##ULL);
|
||||
|
||||
/* Check an octal or hexadecimal value, with all suffixes. */
|
||||
#define CHECK_OCTHEX_CONST(C) \
|
||||
CHECK_UNSUF_OCTHEX_TYPE(C); \
|
||||
CHECK_SUFu_TYPE(C##u); \
|
||||
CHECK_SUFu_TYPE(C##U); \
|
||||
CHECK_SUFl_OCTHEX_TYPE(C##l); \
|
||||
CHECK_SUFl_OCTHEX_TYPE(C##L); \
|
||||
CHECK_SUFul_TYPE(C##ul); \
|
||||
CHECK_SUFul_TYPE(C##uL); \
|
||||
CHECK_SUFul_TYPE(C##Ul); \
|
||||
CHECK_SUFul_TYPE(C##UL); \
|
||||
CHECK_SUFll_OCTHEX_TYPE(C##ll); \
|
||||
CHECK_SUFll_OCTHEX_TYPE(C##LL); \
|
||||
CHECK_SUFull_TYPE(C##ull); \
|
||||
CHECK_SUFull_TYPE(C##uLL); \
|
||||
CHECK_SUFull_TYPE(C##Ull); \
|
||||
CHECK_SUFull_TYPE(C##ULL);
|
||||
|
||||
#define CHECK_OCT_CONST(C) CHECK_OCTHEX_CONST(C)
|
||||
#define CHECK_HEX_CONST(C) \
|
||||
CHECK_OCTHEX_CONST(0x##C); \
|
||||
CHECK_OCTHEX_CONST(0X##C);
|
||||
|
||||
/* True iff "long long" is at least B bits. This presumes that (B-2)/3 is at
|
||||
most 63. */
|
||||
#define LLONG_AT_LEAST(B) \
|
||||
(LLONG_MAX >> ((B)-2)/3 >> ((B)-2)/3 \
|
||||
>> ((B)-2 - ((B)-2)/3 - ((B)-2)/3))
|
||||
|
||||
#define LLONG_HAS_BITS(B) (LLONG_AT_LEAST((B)) && !LLONG_AT_LEAST((B) + 1))
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
/* Decimal. */
|
||||
/* Check all 2^n and 2^n - 1 up to 2^71 - 1. */
|
||||
CHECK_DEC_CONST(1);
|
||||
CHECK_DEC_CONST(2);
|
||||
CHECK_DEC_CONST(3);
|
||||
CHECK_DEC_CONST(4);
|
||||
CHECK_DEC_CONST(7);
|
||||
CHECK_DEC_CONST(8);
|
||||
CHECK_DEC_CONST(15);
|
||||
CHECK_DEC_CONST(16);
|
||||
CHECK_DEC_CONST(31);
|
||||
CHECK_DEC_CONST(32);
|
||||
CHECK_DEC_CONST(63);
|
||||
CHECK_DEC_CONST(64);
|
||||
CHECK_DEC_CONST(127);
|
||||
CHECK_DEC_CONST(128);
|
||||
CHECK_DEC_CONST(255);
|
||||
CHECK_DEC_CONST(256);
|
||||
CHECK_DEC_CONST(511);
|
||||
CHECK_DEC_CONST(512);
|
||||
CHECK_DEC_CONST(1023);
|
||||
CHECK_DEC_CONST(1024);
|
||||
CHECK_DEC_CONST(2047);
|
||||
CHECK_DEC_CONST(2048);
|
||||
CHECK_DEC_CONST(4095);
|
||||
CHECK_DEC_CONST(4096);
|
||||
CHECK_DEC_CONST(8191);
|
||||
CHECK_DEC_CONST(8192);
|
||||
CHECK_DEC_CONST(16383);
|
||||
CHECK_DEC_CONST(16384);
|
||||
CHECK_DEC_CONST(32767);
|
||||
CHECK_DEC_CONST(32768);
|
||||
CHECK_DEC_CONST(65535);
|
||||
CHECK_DEC_CONST(65536);
|
||||
CHECK_DEC_CONST(131071);
|
||||
CHECK_DEC_CONST(131072);
|
||||
CHECK_DEC_CONST(262143);
|
||||
CHECK_DEC_CONST(262144);
|
||||
CHECK_DEC_CONST(524287);
|
||||
CHECK_DEC_CONST(524288);
|
||||
CHECK_DEC_CONST(1048575);
|
||||
CHECK_DEC_CONST(1048576);
|
||||
CHECK_DEC_CONST(2097151);
|
||||
CHECK_DEC_CONST(2097152);
|
||||
CHECK_DEC_CONST(4194303);
|
||||
CHECK_DEC_CONST(4194304);
|
||||
CHECK_DEC_CONST(8388607);
|
||||
CHECK_DEC_CONST(8388608);
|
||||
CHECK_DEC_CONST(16777215);
|
||||
CHECK_DEC_CONST(16777216);
|
||||
CHECK_DEC_CONST(33554431);
|
||||
CHECK_DEC_CONST(33554432);
|
||||
CHECK_DEC_CONST(67108863);
|
||||
CHECK_DEC_CONST(67108864);
|
||||
CHECK_DEC_CONST(134217727);
|
||||
CHECK_DEC_CONST(134217728);
|
||||
CHECK_DEC_CONST(268435455);
|
||||
CHECK_DEC_CONST(268435456);
|
||||
CHECK_DEC_CONST(536870911);
|
||||
CHECK_DEC_CONST(536870912);
|
||||
CHECK_DEC_CONST(1073741823);
|
||||
CHECK_DEC_CONST(1073741824);
|
||||
CHECK_DEC_CONST(2147483647);
|
||||
CHECK_DEC_CONST(2147483648);
|
||||
CHECK_DEC_CONST(4294967295);
|
||||
CHECK_DEC_CONST(4294967296);
|
||||
CHECK_DEC_CONST(8589934591);
|
||||
CHECK_DEC_CONST(8589934592);
|
||||
CHECK_DEC_CONST(17179869183);
|
||||
CHECK_DEC_CONST(17179869184);
|
||||
CHECK_DEC_CONST(34359738367);
|
||||
CHECK_DEC_CONST(34359738368);
|
||||
CHECK_DEC_CONST(68719476735);
|
||||
CHECK_DEC_CONST(68719476736);
|
||||
CHECK_DEC_CONST(137438953471);
|
||||
CHECK_DEC_CONST(137438953472);
|
||||
CHECK_DEC_CONST(274877906943);
|
||||
CHECK_DEC_CONST(274877906944);
|
||||
CHECK_DEC_CONST(549755813887);
|
||||
CHECK_DEC_CONST(549755813888);
|
||||
CHECK_DEC_CONST(1099511627775);
|
||||
CHECK_DEC_CONST(1099511627776);
|
||||
CHECK_DEC_CONST(2199023255551);
|
||||
CHECK_DEC_CONST(2199023255552);
|
||||
CHECK_DEC_CONST(4398046511103);
|
||||
CHECK_DEC_CONST(4398046511104);
|
||||
CHECK_DEC_CONST(8796093022207);
|
||||
CHECK_DEC_CONST(8796093022208);
|
||||
CHECK_DEC_CONST(17592186044415);
|
||||
CHECK_DEC_CONST(17592186044416);
|
||||
CHECK_DEC_CONST(35184372088831);
|
||||
CHECK_DEC_CONST(35184372088832);
|
||||
CHECK_DEC_CONST(70368744177663);
|
||||
CHECK_DEC_CONST(70368744177664);
|
||||
CHECK_DEC_CONST(140737488355327);
|
||||
CHECK_DEC_CONST(140737488355328);
|
||||
CHECK_DEC_CONST(281474976710655);
|
||||
CHECK_DEC_CONST(281474976710656);
|
||||
CHECK_DEC_CONST(562949953421311);
|
||||
CHECK_DEC_CONST(562949953421312);
|
||||
CHECK_DEC_CONST(1125899906842623);
|
||||
CHECK_DEC_CONST(1125899906842624);
|
||||
CHECK_DEC_CONST(2251799813685247);
|
||||
CHECK_DEC_CONST(2251799813685248);
|
||||
CHECK_DEC_CONST(4503599627370495);
|
||||
CHECK_DEC_CONST(4503599627370496);
|
||||
CHECK_DEC_CONST(9007199254740991);
|
||||
CHECK_DEC_CONST(9007199254740992);
|
||||
CHECK_DEC_CONST(18014398509481983);
|
||||
CHECK_DEC_CONST(18014398509481984);
|
||||
CHECK_DEC_CONST(36028797018963967);
|
||||
CHECK_DEC_CONST(36028797018963968);
|
||||
CHECK_DEC_CONST(72057594037927935);
|
||||
CHECK_DEC_CONST(72057594037927936);
|
||||
CHECK_DEC_CONST(144115188075855871);
|
||||
CHECK_DEC_CONST(144115188075855872);
|
||||
CHECK_DEC_CONST(288230376151711743);
|
||||
CHECK_DEC_CONST(288230376151711744);
|
||||
CHECK_DEC_CONST(576460752303423487);
|
||||
CHECK_DEC_CONST(576460752303423488);
|
||||
CHECK_DEC_CONST(1152921504606846975);
|
||||
CHECK_DEC_CONST(1152921504606846976);
|
||||
CHECK_DEC_CONST(2305843009213693951);
|
||||
CHECK_DEC_CONST(2305843009213693952);
|
||||
CHECK_DEC_CONST(4611686018427387903);
|
||||
CHECK_DEC_CONST(4611686018427387904);
|
||||
CHECK_DEC_CONST(9223372036854775807);
|
||||
#if LLONG_AT_LEAST(65)
|
||||
CHECK_DEC_CONST(9223372036854775808);
|
||||
CHECK_DEC_CONST(18446744073709551615);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(66)
|
||||
CHECK_DEC_CONST(18446744073709551616);
|
||||
CHECK_DEC_CONST(36893488147419103231);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(67)
|
||||
CHECK_DEC_CONST(36893488147419103232);
|
||||
CHECK_DEC_CONST(73786976294838206463);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(68)
|
||||
CHECK_DEC_CONST(73786976294838206464);
|
||||
CHECK_DEC_CONST(147573952589676412927);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(69)
|
||||
CHECK_DEC_CONST(147573952589676412928);
|
||||
CHECK_DEC_CONST(295147905179352825855);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(70)
|
||||
CHECK_DEC_CONST(295147905179352825856);
|
||||
CHECK_DEC_CONST(590295810358705651711);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(71)
|
||||
CHECK_DEC_CONST(590295810358705651712);
|
||||
CHECK_DEC_CONST(1180591620717411303423);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(72)
|
||||
CHECK_DEC_CONST(1180591620717411303424);
|
||||
CHECK_DEC_CONST(2361183241434822606847);
|
||||
#endif
|
||||
/* Octal and hexadecimal. */
|
||||
/* Check all 2^n and 2^n - 1 up to 2^72 - 1. */
|
||||
CHECK_OCT_CONST(0);
|
||||
CHECK_HEX_CONST(0);
|
||||
CHECK_OCT_CONST(01);
|
||||
CHECK_HEX_CONST(1);
|
||||
CHECK_OCT_CONST(02);
|
||||
CHECK_HEX_CONST(2);
|
||||
CHECK_OCT_CONST(03);
|
||||
CHECK_HEX_CONST(3);
|
||||
CHECK_OCT_CONST(04);
|
||||
CHECK_HEX_CONST(4);
|
||||
CHECK_OCT_CONST(07);
|
||||
CHECK_HEX_CONST(7);
|
||||
CHECK_OCT_CONST(010);
|
||||
CHECK_HEX_CONST(8);
|
||||
CHECK_OCT_CONST(017);
|
||||
CHECK_HEX_CONST(f);
|
||||
CHECK_OCT_CONST(020);
|
||||
CHECK_HEX_CONST(10);
|
||||
CHECK_OCT_CONST(037);
|
||||
CHECK_HEX_CONST(1f);
|
||||
CHECK_OCT_CONST(040);
|
||||
CHECK_HEX_CONST(20);
|
||||
CHECK_OCT_CONST(077);
|
||||
CHECK_HEX_CONST(3f);
|
||||
CHECK_OCT_CONST(0100);
|
||||
CHECK_HEX_CONST(40);
|
||||
CHECK_OCT_CONST(0177);
|
||||
CHECK_HEX_CONST(7f);
|
||||
CHECK_OCT_CONST(0200);
|
||||
CHECK_HEX_CONST(80);
|
||||
CHECK_OCT_CONST(0377);
|
||||
CHECK_HEX_CONST(ff);
|
||||
CHECK_OCT_CONST(0400);
|
||||
CHECK_HEX_CONST(100);
|
||||
CHECK_OCT_CONST(0777);
|
||||
CHECK_HEX_CONST(1ff);
|
||||
CHECK_OCT_CONST(01000);
|
||||
CHECK_HEX_CONST(200);
|
||||
CHECK_OCT_CONST(01777);
|
||||
CHECK_HEX_CONST(3ff);
|
||||
CHECK_OCT_CONST(02000);
|
||||
CHECK_HEX_CONST(400);
|
||||
CHECK_OCT_CONST(03777);
|
||||
CHECK_HEX_CONST(7ff);
|
||||
CHECK_OCT_CONST(04000);
|
||||
CHECK_HEX_CONST(800);
|
||||
CHECK_OCT_CONST(07777);
|
||||
CHECK_HEX_CONST(fff);
|
||||
CHECK_OCT_CONST(010000);
|
||||
CHECK_HEX_CONST(1000);
|
||||
CHECK_OCT_CONST(017777);
|
||||
CHECK_HEX_CONST(1fff);
|
||||
CHECK_OCT_CONST(020000);
|
||||
CHECK_HEX_CONST(2000);
|
||||
CHECK_OCT_CONST(037777);
|
||||
CHECK_HEX_CONST(3fff);
|
||||
CHECK_OCT_CONST(040000);
|
||||
CHECK_HEX_CONST(4000);
|
||||
CHECK_OCT_CONST(077777);
|
||||
CHECK_HEX_CONST(7fff);
|
||||
CHECK_OCT_CONST(0100000);
|
||||
CHECK_HEX_CONST(8000);
|
||||
CHECK_OCT_CONST(0177777);
|
||||
CHECK_HEX_CONST(ffff);
|
||||
CHECK_OCT_CONST(0200000);
|
||||
CHECK_HEX_CONST(10000);
|
||||
CHECK_OCT_CONST(0377777);
|
||||
CHECK_HEX_CONST(1ffff);
|
||||
CHECK_OCT_CONST(0400000);
|
||||
CHECK_HEX_CONST(20000);
|
||||
CHECK_OCT_CONST(0777777);
|
||||
CHECK_HEX_CONST(3ffff);
|
||||
CHECK_OCT_CONST(01000000);
|
||||
CHECK_HEX_CONST(40000);
|
||||
CHECK_OCT_CONST(01777777);
|
||||
CHECK_HEX_CONST(7ffff);
|
||||
CHECK_OCT_CONST(02000000);
|
||||
CHECK_HEX_CONST(80000);
|
||||
CHECK_OCT_CONST(03777777);
|
||||
CHECK_HEX_CONST(fffff);
|
||||
CHECK_OCT_CONST(04000000);
|
||||
CHECK_HEX_CONST(100000);
|
||||
CHECK_OCT_CONST(07777777);
|
||||
CHECK_HEX_CONST(1fffff);
|
||||
CHECK_OCT_CONST(010000000);
|
||||
CHECK_HEX_CONST(200000);
|
||||
CHECK_OCT_CONST(017777777);
|
||||
CHECK_HEX_CONST(3fffff);
|
||||
CHECK_OCT_CONST(020000000);
|
||||
CHECK_HEX_CONST(400000);
|
||||
CHECK_OCT_CONST(037777777);
|
||||
CHECK_HEX_CONST(7fffff);
|
||||
CHECK_OCT_CONST(040000000);
|
||||
CHECK_HEX_CONST(800000);
|
||||
CHECK_OCT_CONST(077777777);
|
||||
CHECK_HEX_CONST(ffffff);
|
||||
CHECK_OCT_CONST(0100000000);
|
||||
CHECK_HEX_CONST(1000000);
|
||||
CHECK_OCT_CONST(0177777777);
|
||||
CHECK_HEX_CONST(1ffffff);
|
||||
CHECK_OCT_CONST(0200000000);
|
||||
CHECK_HEX_CONST(2000000);
|
||||
CHECK_OCT_CONST(0377777777);
|
||||
CHECK_HEX_CONST(3ffffff);
|
||||
CHECK_OCT_CONST(0400000000);
|
||||
CHECK_HEX_CONST(4000000);
|
||||
CHECK_OCT_CONST(0777777777);
|
||||
CHECK_HEX_CONST(7ffffff);
|
||||
CHECK_OCT_CONST(01000000000);
|
||||
CHECK_HEX_CONST(8000000);
|
||||
CHECK_OCT_CONST(01777777777);
|
||||
CHECK_HEX_CONST(fffffff);
|
||||
CHECK_OCT_CONST(02000000000);
|
||||
CHECK_HEX_CONST(10000000);
|
||||
CHECK_OCT_CONST(03777777777);
|
||||
CHECK_HEX_CONST(1fffffff);
|
||||
CHECK_OCT_CONST(04000000000);
|
||||
CHECK_HEX_CONST(20000000);
|
||||
CHECK_OCT_CONST(07777777777);
|
||||
CHECK_HEX_CONST(3fffffff);
|
||||
CHECK_OCT_CONST(010000000000);
|
||||
CHECK_HEX_CONST(40000000);
|
||||
CHECK_OCT_CONST(017777777777);
|
||||
CHECK_HEX_CONST(7fffffff);
|
||||
CHECK_OCT_CONST(020000000000);
|
||||
CHECK_HEX_CONST(80000000);
|
||||
CHECK_OCT_CONST(037777777777);
|
||||
CHECK_HEX_CONST(ffffffff);
|
||||
CHECK_OCT_CONST(040000000000);
|
||||
CHECK_HEX_CONST(100000000);
|
||||
CHECK_OCT_CONST(077777777777);
|
||||
CHECK_HEX_CONST(1ffffffff);
|
||||
CHECK_OCT_CONST(0100000000000);
|
||||
CHECK_HEX_CONST(200000000);
|
||||
CHECK_OCT_CONST(0177777777777);
|
||||
CHECK_HEX_CONST(3ffffffff);
|
||||
CHECK_OCT_CONST(0200000000000);
|
||||
CHECK_HEX_CONST(400000000);
|
||||
CHECK_OCT_CONST(0377777777777);
|
||||
CHECK_HEX_CONST(7ffffffff);
|
||||
CHECK_OCT_CONST(0400000000000);
|
||||
CHECK_HEX_CONST(800000000);
|
||||
CHECK_OCT_CONST(0777777777777);
|
||||
CHECK_HEX_CONST(fffffffff);
|
||||
CHECK_OCT_CONST(01000000000000);
|
||||
CHECK_HEX_CONST(1000000000);
|
||||
CHECK_OCT_CONST(01777777777777);
|
||||
CHECK_HEX_CONST(1fffffffff);
|
||||
CHECK_OCT_CONST(02000000000000);
|
||||
CHECK_HEX_CONST(2000000000);
|
||||
CHECK_OCT_CONST(03777777777777);
|
||||
CHECK_HEX_CONST(3fffffffff);
|
||||
CHECK_OCT_CONST(04000000000000);
|
||||
CHECK_HEX_CONST(4000000000);
|
||||
CHECK_OCT_CONST(07777777777777);
|
||||
CHECK_HEX_CONST(7fffffffff);
|
||||
CHECK_OCT_CONST(010000000000000);
|
||||
CHECK_HEX_CONST(8000000000);
|
||||
CHECK_OCT_CONST(017777777777777);
|
||||
CHECK_HEX_CONST(ffffffffff);
|
||||
CHECK_OCT_CONST(020000000000000);
|
||||
CHECK_HEX_CONST(10000000000);
|
||||
CHECK_OCT_CONST(037777777777777);
|
||||
CHECK_HEX_CONST(1ffffffffff);
|
||||
CHECK_OCT_CONST(040000000000000);
|
||||
CHECK_HEX_CONST(20000000000);
|
||||
CHECK_OCT_CONST(077777777777777);
|
||||
CHECK_HEX_CONST(3ffffffffff);
|
||||
CHECK_OCT_CONST(0100000000000000);
|
||||
CHECK_HEX_CONST(40000000000);
|
||||
CHECK_OCT_CONST(0177777777777777);
|
||||
CHECK_HEX_CONST(7ffffffffff);
|
||||
CHECK_OCT_CONST(0200000000000000);
|
||||
CHECK_HEX_CONST(80000000000);
|
||||
CHECK_OCT_CONST(0377777777777777);
|
||||
CHECK_HEX_CONST(fffffffffff);
|
||||
CHECK_OCT_CONST(0400000000000000);
|
||||
CHECK_HEX_CONST(100000000000);
|
||||
CHECK_OCT_CONST(0777777777777777);
|
||||
CHECK_HEX_CONST(1fffffffffff);
|
||||
CHECK_OCT_CONST(01000000000000000);
|
||||
CHECK_HEX_CONST(200000000000);
|
||||
CHECK_OCT_CONST(01777777777777777);
|
||||
CHECK_HEX_CONST(3fffffffffff);
|
||||
CHECK_OCT_CONST(02000000000000000);
|
||||
CHECK_HEX_CONST(400000000000);
|
||||
CHECK_OCT_CONST(03777777777777777);
|
||||
CHECK_HEX_CONST(7fffffffffff);
|
||||
CHECK_OCT_CONST(04000000000000000);
|
||||
CHECK_HEX_CONST(800000000000);
|
||||
CHECK_OCT_CONST(07777777777777777);
|
||||
CHECK_HEX_CONST(ffffffffffff);
|
||||
CHECK_OCT_CONST(010000000000000000);
|
||||
CHECK_HEX_CONST(1000000000000);
|
||||
CHECK_OCT_CONST(017777777777777777);
|
||||
CHECK_HEX_CONST(1ffffffffffff);
|
||||
CHECK_OCT_CONST(020000000000000000);
|
||||
CHECK_HEX_CONST(2000000000000);
|
||||
CHECK_OCT_CONST(037777777777777777);
|
||||
CHECK_HEX_CONST(3ffffffffffff);
|
||||
CHECK_OCT_CONST(040000000000000000);
|
||||
CHECK_HEX_CONST(4000000000000);
|
||||
CHECK_OCT_CONST(077777777777777777);
|
||||
CHECK_HEX_CONST(7ffffffffffff);
|
||||
CHECK_OCT_CONST(0100000000000000000);
|
||||
CHECK_HEX_CONST(8000000000000);
|
||||
CHECK_OCT_CONST(0177777777777777777);
|
||||
CHECK_HEX_CONST(fffffffffffff);
|
||||
CHECK_OCT_CONST(0200000000000000000);
|
||||
CHECK_HEX_CONST(10000000000000);
|
||||
CHECK_OCT_CONST(0377777777777777777);
|
||||
CHECK_HEX_CONST(1fffffffffffff);
|
||||
CHECK_OCT_CONST(0400000000000000000);
|
||||
CHECK_HEX_CONST(20000000000000);
|
||||
CHECK_OCT_CONST(0777777777777777777);
|
||||
CHECK_HEX_CONST(3fffffffffffff);
|
||||
CHECK_OCT_CONST(01000000000000000000);
|
||||
CHECK_HEX_CONST(40000000000000);
|
||||
CHECK_OCT_CONST(01777777777777777777);
|
||||
CHECK_HEX_CONST(7fffffffffffff);
|
||||
CHECK_OCT_CONST(02000000000000000000);
|
||||
CHECK_HEX_CONST(80000000000000);
|
||||
CHECK_OCT_CONST(03777777777777777777);
|
||||
CHECK_HEX_CONST(ffffffffffffff);
|
||||
CHECK_OCT_CONST(04000000000000000000);
|
||||
CHECK_HEX_CONST(100000000000000);
|
||||
CHECK_OCT_CONST(07777777777777777777);
|
||||
CHECK_HEX_CONST(1ffffffffffffff);
|
||||
CHECK_OCT_CONST(010000000000000000000);
|
||||
CHECK_HEX_CONST(200000000000000);
|
||||
CHECK_OCT_CONST(017777777777777777777);
|
||||
CHECK_HEX_CONST(3ffffffffffffff);
|
||||
CHECK_OCT_CONST(020000000000000000000);
|
||||
CHECK_HEX_CONST(400000000000000);
|
||||
CHECK_OCT_CONST(037777777777777777777);
|
||||
CHECK_HEX_CONST(7ffffffffffffff);
|
||||
CHECK_OCT_CONST(040000000000000000000);
|
||||
CHECK_HEX_CONST(800000000000000);
|
||||
CHECK_OCT_CONST(077777777777777777777);
|
||||
CHECK_HEX_CONST(fffffffffffffff);
|
||||
CHECK_OCT_CONST(0100000000000000000000);
|
||||
CHECK_HEX_CONST(1000000000000000);
|
||||
CHECK_OCT_CONST(0177777777777777777777);
|
||||
CHECK_HEX_CONST(1fffffffffffffff);
|
||||
CHECK_OCT_CONST(0200000000000000000000);
|
||||
CHECK_HEX_CONST(2000000000000000);
|
||||
CHECK_OCT_CONST(0377777777777777777777);
|
||||
CHECK_HEX_CONST(3fffffffffffffff);
|
||||
CHECK_OCT_CONST(0400000000000000000000);
|
||||
CHECK_HEX_CONST(4000000000000000);
|
||||
CHECK_OCT_CONST(0777777777777777777777);
|
||||
CHECK_HEX_CONST(7fffffffffffffff);
|
||||
CHECK_OCT_CONST(01000000000000000000000);
|
||||
CHECK_HEX_CONST(8000000000000000);
|
||||
CHECK_OCT_CONST(01777777777777777777777);
|
||||
CHECK_HEX_CONST(ffffffffffffffff);
|
||||
#if LLONG_AT_LEAST(65)
|
||||
CHECK_OCT_CONST(02000000000000000000000);
|
||||
CHECK_HEX_CONST(10000000000000000);
|
||||
CHECK_OCT_CONST(03777777777777777777777);
|
||||
CHECK_HEX_CONST(1ffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(66)
|
||||
CHECK_OCT_CONST(04000000000000000000000);
|
||||
CHECK_HEX_CONST(20000000000000000);
|
||||
CHECK_OCT_CONST(07777777777777777777777);
|
||||
CHECK_HEX_CONST(3ffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(67)
|
||||
CHECK_OCT_CONST(010000000000000000000000);
|
||||
CHECK_HEX_CONST(40000000000000000);
|
||||
CHECK_OCT_CONST(017777777777777777777777);
|
||||
CHECK_HEX_CONST(7ffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(68)
|
||||
CHECK_OCT_CONST(020000000000000000000000);
|
||||
CHECK_HEX_CONST(80000000000000000);
|
||||
CHECK_OCT_CONST(037777777777777777777777);
|
||||
CHECK_HEX_CONST(fffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(69)
|
||||
CHECK_OCT_CONST(040000000000000000000000);
|
||||
CHECK_HEX_CONST(100000000000000000);
|
||||
CHECK_OCT_CONST(077777777777777777777777);
|
||||
CHECK_HEX_CONST(1fffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(70)
|
||||
CHECK_OCT_CONST(0100000000000000000000000);
|
||||
CHECK_HEX_CONST(200000000000000000);
|
||||
CHECK_OCT_CONST(0177777777777777777777777);
|
||||
CHECK_HEX_CONST(3fffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(71)
|
||||
CHECK_OCT_CONST(0200000000000000000000000);
|
||||
CHECK_HEX_CONST(400000000000000000);
|
||||
CHECK_OCT_CONST(0377777777777777777777777);
|
||||
CHECK_HEX_CONST(7fffffffffffffffff);
|
||||
#endif
|
||||
#if LLONG_AT_LEAST(72)
|
||||
CHECK_OCT_CONST(0400000000000000000000000);
|
||||
CHECK_HEX_CONST(800000000000000000);
|
||||
CHECK_OCT_CONST(0777777777777777777777777);
|
||||
CHECK_HEX_CONST(ffffffffffffffffff);
|
||||
#endif
|
||||
}
|
4
external/bsd/llvm/dist/clang/INPUTS/carbon_h.c
vendored
Normal file
4
external/bsd/llvm/dist/clang/INPUTS/carbon_h.c
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
|
||||
#include <Carbon/Carbon.h>
|
||||
|
||||
//#import<vecLib/vecLib.h>
|
27
external/bsd/llvm/dist/clang/INPUTS/cfg-big-switch.c
vendored
Normal file
27
external/bsd/llvm/dist/clang/INPUTS/cfg-big-switch.c
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
#define EXPAND_2_CASES(i, x, y) CASE(i, x, y); CASE(i + 1, x, y);
|
||||
#define EXPAND_4_CASES(i, x, y) EXPAND_2_CASES(i, x, y) EXPAND_2_CASES(i + 2, x, y)
|
||||
#define EXPAND_8_CASES(i, x, y) EXPAND_4_CASES(i, x, y) EXPAND_4_CASES(i + 4, x, y)
|
||||
#define EXPAND_16_CASES(i, x, y) EXPAND_8_CASES(i, x, y) EXPAND_8_CASES(i + 8, x, y)
|
||||
#define EXPAND_32_CASES(i, x, y) EXPAND_16_CASES(i, x, y) EXPAND_16_CASES(i + 16, x, y)
|
||||
#define EXPAND_64_CASES(i, x, y) EXPAND_32_CASES(i, x, y) EXPAND_32_CASES(i + 32, x, y)
|
||||
#define EXPAND_128_CASES(i, x, y) EXPAND_64_CASES(i, x, y) EXPAND_64_CASES(i + 64, x, y)
|
||||
#define EXPAND_256_CASES(i, x, y) EXPAND_128_CASES(i, x, y) EXPAND_128_CASES(i + 128, x, y)
|
||||
#define EXPAND_512_CASES(i, x, y) EXPAND_256_CASES(i, x, y) EXPAND_256_CASES(i + 256, x, y)
|
||||
#define EXPAND_1024_CASES(i, x, y) EXPAND_512_CASES(i, x, y) EXPAND_512_CASES(i + 512, x, y)
|
||||
#define EXPAND_2048_CASES(i, x, y) EXPAND_1024_CASES(i, x, y) EXPAND_1024_CASES(i + 1024, x, y)
|
||||
#define EXPAND_4096_CASES(i, x, y) EXPAND_2048_CASES(i, x, y) EXPAND_2048_CASES(i + 2048, x, y)
|
||||
|
||||
// This has a *monstrous* single fan-out in the CFG, across 8000 blocks inside
|
||||
// the while loop.
|
||||
unsigned cfg_big_switch(int x) {
|
||||
unsigned y = 0;
|
||||
while (x > 0) {
|
||||
switch(x) {
|
||||
#define CASE(i, x, y) \
|
||||
case i: { int case_var = 3*x + i; y += case_var - 1; break; }
|
||||
EXPAND_4096_CASES(0, x, y);
|
||||
}
|
||||
--x;
|
||||
}
|
||||
return y;
|
||||
}
|
20
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain1.c
vendored
Normal file
20
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain1.c
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y);
|
||||
#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y)
|
||||
#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y)
|
||||
#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y)
|
||||
#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y)
|
||||
#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y)
|
||||
#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y)
|
||||
#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y)
|
||||
#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y)
|
||||
#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y)
|
||||
#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
|
||||
#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
|
||||
|
||||
unsigned cfg_long_chain_single_exit(unsigned x) {
|
||||
unsigned y = 0;
|
||||
#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; }
|
||||
EXPAND_4096_BRANCHES(1, x, y);
|
||||
#undef BRANCH
|
||||
return y;
|
||||
}
|
20
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain2.c
vendored
Normal file
20
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain2.c
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y);
|
||||
#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y)
|
||||
#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y)
|
||||
#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y)
|
||||
#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y)
|
||||
#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y)
|
||||
#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y)
|
||||
#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y)
|
||||
#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y)
|
||||
#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y)
|
||||
#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
|
||||
#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
|
||||
|
||||
unsigned cfg_long_chain_multiple_exit(unsigned x) {
|
||||
unsigned y = 0;
|
||||
#define BRANCH(i, x, y) if (((x % 13171) + ++y) < i) { int var = x / 13171 + y; return var; }
|
||||
EXPAND_4096_BRANCHES(1, x, y);
|
||||
#undef BRANCH
|
||||
return 42;
|
||||
}
|
21
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain3.c
vendored
Normal file
21
external/bsd/llvm/dist/clang/INPUTS/cfg-long-chain3.c
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y);
|
||||
#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y)
|
||||
#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y)
|
||||
#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y)
|
||||
#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y)
|
||||
#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y)
|
||||
#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y)
|
||||
#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y)
|
||||
#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y)
|
||||
#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y)
|
||||
#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y)
|
||||
#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y)
|
||||
|
||||
unsigned cfg_long_chain_many_preds(unsigned x) {
|
||||
unsigned y = 0;
|
||||
#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; } else
|
||||
EXPAND_4096_BRANCHES(1, x, y);
|
||||
#undef BRANCH
|
||||
int var = x / 13171; y^= var;
|
||||
return y;
|
||||
}
|
36
external/bsd/llvm/dist/clang/INPUTS/cfg-nested-switches.c
vendored
Normal file
36
external/bsd/llvm/dist/clang/INPUTS/cfg-nested-switches.c
vendored
Normal file
|
@ -0,0 +1,36 @@
|
|||
#define EXPAND_2_INNER_CASES(i, x, y) INNER_CASE(i, x, y); INNER_CASE(i + 1, x, y);
|
||||
#define EXPAND_4_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i + 2, x, y)
|
||||
#define EXPAND_8_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i + 4, x, y)
|
||||
#define EXPAND_16_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i + 8, x, y)
|
||||
#define EXPAND_32_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i + 16, x, y)
|
||||
#define EXPAND_64_INNER_CASES(i, x, y) EXPAND_32_INNER_CASES(i, x, y) EXPAND_32_INNER_CASES(i + 32, x, y)
|
||||
|
||||
#define EXPAND_2_OUTER_CASES(i, x, y) OUTER_CASE(i, x, y); OUTER_CASE(i + 1, x, y);
|
||||
#define EXPAND_4_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i + 2, x, y)
|
||||
#define EXPAND_8_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i + 4, x, y)
|
||||
#define EXPAND_16_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i + 8, x, y)
|
||||
#define EXPAND_32_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i + 16, x, y)
|
||||
#define EXPAND_64_OUTER_CASES(i, x, y) EXPAND_32_OUTER_CASES(i, x, y) EXPAND_32_OUTER_CASES(i + 32, x, y)
|
||||
|
||||
// Rather than a single monstrous fan-out, this fans out in smaller increments,
|
||||
// but to a similar size.
|
||||
unsigned cfg_nested_switch(int x) {
|
||||
unsigned y = 0;
|
||||
while (x > 0) {
|
||||
switch (x) {
|
||||
#define INNER_CASE(i, x, y) \
|
||||
case i: { int case_var = 3*x + i; y += case_var - 1; break; }
|
||||
#define OUTER_CASE(i, x, y) \
|
||||
case i: { \
|
||||
int case_var = y >> 8; \
|
||||
switch (case_var) { \
|
||||
EXPAND_64_INNER_CASES(0, x, y); \
|
||||
} \
|
||||
break; \
|
||||
}
|
||||
EXPAND_64_OUTER_CASES(0, x, y);
|
||||
}
|
||||
--x;
|
||||
}
|
||||
return y;
|
||||
}
|
59
external/bsd/llvm/dist/clang/INPUTS/cfg-nested-var-scopes.cpp
vendored
Normal file
59
external/bsd/llvm/dist/clang/INPUTS/cfg-nested-var-scopes.cpp
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
// Hammer the CFG with large numbers of overlapping variable scopes, which
|
||||
// implicit destructors triggered at each edge.
|
||||
|
||||
#define EXPAND_BASIC_STRUCT(i) struct X##i { X##i(int); ~X##i(); };
|
||||
#define EXPAND_NORET_STRUCT(i) struct X##i { X##i(int); ~X##i() __attribute__((noreturn)); };
|
||||
EXPAND_BASIC_STRUCT(0000); EXPAND_NORET_STRUCT(0001);
|
||||
EXPAND_BASIC_STRUCT(0010); EXPAND_BASIC_STRUCT(0011);
|
||||
EXPAND_BASIC_STRUCT(0100); EXPAND_NORET_STRUCT(0101);
|
||||
EXPAND_NORET_STRUCT(0110); EXPAND_BASIC_STRUCT(0111);
|
||||
EXPAND_BASIC_STRUCT(1000); EXPAND_NORET_STRUCT(1001);
|
||||
EXPAND_BASIC_STRUCT(1010); EXPAND_BASIC_STRUCT(1011);
|
||||
EXPAND_NORET_STRUCT(1100); EXPAND_NORET_STRUCT(1101);
|
||||
EXPAND_BASIC_STRUCT(1110); EXPAND_BASIC_STRUCT(1111);
|
||||
|
||||
#define EXPAND_2_VARS(c, i, x) const X##i var_##c##_##i##0(x), &var_##c##_##i##1 = X##i(x)
|
||||
#define EXPAND_4_VARS(c, i, x) EXPAND_2_VARS(c, i##0, x); EXPAND_2_VARS(c, i##1, x)
|
||||
#define EXPAND_8_VARS(c, i, x) EXPAND_4_VARS(c, i##0, x); EXPAND_4_VARS(c, i##1, x)
|
||||
#define EXPAND_16_VARS(c, i, x) EXPAND_8_VARS(c, i##0, x); EXPAND_8_VARS(c, i##1, x)
|
||||
#define EXPAND_32_VARS(c, x) EXPAND_16_VARS(c, 0, x); EXPAND_16_VARS(c, 1, x)
|
||||
|
||||
#define EXPAND_2_INNER_CASES(i, x, y) INNER_CASE(i, x, y); INNER_CASE(i + 1, x, y);
|
||||
#define EXPAND_4_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i + 2, x, y)
|
||||
#define EXPAND_8_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i + 4, x, y)
|
||||
#define EXPAND_16_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i + 8, x, y)
|
||||
#define EXPAND_32_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i + 16, x, y)
|
||||
|
||||
#define EXPAND_2_OUTER_CASES(i, x, y) OUTER_CASE(i, x, y); OUTER_CASE(i + 1, x, y);
|
||||
#define EXPAND_4_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i + 2, x, y)
|
||||
#define EXPAND_8_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i + 4, x, y)
|
||||
#define EXPAND_16_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i + 8, x, y)
|
||||
#define EXPAND_32_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i + 16, x, y)
|
||||
|
||||
unsigned cfg_nested_vars(int x) {
|
||||
int y = 0;
|
||||
while (x > 0) {
|
||||
EXPAND_32_VARS(a, x);
|
||||
switch (x) {
|
||||
#define INNER_CASE(i, x, y) \
|
||||
case i: { \
|
||||
int case_var = 3*x + i; \
|
||||
EXPAND_32_VARS(c, case_var); \
|
||||
y += case_var - 1; \
|
||||
break; \
|
||||
}
|
||||
#define OUTER_CASE(i, x, y) \
|
||||
case i: { \
|
||||
int case_var = y >> 8; \
|
||||
EXPAND_32_VARS(b, y); \
|
||||
switch (case_var) { \
|
||||
EXPAND_32_INNER_CASES(0, x, y); \
|
||||
} \
|
||||
break; \
|
||||
}
|
||||
EXPAND_32_OUTER_CASES(0, x, y);
|
||||
}
|
||||
--x;
|
||||
}
|
||||
return y;
|
||||
}
|
5
external/bsd/llvm/dist/clang/INPUTS/iostream.cc
vendored
Normal file
5
external/bsd/llvm/dist/clang/INPUTS/iostream.cc
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
// clang -I/usr/include/c++/4.0.0 -I/usr/include/c++/4.0.0/powerpc-apple-darwin8 -I/usr/include/c++/4.0.0/backward INPUTS/iostream.cc -Eonly
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <stdint.h>
|
17
external/bsd/llvm/dist/clang/INPUTS/macro_pounder_fn.c
vendored
Normal file
17
external/bsd/llvm/dist/clang/INPUTS/macro_pounder_fn.c
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
// This pounds on macro expansion for performance reasons. This is currently
|
||||
// heavily constrained by darwin's malloc.
|
||||
|
||||
// Function-like macros.
|
||||
#define A0(A, B) A B
|
||||
#define A1(A, B) A0(A,B) A0(A,B) A0(A,B) A0(A,B) A0(A,B) A0(A,B)
|
||||
#define A2(A, B) A1(A,B) A1(A,B) A1(A,B) A1(A,B) A1(A,B) A1(A,B)
|
||||
#define A3(A, B) A2(A,B) A2(A,B) A2(A,B) A2(A,B) A2(A,B) A2(A,B)
|
||||
#define A4(A, B) A3(A,B) A3(A,B) A3(A,B) A3(A,B) A3(A,B) A3(A,B)
|
||||
#define A5(A, B) A4(A,B) A4(A,B) A4(A,B) A4(A,B) A4(A,B) A4(A,B)
|
||||
#define A6(A, B) A5(A,B) A5(A,B) A5(A,B) A5(A,B) A5(A,B) A5(A,B)
|
||||
#define A7(A, B) A6(A,B) A6(A,B) A6(A,B) A6(A,B) A6(A,B) A6(A,B)
|
||||
#define A8(A, B) A7(A,B) A7(A,B) A7(A,B) A7(A,B) A7(A,B) A7(A,B)
|
||||
|
||||
A8(a, b)
|
||||
|
16
external/bsd/llvm/dist/clang/INPUTS/macro_pounder_obj.c
vendored
Normal file
16
external/bsd/llvm/dist/clang/INPUTS/macro_pounder_obj.c
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
|
||||
// This pounds on macro expansion for performance reasons. This is currently
|
||||
// heavily constrained by darwin's malloc.
|
||||
|
||||
// Object-like expansions
|
||||
#define A0 a b
|
||||
#define A1 A0 A0 A0 A0 A0 A0
|
||||
#define A2 A1 A1 A1 A1 A1 A1
|
||||
#define A3 A2 A2 A2 A2 A2 A2
|
||||
#define A4 A3 A3 A3 A3 A3 A3
|
||||
#define A5 A4 A4 A4 A4 A4 A4
|
||||
#define A6 A5 A5 A5 A5 A5 A5
|
||||
#define A7 A6 A6 A6 A6 A6 A6
|
||||
#define A8 A7 A7 A7 A7 A7 A7
|
||||
|
||||
A8
|
47
external/bsd/llvm/dist/clang/INPUTS/stpcpy-test.c
vendored
Normal file
47
external/bsd/llvm/dist/clang/INPUTS/stpcpy-test.c
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
#define __extension__
|
||||
|
||||
#define __stpcpy(dest, src) (__extension__ (__builtin_constant_p (src) ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 ? __stpcpy_small (dest, __stpcpy_args (src), strlen (src) + 1) : ((char *) __mempcpy (dest, src, strlen (src) + 1) - 1)) : __stpcpy (dest, src)))
|
||||
#define stpcpy(dest, src) __stpcpy (dest, src)
|
||||
#define __stpcpy_args(src) __extension__ __STRING2_SMALL_GET16 (src, 0), __extension__ __STRING2_SMALL_GET16 (src, 4), __extension__ __STRING2_SMALL_GET32 (src, 0), __extension__ __STRING2_SMALL_GET32 (src, 4)
|
||||
|
||||
#define __mempcpy(dest, src, n) (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) && __string2_1bptr_p (src) && n <= 8 ? __mempcpy_small (dest, __mempcpy_args (src), n) : __mempcpy (dest, src, n)))
|
||||
#define mempcpy(dest, src, n) __mempcpy (dest, src, n)
|
||||
#define __mempcpy_args(src) ((char *) (src))[0], ((char *) (src))[2], ((char *) (src))[4], ((char *) (src))[6], __extension__ __STRING2_SMALL_GET16 (src, 0), __extension__ __STRING2_SMALL_GET16 (src, 4), __extension__ __STRING2_SMALL_GET32 (src, 0), __extension__ __STRING2_SMALL_GET32 (src, 4)
|
||||
|
||||
#define __STRING2_SMALL_GET16(src, idx) (((__const unsigned char *) (__const char *) (src))[idx + 1] << 8 | ((__const unsigned char *) (__const char *) (src))[idx])
|
||||
|
||||
#define __STRING2_SMALL_GET32(src, idx) (((((__const unsigned char *) (__const char *) (src))[idx + 3] << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 2]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx + 1]) << 8 | ((__const unsigned char *) (__const char *) (src))[idx])
|
||||
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
||||
stpcpy (stpcpy (stpcpy (stpcpy (a, b), c), d), e)
|
49
external/bsd/llvm/dist/clang/INSTALL.txt
vendored
Normal file
49
external/bsd/llvm/dist/clang/INSTALL.txt
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
// Clang Installation Instructions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
These instructions describe how to build and install Clang.
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Step 1: Organization
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
Clang is designed to be built as part of an LLVM build. Assuming that the LLVM
|
||||
source code is located at $LLVM_SRC_ROOT, then the clang source code should be
|
||||
installed as:
|
||||
|
||||
$LLVM_SRC_ROOT/tools/clang
|
||||
|
||||
The directory is not required to be called clang, but doing so will allow the
|
||||
LLVM build system to automatically recognize it and build it along with LLVM.
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Step 2: Configure and Build LLVM
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
Configure and build your copy of LLVM (see $LLVM_SRC_ROOT/GettingStarted.html
|
||||
for more information).
|
||||
|
||||
Assuming you installed clang at $LLVM_SRC_ROOT/tools/clang then Clang will
|
||||
automatically be built with LLVM. Otherwise, run 'make' in the Clang source
|
||||
directory to build Clang.
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Step 3: (Optional) Verify Your Build
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
It is a good idea to run the Clang tests to make sure your build works
|
||||
correctly. From inside the Clang build directory, run 'make test' to run the
|
||||
tests.
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Step 4: Install Clang
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
From inside the Clang build directory, run 'make install' to install the Clang
|
||||
compiler and header files into the prefix directory selected when LLVM was
|
||||
configured.
|
||||
|
||||
The Clang compiler is available as 'clang' and 'clang++'. It supports a gcc like command line
|
||||
interface. See the man page for clang (installed into $prefix/share/man/man1)
|
||||
for more information.
|
63
external/bsd/llvm/dist/clang/LICENSE.TXT
vendored
Normal file
63
external/bsd/llvm/dist/clang/LICENSE.TXT
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
==============================================================================
|
||||
LLVM Release License
|
||||
==============================================================================
|
||||
University of Illinois/NCSA
|
||||
Open Source License
|
||||
|
||||
Copyright (c) 2007-2013 University of Illinois at Urbana-Champaign.
|
||||
All rights reserved.
|
||||
|
||||
Developed by:
|
||||
|
||||
LLVM Team
|
||||
|
||||
University of Illinois at Urbana-Champaign
|
||||
|
||||
http://llvm.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal with
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimers.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimers in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the names of the LLVM Team, University of Illinois at
|
||||
Urbana-Champaign, nor the names of its contributors may be used to
|
||||
endorse or promote products derived from this Software without specific
|
||||
prior written permission.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
|
||||
SOFTWARE.
|
||||
|
||||
==============================================================================
|
||||
The LLVM software contains code written by third parties. Such software will
|
||||
have its own individual LICENSE.TXT file in the directory in which it appears.
|
||||
This file will describe the copyrights, license, and restrictions which apply
|
||||
to that code.
|
||||
|
||||
The disclaimer of warranty in the University of Illinois Open Source License
|
||||
applies to all code in the LLVM Distribution, and nothing in any of the
|
||||
other licenses gives permission to use the names of the LLVM Team or the
|
||||
University of Illinois to endorse or promote products derived from this
|
||||
Software.
|
||||
|
||||
The following pieces of software have additional or alternate copyrights,
|
||||
licenses, and/or restrictions:
|
||||
|
||||
Program Directory
|
||||
------- ---------
|
||||
<none yet>
|
||||
|
115
external/bsd/llvm/dist/clang/Makefile
vendored
Normal file
115
external/bsd/llvm/dist/clang/Makefile
vendored
Normal file
|
@ -0,0 +1,115 @@
|
|||
##===- Makefile --------------------------------------------*- Makefile -*-===##
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
##===----------------------------------------------------------------------===##
|
||||
|
||||
# If CLANG_LEVEL is not set, then we are the top-level Makefile. Otherwise, we
|
||||
# are being included from a subdirectory makefile.
|
||||
|
||||
ifndef CLANG_LEVEL
|
||||
|
||||
IS_TOP_LEVEL := 1
|
||||
CLANG_LEVEL := .
|
||||
DIRS := utils/TableGen include lib tools runtime docs unittests
|
||||
|
||||
PARALLEL_DIRS :=
|
||||
|
||||
ifeq ($(BUILD_EXAMPLES),1)
|
||||
PARALLEL_DIRS += examples
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(MAKECMDGOALS),libs-only)
|
||||
DIRS := $(filter-out tools docs, $(DIRS))
|
||||
OPTIONAL_DIRS :=
|
||||
endif
|
||||
ifeq ($(BUILD_CLANG_ONLY),YES)
|
||||
DIRS := $(filter-out docs unittests, $(DIRS))
|
||||
OPTIONAL_DIRS :=
|
||||
endif
|
||||
|
||||
###
|
||||
# Common Makefile code, shared by all Clang Makefiles.
|
||||
|
||||
# Set LLVM source root level.
|
||||
LEVEL := $(CLANG_LEVEL)/../..
|
||||
|
||||
# Include LLVM common makefile.
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
ifneq ($(ENABLE_DOCS),1)
|
||||
DIRS := $(filter-out docs, $(DIRS))
|
||||
endif
|
||||
|
||||
# Set common Clang build flags.
|
||||
CPP.Flags += -I$(PROJ_SRC_DIR)/$(CLANG_LEVEL)/include -I$(PROJ_OBJ_DIR)/$(CLANG_LEVEL)/include
|
||||
ifdef CLANG_VENDOR
|
||||
CPP.Flags += -DCLANG_VENDOR='"$(CLANG_VENDOR) "'
|
||||
endif
|
||||
ifdef CLANG_REPOSITORY_STRING
|
||||
CPP.Flags += -DCLANG_REPOSITORY_STRING='"$(CLANG_REPOSITORY_STRING)"'
|
||||
endif
|
||||
|
||||
# Disable -fstrict-aliasing. Darwin disables it by default (and LLVM doesn't
|
||||
# work with it enabled with GCC), Clang/llvm-gcc don't support it yet, and newer
|
||||
# GCC's have false positive warnings with it on Linux (which prove a pain to
|
||||
# fix). For example:
|
||||
# http://gcc.gnu.org/PR41874
|
||||
# http://gcc.gnu.org/PR41838
|
||||
#
|
||||
# We can revisit this when LLVM/Clang support it.
|
||||
CXX.Flags += -fno-strict-aliasing
|
||||
|
||||
# Set up Clang's tblgen.
|
||||
ifndef CLANG_TBLGEN
|
||||
ifeq ($(LLVM_CROSS_COMPILING),1)
|
||||
CLANG_TBLGEN := $(BuildLLVMToolDir)/clang-tblgen$(BUILD_EXEEXT)
|
||||
else
|
||||
CLANG_TBLGEN := $(LLVMToolDir)/clang-tblgen$(EXEEXT)
|
||||
endif
|
||||
endif
|
||||
ClangTableGen = $(CLANG_TBLGEN) $(TableGen.Flags)
|
||||
|
||||
###
|
||||
# Clang Top Level specific stuff.
|
||||
|
||||
ifeq ($(IS_TOP_LEVEL),1)
|
||||
|
||||
ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT))
|
||||
$(RecursiveTargets)::
|
||||
$(Verb) for dir in test unittests; do \
|
||||
if [ -f $(PROJ_SRC_DIR)/$${dir}/Makefile ] && [ ! -f $${dir}/Makefile ]; then \
|
||||
$(MKDIR) $${dir}; \
|
||||
$(CP) $(PROJ_SRC_DIR)/$${dir}/Makefile $${dir}/Makefile; \
|
||||
fi \
|
||||
done
|
||||
endif
|
||||
|
||||
test::
|
||||
@ $(MAKE) -C test
|
||||
|
||||
report::
|
||||
@ $(MAKE) -C test report
|
||||
|
||||
clean::
|
||||
@ $(MAKE) -C test clean
|
||||
|
||||
libs-only: all
|
||||
|
||||
tags::
|
||||
$(Verb) etags `find . -type f -name '*.h' -or -name '*.cpp' | \
|
||||
grep -v /lib/Headers | grep -v /test/`
|
||||
|
||||
cscope.files:
|
||||
find tools lib include -name '*.cpp' \
|
||||
-or -name '*.def' \
|
||||
-or -name '*.td' \
|
||||
-or -name '*.h' > cscope.files
|
||||
|
||||
.PHONY: test report clean cscope.files
|
||||
|
||||
endif
|
5
external/bsd/llvm/dist/clang/ModuleInfo.txt
vendored
Normal file
5
external/bsd/llvm/dist/clang/ModuleInfo.txt
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
# This file provides information for llvm-top
|
||||
DepModule: llvm
|
||||
ConfigCmd:
|
||||
ConfigTest:
|
||||
BuildCmd:
|
111
external/bsd/llvm/dist/clang/NOTES.txt
vendored
Normal file
111
external/bsd/llvm/dist/clang/NOTES.txt
vendored
Normal file
|
@ -0,0 +1,111 @@
|
|||
//===---------------------------------------------------------------------===//
|
||||
// Random Notes
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
To time GCC preprocessing speed without output, use:
|
||||
"time gcc -MM file"
|
||||
This is similar to -Eonly.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Creating and using a PTH file for performance measurement (use a release build).
|
||||
|
||||
$ clang -ccc-pch-is-pth -x objective-c-header INPUTS/Cocoa_h.m -o /tmp/tokencache
|
||||
$ clang -cc1 -token-cache /tmp/tokencache INPUTS/Cocoa_h.m
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
C++ Template Instantiation benchmark:
|
||||
http://users.rcn.com/abrahams/instantiation_speed/index.html
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
TODO: File Manager Speedup:
|
||||
|
||||
We currently do a lot of stat'ing for files that don't exist, particularly
|
||||
when lots of -I paths exist (e.g. see the <iostream> example, check for
|
||||
failures in stat in FileManager::getFile). It would be far better to make
|
||||
the following changes:
|
||||
1. FileEntry contains a sys::Path instead of a std::string for Name.
|
||||
2. sys::Path contains timestamp and size, lazily computed. Eliminate from
|
||||
FileEntry.
|
||||
3. File UIDs are created on request, not when files are opened.
|
||||
These changes make it possible to efficiently have FileEntry objects for
|
||||
files that exist on the file system, but have not been used yet.
|
||||
|
||||
Once this is done:
|
||||
1. DirectoryEntry gets a boolean value "has read entries". When false, not
|
||||
all entries in the directory are in the file mgr, when true, they are.
|
||||
2. Instead of stat'ing the file in FileManager::getFile, check to see if
|
||||
the dir has been read. If so, fail immediately, if not, read the dir,
|
||||
then retry.
|
||||
3. Reading the dir uses the getdirentries syscall, creating a FileEntry
|
||||
for all files found.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
// Specifying targets: -triple and -arch
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
The clang supports "-triple" and "-arch" options. At most one -triple and one
|
||||
-arch option may be specified. Both are optional.
|
||||
|
||||
The "selection of target" behavior is defined as follows:
|
||||
|
||||
(1) If the user does not specify -triple, we default to the host triple.
|
||||
(2) If the user specifies a -arch, that overrides the arch in the host or
|
||||
specified triple.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
|
||||
verifyInputConstraint and verifyOutputConstraint should not return bool.
|
||||
|
||||
Instead we should return something like:
|
||||
|
||||
enum VerifyConstraintResult {
|
||||
Valid,
|
||||
|
||||
// Output only
|
||||
OutputOperandConstraintLacksEqualsCharacter,
|
||||
MatchingConstraintNotValidInOutputOperand,
|
||||
|
||||
// Input only
|
||||
InputOperandConstraintContainsEqualsCharacter,
|
||||
MatchingConstraintReferencesInvalidOperandNumber,
|
||||
|
||||
// Both
|
||||
PercentConstraintUsedWithLastOperand
|
||||
};
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Blocks should not capture variables that are only used in dead code.
|
||||
|
||||
The rule that we came up with is that blocks are required to capture
|
||||
variables if they're referenced in evaluated code, even if that code
|
||||
doesn't actually rely on the value of the captured variable.
|
||||
|
||||
For example, this requires a capture:
|
||||
(void) var;
|
||||
But this does not:
|
||||
if (false) puts(var);
|
||||
|
||||
Summary of <rdar://problem/9851835>: if we implement this, we should
|
||||
warn about non-POD variables that are referenced but not captured, but
|
||||
only if the non-reachability is not due to macro or template
|
||||
metaprogramming.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
We can still apply a modified version of the constructor/destructor
|
||||
delegation optimization in cases of virtual inheritance where:
|
||||
- there is no function-try-block,
|
||||
- the constructor signature is not variadic, and
|
||||
- the parameter variables can safely be copied and repassed
|
||||
to the base constructor because either
|
||||
- they have not had their addresses taken by the vbase initializers or
|
||||
- they were passed indirectly.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
26
external/bsd/llvm/dist/clang/README.txt
vendored
Normal file
26
external/bsd/llvm/dist/clang/README.txt
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
// C Language Family Front-end
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
Welcome to Clang. This is a compiler front-end for the C family of languages
|
||||
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
|
||||
compiler infrastructure project.
|
||||
|
||||
Unlike many other compiler frontends, Clang is useful for a number of things
|
||||
beyond just compiling code: we intend for Clang to be host to a number of
|
||||
different source level tools. One example of this is the Clang Static Analyzer.
|
||||
|
||||
If you're interested in more (including how to build Clang) it is best to read
|
||||
the relevant web sites. Here are some pointers:
|
||||
|
||||
Information on Clang: http://clang.llvm.org/
|
||||
Building and using Clang: http://clang.llvm.org/get_started.html
|
||||
Clang Static Analyzer: http://clang-analyzer.llvm.org/
|
||||
Information on the LLVM project: http://llvm.org/
|
||||
|
||||
If you have questions or comments about Clang, a great place to discuss them is
|
||||
on the Clang development mailing list:
|
||||
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
|
||||
|
||||
If you find a bug in Clang, please file it in the LLVM bug tracker:
|
||||
http://llvm.org/bugs/
|
17
external/bsd/llvm/dist/clang/bindings/python/README.txt
vendored
Normal file
17
external/bsd/llvm/dist/clang/bindings/python/README.txt
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
// Clang Python Bindings
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
This directory implements Python bindings for Clang.
|
||||
|
||||
You may need to alter LD_LIBRARY_PATH so that the Clang library can be
|
||||
found. The unit tests are designed to be run with 'nosetests'. For example:
|
||||
--
|
||||
$ env PYTHONPATH=$(echo ~/llvm/tools/clang/bindings/python/) \
|
||||
LD_LIBRARY_PATH=$(llvm-config --libdir) \
|
||||
nosetests -v
|
||||
tests.cindex.test_index.test_create ... ok
|
||||
...
|
||||
|
||||
OK
|
||||
--
|
24
external/bsd/llvm/dist/clang/bindings/python/clang/__init__.py
vendored
Normal file
24
external/bsd/llvm/dist/clang/bindings/python/clang/__init__.py
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
#===- __init__.py - Clang Python Bindings --------------------*- python -*--===#
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
#===------------------------------------------------------------------------===#
|
||||
|
||||
r"""
|
||||
Clang Library Bindings
|
||||
======================
|
||||
|
||||
This package provides access to the Clang compiler and libraries.
|
||||
|
||||
The available modules are:
|
||||
|
||||
cindex
|
||||
|
||||
Bindings for the Clang indexing library.
|
||||
"""
|
||||
|
||||
__all__ = ['cindex']
|
||||
|
3414
external/bsd/llvm/dist/clang/bindings/python/clang/cindex.py
vendored
Normal file
3414
external/bsd/llvm/dist/clang/bindings/python/clang/cindex.py
vendored
Normal file
File diff suppressed because it is too large
Load diff
34
external/bsd/llvm/dist/clang/bindings/python/clang/enumerations.py
vendored
Normal file
34
external/bsd/llvm/dist/clang/bindings/python/clang/enumerations.py
vendored
Normal file
|
@ -0,0 +1,34 @@
|
|||
#===- enumerations.py - Python Enumerations ------------------*- python -*--===#
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
#===------------------------------------------------------------------------===#
|
||||
|
||||
"""
|
||||
Clang Enumerations
|
||||
==================
|
||||
|
||||
This module provides static definitions of enumerations that exist in libclang.
|
||||
|
||||
Enumerations are typically defined as a list of tuples. The exported values are
|
||||
typically munged into other types or classes at module load time.
|
||||
|
||||
All enumerations are centrally defined in this file so they are all grouped
|
||||
together and easier to audit. And, maybe even one day this file will be
|
||||
automatically generated by scanning the libclang headers!
|
||||
"""
|
||||
|
||||
# Maps to CXTokenKind. Note that libclang maintains a separate set of token
|
||||
# enumerations from the C++ API.
|
||||
TokenKinds = [
|
||||
('PUNCTUATION', 0),
|
||||
('KEYWORD', 1),
|
||||
('IDENTIFIER', 2),
|
||||
('LITERAL', 3),
|
||||
('COMMENT', 4),
|
||||
]
|
||||
|
||||
__all__ = ['TokenKinds']
|
87
external/bsd/llvm/dist/clang/bindings/python/examples/cindex/cindex-dump.py
vendored
Normal file
87
external/bsd/llvm/dist/clang/bindings/python/examples/cindex/cindex-dump.py
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
#===- cindex-dump.py - cindex/Python Source Dump -------------*- python -*--===#
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
#===------------------------------------------------------------------------===#
|
||||
|
||||
"""
|
||||
A simple command line tool for dumping a source file using the Clang Index
|
||||
Library.
|
||||
"""
|
||||
|
||||
def get_diag_info(diag):
|
||||
return { 'severity' : diag.severity,
|
||||
'location' : diag.location,
|
||||
'spelling' : diag.spelling,
|
||||
'ranges' : diag.ranges,
|
||||
'fixits' : diag.fixits }
|
||||
|
||||
def get_cursor_id(cursor, cursor_list = []):
|
||||
if not opts.showIDs:
|
||||
return None
|
||||
|
||||
if cursor is None:
|
||||
return None
|
||||
|
||||
# FIXME: This is really slow. It would be nice if the index API exposed
|
||||
# something that let us hash cursors.
|
||||
for i,c in enumerate(cursor_list):
|
||||
if cursor == c:
|
||||
return i
|
||||
cursor_list.append(cursor)
|
||||
return len(cursor_list) - 1
|
||||
|
||||
def get_info(node, depth=0):
|
||||
if opts.maxDepth is not None and depth >= opts.maxDepth:
|
||||
children = None
|
||||
else:
|
||||
children = [get_info(c, depth+1)
|
||||
for c in node.get_children()]
|
||||
return { 'id' : get_cursor_id(node),
|
||||
'kind' : node.kind,
|
||||
'usr' : node.get_usr(),
|
||||
'spelling' : node.spelling,
|
||||
'location' : node.location,
|
||||
'extent.start' : node.extent.start,
|
||||
'extent.end' : node.extent.end,
|
||||
'is_definition' : node.is_definition(),
|
||||
'definition id' : get_cursor_id(node.get_definition()),
|
||||
'children' : children }
|
||||
|
||||
def main():
|
||||
from clang.cindex import Index
|
||||
from pprint import pprint
|
||||
|
||||
from optparse import OptionParser, OptionGroup
|
||||
|
||||
global opts
|
||||
|
||||
parser = OptionParser("usage: %prog [options] {filename} [clang-args*]")
|
||||
parser.add_option("", "--show-ids", dest="showIDs",
|
||||
help="Don't compute cursor IDs (very slow)",
|
||||
default=False)
|
||||
parser.add_option("", "--max-depth", dest="maxDepth",
|
||||
help="Limit cursor expansion to depth N",
|
||||
metavar="N", type=int, default=None)
|
||||
parser.disable_interspersed_args()
|
||||
(opts, args) = parser.parse_args()
|
||||
|
||||
if len(args) == 0:
|
||||
parser.error('invalid number arguments')
|
||||
|
||||
index = Index.create()
|
||||
tu = index.parse(None, args)
|
||||
if not tu:
|
||||
parser.error("unable to load input")
|
||||
|
||||
pprint(('diags', map(get_diag_info, tu.diagnostics)))
|
||||
pprint(('nodes', get_info(tu.cursor)))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
58
external/bsd/llvm/dist/clang/bindings/python/examples/cindex/cindex-includes.py
vendored
Normal file
58
external/bsd/llvm/dist/clang/bindings/python/examples/cindex/cindex-includes.py
vendored
Normal file
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
#===- cindex-includes.py - cindex/Python Inclusion Graph -----*- python -*--===#
|
||||
#
|
||||
# The LLVM Compiler Infrastructure
|
||||
#
|
||||
# This file is distributed under the University of Illinois Open Source
|
||||
# License. See LICENSE.TXT for details.
|
||||
#
|
||||
#===------------------------------------------------------------------------===#
|
||||
|
||||
"""
|
||||
A simple command line tool for dumping a Graphviz description (dot) that
|
||||
describes include dependencies.
|
||||
"""
|
||||
|
||||
def main():
|
||||
import sys
|
||||
from clang.cindex import Index
|
||||
|
||||
from optparse import OptionParser, OptionGroup
|
||||
|
||||
parser = OptionParser("usage: %prog [options] {filename} [clang-args*]")
|
||||
parser.disable_interspersed_args()
|
||||
(opts, args) = parser.parse_args()
|
||||
if len(args) == 0:
|
||||
parser.error('invalid number arguments')
|
||||
|
||||
# FIXME: Add an output file option
|
||||
out = sys.stdout
|
||||
|
||||
index = Index.create()
|
||||
tu = index.parse(None, args)
|
||||
if not tu:
|
||||
parser.error("unable to load input")
|
||||
|
||||
# A helper function for generating the node name.
|
||||
def name(f):
|
||||
if f:
|
||||
return "\"" + f.name + "\""
|
||||
|
||||
# Generate the include graph
|
||||
out.write("digraph G {\n")
|
||||
for i in tu.get_includes():
|
||||
line = " ";
|
||||
if i.is_input_file:
|
||||
# Always write the input file as a node just in case it doesn't
|
||||
# actually include anything. This would generate a 1 node graph.
|
||||
line += name(i.include)
|
||||
else:
|
||||
line += '%s->%s' % (name(i.source), name(i.include))
|
||||
line += "\n";
|
||||
out.write(line)
|
||||
out.write("}\n")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
0
external/bsd/llvm/dist/clang/bindings/python/tests/__init__.py
vendored
Normal file
0
external/bsd/llvm/dist/clang/bindings/python/tests/__init__.py
vendored
Normal file
17
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json
vendored
Normal file
17
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/compile_commands.json
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
[
|
||||
{
|
||||
"directory": "/home/john.doe/MyProject",
|
||||
"command": "clang++ -o project.o -c /home/john.doe/MyProject/project.cpp",
|
||||
"file": "/home/john.doe/MyProject/project.cpp"
|
||||
},
|
||||
{
|
||||
"directory": "/home/john.doe/MyProjectA",
|
||||
"command": "clang++ -o project2.o -c /home/john.doe/MyProject/project2.cpp",
|
||||
"file": "/home/john.doe/MyProject/project2.cpp"
|
||||
},
|
||||
{
|
||||
"directory": "/home/john.doe/MyProjectB",
|
||||
"command": "clang++ -DFEATURE=1 -o project2-feature.o -c /home/john.doe/MyProject/project2.cpp",
|
||||
"file": "/home/john.doe/MyProject/project2.cpp"
|
||||
}
|
||||
]
|
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header1.h
vendored
Normal file
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header1.h
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifndef HEADER1
|
||||
#define HEADER1
|
||||
|
||||
#include "header3.h"
|
||||
|
||||
#endif
|
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header2.h
vendored
Normal file
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header2.h
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifndef HEADER2
|
||||
#define HEADER2
|
||||
|
||||
#include "header3.h"
|
||||
|
||||
#endif
|
3
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header3.h
vendored
Normal file
3
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/header3.h
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
// Not a guarded header!
|
||||
|
||||
void f();
|
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/hello.cpp
vendored
Normal file
6
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/hello.cpp
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include "stdio.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
printf("hello world\n");
|
||||
return 0;
|
||||
}
|
5
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/include.cpp
vendored
Normal file
5
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/include.cpp
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
#include "header1.h"
|
||||
#include "header2.h"
|
||||
#include "header1.h"
|
||||
|
||||
int main() { }
|
2
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c
vendored
Normal file
2
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/INPUTS/parse_arguments.c
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
int DECL_ONE = 1;
|
||||
int DECL_TWO = 2;
|
0
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/__init__.py
vendored
Normal file
0
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/__init__.py
vendored
Normal file
89
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cdb.py
vendored
Normal file
89
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cdb.py
vendored
Normal file
|
@ -0,0 +1,89 @@
|
|||
from clang.cindex import CompilationDatabase
|
||||
from clang.cindex import CompilationDatabaseError
|
||||
from clang.cindex import CompileCommands
|
||||
from clang.cindex import CompileCommand
|
||||
import os
|
||||
import gc
|
||||
|
||||
kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
|
||||
|
||||
def test_create_fail():
|
||||
"""Check we fail loading a database with an assertion"""
|
||||
path = os.path.dirname(__file__)
|
||||
try:
|
||||
cdb = CompilationDatabase.fromDirectory(path)
|
||||
except CompilationDatabaseError as e:
|
||||
assert e.cdb_error == CompilationDatabaseError.ERROR_CANNOTLOADDATABASE
|
||||
else:
|
||||
assert False
|
||||
|
||||
def test_create():
|
||||
"""Check we can load a compilation database"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
|
||||
def test_lookup_fail():
|
||||
"""Check file lookup failure"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
assert cdb.getCompileCommands('file_do_not_exist.cpp') == None
|
||||
|
||||
def test_lookup_succeed():
|
||||
"""Check we get some results if the file exists in the db"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
|
||||
assert len(cmds) != 0
|
||||
|
||||
def test_1_compilecommand():
|
||||
"""Check file with single compile command"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
|
||||
assert len(cmds) == 1
|
||||
assert cmds[0].directory == '/home/john.doe/MyProject'
|
||||
expected = [ 'clang++', '-o', 'project.o', '-c',
|
||||
'/home/john.doe/MyProject/project.cpp']
|
||||
for arg, exp in zip(cmds[0].arguments, expected):
|
||||
assert arg == exp
|
||||
|
||||
def test_2_compilecommand():
|
||||
"""Check file with 2 compile commands"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project2.cpp')
|
||||
assert len(cmds) == 2
|
||||
expected = [
|
||||
{ 'wd': '/home/john.doe/MyProjectA',
|
||||
'line': ['clang++', '-o', 'project2.o', '-c',
|
||||
'/home/john.doe/MyProject/project2.cpp']},
|
||||
{ 'wd': '/home/john.doe/MyProjectB',
|
||||
'line': ['clang++', '-DFEATURE=1', '-o', 'project2-feature.o', '-c',
|
||||
'/home/john.doe/MyProject/project2.cpp']}
|
||||
]
|
||||
for i in range(len(cmds)):
|
||||
assert cmds[i].directory == expected[i]['wd']
|
||||
for arg, exp in zip(cmds[i].arguments, expected[i]['line']):
|
||||
assert arg == exp
|
||||
|
||||
def test_compilecommand_iterator_stops():
|
||||
"""Check that iterator stops after the correct number of elements"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
count = 0
|
||||
for cmd in cdb.getCompileCommands('/home/john.doe/MyProject/project2.cpp'):
|
||||
count += 1
|
||||
assert count <= 2
|
||||
|
||||
def test_compilationDB_references():
|
||||
"""Ensure CompilationsCommands are independent of the database"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
|
||||
del cdb
|
||||
gc.collect()
|
||||
workingdir = cmds[0].directory
|
||||
|
||||
def test_compilationCommands_references():
|
||||
"""Ensure CompilationsCommand keeps a reference to CompilationCommands"""
|
||||
cdb = CompilationDatabase.fromDirectory(kInputsDir)
|
||||
cmds = cdb.getCompileCommands('/home/john.doe/MyProject/project.cpp')
|
||||
del cdb
|
||||
cmd0 = cmds[0]
|
||||
del cmds
|
||||
gc.collect()
|
||||
workingdir = cmd0.directory
|
||||
|
75
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_code_completion.py
vendored
Normal file
75
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_code_completion.py
vendored
Normal file
|
@ -0,0 +1,75 @@
|
|||
from clang.cindex import TranslationUnit
|
||||
|
||||
def check_completion_results(cr, expected):
|
||||
assert cr is not None
|
||||
assert len(cr.diagnostics) == 0
|
||||
|
||||
completions = [str(c) for c in cr.results]
|
||||
|
||||
for c in expected:
|
||||
assert c in completions
|
||||
|
||||
def test_code_complete():
|
||||
files = [('fake.c', """
|
||||
/// Aaa.
|
||||
int test1;
|
||||
|
||||
/// Bbb.
|
||||
void test2(void);
|
||||
|
||||
void f() {
|
||||
|
||||
}
|
||||
""")]
|
||||
|
||||
tu = TranslationUnit.from_source('fake.c', ['-std=c99'], unsaved_files=files,
|
||||
options=TranslationUnit.PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION)
|
||||
|
||||
cr = tu.codeComplete('fake.c', 9, 1, unsaved_files=files, include_brief_comments=True)
|
||||
|
||||
expected = [
|
||||
"{'int', ResultType} | {'test1', TypedText} || Priority: 50 || Availability: Available || Brief comment: Aaa.",
|
||||
"{'void', ResultType} | {'test2', TypedText} | {'(', LeftParen} | {')', RightParen} || Priority: 50 || Availability: Available || Brief comment: Bbb.",
|
||||
"{'return', TypedText} || Priority: 40 || Availability: Available || Brief comment: None"
|
||||
]
|
||||
check_completion_results(cr, expected)
|
||||
|
||||
def test_code_complete_availability():
|
||||
files = [('fake.cpp', """
|
||||
class P {
|
||||
protected:
|
||||
int member;
|
||||
};
|
||||
|
||||
class Q : public P {
|
||||
public:
|
||||
using P::member;
|
||||
};
|
||||
|
||||
void f(P x, Q y) {
|
||||
x.; // member is inaccessible
|
||||
y.; // member is accessible
|
||||
}
|
||||
""")]
|
||||
|
||||
tu = TranslationUnit.from_source('fake.cpp', ['-std=c++98'], unsaved_files=files)
|
||||
|
||||
cr = tu.codeComplete('fake.cpp', 12, 5, unsaved_files=files)
|
||||
|
||||
expected = [
|
||||
"{'const', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
|
||||
"{'volatile', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
|
||||
"{'operator', TypedText} || Priority: 40 || Availability: Available || Brief comment: None",
|
||||
"{'P', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None",
|
||||
"{'Q', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None"
|
||||
]
|
||||
check_completion_results(cr, expected)
|
||||
|
||||
cr = tu.codeComplete('fake.cpp', 13, 5, unsaved_files=files)
|
||||
expected = [
|
||||
"{'P', TypedText} | {'::', Text} || Priority: 75 || Availability: Available || Brief comment: None",
|
||||
"{'P &', ResultType} | {'operator=', TypedText} | {'(', LeftParen} | {'const P &', Placeholder} | {')', RightParen} || Priority: 34 || Availability: Available || Brief comment: None",
|
||||
"{'int', ResultType} | {'member', TypedText} || Priority: 35 || Availability: NotAccessible || Brief comment: None",
|
||||
"{'void', ResultType} | {'~P', TypedText} | {'(', LeftParen} | {')', RightParen} || Priority: 34 || Availability: Available || Brief comment: None"
|
||||
]
|
||||
check_completion_results(cr, expected)
|
40
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_comment.py
vendored
Normal file
40
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_comment.py
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
from clang.cindex import TranslationUnit
|
||||
from tests.cindex.util import get_cursor
|
||||
|
||||
def test_comment():
|
||||
files = [('fake.c', """
|
||||
/// Aaa.
|
||||
int test1;
|
||||
|
||||
/// Bbb.
|
||||
/// x
|
||||
void test2(void);
|
||||
|
||||
void f() {
|
||||
|
||||
}
|
||||
""")]
|
||||
# make a comment-aware TU
|
||||
tu = TranslationUnit.from_source('fake.c', ['-std=c99'], unsaved_files=files,
|
||||
options=TranslationUnit.PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION)
|
||||
test1 = get_cursor(tu, 'test1')
|
||||
assert test1 is not None, "Could not find test1."
|
||||
assert test1.type.is_pod()
|
||||
raw = test1.raw_comment
|
||||
brief = test1.brief_comment
|
||||
assert raw == """/// Aaa."""
|
||||
assert brief == """Aaa."""
|
||||
|
||||
test2 = get_cursor(tu, 'test2')
|
||||
raw = test2.raw_comment
|
||||
brief = test2.brief_comment
|
||||
assert raw == """/// Bbb.\n/// x"""
|
||||
assert brief == """Bbb. x"""
|
||||
|
||||
f = get_cursor(tu, 'f')
|
||||
raw = f.raw_comment
|
||||
brief = f.brief_comment
|
||||
assert raw is None
|
||||
assert brief is None
|
||||
|
||||
|
261
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cursor.py
vendored
Normal file
261
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cursor.py
vendored
Normal file
|
@ -0,0 +1,261 @@
|
|||
import gc
|
||||
|
||||
from clang.cindex import CursorKind
|
||||
from clang.cindex import TranslationUnit
|
||||
from clang.cindex import TypeKind
|
||||
from .util import get_cursor
|
||||
from .util import get_cursors
|
||||
from .util import get_tu
|
||||
|
||||
kInput = """\
|
||||
// FIXME: Find nicer way to drop builtins and other cruft.
|
||||
int start_decl;
|
||||
|
||||
struct s0 {
|
||||
int a;
|
||||
int b;
|
||||
};
|
||||
|
||||
struct s1;
|
||||
|
||||
void f0(int a0, int a1) {
|
||||
int l0, l1;
|
||||
|
||||
if (a0)
|
||||
return;
|
||||
|
||||
for (;;) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
def test_get_children():
|
||||
tu = get_tu(kInput)
|
||||
|
||||
# Skip until past start_decl.
|
||||
it = tu.cursor.get_children()
|
||||
while it.next().spelling != 'start_decl':
|
||||
pass
|
||||
|
||||
tu_nodes = list(it)
|
||||
|
||||
assert len(tu_nodes) == 3
|
||||
for cursor in tu_nodes:
|
||||
assert cursor.translation_unit is not None
|
||||
|
||||
assert tu_nodes[0] != tu_nodes[1]
|
||||
assert tu_nodes[0].kind == CursorKind.STRUCT_DECL
|
||||
assert tu_nodes[0].spelling == 's0'
|
||||
assert tu_nodes[0].is_definition() == True
|
||||
assert tu_nodes[0].location.file.name == 't.c'
|
||||
assert tu_nodes[0].location.line == 4
|
||||
assert tu_nodes[0].location.column == 8
|
||||
assert tu_nodes[0].hash > 0
|
||||
assert tu_nodes[0].translation_unit is not None
|
||||
|
||||
s0_nodes = list(tu_nodes[0].get_children())
|
||||
assert len(s0_nodes) == 2
|
||||
assert s0_nodes[0].kind == CursorKind.FIELD_DECL
|
||||
assert s0_nodes[0].spelling == 'a'
|
||||
assert s0_nodes[0].type.kind == TypeKind.INT
|
||||
assert s0_nodes[1].kind == CursorKind.FIELD_DECL
|
||||
assert s0_nodes[1].spelling == 'b'
|
||||
assert s0_nodes[1].type.kind == TypeKind.INT
|
||||
|
||||
assert tu_nodes[1].kind == CursorKind.STRUCT_DECL
|
||||
assert tu_nodes[1].spelling == 's1'
|
||||
assert tu_nodes[1].displayname == 's1'
|
||||
assert tu_nodes[1].is_definition() == False
|
||||
|
||||
assert tu_nodes[2].kind == CursorKind.FUNCTION_DECL
|
||||
assert tu_nodes[2].spelling == 'f0'
|
||||
assert tu_nodes[2].displayname == 'f0(int, int)'
|
||||
assert tu_nodes[2].is_definition() == True
|
||||
|
||||
def test_references():
|
||||
"""Ensure that references to TranslationUnit are kept."""
|
||||
tu = get_tu('int x;')
|
||||
cursors = list(tu.cursor.get_children())
|
||||
assert len(cursors) > 0
|
||||
|
||||
cursor = cursors[0]
|
||||
assert isinstance(cursor.translation_unit, TranslationUnit)
|
||||
|
||||
# Delete reference to TU and perform a full GC.
|
||||
del tu
|
||||
gc.collect()
|
||||
assert isinstance(cursor.translation_unit, TranslationUnit)
|
||||
|
||||
# If the TU was destroyed, this should cause a segfault.
|
||||
parent = cursor.semantic_parent
|
||||
|
||||
def test_canonical():
|
||||
source = 'struct X; struct X; struct X { int member; };'
|
||||
tu = get_tu(source)
|
||||
|
||||
cursors = []
|
||||
for cursor in tu.cursor.get_children():
|
||||
if cursor.spelling == 'X':
|
||||
cursors.append(cursor)
|
||||
|
||||
assert len(cursors) == 3
|
||||
assert cursors[1].canonical == cursors[2].canonical
|
||||
|
||||
def test_is_static_method():
|
||||
"""Ensure Cursor.is_static_method works."""
|
||||
|
||||
source = 'class X { static void foo(); void bar(); };'
|
||||
tu = get_tu(source, lang='cpp')
|
||||
|
||||
cls = get_cursor(tu, 'X')
|
||||
foo = get_cursor(tu, 'foo')
|
||||
bar = get_cursor(tu, 'bar')
|
||||
assert cls is not None
|
||||
assert foo is not None
|
||||
assert bar is not None
|
||||
|
||||
assert foo.is_static_method()
|
||||
assert not bar.is_static_method()
|
||||
|
||||
def test_underlying_type():
|
||||
tu = get_tu('typedef int foo;')
|
||||
typedef = get_cursor(tu, 'foo')
|
||||
assert typedef is not None
|
||||
|
||||
assert typedef.kind.is_declaration()
|
||||
underlying = typedef.underlying_typedef_type
|
||||
assert underlying.kind == TypeKind.INT
|
||||
|
||||
kParentTest = """\
|
||||
class C {
|
||||
void f();
|
||||
}
|
||||
|
||||
void C::f() { }
|
||||
"""
|
||||
def test_semantic_parent():
|
||||
tu = get_tu(kParentTest, 'cpp')
|
||||
curs = get_cursors(tu, 'f')
|
||||
decl = get_cursor(tu, 'C')
|
||||
assert(len(curs) == 2)
|
||||
assert(curs[0].semantic_parent == curs[1].semantic_parent)
|
||||
assert(curs[0].semantic_parent == decl)
|
||||
|
||||
def test_lexical_parent():
|
||||
tu = get_tu(kParentTest, 'cpp')
|
||||
curs = get_cursors(tu, 'f')
|
||||
decl = get_cursor(tu, 'C')
|
||||
assert(len(curs) == 2)
|
||||
assert(curs[0].lexical_parent != curs[1].lexical_parent)
|
||||
assert(curs[0].lexical_parent == decl)
|
||||
assert(curs[1].lexical_parent == tu.cursor)
|
||||
|
||||
def test_enum_type():
|
||||
tu = get_tu('enum TEST { FOO=1, BAR=2 };')
|
||||
enum = get_cursor(tu, 'TEST')
|
||||
assert enum is not None
|
||||
|
||||
assert enum.kind == CursorKind.ENUM_DECL
|
||||
enum_type = enum.enum_type
|
||||
assert enum_type.kind == TypeKind.UINT
|
||||
|
||||
def test_enum_type_cpp():
|
||||
tu = get_tu('enum TEST : long long { FOO=1, BAR=2 };', lang="cpp")
|
||||
enum = get_cursor(tu, 'TEST')
|
||||
assert enum is not None
|
||||
|
||||
assert enum.kind == CursorKind.ENUM_DECL
|
||||
assert enum.enum_type.kind == TypeKind.LONGLONG
|
||||
|
||||
def test_objc_type_encoding():
|
||||
tu = get_tu('int i;', lang='objc')
|
||||
i = get_cursor(tu, 'i')
|
||||
|
||||
assert i is not None
|
||||
assert i.objc_type_encoding == 'i'
|
||||
|
||||
def test_enum_values():
|
||||
tu = get_tu('enum TEST { SPAM=1, EGG, HAM = EGG * 20};')
|
||||
enum = get_cursor(tu, 'TEST')
|
||||
assert enum is not None
|
||||
|
||||
assert enum.kind == CursorKind.ENUM_DECL
|
||||
|
||||
enum_constants = list(enum.get_children())
|
||||
assert len(enum_constants) == 3
|
||||
|
||||
spam, egg, ham = enum_constants
|
||||
|
||||
assert spam.kind == CursorKind.ENUM_CONSTANT_DECL
|
||||
assert spam.enum_value == 1
|
||||
assert egg.kind == CursorKind.ENUM_CONSTANT_DECL
|
||||
assert egg.enum_value == 2
|
||||
assert ham.kind == CursorKind.ENUM_CONSTANT_DECL
|
||||
assert ham.enum_value == 40
|
||||
|
||||
def test_enum_values_cpp():
|
||||
tu = get_tu('enum TEST : long long { SPAM = -1, HAM = 0x10000000000};', lang="cpp")
|
||||
enum = get_cursor(tu, 'TEST')
|
||||
assert enum is not None
|
||||
|
||||
assert enum.kind == CursorKind.ENUM_DECL
|
||||
|
||||
enum_constants = list(enum.get_children())
|
||||
assert len(enum_constants) == 2
|
||||
|
||||
spam, ham = enum_constants
|
||||
|
||||
assert spam.kind == CursorKind.ENUM_CONSTANT_DECL
|
||||
assert spam.enum_value == -1
|
||||
assert ham.kind == CursorKind.ENUM_CONSTANT_DECL
|
||||
assert ham.enum_value == 0x10000000000
|
||||
|
||||
def test_annotation_attribute():
|
||||
tu = get_tu('int foo (void) __attribute__ ((annotate("here be annotation attribute")));')
|
||||
|
||||
foo = get_cursor(tu, 'foo')
|
||||
assert foo is not None
|
||||
|
||||
for c in foo.get_children():
|
||||
if c.kind == CursorKind.ANNOTATE_ATTR:
|
||||
assert c.displayname == "here be annotation attribute"
|
||||
break
|
||||
else:
|
||||
assert False, "Couldn't find annotation"
|
||||
|
||||
def test_result_type():
|
||||
tu = get_tu('int foo();')
|
||||
foo = get_cursor(tu, 'foo')
|
||||
|
||||
assert foo is not None
|
||||
t = foo.result_type
|
||||
assert t.kind == TypeKind.INT
|
||||
|
||||
def test_get_tokens():
|
||||
"""Ensure we can map cursors back to tokens."""
|
||||
tu = get_tu('int foo(int i);')
|
||||
foo = get_cursor(tu, 'foo')
|
||||
|
||||
tokens = list(foo.get_tokens())
|
||||
assert len(tokens) == 7
|
||||
assert tokens[0].spelling == 'int'
|
||||
assert tokens[1].spelling == 'foo'
|
||||
|
||||
def test_get_arguments():
|
||||
tu = get_tu('void foo(int i, int j);')
|
||||
foo = get_cursor(tu, 'foo')
|
||||
arguments = list(foo.get_arguments())
|
||||
|
||||
assert len(arguments) == 2
|
||||
assert arguments[0].spelling == "i"
|
||||
assert arguments[1].spelling == "j"
|
||||
|
||||
def test_referenced():
|
||||
tu = get_tu('void foo(); void bar() { foo(); }')
|
||||
foo = get_cursor(tu, 'foo')
|
||||
bar = get_cursor(tu, 'bar')
|
||||
for c in bar.get_children():
|
||||
if c.kind == CursorKind.CALL_EXPR:
|
||||
assert c.referenced.spelling == foo.spelling
|
||||
break
|
47
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cursor_kind.py
vendored
Normal file
47
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_cursor_kind.py
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
from clang.cindex import CursorKind
|
||||
|
||||
def test_name():
|
||||
assert CursorKind.UNEXPOSED_DECL.name is 'UNEXPOSED_DECL'
|
||||
|
||||
def test_get_all_kinds():
|
||||
kinds = CursorKind.get_all_kinds()
|
||||
assert CursorKind.UNEXPOSED_DECL in kinds
|
||||
assert CursorKind.TRANSLATION_UNIT in kinds
|
||||
assert CursorKind.VARIABLE_REF in kinds
|
||||
assert CursorKind.LAMBDA_EXPR in kinds
|
||||
assert CursorKind.OBJ_BOOL_LITERAL_EXPR in kinds
|
||||
assert CursorKind.OBJ_SELF_EXPR in kinds
|
||||
assert CursorKind.MS_ASM_STMT in kinds
|
||||
assert CursorKind.MODULE_IMPORT_DECL in kinds
|
||||
|
||||
def test_kind_groups():
|
||||
"""Check that every kind classifies to exactly one group."""
|
||||
|
||||
assert CursorKind.UNEXPOSED_DECL.is_declaration()
|
||||
assert CursorKind.TYPE_REF.is_reference()
|
||||
assert CursorKind.DECL_REF_EXPR.is_expression()
|
||||
assert CursorKind.UNEXPOSED_STMT.is_statement()
|
||||
assert CursorKind.INVALID_FILE.is_invalid()
|
||||
|
||||
assert CursorKind.TRANSLATION_UNIT.is_translation_unit()
|
||||
assert not CursorKind.TYPE_REF.is_translation_unit()
|
||||
|
||||
assert CursorKind.PREPROCESSING_DIRECTIVE.is_preprocessing()
|
||||
assert not CursorKind.TYPE_REF.is_preprocessing()
|
||||
|
||||
assert CursorKind.UNEXPOSED_DECL.is_unexposed()
|
||||
assert not CursorKind.TYPE_REF.is_unexposed()
|
||||
|
||||
for k in CursorKind.get_all_kinds():
|
||||
group = [n for n in ('is_declaration', 'is_reference', 'is_expression',
|
||||
'is_statement', 'is_invalid', 'is_attribute')
|
||||
if getattr(k, n)()]
|
||||
|
||||
if k in ( CursorKind.TRANSLATION_UNIT,
|
||||
CursorKind.MACRO_DEFINITION,
|
||||
CursorKind.MACRO_INSTANTIATION,
|
||||
CursorKind.INCLUSION_DIRECTIVE,
|
||||
CursorKind.PREPROCESSING_DIRECTIVE):
|
||||
assert len(group) == 0
|
||||
else:
|
||||
assert len(group) == 1
|
82
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_diagnostics.py
vendored
Normal file
82
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_diagnostics.py
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
from clang.cindex import *
|
||||
from .util import get_tu
|
||||
|
||||
# FIXME: We need support for invalid translation units to test better.
|
||||
|
||||
def test_diagnostic_warning():
|
||||
tu = get_tu('int f0() {}\n')
|
||||
assert len(tu.diagnostics) == 1
|
||||
assert tu.diagnostics[0].severity == Diagnostic.Warning
|
||||
assert tu.diagnostics[0].location.line == 1
|
||||
assert tu.diagnostics[0].location.column == 11
|
||||
assert (tu.diagnostics[0].spelling ==
|
||||
'control reaches end of non-void function')
|
||||
|
||||
def test_diagnostic_note():
|
||||
# FIXME: We aren't getting notes here for some reason.
|
||||
tu = get_tu('#define A x\nvoid *A = 1;\n')
|
||||
assert len(tu.diagnostics) == 1
|
||||
assert tu.diagnostics[0].severity == Diagnostic.Warning
|
||||
assert tu.diagnostics[0].location.line == 2
|
||||
assert tu.diagnostics[0].location.column == 7
|
||||
assert 'incompatible' in tu.diagnostics[0].spelling
|
||||
# assert tu.diagnostics[1].severity == Diagnostic.Note
|
||||
# assert tu.diagnostics[1].location.line == 1
|
||||
# assert tu.diagnostics[1].location.column == 11
|
||||
# assert tu.diagnostics[1].spelling == 'instantiated from'
|
||||
|
||||
def test_diagnostic_fixit():
|
||||
tu = get_tu('struct { int f0; } x = { f0 : 1 };')
|
||||
assert len(tu.diagnostics) == 1
|
||||
assert tu.diagnostics[0].severity == Diagnostic.Warning
|
||||
assert tu.diagnostics[0].location.line == 1
|
||||
assert tu.diagnostics[0].location.column == 26
|
||||
assert tu.diagnostics[0].spelling.startswith('use of GNU old-style')
|
||||
assert len(tu.diagnostics[0].fixits) == 1
|
||||
assert tu.diagnostics[0].fixits[0].range.start.line == 1
|
||||
assert tu.diagnostics[0].fixits[0].range.start.column == 26
|
||||
assert tu.diagnostics[0].fixits[0].range.end.line == 1
|
||||
assert tu.diagnostics[0].fixits[0].range.end.column == 30
|
||||
assert tu.diagnostics[0].fixits[0].value == '.f0 = '
|
||||
|
||||
def test_diagnostic_range():
|
||||
tu = get_tu('void f() { int i = "a" + 1; }')
|
||||
assert len(tu.diagnostics) == 1
|
||||
assert tu.diagnostics[0].severity == Diagnostic.Warning
|
||||
assert tu.diagnostics[0].location.line == 1
|
||||
assert tu.diagnostics[0].location.column == 16
|
||||
assert tu.diagnostics[0].spelling.startswith('incompatible pointer to')
|
||||
assert len(tu.diagnostics[0].fixits) == 0
|
||||
assert len(tu.diagnostics[0].ranges) == 1
|
||||
assert tu.diagnostics[0].ranges[0].start.line == 1
|
||||
assert tu.diagnostics[0].ranges[0].start.column == 20
|
||||
assert tu.diagnostics[0].ranges[0].end.line == 1
|
||||
assert tu.diagnostics[0].ranges[0].end.column == 27
|
||||
try:
|
||||
tu.diagnostics[0].ranges[1].start.line
|
||||
except IndexError:
|
||||
assert True
|
||||
else:
|
||||
assert False
|
||||
|
||||
def test_diagnostic_category():
|
||||
"""Ensure that category properties work."""
|
||||
tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
|
||||
assert len(tu.diagnostics) == 1
|
||||
d = tu.diagnostics[0]
|
||||
|
||||
assert d.severity == Diagnostic.Warning
|
||||
assert d.location.line == 1
|
||||
assert d.location.column == 11
|
||||
|
||||
assert d.category_number == 2
|
||||
assert d.category_name == 'Semantic Issue'
|
||||
|
||||
def test_diagnostic_option():
|
||||
"""Ensure that category option properties work."""
|
||||
tu = get_tu('int f(int i) { return 7; }', all_warnings=True)
|
||||
assert len(tu.diagnostics) == 1
|
||||
d = tu.diagnostics[0]
|
||||
|
||||
assert d.option == '-Wunused-parameter'
|
||||
assert d.disable_option == '-Wno-unused-parameter'
|
9
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_file.py
vendored
Normal file
9
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_file.py
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
from clang.cindex import Index, File
|
||||
|
||||
def test_file():
|
||||
index = Index.create()
|
||||
tu = index.parse('t.c', unsaved_files = [('t.c', "")])
|
||||
file = File.from_name(tu, "t.c")
|
||||
assert str(file) == "t.c"
|
||||
assert file.name == "t.c"
|
||||
assert repr(file) == "<File: t.c>"
|
15
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_index.py
vendored
Normal file
15
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_index.py
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
from clang.cindex import *
|
||||
import os
|
||||
|
||||
kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
|
||||
|
||||
def test_create():
|
||||
index = Index.create()
|
||||
|
||||
# FIXME: test Index.read
|
||||
|
||||
def test_parse():
|
||||
index = Index.create()
|
||||
assert isinstance(index, Index)
|
||||
tu = index.parse(os.path.join(kInputsDir, 'hello.cpp'))
|
||||
assert isinstance(tu, TranslationUnit)
|
95
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_location.py
vendored
Normal file
95
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_location.py
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
from clang.cindex import Cursor
|
||||
from clang.cindex import File
|
||||
from clang.cindex import SourceLocation
|
||||
from clang.cindex import SourceRange
|
||||
from .util import get_cursor
|
||||
from .util import get_tu
|
||||
|
||||
baseInput="int one;\nint two;\n"
|
||||
|
||||
def assert_location(loc, line, column, offset):
|
||||
assert loc.line == line
|
||||
assert loc.column == column
|
||||
assert loc.offset == offset
|
||||
|
||||
def test_location():
|
||||
tu = get_tu(baseInput)
|
||||
one = get_cursor(tu, 'one')
|
||||
two = get_cursor(tu, 'two')
|
||||
|
||||
assert one is not None
|
||||
assert two is not None
|
||||
|
||||
assert_location(one.location,line=1,column=5,offset=4)
|
||||
assert_location(two.location,line=2,column=5,offset=13)
|
||||
|
||||
# adding a linebreak at top should keep columns same
|
||||
tu = get_tu('\n' + baseInput)
|
||||
one = get_cursor(tu, 'one')
|
||||
two = get_cursor(tu, 'two')
|
||||
|
||||
assert one is not None
|
||||
assert two is not None
|
||||
|
||||
assert_location(one.location,line=2,column=5,offset=5)
|
||||
assert_location(two.location,line=3,column=5,offset=14)
|
||||
|
||||
# adding a space should affect column on first line only
|
||||
tu = get_tu(' ' + baseInput)
|
||||
one = get_cursor(tu, 'one')
|
||||
two = get_cursor(tu, 'two')
|
||||
|
||||
assert_location(one.location,line=1,column=6,offset=5)
|
||||
assert_location(two.location,line=2,column=5,offset=14)
|
||||
|
||||
# define the expected location ourselves and see if it matches
|
||||
# the returned location
|
||||
tu = get_tu(baseInput)
|
||||
|
||||
file = File.from_name(tu, 't.c')
|
||||
location = SourceLocation.from_position(tu, file, 1, 5)
|
||||
cursor = Cursor.from_location(tu, location)
|
||||
|
||||
one = get_cursor(tu, 'one')
|
||||
assert one is not None
|
||||
assert one == cursor
|
||||
|
||||
# Ensure locations referring to the same entity are equivalent.
|
||||
location2 = SourceLocation.from_position(tu, file, 1, 5)
|
||||
assert location == location2
|
||||
location3 = SourceLocation.from_position(tu, file, 1, 4)
|
||||
assert location2 != location3
|
||||
|
||||
offset_location = SourceLocation.from_offset(tu, file, 5)
|
||||
cursor = Cursor.from_location(tu, offset_location)
|
||||
verified = False
|
||||
for n in [n for n in tu.cursor.get_children() if n.spelling == 'one']:
|
||||
assert n == cursor
|
||||
verified = True
|
||||
|
||||
assert verified
|
||||
|
||||
def test_extent():
|
||||
tu = get_tu(baseInput)
|
||||
one = get_cursor(tu, 'one')
|
||||
two = get_cursor(tu, 'two')
|
||||
|
||||
assert_location(one.extent.start,line=1,column=1,offset=0)
|
||||
assert_location(one.extent.end,line=1,column=8,offset=7)
|
||||
assert baseInput[one.extent.start.offset:one.extent.end.offset] == "int one"
|
||||
|
||||
assert_location(two.extent.start,line=2,column=1,offset=9)
|
||||
assert_location(two.extent.end,line=2,column=8,offset=16)
|
||||
assert baseInput[two.extent.start.offset:two.extent.end.offset] == "int two"
|
||||
|
||||
file = File.from_name(tu, 't.c')
|
||||
location1 = SourceLocation.from_position(tu, file, 1, 1)
|
||||
location2 = SourceLocation.from_position(tu, file, 1, 8)
|
||||
|
||||
range1 = SourceRange.from_locations(location1, location2)
|
||||
range2 = SourceRange.from_locations(location1, location2)
|
||||
assert range1 == range2
|
||||
|
||||
location3 = SourceLocation.from_position(tu, file, 1, 6)
|
||||
range3 = SourceRange.from_locations(location1, location3)
|
||||
assert range1 != range3
|
43
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_token_kind.py
vendored
Normal file
43
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_token_kind.py
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
from clang.cindex import TokenKind
|
||||
from nose.tools import eq_
|
||||
from nose.tools import ok_
|
||||
from nose.tools import raises
|
||||
|
||||
def test_constructor():
|
||||
"""Ensure TokenKind constructor works as expected."""
|
||||
|
||||
t = TokenKind(5, 'foo')
|
||||
|
||||
eq_(t.value, 5)
|
||||
eq_(t.name, 'foo')
|
||||
|
||||
@raises(ValueError)
|
||||
def test_bad_register():
|
||||
"""Ensure a duplicate value is rejected for registration."""
|
||||
|
||||
TokenKind.register(2, 'foo')
|
||||
|
||||
@raises(ValueError)
|
||||
def test_unknown_value():
|
||||
"""Ensure trying to fetch an unknown value raises."""
|
||||
|
||||
TokenKind.from_value(-1)
|
||||
|
||||
def test_registration():
|
||||
"""Ensure that items registered appear as class attributes."""
|
||||
ok_(hasattr(TokenKind, 'LITERAL'))
|
||||
literal = TokenKind.LITERAL
|
||||
|
||||
ok_(isinstance(literal, TokenKind))
|
||||
|
||||
def test_from_value():
|
||||
"""Ensure registered values can be obtained from from_value()."""
|
||||
t = TokenKind.from_value(3)
|
||||
ok_(isinstance(t, TokenKind))
|
||||
eq_(t, TokenKind.LITERAL)
|
||||
|
||||
def test_repr():
|
||||
"""Ensure repr() works."""
|
||||
|
||||
r = repr(TokenKind.LITERAL)
|
||||
eq_(r, 'TokenKind.LITERAL')
|
52
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_tokens.py
vendored
Normal file
52
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_tokens.py
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
from clang.cindex import CursorKind
|
||||
from clang.cindex import Index
|
||||
from clang.cindex import SourceLocation
|
||||
from clang.cindex import SourceRange
|
||||
from clang.cindex import TokenKind
|
||||
from nose.tools import eq_
|
||||
from nose.tools import ok_
|
||||
|
||||
from .util import get_tu
|
||||
|
||||
def test_token_to_cursor():
|
||||
"""Ensure we can obtain a Cursor from a Token instance."""
|
||||
tu = get_tu('int i = 5;')
|
||||
r = tu.get_extent('t.c', (0, 9))
|
||||
tokens = list(tu.get_tokens(extent=r))
|
||||
|
||||
assert len(tokens) == 5
|
||||
assert tokens[1].spelling == 'i'
|
||||
assert tokens[1].kind == TokenKind.IDENTIFIER
|
||||
|
||||
cursor = tokens[1].cursor
|
||||
assert cursor.kind == CursorKind.VAR_DECL
|
||||
assert tokens[1].cursor == tokens[2].cursor
|
||||
|
||||
def test_token_location():
|
||||
"""Ensure Token.location works."""
|
||||
|
||||
tu = get_tu('int foo = 10;')
|
||||
r = tu.get_extent('t.c', (0, 11))
|
||||
|
||||
tokens = list(tu.get_tokens(extent=r))
|
||||
eq_(len(tokens), 4)
|
||||
|
||||
loc = tokens[1].location
|
||||
ok_(isinstance(loc, SourceLocation))
|
||||
eq_(loc.line, 1)
|
||||
eq_(loc.column, 5)
|
||||
eq_(loc.offset, 4)
|
||||
|
||||
def test_token_extent():
|
||||
"""Ensure Token.extent works."""
|
||||
tu = get_tu('int foo = 10;')
|
||||
r = tu.get_extent('t.c', (0, 11))
|
||||
|
||||
tokens = list(tu.get_tokens(extent=r))
|
||||
eq_(len(tokens), 4)
|
||||
|
||||
extent = tokens[1].extent
|
||||
ok_(isinstance(extent, SourceRange))
|
||||
|
||||
eq_(extent.start.offset, 4)
|
||||
eq_(extent.end.offset, 7)
|
258
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_translation_unit.py
vendored
Normal file
258
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_translation_unit.py
vendored
Normal file
|
@ -0,0 +1,258 @@
|
|||
import gc
|
||||
import os
|
||||
|
||||
from clang.cindex import CursorKind
|
||||
from clang.cindex import Cursor
|
||||
from clang.cindex import File
|
||||
from clang.cindex import Index
|
||||
from clang.cindex import SourceLocation
|
||||
from clang.cindex import SourceRange
|
||||
from clang.cindex import TranslationUnitSaveError
|
||||
from clang.cindex import TranslationUnitLoadError
|
||||
from clang.cindex import TranslationUnit
|
||||
from .util import get_cursor
|
||||
from .util import get_tu
|
||||
|
||||
kInputsDir = os.path.join(os.path.dirname(__file__), 'INPUTS')
|
||||
|
||||
def test_spelling():
|
||||
path = os.path.join(kInputsDir, 'hello.cpp')
|
||||
tu = TranslationUnit.from_source(path)
|
||||
assert tu.spelling == path
|
||||
|
||||
def test_cursor():
|
||||
path = os.path.join(kInputsDir, 'hello.cpp')
|
||||
tu = get_tu(path)
|
||||
c = tu.cursor
|
||||
assert isinstance(c, Cursor)
|
||||
assert c.kind is CursorKind.TRANSLATION_UNIT
|
||||
|
||||
def test_parse_arguments():
|
||||
path = os.path.join(kInputsDir, 'parse_arguments.c')
|
||||
tu = TranslationUnit.from_source(path, ['-DDECL_ONE=hello', '-DDECL_TWO=hi'])
|
||||
spellings = [c.spelling for c in tu.cursor.get_children()]
|
||||
assert spellings[-2] == 'hello'
|
||||
assert spellings[-1] == 'hi'
|
||||
|
||||
def test_reparse_arguments():
|
||||
path = os.path.join(kInputsDir, 'parse_arguments.c')
|
||||
tu = TranslationUnit.from_source(path, ['-DDECL_ONE=hello', '-DDECL_TWO=hi'])
|
||||
tu.reparse()
|
||||
spellings = [c.spelling for c in tu.cursor.get_children()]
|
||||
assert spellings[-2] == 'hello'
|
||||
assert spellings[-1] == 'hi'
|
||||
|
||||
def test_unsaved_files():
|
||||
tu = TranslationUnit.from_source('fake.c', ['-I./'], unsaved_files = [
|
||||
('fake.c', """
|
||||
#include "fake.h"
|
||||
int x;
|
||||
int SOME_DEFINE;
|
||||
"""),
|
||||
('./fake.h', """
|
||||
#define SOME_DEFINE y
|
||||
""")
|
||||
])
|
||||
spellings = [c.spelling for c in tu.cursor.get_children()]
|
||||
assert spellings[-2] == 'x'
|
||||
assert spellings[-1] == 'y'
|
||||
|
||||
def test_unsaved_files_2():
|
||||
import StringIO
|
||||
tu = TranslationUnit.from_source('fake.c', unsaved_files = [
|
||||
('fake.c', StringIO.StringIO('int x;'))])
|
||||
spellings = [c.spelling for c in tu.cursor.get_children()]
|
||||
assert spellings[-1] == 'x'
|
||||
|
||||
def normpaths_equal(path1, path2):
|
||||
""" Compares two paths for equality after normalizing them with
|
||||
os.path.normpath
|
||||
"""
|
||||
return os.path.normpath(path1) == os.path.normpath(path2)
|
||||
|
||||
def test_includes():
|
||||
def eq(expected, actual):
|
||||
if not actual.is_input_file:
|
||||
return normpaths_equal(expected[0], actual.source.name) and \
|
||||
normpaths_equal(expected[1], actual.include.name)
|
||||
else:
|
||||
return normpaths_equal(expected[1], actual.include.name)
|
||||
|
||||
src = os.path.join(kInputsDir, 'include.cpp')
|
||||
h1 = os.path.join(kInputsDir, "header1.h")
|
||||
h2 = os.path.join(kInputsDir, "header2.h")
|
||||
h3 = os.path.join(kInputsDir, "header3.h")
|
||||
inc = [(src, h1), (h1, h3), (src, h2), (h2, h3)]
|
||||
|
||||
tu = TranslationUnit.from_source(src)
|
||||
for i in zip(inc, tu.get_includes()):
|
||||
assert eq(i[0], i[1])
|
||||
|
||||
def save_tu(tu):
|
||||
"""Convenience API to save a TranslationUnit to a file.
|
||||
|
||||
Returns the filename it was saved to.
|
||||
"""
|
||||
|
||||
# FIXME Generate a temp file path using system APIs.
|
||||
base = 'TEMP_FOR_TRANSLATIONUNIT_SAVE.c'
|
||||
path = os.path.join(kInputsDir, base)
|
||||
|
||||
# Just in case.
|
||||
if os.path.exists(path):
|
||||
os.unlink(path)
|
||||
|
||||
tu.save(path)
|
||||
|
||||
return path
|
||||
|
||||
def test_save():
|
||||
"""Ensure TranslationUnit.save() works."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
|
||||
path = save_tu(tu)
|
||||
assert os.path.exists(path)
|
||||
assert os.path.getsize(path) > 0
|
||||
os.unlink(path)
|
||||
|
||||
def test_save_translation_errors():
|
||||
"""Ensure that saving to an invalid directory raises."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
|
||||
path = '/does/not/exist/llvm-test.ast'
|
||||
assert not os.path.exists(os.path.dirname(path))
|
||||
|
||||
try:
|
||||
tu.save(path)
|
||||
assert False
|
||||
except TranslationUnitSaveError as ex:
|
||||
expected = TranslationUnitSaveError.ERROR_UNKNOWN
|
||||
assert ex.save_error == expected
|
||||
|
||||
def test_load():
|
||||
"""Ensure TranslationUnits can be constructed from saved files."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
assert len(tu.diagnostics) == 0
|
||||
path = save_tu(tu)
|
||||
|
||||
assert os.path.exists(path)
|
||||
assert os.path.getsize(path) > 0
|
||||
|
||||
tu2 = TranslationUnit.from_ast_file(filename=path)
|
||||
assert len(tu2.diagnostics) == 0
|
||||
|
||||
foo = get_cursor(tu2, 'foo')
|
||||
assert foo is not None
|
||||
|
||||
# Just in case there is an open file descriptor somewhere.
|
||||
del tu2
|
||||
|
||||
os.unlink(path)
|
||||
|
||||
def test_index_parse():
|
||||
path = os.path.join(kInputsDir, 'hello.cpp')
|
||||
index = Index.create()
|
||||
tu = index.parse(path)
|
||||
assert isinstance(tu, TranslationUnit)
|
||||
|
||||
def test_get_file():
|
||||
"""Ensure tu.get_file() works appropriately."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
|
||||
f = tu.get_file('t.c')
|
||||
assert isinstance(f, File)
|
||||
assert f.name == 't.c'
|
||||
|
||||
try:
|
||||
f = tu.get_file('foobar.cpp')
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
assert False
|
||||
|
||||
def test_get_source_location():
|
||||
"""Ensure tu.get_source_location() works."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
|
||||
location = tu.get_location('t.c', 2)
|
||||
assert isinstance(location, SourceLocation)
|
||||
assert location.offset == 2
|
||||
assert location.file.name == 't.c'
|
||||
|
||||
location = tu.get_location('t.c', (1, 3))
|
||||
assert isinstance(location, SourceLocation)
|
||||
assert location.line == 1
|
||||
assert location.column == 3
|
||||
assert location.file.name == 't.c'
|
||||
|
||||
def test_get_source_range():
|
||||
"""Ensure tu.get_source_range() works."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
|
||||
r = tu.get_extent('t.c', (1,4))
|
||||
assert isinstance(r, SourceRange)
|
||||
assert r.start.offset == 1
|
||||
assert r.end.offset == 4
|
||||
assert r.start.file.name == 't.c'
|
||||
assert r.end.file.name == 't.c'
|
||||
|
||||
r = tu.get_extent('t.c', ((1,2), (1,3)))
|
||||
assert isinstance(r, SourceRange)
|
||||
assert r.start.line == 1
|
||||
assert r.start.column == 2
|
||||
assert r.end.line == 1
|
||||
assert r.end.column == 3
|
||||
assert r.start.file.name == 't.c'
|
||||
assert r.end.file.name == 't.c'
|
||||
|
||||
start = tu.get_location('t.c', 0)
|
||||
end = tu.get_location('t.c', 5)
|
||||
|
||||
r = tu.get_extent('t.c', (start, end))
|
||||
assert isinstance(r, SourceRange)
|
||||
assert r.start.offset == 0
|
||||
assert r.end.offset == 5
|
||||
assert r.start.file.name == 't.c'
|
||||
assert r.end.file.name == 't.c'
|
||||
|
||||
def test_get_tokens_gc():
|
||||
"""Ensures get_tokens() works properly with garbage collection."""
|
||||
|
||||
tu = get_tu('int foo();')
|
||||
r = tu.get_extent('t.c', (0, 10))
|
||||
tokens = list(tu.get_tokens(extent=r))
|
||||
|
||||
assert tokens[0].spelling == 'int'
|
||||
gc.collect()
|
||||
assert tokens[0].spelling == 'int'
|
||||
|
||||
del tokens[1]
|
||||
gc.collect()
|
||||
assert tokens[0].spelling == 'int'
|
||||
|
||||
# May trigger segfault if we don't do our job properly.
|
||||
del tokens
|
||||
gc.collect()
|
||||
gc.collect() # Just in case.
|
||||
|
||||
def test_fail_from_source():
|
||||
path = os.path.join(kInputsDir, 'non-existent.cpp')
|
||||
try:
|
||||
tu = TranslationUnit.from_source(path)
|
||||
except TranslationUnitLoadError:
|
||||
tu = None
|
||||
assert tu == None
|
||||
|
||||
def test_fail_from_ast_file():
|
||||
path = os.path.join(kInputsDir, 'non-existent.ast')
|
||||
try:
|
||||
tu = TranslationUnit.from_ast_file(path)
|
||||
except TranslationUnitLoadError:
|
||||
tu = None
|
||||
assert tu == None
|
397
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_type.py
vendored
Normal file
397
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/test_type.py
vendored
Normal file
|
@ -0,0 +1,397 @@
|
|||
import gc
|
||||
|
||||
from clang.cindex import CursorKind
|
||||
from clang.cindex import TranslationUnit
|
||||
from clang.cindex import TypeKind
|
||||
from nose.tools import raises
|
||||
from .util import get_cursor
|
||||
from .util import get_tu
|
||||
|
||||
kInput = """\
|
||||
|
||||
typedef int I;
|
||||
|
||||
struct teststruct {
|
||||
int a;
|
||||
I b;
|
||||
long c;
|
||||
unsigned long d;
|
||||
signed long e;
|
||||
const int f;
|
||||
int *g;
|
||||
int ***h;
|
||||
};
|
||||
|
||||
"""
|
||||
|
||||
def test_a_struct():
|
||||
tu = get_tu(kInput)
|
||||
|
||||
teststruct = get_cursor(tu, 'teststruct')
|
||||
assert teststruct is not None, "Could not find teststruct."
|
||||
fields = list(teststruct.get_children())
|
||||
assert all(x.kind == CursorKind.FIELD_DECL for x in fields)
|
||||
assert all(x.translation_unit is not None for x in fields)
|
||||
|
||||
assert fields[0].spelling == 'a'
|
||||
assert not fields[0].type.is_const_qualified()
|
||||
assert fields[0].type.kind == TypeKind.INT
|
||||
assert fields[0].type.get_canonical().kind == TypeKind.INT
|
||||
|
||||
assert fields[1].spelling == 'b'
|
||||
assert not fields[1].type.is_const_qualified()
|
||||
assert fields[1].type.kind == TypeKind.TYPEDEF
|
||||
assert fields[1].type.get_canonical().kind == TypeKind.INT
|
||||
assert fields[1].type.get_declaration().spelling == 'I'
|
||||
|
||||
assert fields[2].spelling == 'c'
|
||||
assert not fields[2].type.is_const_qualified()
|
||||
assert fields[2].type.kind == TypeKind.LONG
|
||||
assert fields[2].type.get_canonical().kind == TypeKind.LONG
|
||||
|
||||
assert fields[3].spelling == 'd'
|
||||
assert not fields[3].type.is_const_qualified()
|
||||
assert fields[3].type.kind == TypeKind.ULONG
|
||||
assert fields[3].type.get_canonical().kind == TypeKind.ULONG
|
||||
|
||||
assert fields[4].spelling == 'e'
|
||||
assert not fields[4].type.is_const_qualified()
|
||||
assert fields[4].type.kind == TypeKind.LONG
|
||||
assert fields[4].type.get_canonical().kind == TypeKind.LONG
|
||||
|
||||
assert fields[5].spelling == 'f'
|
||||
assert fields[5].type.is_const_qualified()
|
||||
assert fields[5].type.kind == TypeKind.INT
|
||||
assert fields[5].type.get_canonical().kind == TypeKind.INT
|
||||
|
||||
assert fields[6].spelling == 'g'
|
||||
assert not fields[6].type.is_const_qualified()
|
||||
assert fields[6].type.kind == TypeKind.POINTER
|
||||
assert fields[6].type.get_pointee().kind == TypeKind.INT
|
||||
|
||||
assert fields[7].spelling == 'h'
|
||||
assert not fields[7].type.is_const_qualified()
|
||||
assert fields[7].type.kind == TypeKind.POINTER
|
||||
assert fields[7].type.get_pointee().kind == TypeKind.POINTER
|
||||
assert fields[7].type.get_pointee().get_pointee().kind == TypeKind.POINTER
|
||||
assert fields[7].type.get_pointee().get_pointee().get_pointee().kind == TypeKind.INT
|
||||
|
||||
def test_references():
|
||||
"""Ensure that a Type maintains a reference to a TranslationUnit."""
|
||||
|
||||
tu = get_tu('int x;')
|
||||
children = list(tu.cursor.get_children())
|
||||
assert len(children) > 0
|
||||
|
||||
cursor = children[0]
|
||||
t = cursor.type
|
||||
|
||||
assert isinstance(t.translation_unit, TranslationUnit)
|
||||
|
||||
# Delete main TranslationUnit reference and force a GC.
|
||||
del tu
|
||||
gc.collect()
|
||||
assert isinstance(t.translation_unit, TranslationUnit)
|
||||
|
||||
# If the TU was destroyed, this should cause a segfault.
|
||||
decl = t.get_declaration()
|
||||
|
||||
constarrayInput="""
|
||||
struct teststruct {
|
||||
void *A[2];
|
||||
};
|
||||
"""
|
||||
def testConstantArray():
|
||||
tu = get_tu(constarrayInput)
|
||||
|
||||
teststruct = get_cursor(tu, 'teststruct')
|
||||
assert teststruct is not None, "Didn't find teststruct??"
|
||||
fields = list(teststruct.get_children())
|
||||
assert fields[0].spelling == 'A'
|
||||
assert fields[0].type.kind == TypeKind.CONSTANTARRAY
|
||||
assert fields[0].type.get_array_element_type() is not None
|
||||
assert fields[0].type.get_array_element_type().kind == TypeKind.POINTER
|
||||
assert fields[0].type.get_array_size() == 2
|
||||
|
||||
def test_equal():
|
||||
"""Ensure equivalence operators work on Type."""
|
||||
source = 'int a; int b; void *v;'
|
||||
tu = get_tu(source)
|
||||
|
||||
a = get_cursor(tu, 'a')
|
||||
b = get_cursor(tu, 'b')
|
||||
v = get_cursor(tu, 'v')
|
||||
|
||||
assert a is not None
|
||||
assert b is not None
|
||||
assert v is not None
|
||||
|
||||
assert a.type == b.type
|
||||
assert a.type != v.type
|
||||
|
||||
assert a.type != None
|
||||
assert a.type != 'foo'
|
||||
|
||||
def test_type_spelling():
|
||||
"""Ensure Type.spelling works."""
|
||||
tu = get_tu('int c[5]; int i[]; int x; int v[x];')
|
||||
c = get_cursor(tu, 'c')
|
||||
i = get_cursor(tu, 'i')
|
||||
x = get_cursor(tu, 'x')
|
||||
v = get_cursor(tu, 'v')
|
||||
assert c is not None
|
||||
assert i is not None
|
||||
assert x is not None
|
||||
assert v is not None
|
||||
assert c.type.spelling == "int [5]"
|
||||
assert i.type.spelling == "int []"
|
||||
assert x.type.spelling == "int"
|
||||
assert v.type.spelling == "int [x]"
|
||||
|
||||
def test_typekind_spelling():
|
||||
"""Ensure TypeKind.spelling works."""
|
||||
tu = get_tu('int a;')
|
||||
a = get_cursor(tu, 'a')
|
||||
|
||||
assert a is not None
|
||||
assert a.type.kind.spelling == 'Int'
|
||||
|
||||
def test_function_argument_types():
|
||||
"""Ensure that Type.argument_types() works as expected."""
|
||||
tu = get_tu('void f(int, int);')
|
||||
f = get_cursor(tu, 'f')
|
||||
assert f is not None
|
||||
|
||||
args = f.type.argument_types()
|
||||
assert args is not None
|
||||
assert len(args) == 2
|
||||
|
||||
t0 = args[0]
|
||||
assert t0 is not None
|
||||
assert t0.kind == TypeKind.INT
|
||||
|
||||
t1 = args[1]
|
||||
assert t1 is not None
|
||||
assert t1.kind == TypeKind.INT
|
||||
|
||||
args2 = list(args)
|
||||
assert len(args2) == 2
|
||||
assert t0 == args2[0]
|
||||
assert t1 == args2[1]
|
||||
|
||||
@raises(TypeError)
|
||||
def test_argument_types_string_key():
|
||||
"""Ensure that non-int keys raise a TypeError."""
|
||||
tu = get_tu('void f(int, int);')
|
||||
f = get_cursor(tu, 'f')
|
||||
assert f is not None
|
||||
|
||||
args = f.type.argument_types()
|
||||
assert len(args) == 2
|
||||
|
||||
args['foo']
|
||||
|
||||
@raises(IndexError)
|
||||
def test_argument_types_negative_index():
|
||||
"""Ensure that negative indexes on argument_types Raises an IndexError."""
|
||||
tu = get_tu('void f(int, int);')
|
||||
f = get_cursor(tu, 'f')
|
||||
args = f.type.argument_types()
|
||||
|
||||
args[-1]
|
||||
|
||||
@raises(IndexError)
|
||||
def test_argument_types_overflow_index():
|
||||
"""Ensure that indexes beyond the length of Type.argument_types() raise."""
|
||||
tu = get_tu('void f(int, int);')
|
||||
f = get_cursor(tu, 'f')
|
||||
args = f.type.argument_types()
|
||||
|
||||
args[2]
|
||||
|
||||
@raises(Exception)
|
||||
def test_argument_types_invalid_type():
|
||||
"""Ensure that obtaining argument_types on a Type without them raises."""
|
||||
tu = get_tu('int i;')
|
||||
i = get_cursor(tu, 'i')
|
||||
assert i is not None
|
||||
|
||||
i.type.argument_types()
|
||||
|
||||
def test_is_pod():
|
||||
"""Ensure Type.is_pod() works."""
|
||||
tu = get_tu('int i; void f();')
|
||||
i = get_cursor(tu, 'i')
|
||||
f = get_cursor(tu, 'f')
|
||||
|
||||
assert i is not None
|
||||
assert f is not None
|
||||
|
||||
assert i.type.is_pod()
|
||||
assert not f.type.is_pod()
|
||||
|
||||
def test_function_variadic():
|
||||
"""Ensure Type.is_function_variadic works."""
|
||||
|
||||
source ="""
|
||||
#include <stdarg.h>
|
||||
|
||||
void foo(int a, ...);
|
||||
void bar(int a, int b);
|
||||
"""
|
||||
|
||||
tu = get_tu(source)
|
||||
foo = get_cursor(tu, 'foo')
|
||||
bar = get_cursor(tu, 'bar')
|
||||
|
||||
assert foo is not None
|
||||
assert bar is not None
|
||||
|
||||
assert isinstance(foo.type.is_function_variadic(), bool)
|
||||
assert foo.type.is_function_variadic()
|
||||
assert not bar.type.is_function_variadic()
|
||||
|
||||
def test_element_type():
|
||||
"""Ensure Type.element_type works."""
|
||||
tu = get_tu('int c[5]; int i[]; int x; int v[x];')
|
||||
c = get_cursor(tu, 'c')
|
||||
i = get_cursor(tu, 'i')
|
||||
v = get_cursor(tu, 'v')
|
||||
assert c is not None
|
||||
assert i is not None
|
||||
assert v is not None
|
||||
|
||||
assert c.type.kind == TypeKind.CONSTANTARRAY
|
||||
assert c.type.element_type.kind == TypeKind.INT
|
||||
assert i.type.kind == TypeKind.INCOMPLETEARRAY
|
||||
assert i.type.element_type.kind == TypeKind.INT
|
||||
assert v.type.kind == TypeKind.VARIABLEARRAY
|
||||
assert v.type.element_type.kind == TypeKind.INT
|
||||
|
||||
@raises(Exception)
|
||||
def test_invalid_element_type():
|
||||
"""Ensure Type.element_type raises if type doesn't have elements."""
|
||||
tu = get_tu('int i;')
|
||||
i = get_cursor(tu, 'i')
|
||||
assert i is not None
|
||||
i.element_type
|
||||
|
||||
def test_element_count():
|
||||
"""Ensure Type.element_count works."""
|
||||
tu = get_tu('int i[5]; int j;')
|
||||
i = get_cursor(tu, 'i')
|
||||
j = get_cursor(tu, 'j')
|
||||
|
||||
assert i is not None
|
||||
assert j is not None
|
||||
|
||||
assert i.type.element_count == 5
|
||||
|
||||
try:
|
||||
j.type.element_count
|
||||
assert False
|
||||
except:
|
||||
assert True
|
||||
|
||||
def test_is_volatile_qualified():
|
||||
"""Ensure Type.is_volatile_qualified works."""
|
||||
|
||||
tu = get_tu('volatile int i = 4; int j = 2;')
|
||||
|
||||
i = get_cursor(tu, 'i')
|
||||
j = get_cursor(tu, 'j')
|
||||
|
||||
assert i is not None
|
||||
assert j is not None
|
||||
|
||||
assert isinstance(i.type.is_volatile_qualified(), bool)
|
||||
assert i.type.is_volatile_qualified()
|
||||
assert not j.type.is_volatile_qualified()
|
||||
|
||||
def test_is_restrict_qualified():
|
||||
"""Ensure Type.is_restrict_qualified works."""
|
||||
|
||||
tu = get_tu('struct s { void * restrict i; void * j; };')
|
||||
|
||||
i = get_cursor(tu, 'i')
|
||||
j = get_cursor(tu, 'j')
|
||||
|
||||
assert i is not None
|
||||
assert j is not None
|
||||
|
||||
assert isinstance(i.type.is_restrict_qualified(), bool)
|
||||
assert i.type.is_restrict_qualified()
|
||||
assert not j.type.is_restrict_qualified()
|
||||
|
||||
def test_record_layout():
|
||||
"""Ensure Cursor.type.get_size, Cursor.type.get_align and
|
||||
Cursor.type.get_offset works."""
|
||||
|
||||
source ="""
|
||||
struct a {
|
||||
long a1;
|
||||
long a2:3;
|
||||
long a3:4;
|
||||
long long a4;
|
||||
};
|
||||
"""
|
||||
tries=[(['-target','i386-linux-gnu'],(4,16,0,32,35,64)),
|
||||
(['-target','nvptx64-unknown-unknown'],(8,24,0,64,67,128)),
|
||||
(['-target','i386-pc-win32'],(8,16,0,32,35,64)),
|
||||
(['-target','msp430-none-none'],(2,14,0,32,35,48))]
|
||||
for flags, values in tries:
|
||||
align,total,a1,a2,a3,a4 = values
|
||||
|
||||
tu = get_tu(source, flags=flags)
|
||||
teststruct = get_cursor(tu, 'a')
|
||||
fields = list(teststruct.get_children())
|
||||
|
||||
assert teststruct.type.get_align() == align
|
||||
assert teststruct.type.get_size() == total
|
||||
assert teststruct.type.get_offset(fields[0].spelling) == a1
|
||||
assert teststruct.type.get_offset(fields[1].spelling) == a2
|
||||
assert teststruct.type.get_offset(fields[2].spelling) == a3
|
||||
assert teststruct.type.get_offset(fields[3].spelling) == a4
|
||||
assert fields[0].is_bitfield() == False
|
||||
assert fields[1].is_bitfield() == True
|
||||
assert fields[1].get_bitfield_width() == 3
|
||||
assert fields[2].is_bitfield() == True
|
||||
assert fields[2].get_bitfield_width() == 4
|
||||
assert fields[3].is_bitfield() == False
|
||||
|
||||
def test_offset():
|
||||
"""Ensure Cursor.get_record_field_offset works in anonymous records"""
|
||||
source="""
|
||||
struct Test {
|
||||
struct {
|
||||
int bariton;
|
||||
union {
|
||||
int foo;
|
||||
};
|
||||
};
|
||||
int bar;
|
||||
};"""
|
||||
tries=[(['-target','i386-linux-gnu'],(4,16,0,32,64)),
|
||||
(['-target','nvptx64-unknown-unknown'],(8,24,0,32,64)),
|
||||
(['-target','i386-pc-win32'],(8,16,0,32,64)),
|
||||
(['-target','msp430-none-none'],(2,14,0,32,64))]
|
||||
for flags, values in tries:
|
||||
align,total,bariton,foo,bar = values
|
||||
tu = get_tu(source)
|
||||
teststruct = get_cursor(tu, 'Test')
|
||||
fields = list(teststruct.get_children())
|
||||
assert teststruct.type.get_offset("bariton") == bariton
|
||||
assert teststruct.type.get_offset("foo") == foo
|
||||
assert teststruct.type.get_offset("bar") == bar
|
||||
|
||||
|
||||
def test_decay():
|
||||
"""Ensure decayed types are handled as the original type"""
|
||||
|
||||
tu = get_tu("void foo(int a[]);")
|
||||
foo = get_cursor(tu, 'foo')
|
||||
a = foo.type.argument_types()[0]
|
||||
|
||||
assert a.kind == TypeKind.INCOMPLETEARRAY
|
||||
assert a.element_type.kind == TypeKind.INT
|
||||
assert a.get_canonical().kind == TypeKind.INCOMPLETEARRAY
|
93
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/util.py
vendored
Normal file
93
external/bsd/llvm/dist/clang/bindings/python/tests/cindex/util.py
vendored
Normal file
|
@ -0,0 +1,93 @@
|
|||
# This file provides common utility functions for the test suite.
|
||||
|
||||
from clang.cindex import Cursor
|
||||
from clang.cindex import TranslationUnit
|
||||
|
||||
def get_tu(source, lang='c', all_warnings=False, flags=[]):
|
||||
"""Obtain a translation unit from source and language.
|
||||
|
||||
By default, the translation unit is created from source file "t.<ext>"
|
||||
where <ext> is the default file extension for the specified language. By
|
||||
default it is C, so "t.c" is the default file name.
|
||||
|
||||
Supported languages are {c, cpp, objc}.
|
||||
|
||||
all_warnings is a convenience argument to enable all compiler warnings.
|
||||
"""
|
||||
args = list(flags)
|
||||
name = 't.c'
|
||||
if lang == 'cpp':
|
||||
name = 't.cpp'
|
||||
args.append('-std=c++11')
|
||||
elif lang == 'objc':
|
||||
name = 't.m'
|
||||
elif lang != 'c':
|
||||
raise Exception('Unknown language: %s' % lang)
|
||||
|
||||
if all_warnings:
|
||||
args += ['-Wall', '-Wextra']
|
||||
|
||||
return TranslationUnit.from_source(name, args, unsaved_files=[(name,
|
||||
source)])
|
||||
|
||||
def get_cursor(source, spelling):
|
||||
"""Obtain a cursor from a source object.
|
||||
|
||||
This provides a convenient search mechanism to find a cursor with specific
|
||||
spelling within a source. The first argument can be either a
|
||||
TranslationUnit or Cursor instance.
|
||||
|
||||
If the cursor is not found, None is returned.
|
||||
"""
|
||||
children = []
|
||||
if isinstance(source, Cursor):
|
||||
children = source.get_children()
|
||||
else:
|
||||
# Assume TU
|
||||
children = source.cursor.get_children()
|
||||
|
||||
for cursor in children:
|
||||
if cursor.spelling == spelling:
|
||||
return cursor
|
||||
|
||||
# Recurse into children.
|
||||
result = get_cursor(cursor, spelling)
|
||||
if result is not None:
|
||||
return result
|
||||
|
||||
return None
|
||||
|
||||
def get_cursors(source, spelling):
|
||||
"""Obtain all cursors from a source object with a specific spelling.
|
||||
|
||||
This provides a convenient search mechanism to find all cursors with specific
|
||||
spelling within a source. The first argument can be either a
|
||||
TranslationUnit or Cursor instance.
|
||||
|
||||
If no cursors are found, an empty list is returned.
|
||||
"""
|
||||
cursors = []
|
||||
children = []
|
||||
if isinstance(source, Cursor):
|
||||
children = source.get_children()
|
||||
else:
|
||||
# Assume TU
|
||||
children = source.cursor.get_children()
|
||||
|
||||
for cursor in children:
|
||||
if cursor.spelling == spelling:
|
||||
cursors.append(cursor)
|
||||
|
||||
# Recurse into children.
|
||||
cursors.extend(get_cursors(cursor, spelling))
|
||||
|
||||
return cursors
|
||||
|
||||
|
||||
|
||||
|
||||
__all__ = [
|
||||
'get_cursor',
|
||||
'get_cursors',
|
||||
'get_tu',
|
||||
]
|
592
external/bsd/llvm/dist/clang/bindings/xml/comment-xml-schema.rng
vendored
Normal file
592
external/bsd/llvm/dist/clang/bindings/xml/comment-xml-schema.rng
vendored
Normal file
|
@ -0,0 +1,592 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
|
||||
<start>
|
||||
<choice>
|
||||
<!-- Everything else not explicitly mentioned below. -->
|
||||
<ref name="Other" />
|
||||
|
||||
<ref name="Function" />
|
||||
<ref name="Class" />
|
||||
<ref name="Variable" />
|
||||
<ref name="Namespace" />
|
||||
<ref name="Typedef" />
|
||||
<ref name="Enum" />
|
||||
</choice>
|
||||
</start>
|
||||
|
||||
<define name="Other">
|
||||
<element name="Other">
|
||||
<ref name="attrSourceLocation" />
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Function">
|
||||
<element name="Function">
|
||||
<optional>
|
||||
<attribute name="templateKind">
|
||||
<choice>
|
||||
<value>template</value>
|
||||
<value>specialization</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<ref name="attrSourceLocation" />
|
||||
|
||||
<optional>
|
||||
<attribute name="isInstanceMethod">
|
||||
<data type="boolean" />
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="isClassMethod">
|
||||
<data type="boolean" />
|
||||
</attribute>
|
||||
</optional>
|
||||
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Exceptions" />
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<ref name="Availability" />
|
||||
</zeroOrMore>
|
||||
<zeroOrMore>
|
||||
<ref name="Deprecated" />
|
||||
</zeroOrMore>
|
||||
<zeroOrMore>
|
||||
<ref name="Unavailable" />
|
||||
</zeroOrMore>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Class">
|
||||
<element name="Class">
|
||||
<optional>
|
||||
<attribute name="templateKind">
|
||||
<choice>
|
||||
<value>template</value>
|
||||
<value>specialization</value>
|
||||
<value>partialSpecialization</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<ref name="attrSourceLocation" />
|
||||
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
|
||||
<!-- Parameters and results don't make sense for classes, but the user
|
||||
can specify \param or \returns in a comment anyway. -->
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Variable">
|
||||
<element name="Variable">
|
||||
<ref name="attrSourceLocation" />
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
|
||||
<!-- Template parameters, parameters and results don't make sense for
|
||||
variables, but the user can specify \tparam \param or \returns
|
||||
in a comment anyway. -->
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Namespace">
|
||||
<element name="Namespace">
|
||||
<ref name="attrSourceLocation" />
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
|
||||
<!-- Template parameters, parameters and results don't make sense for
|
||||
namespaces, but the user can specify \tparam, \param or \returns
|
||||
in a comment anyway. -->
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Typedef">
|
||||
<element name="Typedef">
|
||||
<ref name="attrSourceLocation" />
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
|
||||
<!-- Parameters and results might make sense for typedefs if the type is
|
||||
a function pointer type. -->
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Enum">
|
||||
<element name="Enum">
|
||||
<ref name="attrSourceLocation" />
|
||||
<ref name="Name" />
|
||||
<optional>
|
||||
<ref name="USR" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Headerfile" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Declaration" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Abstract" />
|
||||
</optional>
|
||||
|
||||
<!-- Template parameters, parameters and results don't make sense for
|
||||
enums, but the user can specify \tparam \param or \returns in a
|
||||
comment anyway. -->
|
||||
<optional>
|
||||
<ref name="TemplateParameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Parameters" />
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="ResultDiscussion" />
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<ref name="Discussion" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="attrSourceLocation">
|
||||
<optional>
|
||||
<attribute name="file">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="line">
|
||||
<data type="positiveInteger" />
|
||||
</attribute>
|
||||
<attribute name="column">
|
||||
<data type="positiveInteger" />
|
||||
</attribute>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name="Name">
|
||||
<element name="Name">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="USR">
|
||||
<element name="USR">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Abstract">
|
||||
<element name="Abstract">
|
||||
<zeroOrMore>
|
||||
<ref name="TextBlockContent" />
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Declaration">
|
||||
<element name="Declaration">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Headerfile">
|
||||
<element name="Headerfile">
|
||||
<oneOrMore>
|
||||
<ref name="TextBlockContent" />
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Discussion">
|
||||
<element name="Discussion">
|
||||
<zeroOrMore>
|
||||
<ref name="TextBlockContent" />
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="TemplateParameters">
|
||||
<element name="TemplateParameters">
|
||||
<!-- Parameter elements should be sorted according to position. -->
|
||||
<oneOrMore>
|
||||
<element name="Parameter">
|
||||
<element name="Name">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
<optional>
|
||||
<!-- This is index at depth 0. libclang API can return more
|
||||
information about position, but we expose only essential
|
||||
information here, since "Parameter" elements are already
|
||||
sorted.
|
||||
|
||||
"Position" element could be added in future if needed. -->
|
||||
<element name="Index">
|
||||
<data type="nonNegativeInteger" />
|
||||
</element>
|
||||
</optional>
|
||||
<!-- In general, template parameters with whitespace discussion
|
||||
should not be emitted. Schema might be more strict here. -->
|
||||
<element name="Discussion">
|
||||
<ref name="TextBlockContent" />
|
||||
</element>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Parameters">
|
||||
<element name="Parameters">
|
||||
<!-- Parameter elements should be sorted according to index. -->
|
||||
<oneOrMore>
|
||||
<element name="Parameter">
|
||||
<element name="Name">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
<optional>
|
||||
<choice>
|
||||
<element name="Index">
|
||||
<data type="nonNegativeInteger" />
|
||||
</element>
|
||||
<element name="IsVarArg">
|
||||
<empty />
|
||||
</element>
|
||||
</choice>
|
||||
</optional>
|
||||
<element name="Direction">
|
||||
<attribute name="isExplicit">
|
||||
<data type="boolean" />
|
||||
</attribute>
|
||||
<choice>
|
||||
<value>in</value>
|
||||
<value>out</value>
|
||||
<value>in,out</value>
|
||||
</choice>
|
||||
</element>
|
||||
<!-- In general, template parameters with whitespace discussion
|
||||
should not be emitted, unless direction is explicitly specified.
|
||||
Schema might be more strict here. -->
|
||||
<element name="Discussion">
|
||||
<ref name="TextBlockContent" />
|
||||
</element>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Exceptions">
|
||||
<element name="Exceptions">
|
||||
<oneOrMore>
|
||||
<ref name="TextBlockContent" />
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Availability">
|
||||
<element name="Availability">
|
||||
<attribute name="distribution">
|
||||
<data type="string" />
|
||||
</attribute>
|
||||
<optional>
|
||||
<element name="IntroducedInVersion">
|
||||
<data type="string">
|
||||
<param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
|
||||
</data>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="DeprecatedInVersion">
|
||||
<data type="string">
|
||||
<param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
|
||||
</data>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="RemovedAfterVersion">
|
||||
<data type="string">
|
||||
<param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
|
||||
</data>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="DeprecationSummary">
|
||||
<data type="string" />
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Unavailable" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Deprecated">
|
||||
<element name="Deprecated">
|
||||
<optional>
|
||||
<data type="string" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Unavailable">
|
||||
<element name="Unavailable">
|
||||
<optional>
|
||||
<data type="string" />
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="ResultDiscussion">
|
||||
<element name="ResultDiscussion">
|
||||
<zeroOrMore>
|
||||
<ref name="TextBlockContent" />
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="TextBlockContent">
|
||||
<choice>
|
||||
<element name="Para">
|
||||
<optional>
|
||||
<attribute name="kind">
|
||||
<choice>
|
||||
<value>attention</value>
|
||||
<value>author</value>
|
||||
<value>authors</value>
|
||||
<value>bug</value>
|
||||
<value>copyright</value>
|
||||
<value>date</value>
|
||||
<value>invariant</value>
|
||||
<value>note</value>
|
||||
<value>post</value>
|
||||
<value>pre</value>
|
||||
<value>remark</value>
|
||||
<value>remarks</value>
|
||||
<value>sa</value>
|
||||
<value>see</value>
|
||||
<value>since</value>
|
||||
<value>todo</value>
|
||||
<value>version</value>
|
||||
<value>warning</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<ref name="TextInlineContent" />
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
<element name="Verbatim">
|
||||
<attribute name="xml:space">
|
||||
<value>preserve</value>
|
||||
</attribute>
|
||||
<attribute name="kind">
|
||||
<!-- TODO: add all Doxygen verbatim kinds -->
|
||||
<choice>
|
||||
<value>code</value>
|
||||
<value>verbatim</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<text />
|
||||
</element>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="TextInlineContent">
|
||||
<choice>
|
||||
<text />
|
||||
<element name="bold">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
<element name="monospaced">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
<element name="emphasized">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
<element name="rawHTML">
|
||||
<!-- Non-empty text content. -->
|
||||
<data type="string">
|
||||
<param name="pattern">.*\S.*</param>
|
||||
</data>
|
||||
</element>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue