blob: 3a4191a6e8cef4765eb93b787c45624ec5ea27bb [file] [log] [blame]
Jonathan Peyton2e013352015-07-15 16:05:30 +00001#
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 "41")
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.h ${LIBOMP_EXPORTS_CMN_DIR}
68 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.mod ${LIBOMP_EXPORTS_MOD_DIR}
69 COMMAND ${CMAKE_COMMAND} -E copy omp_lib_kinds.mod ${LIBOMP_EXPORTS_MOD_DIR}
70 )
71endif()
72
73# Copy OpenMP library into exports/ directory post build
74if(WIN32)
75 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
76else()
77 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY)
78endif()
79if(NOT LIBOMP_OUTPUT_DIRECTORY)
80 set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
81endif()
82add_custom_command(TARGET omp POST_BUILD
83 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
84 COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
85)
86
87# Copy Windows import library into exports/ directory post build
88if(WIN32)
89 get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
90 if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
91 set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
92 endif()
93 add_custom_command(TARGET ompimp POST_BUILD
94 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
95 COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
96 )
97endif()
98