X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2b7b5860abcf6a2e17236f46fdcc27575df7a0bd..5cffdb73a735193bfeaa5537b0c6e60707ee947e:/tools/cmake/Java.cmake diff --git a/tools/cmake/Java.cmake b/tools/cmake/Java.cmake index 405968e694..50045009d6 100644 --- a/tools/cmake/Java.cmake +++ b/tools/cmake/Java.cmake @@ -127,6 +127,12 @@ if(enable_lib_in_jar) set(JAVA_NATIVE_PATH NATIVE/${SG_SYSTEM_NAME}/arm) # Default arm (soft-float ABI) endif() + # Find how to copy + set(SHEXE sh) + if(WIN32) + set(SHEXE sh.exe) + endif() + # Find what to copy set(JAVALIBS ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}) if (HAVE_BOOST_CONTEXT) @@ -135,10 +141,14 @@ if(enable_lib_in_jar) if(MINGW) find_library(WINPTHREAD_DLL NAME winpthread winpthread-1 - PATHS C:\\MinGW C:\\MinGW64 C:\\MinGW\\bin C:\\MinGW64\\bin + PATHS C:\\MinGW C:\\MinGW64 C:\\MinGW\\bin C:\\MinGW64\\bin C:\\msys64\\mingw32\\bin C:\\msys64\\mingw32 C:\\msys\\mingw32\\bin C:\\msys\\mingw32 C:\\msys64\\mingw64\\bin C:\\msys64\\mingw64 C:\\msys\\mingw64\\bin C:\\msys\\mingw64 ) - set(JAVALIBS ${JAVALIBS} ${WINPTHREAD_DLL}) + if(${WINPTHREAD_DLL}) + set(JAVALIBS ${JAVALIBS} ${WINPTHREAD_DLL}) + endif() endif(MINGW) + string(REPLACE ";" " " JAVALIBS "${JAVALIBS}") + message("-- [Java] Native Libs: ${JAVALIBS}") add_custom_command( TARGET simgrid-java_jar POST_BUILD @@ -147,7 +157,19 @@ if(enable_lib_in_jar) COMMAND ${CMAKE_COMMAND} -E remove_directory ${JAVA_NATIVE_PATH} COMMAND ${CMAKE_COMMAND} -E make_directory ${JAVA_NATIVE_PATH} - COMMAND cp ${JAVALIBS} ${JAVA_NATIVE_PATH} # cp is less portable, but cmake cannot copy several files at once + + COMMAND echo cp ${JAVALIBS} ${JAVA_NATIVE_PATH} # Just display what's going on + # So, first of all, I'm sorry for the next few lines. Here is what's going on. + # I need to copy some files, depending on the environment. + # I cannot use several POST_BUILD commands because cmake does + # force them to run sequentially, so it fails if we build with -j + # So I add some content to the JAVALIBS cmake variable, and copy them in one shoot. + # But cmake list variables are ; separated, not space separated. + # So I string(REPLACE a bit above to change ; into spaces. + # But if I do so, cmake still passes the space-separated list as a single argument to cp. + # So I have to fire a sh -c, just to correctly parse the cp parameters. + # Yup. That's the ways it goes. cmake is so lovely, that's wonderful. + COMMAND ${SHEXE} -c "cp ${JAVALIBS} ${JAVA_NATIVE_PATH}" # cp is less portable, but cmake cannot copy several files at once ## strip seems to fail on Mac on binaries that are already stripped. ## It then spits: "symbols referenced by indirect symbol table entries that can't be stripped" @@ -167,7 +189,7 @@ include_directories(${JNI_INCLUDE_DIRS} ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH set_target_properties(simgrid-java PROPERTIES SKIP_BUILD_RPATH ON) -add_dependencies(simgrid-java simgrid) +add_dependencies(simgrid-java_jar simgrid-java) add_dependencies(simgrid-java_jar simgrid)