[Openmp-dev] problems solved… working openmp/runtime/src/CMakefiles.txt as starting point

Jack Howarth howarth.mailing.lists at gmail.com
Sat May 31 13:06:59 PDT 2014


    I puzzled out that I was missing,,,

--- CMakeLists.txt.last2 2014-05-31 13:06:06.000000000 -0400
+++ CMakeLists.txt 2014-05-31 15:52:15.000000000 -0400
@@ -137,6 +137,10 @@

 add_custom_target(gen_kmp_i18n DEPENDS kmp_i18n_id.inc
kmp_i18n_default.inc omp.h z_Linux_asm.o)

+if(NOT APPLE)
+  set(CMAKE_SHARED_LINKER_FLAGS
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports_so.txt")
+endif()
+
 add_library(iomp5 SHARED ${SOURCES} z_Linux_asm.o)
 add_dependencies(iomp5 gen_kmp_i18n)

which now allows libiomp5.so to link properly using the cmake build on
x86_64 Fedora 15 against clang-omp. It also builds libiomp5.dylib fine on
darwin12.
     IMHO, the attached CMakeLists is a reasonable starting point and we
can refactor into separate CMakelist.txt's if necessary. The main omission
at the moment is the lack of support for handling exported symbols within
cmake. I think we would have to resort to a rather complex set
of add_custom_command()'s in order to duplicate the manual generation of
exported symbol lists as done in the 'make compiler=clang' build. I can
take a look at implementing this if we really need it. Let me know if
anyone has trouble with using this as…

% cd openmp/runtime/src
% mkdir build
% cd build
% cmake ..
% make VERBOSE=1

on darwin or linux.
              Jack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20140531/9042acd8/attachment.html>
-------------- next part --------------
project(openmp)
cmake_minimum_required(VERSION 2.8)

set(VERSION 5)
set(OMP_VERSION "201107")
set(OMP_VERSION_NUM "40")

execute_process(COMMAND "date" "+%Y-%m-%d %H:%M:%S" OUTPUT_VARIABLE BUILD_TIME)
string(REGEX REPLACE "\n" "" BUILD_TIME ${BUILD_TIME})

include_directories(
        .
        include
        include/${OMP_VERSION}
        i18n
        thirdparty/ittnotify
        ${CMAKE_CURRENT_BINARY_DIR}
        )

if(WIN32)
  set(OS_GEN "win")
elseif(UNIX)
  set(OS_GEN "lin")
elseif(APPLE)
  set(OS_GEN "mac")
endif()

if("${ARCH}" STREQUAL "")
  set(ARCH "32e")
endif()

set(ARCH_STR "Intel(R) 64")

set(FEATURE_FLAGS "-D USE_ITT_BUILD")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D NDEBUG")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_ARCH_STR=\"\\\"${ARCH_STR}\\\"\"")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D _GNU_SOURCE")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D _REENTRANT")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_USE_ASSERT")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D BUILD_I8")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D BUILD_TV")
if(APPLE)
  set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_LIBRARY_FILE=\\\"libiomp5.dylib\\\"")
  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -current_version 5.0")
  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -compatibility_version 5.0")
else()
  set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_LIBRARY_FILE=\\\"libiomp5.so\\\"")
endif()
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_VERSION_MAJOR=${VERSION}")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D CACHE_LINE=64")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_ADJUST_BLOCKTIME=1")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D BUILD_PARALLEL_ORDERED")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_ASM_INTRINS")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D USE_LOAD_BALANCE")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D USE_CBLKDATA")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D GUIDEDLL_EXPORTS")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_GOMP_COMPAT")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_USE_ADAPTIVE_LOCKS=1")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D KMP_DEBUG_ADAPTIVE_LOCKS=0")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D OMP_50_ENABLED=0")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D OMP_41_ENABLED=0")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D OMP_40_ENABLED=1")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D OMP_30_ENABLED=1")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D USE_ITT_NOTIFY=1")
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D INTEL_ITTNOTIFY_PREFIX=__kmp_itt_")
if (NOT APPLE)
  set(FEATURE_FLAGS "${FEATURE_FLAGS}   -D KMP_TDATA_GTID")
endif()
set(FEATURE_FLAGS "${FEATURE_FLAGS} -D _KMP_BUILD_TIME=\"\\\"${BUILD_TIME} UTC\\\"\"")

set(COMMON_FLAGS "-fPIC")
set(COMMON_FLAGS "${COMMON_FLAGS} -Wno-unused-value")
set(COMMON_FLAGS "${COMMON_FLAGS} -Wno-switch")
set(COMMON_FLAGS "${COMMON_FLAGS} -Wno-deprecated-register")
set(COMMON_FLAGS "${COMMON_FLAGS} -fno-exceptions")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FEATURE_FLAGS} ${COMMON_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FEATURE_FLAGS} ${COMMON_FLAGS}")

set(ASM_SOURCES
 z_Linux_asm.s
)
set(SOURCES
 thirdparty/ittnotify/ittnotify_static.c
 kmp_affinity.cpp
 kmp_alloc.c
 kmp_atomic.c
 kmp_cancel.cpp
 kmp_csupport.c
 kmp_debug.c
 kmp_dispatch.cpp
 kmp_environment.c
 kmp_error.c
 kmp_ftn_cdecl.c
 kmp_ftn_extra.c
 kmp_global.c
 kmp_gsupport.c
 kmp_global.c
 kmp_i18n.c
 kmp_io.c
 kmp_itt.c
 kmp_lock.cpp
 kmp_runtime.c
 kmp_sched.cpp
 kmp_settings.c
 kmp_str.c
 kmp_taskdeps.cpp
 kmp_tasking.c
 kmp_taskq.c
 kmp_threadprivate.c
 kmp_utility.c
 kmp_version.c 
 z_Linux_util.c
)

set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CXX)
set_source_files_properties(${ASM_SOURCES} PROPERTIES LANGUAGE CXX)

set(CMAKE_CXX_COMPILER "clang++")

add_custom_command(
        OUTPUT kmp_i18n_id.inc
        COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/message-converter.pl --os=${OS_GEN} --arch=${ARCH} --prefix=kmp_i18n --enum=kmp_i18n_id.inc ${CMAKE_CURRENT_SOURCE_DIR}/i18n/en_US.txt
        )
add_custom_command(
        OUTPUT kmp_i18n_default.inc
        COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/message-converter.pl --os=${OS_GEN} --arch=${ARCH} --prefix=kmp_i18n --default=kmp_i18n_default.inc ${CMAKE_CURRENT_SOURCE_DIR}/i18n/en_US.txt
        )
add_custom_command(
        OUTPUT omp.h
        COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/expand-vars.pl --strict -D Revision=\"\\$$Revision\" -D Date=\"\\$$Date\" -D KMP_TYPE=\"Performance\" -D KMP_ARCH=\"\\\"${ARCH_STR}\\\"\" -D KMP_VERSION_MAJOR=${VERSION} -D KMP_VERSION_MINOR=0 -D KMP_VERSION_BUILD=00000000 -D KMP_BUILD_DATE=\"${BUILD_TIME} UTC\" -D KMP_TARGET_COMPILER=12 -D KMP_DIAG=0 -D KMP_DEBUG_INFO=0 -D OMP_VERSION=${OMP_VERSION} ${CMAKE_CURRENT_SOURCE_DIR}/include/${OMP_VERSION_NUM}/omp.h.var omp.h
        )
add_custom_command(
        OUTPUT z_Linux_asm.o
        COMMAND ${CMAKE_CXX_COMPILER} -c -o z_Linux_asm.o -D KMP_ASM_INTRINS -D KMP_GOMP_COMPAT -D KMP_ARCH_X86_64 -x assembler-with-cpp ${CMAKE_CURRENT_SOURCE_DIR}/${ASM_SOURCES}
)

add_custom_target(gen_kmp_i18n DEPENDS kmp_i18n_id.inc kmp_i18n_default.inc omp.h z_Linux_asm.o)

if(NOT APPLE)
  set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exports_so.txt")
endif()

add_library(iomp5 SHARED ${SOURCES} z_Linux_asm.o)
add_dependencies(iomp5 gen_kmp_i18n)



More information about the Openmp-dev mailing list