blob: cda31598cab715a19a5882d07542830b38f66e8e [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)
Jonathan Peytondf6818b2016-06-14 17:57:47 +000024if(NOT "${LIBOMP_OMP_VERSION}" STREQUAL "45")
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000025 libomp_append(libomp_suffix .${LIBOMP_OMP_VERSION})
Jonathan Peyton2e013352015-07-15 16:05:30 +000026endif()
27libomp_append(libomp_suffix .s1 LIBOMP_STATS)
28libomp_append(libomp_suffix .ompt LIBOMP_OMPT_SUPPORT)
29if(${LIBOMP_OMPT_SUPPORT})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000030 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)
Jonathan Peyton2e013352015-07-15 16:05:30 +000032endif()
33string(REPLACE ";" "" libomp_suffix "${libomp_suffix}")
34
35# Set exports locations
36if(${MIC})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000037 set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc
Jonathan Peyton2e013352015-07-15 16:05:30 +000038else()
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000039 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()
Jonathan Peyton2e013352015-07-15 16:05:30 +000046endif()
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
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000056 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR}
57 COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR}
Jonathan Peyton2e013352015-07-15 16:05:30 +000058)
59if(${LIBOMP_OMPT_SUPPORT})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000060 add_custom_command(TARGET omp POST_BUILD
61 COMMAND ${CMAKE_COMMAND} -E copy ompt.h ${LIBOMP_EXPORTS_CMN_DIR}
62 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000063endif()
64if(${LIBOMP_FORTRAN_MODULES})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000065 add_custom_command(TARGET libomp-mod POST_BUILD
66 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR}
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000067 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 )
Paul Osmialowski7a9c29e2016-09-30 22:05:45 +000070 add_custom_command(TARGET omp POST_BUILD
71 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR}
72 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000073endif()
74
75# Copy OpenMP library into exports/ directory post build
76if(WIN32)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000077 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
Jonathan Peyton2e013352015-07-15 16:05:30 +000078else()
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000079 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY)
Jonathan Peyton2e013352015-07-15 16:05:30 +000080endif()
81if(NOT LIBOMP_OUTPUT_DIRECTORY)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000082 set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Jonathan Peyton2e013352015-07-15 16:05:30 +000083endif()
84add_custom_command(TARGET omp POST_BUILD
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000085 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}
Jonathan Peyton2e013352015-07-15 16:05:30 +000087)
88
89# Copy Windows import library into exports/ directory post build
90if(WIN32)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000091 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 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000099endif()
100