Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[MSVC] don't pass gcc flags to MSVC, try to define XBT_PUBLIC properly
[simgrid.git] / tools / cmake / MakeLibWin.cmake
1 ### Make Libs
2 #>gcc c:\simgrid-trunk\examples\msg\icomms\peer.c -static -Lc:\simgrid-trunk\lib -lsimgrid -Ic:\simgrid-trunk\include -lwsock32
3
4 add_library(simgrid SHARED ${simgrid_sources})
5
6 if(MSVC)
7   set_target_properties(simgrid  PROPERTIES 
8        COMPILE_FLAGS "/D_XBT_DLL_EXPORT /DDLL_EXPORT" 
9        LINK_FLAGS "-shared" 
10        VERSION ${libsimgrid_version} 
11        PREFIX "lib" SUFFIX ".dll" 
12        IMPORT_PREFIX "lib" 
13        IMPORT_SUFFIX ".dll")
14   
15 else()
16   set_target_properties(simgrid  PROPERTIES 
17        COMPILE_FLAGS "-D_XBT_DLL_EXPORT -DDLL_EXPORT" 
18        LINK_FLAGS "-shared" 
19        VERSION ${libsimgrid_version} 
20        PREFIX "lib" SUFFIX ".dll" 
21        IMPORT_PREFIX "lib" IMPORT_SUFFIX ".dll")
22
23   set(SIMGRID_DEP "-lws2_32 -lm")
24
25   if (HAVE_PTHREAD)
26     set(SIMGRID_DEP "${SIMGRID_DEP} -lpthread")
27   endif()
28
29   if(ARCH_32_BITS)
30     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -march=i486 -D_I_X86_")
31     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -march=i486 -D_I_X86_")
32   else()
33     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -D_AMD64_")
34     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -D_AMD64_")
35     #        message(FATAL_ERROR "Sorry, Simgrid fails with full 64bits for now! Please contact us.")
36   endif()
37 endif()
38
39 target_link_libraries(simgrid   ${SIMGRID_DEP})
40
41 find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
42 message(STATUS "pexports: ${PEXPORTS_PATH}")
43 if(PEXPORTS_PATH)
44   add_custom_command(TARGET simgrid POST_BUILD
45     COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/libsimgrid.dll > ${CMAKE_BINARY_DIR}/lib/libsimgrid.def)
46 endif()