Pull pagerank runners into functions for profiling.
[stinger.git] / CMakeLists.txt
blob2467981ec8e5a83e04c0fe68a03b584160956d6a
1 CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
3 PROJECT (STINGER)
4 SET(STINGER_VERSION_MAJOR 2013)
5 SET(STINGER_VERSION_MINOR 06)
7 SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
8 SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
9 SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
11 FIND_PACKAGE( OpenMP )
12 if(OPENMP_FOUND)
13   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
14   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
15   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
16 endif()
18 LINK_LIBRARIES(m)
20 IF(APPLE)
21   # Apple doesn't support librt, using CoreServices instead
22   LINK_LIBRARIES(/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices)
23 ELSEIF(WIN32)
24   # Not sure what to do here as far as librt...?
25   LINK_LIBRARIES(rt)
26 ELSE()
27   LINK_LIBRARIES(rt)
28 ENDIF()
30 # Doxygen
31 find_package(Doxygen)
32 if (DOXYGEN_FOUND)
33   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in
34     ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
35   add_custom_target(doc
36     ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
37     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
38     COMMENT "Generating API documentation with Doxygen" VERBATIM
39   )
40 endif(DOXYGEN_FOUND)
42 # Custom protobuf to use STINGER distributed version
43 function(CUST_PROTOBUF_GENERATE_CPP SUBDIR SRCS HDRS)
44   if(NOT ARGN)
45     message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
46     return()
47   endif(NOT ARGN)
49   set(${SRCS})
50   set(${HDRS})
51   foreach(FIL ${ARGN})
52     get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
53     get_filename_component(FIL_WE ${FIL} NAME_WE)
54     
55     list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${SUBDIR}/proto/${FIL_WE}.pb.cc")
56     list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${SUBDIR}/proto/${FIL_WE}.pb.h")
58     add_custom_command(
59       OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${SUBDIR}/proto/${FIL_WE}.pb.cc"
60              "${CMAKE_CURRENT_BINARY_DIR}/${SUBDIR}/proto/${FIL_WE}.pb.h"
61       COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/protoc     
62       ARGS --cpp_out  ${CMAKE_CURRENT_BINARY_DIR} --proto_path ${CMAKE_CURRENT_SOURCE_DIR} ${ABS_FIL}
63       DEPENDS ${ABS_FIL}
64       COMMENT "Running C++ protocol buffer compiler on ${FIL}"
65       VERBATIM )
66   endforeach()
68   set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
69   set(${SRCS} ${${SRCS}} PARENT_SCOPE)
70   set(${HDRS} ${${HDRS}} PARENT_SCOPE)
71 endfunction()
73 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu9x")
75 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")
77 ADD_SUBDIRECTORY(src)