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