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