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