From: Martin Quinson Date: Mon, 5 Oct 2015 21:59:46 +0000 (+0200) Subject: [win+java] sort out the linker flags that we pass X-Git-Tag: v3_12~34 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/a75aed864bb96b95b249b7166bedae987b28d4f8?ds=sidebyside [win+java] sort out the linker flags that we pass --- diff --git a/tools/cmake/GCCFlags.cmake b/tools/cmake/GCCFlags.cmake index 6b41adf478..936283ae57 100644 --- a/tools/cmake/GCCFlags.cmake +++ b/tools/cmake/GCCFlags.cmake @@ -168,12 +168,13 @@ if(NOT $ENV{LDFLAGS} STREQUAL "") set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} $ENV{LDFLAGS}") endif() -# We don't want to ship libgcc_s_seh-1.dll nor libstdc++-6.dll -#  This will probably be troublesome if someone wants to use the lib in -# its own project, but we only want to have java working on Windows. if(MINGW) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc") + # http://stackoverflow.com/questions/10452262/create-64-bit-jni-under-windows + # We don't want to ship libgcc_s_seh-1.dll nor libstdc++-6.dll + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -s") - set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++ -s") + + # JNI searches for stdcalls + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--add-stdcall-alias") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--add-stdcall-alias") endif() diff --git a/tools/cmake/Java.cmake b/tools/cmake/Java.cmake index 8b00711c9e..4b8f501f17 100644 --- a/tools/cmake/Java.cmake +++ b/tools/cmake/Java.cmake @@ -38,12 +38,15 @@ if(WIN32) exec_program("java -d32 -version" OUTPUT_VARIABLE IS_32_BITS_JVM) STRING( FIND ${IS_32_BITS_JVM} "Error" POSITION ) - if(${POSITION} GREATER -1) - message("POTENTIAL ERROR: Java JVM needs to be 32 bits to be able to run with Simgrid on Windows for now") + if(NOT ${POSITION} GREATER -1) + message(fatal_error "SimGrid can only use Java 64 bits") endif() - set_target_properties(simgrid-java PROPERTIES - LINK_FLAGS "-Wl,--subsystem,windows,--kill-at") +# Already passed to all targets in GCCFlags.cmake +# set_target_properties(simgrid-java PROPERTIES +# LINK_FLAGS "-Wl,--subsystem,windows,--kill-at") +# set_target_properties(surf-java PROPERTIES +# LINK_FLAGS "-Wl,--subsystem,windows,--kill-at") endif() # Rules to build simgrid.jar @@ -179,7 +182,3 @@ set_target_properties(simgrid-java PROPERTIES SKIP_BUILD_RPATH ON) add_dependencies(simgrid-java surf-java) add_dependencies(simgrid-java_jar surf-java) -if(WIN32) - set_target_properties(surf-java PROPERTIES - LINK_FLAGS "-Wl,--subsystem,windows,--kill-at") -endif()