xref: /freebsd-14.2/lib/libomp/Makefile (revision c9157d92)
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
58fe013be4SDimitry AndricCXXSTD=		c++17
593c6bb671SDimitry Andric
60*c9157d92SDimitry Andric.if ${COMPILER_TYPE} == "clang"
61*c9157d92SDimitry Andric.if ${MACHINE_CPUARCH} == "i386"
62fe013be4SDimitry Andric.if ${COMPILER_VERSION} >= 90000
63022d9287SDimitry Andric# When targeting i386, clang 9.0.0 produces a new warning about large atomic
64022d9287SDimitry Andric# operations "possibly incurring significant performance penalties", but there
65022d9287SDimitry Andric# is not much we can do about it.
66022d9287SDimitry AndricCWARNFLAGS+=	-Wno-atomic-alignment
67022d9287SDimitry Andric.endif
68fe013be4SDimitry Andric.if ${COMPILER_VERSION} >= 170000
69fe013be4SDimitry Andric# When targeting i386, clang 17.0.0 produces a new warning that __sync
70fe013be4SDimitry Andric# builtin operations must have natural alignment, but there is not much we
71fe013be4SDimitry Andric# can do about it.
72fe013be4SDimitry AndricCWARNFLAGS+=	-Wno-sync-alignment
73*c9157d92SDimitry Andric.endif # COMPILER_VERSION >= 170000
74*c9157d92SDimitry Andric.endif # MACHINE_CPUARCH == i386
75*c9157d92SDimitry Andric.if ${COMPILER_VERSION} >= 180000
76*c9157d92SDimitry Andric# clang 18.0.0 introduces a new warning about variable length arrays in C++,
77*c9157d92SDimitry Andric# which OpenMP makes use of in several sources.
78*c9157d92SDimitry AndricCXXWARNFLAGS+=	-Wno-vla-cxx-extension
79*c9157d92SDimitry Andric.endif # COMPILER_VERSION >= 180000
80*c9157d92SDimitry Andric.endif # COMPILER_TYPE == clang
81022d9287SDimitry Andric
823c6bb671SDimitry AndricLDFLAGS+=	-Wl,--warn-shared-textrel
833c6bb671SDimitry AndricLDFLAGS+=	-Wl,--gc-sections
843c6bb671SDimitry AndricLDFLAGS+=	-Wl,-z,noexecstack
853c6bb671SDimitry AndricLDFLAGS+=	-Wl,-fini=__kmp_internal_end_fini
863c6bb671SDimitry AndricLDFLAGS+=	-Wl,-soname,libomp.so
873c6bb671SDimitry Andric
883c6bb671SDimitry AndricVERSION_MAP=	${OMPSRC}/exports_so.txt
893c6bb671SDimitry Andric
901d0078a2SDimitry AndricLIBADD+=	pthread
91db7591a8SDimitry AndricLIBADD+=	m
921d0078a2SDimitry Andric
93001ec17eSDimitry AndricSYMLINKS+=	${SHLIB_NAME} ${LIBDIR}/libgomp.so
94001ec17eSDimitry Andric
953c6bb671SDimitry Andric.include <bsd.lib.mk>
96