Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 1 | # |
| 2 | #//===----------------------------------------------------------------------===// |
| 3 | #// |
Chandler Carruth | 57b08b0 | 2019-01-19 10:56:40 | [diff] [blame] | 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 |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 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 |
Jonathan Peyton | e4b4f99 | 2019-07-12 21:45:36 | [diff] [blame] | 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 |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 19 | set(libomp_suffix) |
| 20 | libomp_append(libomp_suffix .deb DEBUG_BUILD) |
| 21 | libomp_append(libomp_suffix .dia RELWITHDEBINFO_BUILD) |
| 22 | libomp_append(libomp_suffix .min MINSIZEREL_BUILD) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 23 | libomp_append(libomp_suffix .s1 LIBOMP_STATS) |
| 24 | libomp_append(libomp_suffix .ompt LIBOMP_OMPT_SUPPORT) |
| 25 | if(${LIBOMP_OMPT_SUPPORT}) |
Jonas Hahnfeld | d30cb27 | 2017-11-10 15:17:57 | [diff] [blame] | 26 | libomp_append(libomp_suffix .optional LIBOMP_OMPT_OPTIONAL) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 27 | endif() |
| 28 | string(REPLACE ";" "" libomp_suffix "${libomp_suffix}") |
| 29 | |
| 30 | # Set exports locations |
Jonathan Peyton | 88dae3d | 2024-06-20 17:54:49 | [diff] [blame^] | 31 | if(WIN32) |
| 32 | set(LIBOMP_SHORT_OS win) |
| 33 | elseif(APPLE) |
| 34 | set(LIBOMP_SHORT_OS mac) |
| 35 | else() |
| 36 | set(LIBOMP_SHORT_OS lin) |
| 37 | endif() |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 38 | if(${MIC}) |
Jonathan Peyton | 88dae3d | 2024-06-20 17:54:49 | [diff] [blame^] | 39 | set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 40 | else() |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 41 | if(${IA32}) |
Jonathan Peyton | 88dae3d | 2024-06-20 17:54:49 | [diff] [blame^] | 42 | set(libomp_platform "${LIBOMP_SHORT_OS}_32") |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 43 | elseif(${INTEL64}) |
Jonathan Peyton | 88dae3d | 2024-06-20 17:54:49 | [diff] [blame^] | 44 | set(libomp_platform "${LIBOMP_SHORT_OS}_32e") |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 45 | else() |
Jonathan Peyton | 88dae3d | 2024-06-20 17:54:49 | [diff] [blame^] | 46 | set(libomp_platform "${LIBOMP_SHORT_OS}_${LIBOMP_ARCH}") # e.g., lin_arm, lin_ppc64 |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 47 | endif() |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 48 | endif() |
| 49 | set(LIBOMP_EXPORTS_DIR "${LIBOMP_BASE_DIR}/exports") |
| 50 | set(LIBOMP_EXPORTS_PLATFORM_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}") |
| 51 | set(LIBOMP_EXPORTS_CMN_DIR "${LIBOMP_EXPORTS_DIR}/common${libomp_suffix}/include") |
| 52 | set(LIBOMP_EXPORTS_INC_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include") |
| 53 | set(LIBOMP_EXPORTS_MOD_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include_compat") |
| 54 | set(LIBOMP_EXPORTS_LIB_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}/lib") |
| 55 | |
| 56 | # Put headers in exports/ directory post build |
| 57 | add_custom_command(TARGET omp POST_BUILD |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 58 | COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR} |
| 59 | COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR} |
Johannes Doerfert | daef6d3 | 2023-07-27 00:25:39 | [diff] [blame] | 60 | COMMAND ${CMAKE_COMMAND} -E copy ompx.h ${LIBOMP_EXPORTS_CMN_DIR} |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 61 | ) |
| 62 | if(${LIBOMP_OMPT_SUPPORT}) |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 63 | add_custom_command(TARGET omp POST_BUILD |
Joachim Protze | 2b46d30 | 2019-01-15 15:36:53 | [diff] [blame] | 64 | COMMAND ${CMAKE_COMMAND} -E copy omp-tools.h ${LIBOMP_EXPORTS_CMN_DIR} |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 65 | ) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 66 | endif() |
| 67 | if(${LIBOMP_FORTRAN_MODULES}) |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 68 | add_custom_command(TARGET libomp-mod POST_BUILD |
| 69 | COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR} |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 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 | ) |
Paul Osmialowski | 7a9c29e | 2016-09-30 22:05:45 | [diff] [blame] | 73 | add_custom_command(TARGET omp POST_BUILD |
| 74 | COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR} |
| 75 | ) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 76 | endif() |
| 77 | |
| 78 | # Copy OpenMP library into exports/ directory post build |
| 79 | if(WIN32) |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 80 | get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 81 | else() |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 82 | get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 83 | endif() |
| 84 | if(NOT LIBOMP_OUTPUT_DIRECTORY) |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 85 | set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 86 | endif() |
| 87 | add_custom_command(TARGET omp POST_BUILD |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 88 | COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR} |
David Truby | bb099c8 | 2020-07-20 11:11:26 | [diff] [blame] | 89 | COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:omp> ${LIBOMP_EXPORTS_LIB_DIR} |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 90 | ) |
| 91 | |
| 92 | # Copy Windows import library into exports/ directory post build |
| 93 | if(WIN32) |
AndreyChurbanov | 4a04bc8 | 2020-08-04 15:48:25 | [diff] [blame] | 94 | get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ${LIBOMP_IMP_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY) |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 95 | if(NOT LIBOMPIMP_OUTPUT_DIRECTORY) |
| 96 | set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
| 97 | endif() |
AndreyChurbanov | 4a04bc8 | 2020-08-04 15:48:25 | [diff] [blame] | 98 | add_custom_command(TARGET ${LIBOMP_IMP_LIB_TARGET} POST_BUILD |
Jonathan Peyton | 5b4acbd | 2015-07-15 16:57:19 | [diff] [blame] | 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 | ) |
Jonathan Peyton | 2e01335 | 2015-07-15 16:05:30 | [diff] [blame] | 102 | endif() |