<div dir="ltr">Likewise the Cmakefiles.txt in <span style="font-family:arial,sans-serif;font-size:13px">openmp-3.5.0/runtime/src would be modified as..</span><div><br></div><div><div>cmake_minimum_required(VERSION 2.8.1)</div>
<div><br></div><div>include_directories(</div><div> .</div><div> include</div><div> include/${OMP_VERSION_NUM}</div>
<div> i18n</div><div> thirdparty/ittnotify</div><div> ${CMAKE_CURRENT_BINARY_DIR}</div><div> )</div><div> </div><div>set(ASM_SRCS</div><div> z_Linux_asm.S</div><div>)</div><div><br></div>
<div>set(SRCS</div><div> z_Linux_util.c</div><div> kmp_version.c</div><div> kmp_utility.c</div><div> kmp_threadprivate.c</div><div> kmp_taskq.c</div><div> kmp_tasking.c</div><div> kmp_taskdeps.cpp </div><div> kmp_str.c</div>
<div> kmp_settings.c</div><div> kmp_sched.cpp</div><div> kmp_runtime.c</div><div> kmp_lock.cpp</div><div> kmp_itt.c</div><div> kmp_io.c</div><div> kmp_i18n.c</div><div> kmp_gsupport.c</div><div> kmp_global.c</div><div> kmp_ftn_extra.c</div>
<div> kmp_ftn_cdecl.c</div><div> kmp_error.c</div><div> kmp_environment.c</div><div> kmp_dispatch.cpp</div><div> kmp_debug.c</div><div> kmp_csupport.c</div><div> kmp_cancel.cpp</div><div> kmp_atomic.c</div><div> kmp_alloc.c</div>
<div> kmp_affinity.cpp</div><div> ../thirdparty/innotify/ittnotify_static.c</div><div>)</div><div><br></div><div>set_source_files_properties(${SRCS} PROPERTIES LANGUAGE CXX)</div><div><br></div><div>set_source_files_properties(${ASM_SRCS} PROPERTIES LANGUAGE CXX)</div>
<div>set_source_files_properties(${ASM_SRCS} PROPERTIES COMPILE_FLAGS "-DKMP_GOMP_COMPAT -DKMP_ARCH_X86_64 -x assembler-with-cpp")</div><div><br></div><div># TODO: config parameter</div><div>if(WIN32)</div><div>
set(OS_GEN "win")</div><div>elseif(UNIX)</div><div> set(OS_GEN "lin")</div><div>elseif(APPLE)</div><div> set(OS_GEN "mac")</div><div>endif()</div><div><br></div><div>add_custom_command(</div>
<div> OUTPUT kmp_i18n_id.inc</div><div> COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/<a href="http://message-converter.pl" target="_blank">message-converter.pl</a> --os=${OS_GEN} --arch=${ARCH} --prefix=kmp_i18n --enum=kmp_i18n_id.inc ${CMAKE_CURRENT_SOURCE_DIR}/i18n/en_US.txt</div>
<div> )</div><div>add_custom_command(</div><div> OUTPUT kmp_i18n_default.inc</div><div> COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/<a href="http://message-converter.pl" target="_blank">message-converter.pl</a> --os=${OS_GEN} --arch=${ARCH} --prefix=kmp_i18n --default=kmp_i18n_default.inc ${CMAKE_CURRENT_SOURCE_DIR}/i18n/en_US.txt</div>
<div> )</div><div>add_custom_command(</div><div> OUTPUT omp.h</div><div> COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/../tools/<a href="http://expand-vars.pl" target="_blank">expand-vars.pl</a> --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</div>
<div> )</div><div>add_custom_command(</div><div> OUTPUT z_Linux_asm.o</div><div> COMMAND g++ -c -o z_Linux_asm.o -DKMP_GOMP_COMPAT -DKMP_ARCH_X86_64 -x assembler-with-cpp ${CMAKE_CURRENT_SOURCE_DIR}/${ASM_SRCS}</div>
<div>)</div><div><br></div><div>add_custom_target(gen_kmp_i18n DEPENDS kmp_i18n_id.inc kmp_i18n_default.inc omp.h z_Linux_asm.o)</div><div><br></div><div><br></div><div>add_library(iomp5 SHARED ${SRCS} z_Linux_asm.o)</div>
<div>add_dependencies(iomp5 gen_kmp_i18n)</div><div><br></div><div><br></div><div>install(FILES ${CMAKE_CURRENT_BINARY_DIR}/omp.h </div><div> DESTINATION include/${PSC_FULL_VERSION})</div><div><br></div><div>foreach(targ ${PATH64_ENABLE_TARGETS})</div>
<div> set(targ_arch ${_PATH64_TARGET_ARCH_${targ}})</div><div> set(targ_bits ${_PATH64_TARGET_BITS_${targ}})</div><div> install(FILES ${CMAKE_BINARY_DIR}/Xcompiler/lib/libiomp5.so </div><div> DESTINATION ${PATH64_LIB_PATH}/${targ_arch}/${targ_bits})</div>
<div>endforeach()</div></div><div><br></div><div><br></div><div>…which still needs expanded to handle the fact that darwin builds this twice at 64 and 32 bit for a fat binary of the shared library. I don't think there is a lot of leeway in constructing such cmake files are they are simply duplicating the commands emitted by <a href="http://build.pl">build.pl</a>.</div>
<div> Jack</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 30, 2014 at 1:24 PM, Jack Howarth <span dir="ltr"><<a href="mailto:howarth.mailing.lists@gmail.com" target="_blank">howarth.mailing.lists@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"> Using the overall file locations and structure from the openmprtl site, this shouldn't be that hard to set the cmake build machinery up. For example, the Cmakefiles.txt in openmp-3.5.0/runtime would just be something like…<div>
<br></div><div><div>cmake_minimum_required(VERSION 2.8.1)</div><div><br></div><div>project(libiomp)</div><div><br></div><div>enable_language(C ASM)</div><div><br></div><div>set(VERSION 5)</div><div>set(OMP_VERSION_NUM "40")</div>
<div><br></div><div># set debug as default build</div><div>if("${BUILD_TYPE}" STREQUAL "")</div><div> set(BUILD_TYPE "Debug")</div><div>endif()</div><div><br></div><div># set 64bit as default architecture</div>
<div>if("${ARCH}" STREQUAL "")</div><div> set(ARCH "32e")</div><div>endif()</div><div>set(ARCH_STR "Intel(R) 64")</div><div><br></div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D USE_ITT_BUILD")</div>
<div>set(COMMON_FLAGS "${COMMON_FLAGS} -D NDEBUG")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_ARCH_STR=\"\\\"${ARCH_STR}\\\"\"")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D _GNU_SOURCE")</div>
<div>set(COMMON_FLAGS "${COMMON_FLAGS} -D _REENTRANT")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_USE_ASSERT")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D BUILD_I8")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D BUILD_TV")</div>
<div>if(APPLE)</div><div> set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_LIBRARY_FILE=\\\"libiomp5.dylib\\\"")</div><div>else()</div><div> set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_LIBRARY_FILE=\\\"libiomp5.so\\\"")</div>
<div>endif()</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_VERSION_MAJOR=${VERSION}")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D CACHE_LINE=64")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_ADJUST_BLOCKTIME=1")</div>
<div>set(COMMON_FLAGS "${COMMON_FLAGS} -D BUILD_PARALLEL_ORDERED")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_ASM_INTRINS")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D USE_LOAD_BALANCE")</div>
<div>set(COMMON_FLAGS "${COMMON_FLAGS} -D USE_CBLKDATA")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D GUIDEDLL_EXPORTS")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_GOMP_COMPAT")</div>
<div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_USE_ADAPTIVE_LOCKS=1")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D KMP_DEBUG_ADAPTIVE_LOCKS=0")</div><div><br></div><div>if("${OMP_VERSION_NUM}" STREQUAL "40")</div>
<div> set(COMMON_FLAGS "${COMMON_FLAGS} -D OMP_50_ENABLED=0")</div><div> set(COMMON_FLAGS "${COMMON_FLAGS} -D OMP_41_ENABLED=0")</div><div> set(COMMON_FLAGS "${COMMON_FLAGS} -D OMP_40_ENABLED=1")</div>
<div> set(COMMON_FLAGS "${COMMON_FLAGS} -D OMP_30_ENABLED=1")</div><div>endif()</div><div><br></div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D USE_ITT_NOTIFY=1")</div><div>set(COMMON_FLAGS "${COMMON_FLAGS} -D INTEL_ITTNOTIFY_PREFIX=__kmp_itt_")</div>
<div><br></div><div>set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -fPIC")</div><div><br></div><div>if(${BUILD_TYPE} STREQUAL "Debug")</div><div> set(COMMON_FLAGS "${COMMON_FLAGS} -g")</div>
<div>endif()</div><div><br></div><div># Silence some warnings</div><div>set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -Wno-unused-value")</div><div>set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -Wno-switch")</div>
<div>set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -Wno-switch")</div><div><br></div><div># Disable exception handling.</div><div>set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -fno-exceptions")</div><div>
<br></div><div># Disable use of EBP as general purpose register.</div><div>if(NOT ${ARCH} STREQUAL "64")</div><div> set(C_CXX_COMMON_FLAGS "${C_CXX_COMMON_FLAGS} -fno-omit-frame-pointer")</div>
<div>
endif()</div><div><br></div><div>set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS} ${C_CXX_COMMON_FLAGS}")</div><div>set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS} ${C_CXX_COMMON_FLAGS}")</div>
<div><br></div><div>add_subdirectory(src)</div></div><div><br></div><div> IMHO, I don't think there is much intellectual property here as it is a fairly standard cmake syntax which is adjusted to mimic the flags emitted by the current <a href="http://build.pl" target="_blank">build.pl</a> scripts (which is how I made my adjustments anyway).</div>
<span><font color="#888888">
<div> Jack</div></font></span></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 30, 2014 at 12:37 PM, Jack Howarth <span dir="ltr"><<a href="mailto:howarth.mailing.lists@gmail.com" target="_blank">howarth.mailing.lists@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Alp,<div> Are you thinking of these?</div>
<div><br></div><div><a href="https://github.com/pathscale/openmprtl/blob/master/itt/libomp_oss/CMakeLists.txt" target="_blank">https://github.com/pathscale/openmprtl/blob/master/itt/libomp_oss/CMakeLists.txt</a><span><font color="#888888"><br>
</font></span></div><span><font color="#888888"><div><br></div><div> Jack</div></font></span><div>ps Worse case we can at least look at those as a template on how to construct ours.</div></div><div>
<div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, May 30, 2014 at 11:00 AM, Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><br>
On 30/05/2014 17:51, Jack Howarth wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Should it be an out of source build like libcxx?<br>
</blockquote>
<br></div>
Yep, exactly.<br>
<br>
Will try to dig up the CMake files, they're pretty neat. Some Intel/icc-specific functionality is missing IIRC but otherwise fine.<br>
<br>
Alp.<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<br>
<br>
On Fri, May 30, 2014 at 8:56 AM, John Leidel (jleidel) <<a href="mailto:jleidel@micron.com" target="_blank">jleidel@micron.com</a> <mailto:<a href="mailto:jleidel@micron.com" target="_blank">jleidel@micron.com</a>>> wrote:<br>
<br>
Why not structure this as an LLVM "project" as defined in<br>
<a href="http://llvm.org/docs/Projects.html" target="_blank">http://llvm.org/docs/Projects.<u></u>html</a>?<br>
<br>
<br>
John D. Leidel<br>
<br>
On May 30, 2014, at 7:30 AM, Alp Toker <<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a><br></div><div>
<mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>>> wrote:<br>
<br>
><br>
> On 30/05/2014 15:18, Jack Howarth wrote:<br>
>> Has anyone started on integrating the openmp build into the<br>
llvm build yet? If not, I would suggest we start by borrowing the<br>
build machinery files from polly as the starting point. Like<br>
polly, openmp provides a support library for the compiler and<br>
should be built in the tools subdirectory..<br>
><br>
> Polly is completely different to the OpenMP runtime. Polly uses<br>
LLVM libraries, and can be seen as part of the compilation host<br>
toolchain, while this is an independent runtime library that runs<br>
on the target. So the build systems are tangential.<br>
><br>
><br>
>> Also, the polly cmake and autogen directories are fairly<br>
spartan so they should be easy to refashion for openmp.<br>
><br>
> There's a simple CMake setup on one of the GitHub branches of<br>
this project, C. Bergström may know better if they can be<br>
contributed. Either way that's closer to what's needed here.<br>
><br>
> Alp.<br>
><br>
><br>
>> Jack<br>
>><br>
>><br>
>> ______________________________<u></u>_________________<br>
>> Openmp-dev mailing list<br>
>> <a href="mailto:Openmp-dev@dcs-maillist2.engr.illinois.edu" target="_blank">Openmp-dev@dcs-maillist2.engr.<u></u>illinois.edu</a><br></div>
<mailto:<a href="mailto:Openmp-dev@dcs-maillist2.engr.illinois.edu" target="_blank">Openmp-dev@dcs-<u></u>maillist2.engr.illinois.edu</a>><div><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/openmp-dev</a><br>
><br>
> --<br>
> <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
> the browser experts<br>
><br>
> ______________________________<u></u>_________________<br>
> Openmp-dev mailing list<br>
> <a href="mailto:Openmp-dev@dcs-maillist2.engr.illinois.edu" target="_blank">Openmp-dev@dcs-maillist2.engr.<u></u>illinois.edu</a><br></div>
<mailto:<a href="mailto:Openmp-dev@dcs-maillist2.engr.illinois.edu" target="_blank">Openmp-dev@dcs-<u></u>maillist2.engr.illinois.edu</a>><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/openmp-dev</a><br>
<br>
<br>
</blockquote><div><div>
<br>
-- <br>
<a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>