Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fixed exception tests
[simgrid.git] / buildtools / Cmake / MakeLib.cmake
1 ### Make Libs
2
3 ###############################
4 # Declare the library content #
5 ###############################
6
7 # Actually declare our libraries
8 add_library(simgrid SHARED ${simgrid_sources})
9 set_target_properties(simgrid PROPERTIES VERSION ${libsimgrid_version})
10
11 if(enable_lib_static)
12   add_library(simgrid_static STATIC ${simgrid_sources})
13 endif()
14
15 if(enable_ust)
16   ADD_DEPENDENCIES(simgrid simgrid_ust)
17 endif()
18
19 if(enable_java)
20   include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeJava.cmake)
21 endif()
22
23 add_dependencies(simgrid maintainer_files)
24
25 if(enable_model-checking)
26   add_executable(simgrid-mc ${MC_SIMGRID_MC_SRC})
27   target_link_libraries(simgrid-mc simgrid)
28   set_target_properties(simgrid-mc
29     PROPERTIES
30       RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
31 endif()
32
33 # Compute the dependencies of SimGrid
34 #####################################
35 set(SIMGRID_DEP "-lm")
36
37 if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
38     AND NOT ${CMAKE_SYSTEM_VERSION} VERSION_LESS 10.0
39     AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
40   # FreeBSD from 10.0 provide a internal C++ stack (unused by gcc)
41   set(SIMGRID_DEP "${SIMGRID_DEP} -lc++")
42 else()
43   set(SIMGRID_DEP "${SIMGRID_DEP} -lstdc++")
44 endif()
45
46 if(pthread)
47   if(${CONTEXT_THREADS})
48     SET(SIMGRID_DEP "${SIMGRID_DEP} -pthread")
49   endif()
50 endif()
51
52 if(HAVE_LUA)
53   ADD_CUSTOM_TARGET(link_simgrid_lua ALL
54     DEPENDS     simgrid
55     ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
56     ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
57     ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
58     )
59   add_custom_command(
60     OUTPUT      ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE}
61     ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE}
62     ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE}
63     COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
64     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/lua/
65     COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/lua/simgrid.${LIB_EXE} #for test
66
67     COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
68     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/msg/masterslave/
69     COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/msg/masterslave/simgrid.${LIB_EXE} #for test
70
71     COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} # if it exists, creating the link fails. So cleanup before hand
72     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/simdag/
73     COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/libsimgrid.${LIB_EXE} ${CMAKE_BINARY_DIR}/examples/simdag/simgrid.${LIB_EXE} #for test
74     )
75   SET(SIMGRID_DEP "${SIMGRID_DEP} -l${LIB_LUA_NAME}")
76 endif()
77
78 if(HAVE_GRAPHVIZ)
79   if(HAVE_CGRAPH_LIB)
80     SET(SIMGRID_DEP "${SIMGRID_DEP} -lcgraph")
81   else()
82     if(HAVE_AGRAPH_LIB)
83       SET(SIMGRID_DEP "${SIMGRID_DEP} -lagraph -lcdt")
84     endif()
85   endif()
86 endif()
87
88 if(HAVE_LIBSIGC++)
89   SET(SIMGRID_DEP "${SIMGRID_DEP} -lsigc-2.0")    
90 endif()
91
92 if(HAVE_GTNETS)
93   SET(SIMGRID_DEP "${SIMGRID_DEP} -lgtnets")
94 endif()
95
96 if(enable_mc_content_adressable_pages)
97   SET(SIMGRID_DEP "${SIMGRID_DEP} -lnettle")
98 endif()
99
100 if(HAVE_MC)
101   # The availability of libunwind was checked in CompleteInFiles.cmake
102   #   (that includes FindLibunwind.cmake), so simply load it now.
103   
104   SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind -lunwind-ptrace")
105
106   # Same for libdw
107   SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw")
108   # This supposes that the host machine is either an AMD or a X86.
109   # This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME)
110   if(PROCESSOR_x86_64)
111     SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86_64")
112   else()    
113     SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind-x86")
114   endif()
115 endif()
116
117 if(MMALLOC_WANT_OVERRIDE_LEGACY AND HAVE_GNU_LD)
118   SET(SIMGRID_DEP "${SIMGRID_DEP} ${DL_LIBRARY}")
119 endif()
120
121 if(HAVE_NS3)
122   if(${NS3_VERSION_MINOR} EQUAL 10)
123     SET(SIMGRID_DEP "${SIMGRID_DEP} -lns3")
124     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_NS3_3_10")
125     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_NS3_3_10")
126   else()
127     SET(SIMGRID_DEP "${SIMGRID_DEP} -lns3.${NS3_VERSION_MINOR}-core -lns3.${NS3_VERSION_MINOR}-csma -lns3.${NS3_VERSION_MINOR}-point-to-point -lns3.${NS3_VERSION_MINOR}-internet -lns3.${NS3_VERSION_MINOR}-applications")
128   endif()
129 endif()
130
131 if(HAVE_POSIX_GETTIME)
132   SET(SIMGRID_DEP "${SIMGRID_DEP} -lrt")
133 endif()
134
135 if(HAVE_BACKTRACE_IN_LIBEXECINFO)
136   SET(SIMGRID_DEP "${SIMGRID_DEP} -lexecinfo")
137 endif(HAVE_BACKTRACE_IN_LIBEXECINFO)
138
139 # Dependencies from USR
140 ###################################
141 if(enable_ust)
142   set(SIMGRID_DEP "${SIMGRID_DEP} -llttng-ust")
143 endif()
144
145 # Compute the dependencies of SMPI
146 ##################################
147 if(enable_smpi AND APPLE)
148   set(SIMGRID_DEP "${SIMGRID_DEP} -Wl,-U -Wl,_smpi_simulated_main")
149 endif()
150
151 target_link_libraries(simgrid   ${SIMGRID_DEP})
152
153 # Pass dependencies to static libs
154 ##################################
155 if(enable_lib_static)
156   target_link_libraries(simgrid_static  ${SIMGRID_DEP})
157   add_dependencies(simgrid_static maintainer_files)
158   set_target_properties(simgrid_static PROPERTIES OUTPUT_NAME simgrid)
159 endif()
160
161 # Dependencies from maintainer mode
162 ###################################
163 if(enable_maintainer_mode AND PYTHON_EXE)
164   add_dependencies(simgrid simcalls_generated_src)
165 endif()
166 if(enable_maintainer_mode AND BISON_EXE AND LEX_EXE)
167   add_dependencies(simgrid automaton_generated_src)
168 endif()