brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 461e47d Raw
103 lines · plain
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-exception7#//8#//===----------------------------------------------------------------------===//9#10 11# LibompExports.cmake12#   Copy library and header files into the exports/ subdirectory after library build13 14# Create the suffix for the export directory15# - Only add to suffix when not a default value16# - Example suffix: .deb.s117#   final export directory: exports/lin_32e.deb.s1/lib18# - These suffixes imply the build is a Debug, Stats-Gathering version of the library19set(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 locations31if(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_knc40else()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_ppc6447  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 build57add_custom_command(TARGET omp POST_BUILD58  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_BUILD64    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_BUILD69    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_BUILD74    COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR}75  )76endif()77 78# Copy OpenMP library into exports/ directory post build79if(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_BUILD88  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 build93if(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_BUILD99    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