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