1# 2#//===----------------------------------------------------------------------===// 3#// 4#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5#// See https://llvm.org/LICENSE.txt for license information. 6#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7#// 8#//===----------------------------------------------------------------------===// 9# 10 11# LibompExports.cmake 12# Copy library and header files into the exports/ subdirectory after library build 13 14# Create the suffix for the export directory 15# - Only add to suffix when not a default value 16# - Example suffix: .deb.s1 17# final export directory: exports/lin_32e.deb.s1/lib 18# - These suffixes imply the build is a Debug, Stats-Gathering version of the library 19set(libomp_suffix) 20libomp_append(libomp_suffix .deb DEBUG_BUILD) 21libomp_append(libomp_suffix .dia RELWITHDEBINFO_BUILD) 22libomp_append(libomp_suffix .min MINSIZEREL_BUILD) 23libomp_append(libomp_suffix .s1 LIBOMP_STATS) 24libomp_append(libomp_suffix .ompt LIBOMP_OMPT_SUPPORT) 25if(${LIBOMP_OMPT_SUPPORT}) 26 libomp_append(libomp_suffix .optional LIBOMP_OMPT_OPTIONAL) 27endif() 28string(REPLACE ";" "" libomp_suffix "${libomp_suffix}") 29 30# Set exports locations 31if(WIN32) 32 set(LIBOMP_SHORT_OS win) 33elseif(APPLE) 34 set(LIBOMP_SHORT_OS mac) 35else() 36 set(LIBOMP_SHORT_OS lin) 37endif() 38if(${MIC}) 39 set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc 40else() 41 if(${IA32}) 42 set(libomp_platform "${LIBOMP_SHORT_OS}_32") 43 elseif(${INTEL64}) 44 set(libomp_platform "${LIBOMP_SHORT_OS}_32e") 45 else() 46 set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_ARCH}") # e.g., lin_arm, lin_ppc64 47 endif() 48endif() 49set(LIBOMP_EXPORTS_DIR "${LIBOMP_BASE_DIR}/exports") 50set(LIBOMP_EXPORTS_PLATFORM_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}") 51set(LIBOMP_EXPORTS_CMN_DIR "${LIBOMP_EXPORTS_DIR}/common${libomp_suffix}/include") 52set(LIBOMP_EXPORTS_INC_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include") 53set(LIBOMP_EXPORTS_MOD_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include_compat") 54set(LIBOMP_EXPORTS_LIB_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}/lib") 55 56# Put headers in exports/ directory post build 57add_custom_command(TARGET omp POST_BUILD 58 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR} 59 COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR} 60 COMMAND ${CMAKE_COMMAND} -E copy ompx.h ${LIBOMP_EXPORTS_CMN_DIR} 61) 62if(${LIBOMP_OMPT_SUPPORT}) 63 add_custom_command(TARGET omp POST_BUILD 64 COMMAND ${CMAKE_COMMAND} -E copy omp-tools.h ${LIBOMP_EXPORTS_CMN_DIR} 65 ) 66endif() 67if(${LIBOMP_FORTRAN_MODULES}) 68 add_custom_command(TARGET libomp-mod POST_BUILD 69 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR} 70 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.mod ${LIBOMP_EXPORTS_MOD_DIR} 71 COMMAND ${CMAKE_COMMAND} -E copy omp_lib_kinds.mod ${LIBOMP_EXPORTS_MOD_DIR} 72 ) 73 add_custom_command(TARGET omp POST_BUILD 74 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR} 75 ) 76endif() 77 78# Copy OpenMP library into exports/ directory post build 79if(WIN32) 80 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY) 81else() 82 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY) 83endif() 84if(NOT LIBOMP_OUTPUT_DIRECTORY) 85 set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 86endif() 87add_custom_command(TARGET omp POST_BUILD 88 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR} 89 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:omp> ${LIBOMP_EXPORTS_LIB_DIR} 90) 91 92# Copy Windows import library into exports/ directory post build 93if(WIN32) 94 get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ${LIBOMP_IMP_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY) 95 if(NOT LIBOMPIMP_OUTPUT_DIRECTORY) 96 set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) 97 endif() 98 add_custom_command(TARGET ${LIBOMP_IMP_LIB_TARGET} POST_BUILD 99 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR} 100 COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR} 101 ) 102endif() 103