blob: 1893b9f1a2ae6800c2e7ff0b39ab33f3bdb45b49 [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})
Jonas Hahnfeldd30cb272017-11-10 15:17:57 +000030 libomp_append(libomp_suffix .optional LIBOMP_OMPT_OPTIONAL)
Jonathan Peyton2e013352015-07-15 16:05:30 +000031endif()
32string(REPLACE ";" "" libomp_suffix "${libomp_suffix}")
33
34# Set exports locations
35if(${MIC})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000036 set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc
Jonathan Peyton2e013352015-07-15 16:05:30 +000037else()
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000038 if(${IA32})
39 set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_32")
40 elseif(${INTEL64})
41 set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_32e")
42 else()
43 set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_${LIBOMP_ARCH}") # e.g., lin_arm, lin_ppc64
44 endif()
Jonathan Peyton2e013352015-07-15 16:05:30 +000045endif()
46set(LIBOMP_EXPORTS_DIR "${LIBOMP_BASE_DIR}/exports")
47set(LIBOMP_EXPORTS_PLATFORM_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}")
48set(LIBOMP_EXPORTS_CMN_DIR "${LIBOMP_EXPORTS_DIR}/common${libomp_suffix}/include")
49set(LIBOMP_EXPORTS_INC_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include")
50set(LIBOMP_EXPORTS_MOD_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include_compat")
51set(LIBOMP_EXPORTS_LIB_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}/lib")
52
53# Put headers in exports/ directory post build
54add_custom_command(TARGET omp POST_BUILD
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000055 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR}
56 COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR}
Jonathan Peyton2e013352015-07-15 16:05:30 +000057)
58if(${LIBOMP_OMPT_SUPPORT})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000059 add_custom_command(TARGET omp POST_BUILD
60 COMMAND ${CMAKE_COMMAND} -E copy ompt.h ${LIBOMP_EXPORTS_CMN_DIR}
61 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000062endif()
63if(${LIBOMP_FORTRAN_MODULES})
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000064 add_custom_command(TARGET libomp-mod POST_BUILD
65 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR}
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000066 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.mod ${LIBOMP_EXPORTS_MOD_DIR}
67 COMMAND ${CMAKE_COMMAND} -E copy omp_lib_kinds.mod ${LIBOMP_EXPORTS_MOD_DIR}
68 )
Paul Osmialowski7a9c29e2016-09-30 22:05:45 +000069 add_custom_command(TARGET omp POST_BUILD
70 COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR}
71 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000072endif()
73
74# Copy OpenMP library into exports/ directory post build
75if(WIN32)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000076 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
Jonathan Peyton2e013352015-07-15 16:05:30 +000077else()
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000078 get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY)
Jonathan Peyton2e013352015-07-15 16:05:30 +000079endif()
80if(NOT LIBOMP_OUTPUT_DIRECTORY)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000081 set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Jonathan Peyton2e013352015-07-15 16:05:30 +000082endif()
83add_custom_command(TARGET omp POST_BUILD
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000084 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
85 COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMP_OUTPUT_DIRECTORY}/${LIBOMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
Jonathan Peyton2e013352015-07-15 16:05:30 +000086)
87
88# Copy Windows import library into exports/ directory post build
89if(WIN32)
Jonathan Peyton5b4acbd2015-07-15 16:57:19 +000090 get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ompimp ARCHIVE_OUTPUT_DIRECTORY)
91 if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
92 set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
93 endif()
94 add_custom_command(TARGET ompimp POST_BUILD
95 COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
96 COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
97 )
Jonathan Peyton2e013352015-07-15 16:05:30 +000098endif()
99