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} ) set(ARCH_STR "Intel(R) 64") set(FEATURE_FLAGS "-DUSE_ITT_BUILD -DNDEBUG -DKMP_ARCH_STR=\"\\\"${ARCH_STR}\\\"\" -D_GNU_SOURCE -D_REENTRANT -DKMP_USE_ASSERT -DBUILD_I8 -DBUILD_TV") if(APPLE) set(FEATURE_FLAGS "${FEATURE_FLAGS} -DKMP_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} -DKMP_LIBRARY_FILE=\\\"libiomp5.so\\\"") endif() set(FEATURE_FLAGS "${FEATURE_FLAGS} -DKMP_VERSION_MAJOR=${VERSION} -DCACHE_LINE=64 -DKMP_ADJUST_BLOCKTIME=1 -DBUILD_PARALLEL_ORDERED -DKMP_ASM_INTRINS -DUSE_LOAD_BALANCE -DUSE_CBLKDATA -DGUIDEDLL_EXPORTS -DKMP_GOMP_COMPAT -DKMP_USE_ADAPTIVE_LOCKS=1 -DKMP_DEBUG_ADAPTIVE_LOCKS=0 -DOMP_50_ENABLED=0 -DOMP_41_ENABLED=0 -DOMP_40_ENABLED=1 -DOMP_30_ENABLED=1 -DUSE_ITT_NOTIFY=1 -DINTEL_ITTNOTIFY_PREFIX=__kmp_itt_ -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FEATURE_FLAGS} -Wno-unused-value -Wno-switch -Wno-deprecated-register -fno-exceptions -D_KMP_BUILD_TIME=\"\\\"${BUILD_TIME} UTC\\\"\"") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FEATURE_FLAGS} -Wno-unused-value -Wno-switch -Wno-deprecated-register -fno-exceptions -D_KMP_BUILD_TIME=\"\\\"${BUILD_TIME} UTC\\\"\"") set(ASM_SOURCES z_Linux_asm.s ) set(SOURCES z_Linux_util.c kmp_version.c kmp_utility.c kmp_threadprivate.c kmp_taskq.c kmp_tasking.c kmp_taskdeps.cpp kmp_str.c kmp_settings.c kmp_sched.cpp kmp_runtime.c kmp_lock.cpp kmp_itt.c kmp_io.c kmp_i18n.c kmp_gsupport.c kmp_global.c kmp_ftn_extra.c kmp_ftn_cdecl.c kmp_error.c kmp_environment.c kmp_dispatch.cpp kmp_debug.c kmp_csupport.c kmp_cancel.cpp kmp_atomic.c kmp_alloc.c kmp_affinity.cpp thirdparty/ittnotify/ittnotify_static.c ) set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CXX) set_source_files_properties(${ASM_SOURCES} PROPERTIES LANGUAGE CXX) add_custom_command( OUTPUT kmp_i18n_id.inc COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/message-converter.pl --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 --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_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) add_library(iomp5 SHARED ${SOURCES} z_Linux_asm.o) add_dependencies(iomp5 gen_kmp_i18n)