xref: /freebsd-14.2/lib/libomp/Makefile (revision fe013be4)
13c6bb671SDimitry Andric
2022d9287SDimitry Andric.include <bsd.compiler.mk>
3022d9287SDimitry Andric
43c6bb671SDimitry AndricSHLIB_NAME=	libomp.so
53c6bb671SDimitry Andric
60b57cec5SDimitry AndricOMPSRC=		${SRCTOP}/contrib/llvm-project/openmp/runtime/src
73c6bb671SDimitry AndricITTSRC=		${OMPSRC}/thirdparty/ittnotify
83c6bb671SDimitry Andric.PATH:		${OMPSRC}
93c6bb671SDimitry Andric.PATH:		${ITTSRC}
103c6bb671SDimitry Andric
113eaa9debSDimitry AndricSRCS+=		ittnotify_static.cpp
123c6bb671SDimitry AndricSRCS+=		kmp_affinity.cpp
133c6bb671SDimitry AndricSRCS+=		kmp_alloc.cpp
143c6bb671SDimitry AndricSRCS+=		kmp_atomic.cpp
153c6bb671SDimitry AndricSRCS+=		kmp_barrier.cpp
163c6bb671SDimitry AndricSRCS+=		kmp_cancel.cpp
173c6bb671SDimitry AndricSRCS+=		kmp_csupport.cpp
183c6bb671SDimitry AndricSRCS+=		kmp_debug.cpp
193c6bb671SDimitry AndricSRCS+=		kmp_dispatch.cpp
203c6bb671SDimitry AndricSRCS+=		kmp_environment.cpp
213c6bb671SDimitry AndricSRCS+=		kmp_error.cpp
223c6bb671SDimitry AndricSRCS+=		kmp_ftn_cdecl.cpp
233c6bb671SDimitry AndricSRCS+=		kmp_ftn_extra.cpp
243c6bb671SDimitry AndricSRCS+=		kmp_global.cpp
253c6bb671SDimitry AndricSRCS+=		kmp_gsupport.cpp
263c6bb671SDimitry AndricSRCS+=		kmp_i18n.cpp
273c6bb671SDimitry AndricSRCS+=		kmp_io.cpp
283c6bb671SDimitry AndricSRCS+=		kmp_itt.cpp
293c6bb671SDimitry AndricSRCS+=		kmp_lock.cpp
303c6bb671SDimitry AndricSRCS+=		kmp_runtime.cpp
313c6bb671SDimitry AndricSRCS+=		kmp_sched.cpp
323c6bb671SDimitry AndricSRCS+=		kmp_settings.cpp
333c6bb671SDimitry AndricSRCS+=		kmp_str.cpp
343c6bb671SDimitry AndricSRCS+=		kmp_taskdeps.cpp
353c6bb671SDimitry AndricSRCS+=		kmp_tasking.cpp
363c6bb671SDimitry AndricSRCS+=		kmp_threadprivate.cpp
373c6bb671SDimitry AndricSRCS+=		kmp_utility.cpp
383c6bb671SDimitry AndricSRCS+=		kmp_version.cpp
393c6bb671SDimitry AndricSRCS+=		kmp_wait_release.cpp
403c6bb671SDimitry AndricSRCS+=		ompt-general.cpp
413c6bb671SDimitry AndricSRCS+=		z_Linux_asm.S
423c6bb671SDimitry AndricSRCS+=		z_Linux_util.cpp
433c6bb671SDimitry AndricINCS+=		omp.h
443c6bb671SDimitry Andric
453c6bb671SDimitry AndricWARNS?=		1
463c6bb671SDimitry Andric
473c6bb671SDimitry AndricCFLAGS+=	-D__STDC_CONSTANT_MACROS
483c6bb671SDimitry AndricCFLAGS+=	-D__STDC_FORMAT_MACROS
493c6bb671SDimitry AndricCFLAGS+=	-D__STDC_LIMIT_MACROS
503c6bb671SDimitry AndricCFLAGS+=	-I${.CURDIR}
513c6bb671SDimitry AndricCFLAGS+=	-I${OMPSRC}
523c6bb671SDimitry AndricCFLAGS+=	-I${ITTSRC}
533c6bb671SDimitry AndricCFLAGS+=	-ffunction-sections
543c6bb671SDimitry AndricCFLAGS+=	-fdata-sections
553c6bb671SDimitry AndricCXXFLAGS+=	-fvisibility-inlines-hidden
563c6bb671SDimitry AndricCXXFLAGS+=	-fno-exceptions
573c6bb671SDimitry AndricCXXFLAGS+=	-fno-rtti
58*fe013be4SDimitry AndricCXXSTD=		c++17
593c6bb671SDimitry Andric
60*fe013be4SDimitry Andric.if ${COMPILER_TYPE} == "clang" && ${MACHINE_CPUARCH} == "i386"
61*fe013be4SDimitry Andric.if ${COMPILER_VERSION} >= 90000
62022d9287SDimitry Andric# When targeting i386, clang 9.0.0 produces a new warning about large atomic
63022d9287SDimitry Andric# operations "possibly incurring significant performance penalties", but there
64022d9287SDimitry Andric# is not much we can do about it.
65022d9287SDimitry AndricCWARNFLAGS+=	-Wno-atomic-alignment
66022d9287SDimitry Andric.endif
67*fe013be4SDimitry Andric.if ${COMPILER_VERSION} >= 170000
68*fe013be4SDimitry Andric# When targeting i386, clang 17.0.0 produces a new warning that __sync
69*fe013be4SDimitry Andric# builtin operations must have natural alignment, but there is not much we
70*fe013be4SDimitry Andric# can do about it.
71*fe013be4SDimitry AndricCWARNFLAGS+=	-Wno-sync-alignment
72*fe013be4SDimitry Andric.endif
73*fe013be4SDimitry Andric.endif
74022d9287SDimitry Andric
753c6bb671SDimitry AndricLDFLAGS+=	-Wl,--warn-shared-textrel
763c6bb671SDimitry AndricLDFLAGS+=	-Wl,--gc-sections
773c6bb671SDimitry AndricLDFLAGS+=	-Wl,-z,noexecstack
783c6bb671SDimitry AndricLDFLAGS+=	-Wl,-fini=__kmp_internal_end_fini
793c6bb671SDimitry AndricLDFLAGS+=	-Wl,-soname,libomp.so
803c6bb671SDimitry Andric
813c6bb671SDimitry AndricVERSION_MAP=	${OMPSRC}/exports_so.txt
823c6bb671SDimitry Andric
831d0078a2SDimitry AndricLIBADD+=	pthread
84db7591a8SDimitry AndricLIBADD+=	m
851d0078a2SDimitry Andric
86001ec17eSDimitry AndricSYMLINKS+=	${SHLIB_NAME} ${LIBDIR}/libgomp.so
87001ec17eSDimitry Andric
883c6bb671SDimitry Andric.include <bsd.lib.mk>
89