1# $OpenBSD: Makefile.inc,v 1.28 2023/11/17 15:46:58 visa Exp $ 2 3CLANG_SRCS?= ${.CURDIR}/../../../llvm/clang 4LLDB_SRCS?= ${.CURDIR}/../../../llvm/lldb 5LLD_SRCS?= ${.CURDIR}/../../../llvm/lld 6LLVM_SRCS?= ${.CURDIR}/../../../llvm/llvm 7 8DRIVER_TEMPLATE?=no 9 10.if ${COMPILER_VERSION:L} != "clang" 11CC= clang 12CXX= clang++ 13.endif 14 15BOOTSTRAP_CLANG?=no 16.if ${BOOTSTRAP_CLANG} == "yes" 17CC= egcc 18CXX= eg++ 19.endif 20 21DEBUG= 22NOPIE= 23 24CLANG_INCLUDES= -I${CLANG_SRCS}/include 25LLDB_INCLUDES= -I${LLDB_SRCS}/include \ 26 -I${LLDB_SRCS}/source 27CPPFLAGS+= -I${LLVM_SRCS}/include -I${.CURDIR}/../include -I${.OBJDIR} \ 28 -I${.OBJDIR}/../include 29CPPFLAGS+= -DNDEBUG 30 31# Disable some protections in the compiler to regain performance. 32.if ${MACHINE_ARCH} == "aarch64" || ${MACHINE_ARCH} == "amd64" || \ 33 ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "mips64" || \ 34 ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "powerpc" 35CXXFLAGS+= -fno-ret-protector 36.endif 37.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" 38CXXFLAGS+= -mno-retpoline 39.endif 40 41# Omit frame pointer to improve performance. 42.if ${MACHINE_ARCH} == "mips64" || ${MACHINE_ARCH} == "mips64el" 43CXXFLAGS+= -fomit-frame-pointer 44CXXFLAGS+= -mxgot 45.endif 46 47CPPFLAGS+= -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS \ 48 -D__STDC_FORMAT_MACROS 49 50.if ${MACHINE_ARCH} == "arm" 51TRIPLE= armv7-unknown-openbsd${OSREV}-gnueabi 52.else 53TRIPLE= ${MACHINE_ARCH}-unknown-openbsd${OSREV} 54.endif 55.include "Makefile.arch" 56 57# upstream defaults 58CFLAGS+= -ffunction-sections -fdata-sections 59CXXFLAGS+= -ffunction-sections -fdata-sections 60CXXFLAGS+= -std=c++17 61CXXFLAGS+= -fvisibility-inlines-hidden 62CXXFLAGS+= -fno-exceptions -fno-rtti 63CXXFLAGS+= -fno-semantic-interposition 64# warnings (from upstream) 65CXXFLAGS+= -Wall -Wc++98-compat-extra-semi -Wcast-qual \ 66 -Wcovered-switch-default -Wctad-maybe-unsupported \ 67 -Wdelete-non-virtual-dtor -Werror=date-time \ 68 -Werror=unguarded-availability-new -Wextra \ 69 -Wimplicit-fallthrough -Wmisleading-indentation \ 70 -Wmissing-field-initializers -Wno-long-long -Wno-noexcept-type \ 71 -Wno-unused-parameter -Wnon-virtual-dtor -Wstring-conversion \ 72 -Wsuggest-override -Wwrite-strings 73 74LDADD+=-Wl,--start-group 75.for lib in ${LLVM_LIBDEPS} 76DPADD+= ${.OBJDIR}/../lib${lib}/lib${lib}.a 77LDADD+= ${.OBJDIR}/../lib${lib}/lib${lib}.a 78.endfor 79LDADD+=-Wl,--end-group 80 81.if ${DRIVER_TEMPLATE:L} == "yes" 82DRIVER_NAME?= ${PROG:S/-/_/g} 83CLEANFILES+= ${DRIVER_NAME}_main.cpp 84SRCS+= ${DRIVER_NAME}_main.cpp 85 86${DRIVER_NAME}_main.cpp: 87 sed "s,@TOOL_NAME@,${DRIVER_NAME},g" \ 88 ${LLVM_SRCS}/cmake/modules/llvm-driver-template.cpp.in > $@ 89.endif 90