Index: head/lib/clang/clang.lib.mk =================================================================== --- head/lib/clang/clang.lib.mk (revision 294030) +++ head/lib/clang/clang.lib.mk (revision 294031) @@ -1,9 +1,13 @@ # $FreeBSD$ LLVM_SRCS= ${.CURDIR}/../../../contrib/llvm .include "clang.build.mk" INTERNALLIB= +.if ${MACHINE_CPUARCH} == "arm" +STATIC_CXXFLAGS+= -mlong-calls +.endif + .include Index: head/lib/libc++/Makefile =================================================================== --- head/lib/libc++/Makefile (revision 294030) +++ head/lib/libc++/Makefile (revision 294031) @@ -1,215 +1,218 @@ # $FreeBSD$ .include _LIBCXXRTDIR= ${.CURDIR}/../../contrib/libcxxrt HDRDIR= ${.CURDIR}/../../contrib/libc++/include SRCDIR= ${.CURDIR}/../../contrib/libc++/src CXXINCLUDEDIR= ${INCLUDEDIR}/c++/v${SHLIB_MAJOR} +.if ${MACHINE_CPUARCH} == "arm" +STATIC_CXXFLAGS+= -mlong-calls +.endif .PATH: ${SRCDIR} LIB= c++ SHLIB_MAJOR= 1 SHLIB_LDSCRIPT= libc++.ldscript SRCS+= algorithm.cpp\ bind.cpp\ chrono.cpp\ condition_variable.cpp\ debug.cpp\ exception.cpp\ future.cpp\ hash.cpp\ ios.cpp\ iostream.cpp\ locale.cpp\ memory.cpp\ mutex.cpp\ new.cpp\ optional.cpp\ random.cpp\ regex.cpp\ shared_mutex.cpp\ stdexcept.cpp\ string.cpp\ strstream.cpp\ system_error.cpp\ thread.cpp\ typeinfo.cpp\ utility.cpp\ valarray.cpp CXXRT_SRCS+= libelftc_dem_gnu3.c\ terminate.cc\ dynamic_cast.cc\ memory.cc\ auxhelper.cc\ exception.cc\ stdexcept.cc\ typeinfo.cc\ guard.cc .for _S in ${CXXRT_SRCS} STATICOBJS+= cxxrt_${_S:R}.o cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA ln -sf ${.ALLSRC} ${.TARGET} .endfor WARNS= 0 CFLAGS+= -I${HDRDIR} -I${_LIBCXXRTDIR} -nostdlib -DLIBCXXRT .if empty(CXXFLAGS:M-std=*) CXXFLAGS+= -std=c++11 .endif LIBADD+= cxxrt INCSGROUPS= STD EXP EXT STD_HEADERS= __bit_reference\ __config\ __debug\ __functional_03\ __functional_base\ __functional_base_03\ __hash_table\ __locale\ __mutex_base\ __refstring\ __split_buffer\ __sso_allocator\ __std_stream\ __tree\ __tuple\ __undef___deallocate\ __undef_min_max\ algorithm\ array\ atomic\ bitset\ cassert\ ccomplex\ cctype\ cerrno\ cfenv\ cfloat\ chrono\ cinttypes\ ciso646\ climits\ clocale\ cmath\ codecvt\ complex\ complex.h\ condition_variable\ csetjmp\ csignal\ cstdarg\ cstdbool\ cstddef\ cstdint\ cstdio\ cstdlib\ cstring\ ctgmath\ ctime\ cwchar\ cwctype\ deque\ exception\ forward_list\ fstream\ functional\ future\ initializer_list\ iomanip\ ios\ iosfwd\ iostream\ istream\ iterator\ limits\ list\ locale\ map\ memory\ mutex\ new\ numeric\ ostream\ queue\ random\ ratio\ regex\ scoped_allocator\ set\ shared_mutex\ sstream\ stack\ stdexcept\ streambuf\ string\ strstream\ system_error\ tgmath.h\ thread\ tuple\ type_traits\ typeindex\ typeinfo\ unordered_map\ unordered_set\ utility\ valarray\ vector RT_HEADERS= cxxabi.h\ unwind.h\ unwind-arm.h\ unwind-itanium.h .for hdr in ${STD_HEADERS} STD+= ${HDRDIR}/${hdr} INCSLINKS+= ${CXXINCLUDEDIR}/${hdr} ${CXXINCLUDEDIR}/tr1/${hdr} .endfor .for hdr in ${RT_HEADERS} STD+= ${_LIBCXXRTDIR}/${hdr} .endfor STDDIR= ${CXXINCLUDEDIR} EXP_HEADERS= __config\ algorithm\ chrono\ dynarray\ optional\ ratio\ string_view\ system_error\ tuple\ type_traits\ utility .for hdr in ${EXP_HEADERS} EXP+= ${HDRDIR}/experimental/${hdr} .endfor EXPDIR= ${CXXINCLUDEDIR}/experimental EXT_HEADERS= __hash\ hash_map\ hash_set .for hdr in ${EXT_HEADERS} EXT+= ${HDRDIR}/ext/${hdr} .endfor EXTDIR= ${CXXINCLUDEDIR}/ext .if ${MK_GNUCXX} == "no" && ${COMPILER_TYPE} == "gcc" CLEANFILES+= libstdc++.so libstdc++.a afterinstall: ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.so \ ${.OBJDIR}/libstdc++.so ${INSTALL_SYMLINK} ${DESTDIR}${LIBDIR}/lib${LIB}.a \ ${.OBJDIR}/libstdc++.a .endif .include Index: head/usr.bin/clang/clang/Makefile =================================================================== --- head/usr.bin/clang/clang/Makefile (revision 294030) +++ head/usr.bin/clang/clang/Makefile (revision 294031) @@ -1,128 +1,132 @@ # $FreeBSD$ .include PROG_CXX=clang SRCDIR= tools/clang/tools/driver SRCS= cc1_main.cpp \ cc1as_main.cpp \ driver.cpp .if ${MK_SHARED_TOOLCHAIN} == "no" NO_SHARED?= yes + +.if ${MACHINE_CPUARCH} == "arm" +CFLAGS+= -mlong-calls +.endif .endif LINKS= ${BINDIR}/clang ${BINDIR}/clang++ \ ${BINDIR}/clang ${BINDIR}/clang-cpp MLINKS= clang.1 clang++.1 \ clang.1 clang-cpp.1 .if ${MK_CLANG_IS_CC} != "no" SCRIPTS=CC.sh SCRIPTSNAME=CC LINKS+= ${BINDIR}/clang ${BINDIR}/cc \ ${BINDIR}/clang ${BINDIR}/c++ \ ${BINDIR}/clang ${BINDIR}/cpp MLINKS+= clang.1 cc.1 \ clang.1 c++.1 \ clang.1 CC.1 \ clang.1 cpp.1 .endif TGHDRS= DiagnosticCommonKinds \ DiagnosticDriverKinds \ DiagnosticFrontendKinds \ DiagnosticLexKinds \ DiagnosticSemaKinds \ Options .if ${MK_CLANG_FULL} != "no" _clangstaticanalyzer= \ clangstaticanalyzerfrontend \ clangstaticanalyzercheckers \ clangstaticanalyzercore _clangarcmigrate= \ clangarcmigrate .endif # MK_CLANG_FULL LIBDEPS=clangfrontendtool \ clangfrontend \ clangdriver \ clangserialization \ clangcodegen \ clangparse \ clangsema \ clangrewritefrontend \ clangrewrite \ ${_clangstaticanalyzer} \ ${_clangarcmigrate} \ clanganalysis \ clangedit \ clangast \ clanglex \ clangbasic \ llvmoption \ llvmobjcarcopts \ llvmlinker \ llvmirreader \ llvmipo \ llvmvectorize \ llvmbitwriter \ llvmasmparser \ llvmaarch64codegen \ llvmaarch64asmparser \ llvmaarch64desc \ llvmaarch64info \ llvmaarch64instprinter \ llvmaarch64utils \ llvmarmdisassembler \ llvmarmcodegen \ llvmarmasmparser \ llvmarmdesc \ llvmarminfo \ llvmarminstprinter \ llvmmipscodegen \ llvmmipsasmparser \ llvmmipsdesc \ llvmmipsinfo \ llvmmipsinstprinter \ llvmpowerpcdisassembler \ llvmpowerpccodegen \ llvmpowerpcasmparser \ llvmpowerpcdesc \ llvmpowerpcinfo \ llvmpowerpcinstprinter \ llvmsparccodegen \ llvmsparcasmparser \ llvmsparcdesc \ llvmsparcinfo \ llvmsparcinstprinter \ llvmx86asmparser \ llvmx86codegen \ llvmselectiondag \ llvmasmprinter \ llvmcodegen \ llvmtarget \ llvmscalaropts \ llvmprofiledata \ llvminstcombine \ llvminstrumentation \ llvmtransformutils \ llvmipa \ llvmanalysis \ llvmx86desc \ llvmobject \ llvmmcparser \ llvmbitreader \ llvmmcdisassembler \ llvmx86info \ llvmx86instprinter \ llvmmc \ llvmx86utils \ llvmcore \ llvmsupport LIBADD+= z .include "../clang.prog.mk" Index: head/usr.bin/clang/lldb/Makefile =================================================================== --- head/usr.bin/clang/lldb/Makefile (revision 294030) +++ head/usr.bin/clang/lldb/Makefile (revision 294031) @@ -1,166 +1,169 @@ # $FreeBSD$ .include PROG_CXX=lldb LLDB_SRCS=${.CURDIR}/../../../contrib/llvm/tools/lldb CFLAGS+= -I${LLDB_SRCS}/include CXXFLAGS+= -std=c++11 +.if ${MACHINE_CPUARCH} == "arm" +CFLAGS+= -mlong-calls +.endif SRCDIR= tools/lldb/tools/driver SRCS= Driver.cpp \ Platform.cpp # Man page directory .PATH: ${LLDB_SRCS}/docs LIBADD= edit panel ncursesw execinfo z LLDB_LIBS=\ lldb \ \ lldbAPI \ lldbBreakpoint \ lldbCommands \ lldbCore \ lldbDataFormatters \ lldbExpression \ lldbHostFreeBSD \ lldbHostCommon \ lldbHostPOSIX \ lldbInitialization \ lldbInterpreter \ lldbSymbol \ lldbTarget \ lldbUtility \ \ lldbPluginABISysV_arm \ lldbPluginABISysV_arm64 \ lldbPluginABISysV_i386 \ lldbPluginABISysV_mips \ lldbPluginABISysV_mips64 \ lldbPluginABISysV_ppc \ lldbPluginABISysV_ppc64 \ lldbPluginABISysV_x86_64 \ lldbPluginCXXItaniumABI \ lldbPluginDisassemblerLLVM \ lldbPluginInstructionARM \ lldbPluginInstructionARM64 \ lldbPluginInstructionMIPS \ lldbPluginInstructionMIPS64 \ lldbPluginInstrumentationRuntimeAddressSanitizer \ lldbPluginJITLoaderGDB \ lldbPluginSymbolFileDWARF \ lldbPluginSymbolFileSymtab \ lldbPluginDynamicLoaderStatic \ lldbPluginDynamicLoaderPosixDYLD \ lldbPluginMemoryHistoryASan \ lldbPluginObjectContainerBSDArchive \ lldbPluginObjectFileELF \ lldbPluginObjectFileJIT \ lldbPluginSymbolVendorELF \ lldbPluginPlatformFreeBSD \ lldbPluginPlatformGDB \ lldbPluginProcessElfCore \ lldbPluginProcessFreeBSD \ lldbPluginProcessGDBRemote \ lldbPluginProcessUtility \ lldbPluginProcessPOSIX \ lldbPluginProcessFreeBSD \ lldbPluginUnwindAssemblyInstEmulation \ lldbPluginUnwindAssemblyX86 LDADD+= -Wl,--start-group .for lib in ${LLDB_LIBS} DPADD+= ${.OBJDIR}/../../../lib/clang/lib${lib}/lib${lib}.a LDADD+= ${.OBJDIR}/../../../lib/clang/lib${lib}/lib${lib}.a .endfor LDADD+= -Wl,--end-group # Clang and LLVM libraries LIBDEPS=\ clangfrontend \ clangdriver \ clangserialization \ clangcodegen \ clangparse \ clangsema \ clanganalysis \ clangedit \ clangast \ clanglex \ clangbasic \ \ llvmoption \ llvmobjcarcopts \ llvmlinker \ llvmmcjit \ llvmruntimedyld \ llvmexecutionengine \ llvmirreader \ llvmipo \ llvmvectorize \ llvmbitwriter \ llvmasmparser \ llvmaarch64disassembler \ llvmaarch64codegen \ llvmaarch64asmparser \ llvmaarch64desc \ llvmaarch64info \ llvmaarch64instprinter \ llvmaarch64utils \ llvmarmdisassembler \ llvmarmcodegen \ llvmarmasmparser \ llvmarmdesc \ llvmarminfo \ llvmarminstprinter \ llvmmipsdisassembler \ llvmmipscodegen \ llvmmipsasmparser \ llvmmipsdesc \ llvmmipsinfo \ llvmmipsinstprinter \ llvmpowerpcdisassembler \ llvmpowerpccodegen \ llvmpowerpcasmparser \ llvmpowerpcdesc \ llvmpowerpcinfo \ llvmpowerpcinstprinter \ llvmsparcdisassembler \ llvmsparccodegen \ llvmsparcasmparser \ llvmsparcdesc \ llvmsparcinfo \ llvmsparcinstprinter \ llvmx86disassembler \ llvmx86asmparser \ llvmx86codegen \ llvmselectiondag \ llvmasmprinter \ llvmcodegen \ llvmtarget \ llvmscalaropts \ llvmprofiledata \ llvminstcombine \ llvmtransformutils \ llvmipa \ llvmanalysis \ llvminstrumentation \ llvmx86desc \ llvmobject \ llvmmcparser \ llvmbitreader \ llvmmcdisassembler \ llvmx86info \ llvmx86instprinter \ llvmmc \ llvmx86utils \ llvmcore \ llvmsupport LIBADD+= pthread .include "../clang.prog.mk"