Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / openmp / runtime / cmake / LibompExports.cmake
blobdbeb18f358f1acfadc907bc142e4353d9165626f
2 #//===----------------------------------------------------------------------===//
3 #//
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
7 #//
8 #//===----------------------------------------------------------------------===//
11 # LibompExports.cmake
12 #   Copy library and header files into the exports/ subdirectory after library build
14 # Create the suffix for the export directory
15 # - Only add to suffix when not a default value
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
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)
23 libomp_append(libomp_suffix .s1 LIBOMP_STATS)
24 libomp_append(libomp_suffix .ompt LIBOMP_OMPT_SUPPORT)
25 if(${LIBOMP_OMPT_SUPPORT})
26   libomp_append(libomp_suffix .optional LIBOMP_OMPT_OPTIONAL)
27 endif()
28 string(REPLACE ";" "" libomp_suffix "${libomp_suffix}")
30 # Set exports locations
31 if(${MIC})
32   set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_${LIBOMP_MIC_ARCH}") # e.g., lin_knf, lin_knc
33 else()
34   if(${IA32})
35     set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_32")
36   elseif(${INTEL64})
37     set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_32e")
38   else()
39     set(libomp_platform "${LIBOMP_PERL_SCRIPT_OS}_${LIBOMP_ARCH}") # e.g., lin_arm, lin_ppc64
40   endif()
41 endif()
42 set(LIBOMP_EXPORTS_DIR "${LIBOMP_BASE_DIR}/exports")
43 set(LIBOMP_EXPORTS_PLATFORM_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}")
44 set(LIBOMP_EXPORTS_CMN_DIR "${LIBOMP_EXPORTS_DIR}/common${libomp_suffix}/include")
45 set(LIBOMP_EXPORTS_INC_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include")
46 set(LIBOMP_EXPORTS_MOD_DIR "${LIBOMP_EXPORTS_PLATFORM_DIR}/include_compat")
47 set(LIBOMP_EXPORTS_LIB_DIR "${LIBOMP_EXPORTS_DIR}/${libomp_platform}${libomp_suffix}/lib")
49 # Put headers in exports/ directory post build
50 add_custom_command(TARGET omp POST_BUILD
51   COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_CMN_DIR}
52   COMMAND ${CMAKE_COMMAND} -E copy omp.h ${LIBOMP_EXPORTS_CMN_DIR}
53   COMMAND ${CMAKE_COMMAND} -E copy ompx.h ${LIBOMP_EXPORTS_CMN_DIR}
55 if(${LIBOMP_OMPT_SUPPORT})
56   add_custom_command(TARGET omp POST_BUILD
57     COMMAND ${CMAKE_COMMAND} -E copy omp-tools.h ${LIBOMP_EXPORTS_CMN_DIR}
58   )
59 endif()
60 if(${LIBOMP_FORTRAN_MODULES})
61   add_custom_command(TARGET libomp-mod POST_BUILD
62     COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_MOD_DIR}
63     COMMAND ${CMAKE_COMMAND} -E copy omp_lib.mod ${LIBOMP_EXPORTS_MOD_DIR}
64     COMMAND ${CMAKE_COMMAND} -E copy omp_lib_kinds.mod ${LIBOMP_EXPORTS_MOD_DIR}
65   )
66   add_custom_command(TARGET omp POST_BUILD
67     COMMAND ${CMAKE_COMMAND} -E copy omp_lib.h ${LIBOMP_EXPORTS_CMN_DIR}
68   )
69 endif()
71 # Copy OpenMP library into exports/ directory post build
72 if(WIN32)
73   get_target_property(LIBOMP_OUTPUT_DIRECTORY omp RUNTIME_OUTPUT_DIRECTORY)
74 else()
75   get_target_property(LIBOMP_OUTPUT_DIRECTORY omp LIBRARY_OUTPUT_DIRECTORY)
76 endif()
77 if(NOT LIBOMP_OUTPUT_DIRECTORY)
78   set(LIBOMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
79 endif()
80 add_custom_command(TARGET omp POST_BUILD
81   COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
82   COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:omp> ${LIBOMP_EXPORTS_LIB_DIR}
85 # Copy Windows import library into exports/ directory post build
86 if(WIN32)
87   get_target_property(LIBOMPIMP_OUTPUT_DIRECTORY ${LIBOMP_IMP_LIB_TARGET} ARCHIVE_OUTPUT_DIRECTORY)
88   if(NOT LIBOMPIMP_OUTPUT_DIRECTORY)
89     set(LIBOMPIMP_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
90   endif()
91   add_custom_command(TARGET ${LIBOMP_IMP_LIB_TARGET} POST_BUILD
92     COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBOMP_EXPORTS_LIB_DIR}
93     COMMAND ${CMAKE_COMMAND} -E copy ${LIBOMPIMP_OUTPUT_DIRECTORY}/${LIBOMP_IMP_LIB_FILE} ${LIBOMP_EXPORTS_LIB_DIR}
94   )
95 endif()