blob: ffc4380f2149983d52d1212d472240d361a9d024 [file] [log] [blame]
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(univplan)
FIND_PACKAGE(Protobuf REQUIRED)
SET(univplan_VERSION_MAJOR 0)
SET(univplan_VERSION_MINOR 1)
SET(univplan_VERSION_PATCH 0)
SET(univplan_VERSION_API 1)
set(CMAKE_MACOSX_RPATH 1)
SET(univplan_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
SET(univplan_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/univplan)
SET(univplan_proto_DIR ${univplan_SRC_DIR}/proto)
file(GLOB proto_files "${univplan_SRC_DIR}/proto/*.proto")
set(proto_SRC_DIR ${CMAKE_BINARY_DIR}/src/univplan/proto)
set(UNIVPLAN_PROTO_HDRS
${proto_SRC_DIR}/universal-plan.pb.h
${proto_SRC_DIR}/universal-plan-catalog.pb.h
${proto_SRC_DIR}/universal-plan-expr.pb.h
)
set(UNIVPLAN_PROTO_SRCS
${proto_SRC_DIR}/universal-plan.pb.cc
${proto_SRC_DIR}/universal-plan-catalog.pb.cc
${proto_SRC_DIR}/universal-plan-expr.pb.cc
)
file(MAKE_DIRECTORY ${proto_SRC_DIR})
add_custom_command(
OUTPUT ${UNIVPLAN_PROTO_SRCS} ${UNIVPLAN_PROTO_HDRS}
COMMAND ${Protobuf_PROTOC_EXECUTABLE}
ARGS --cpp_out ${CMAKE_BINARY_DIR}/src -I ${CMAKE_CURRENT_SOURCE_DIR} ${proto_files}
DEPENDS "${proto_files}"
)
AUTO_SOURCES(univplan_files "*.cc" "RECURSE" "${univplan_SRC_DIR}")
LIST(APPEND univplan_SOURCES ${univplan_files})
AUTO_SOURCES(univplanbuilder_HEADER "*.h" "${univplan_SRC_DIR}/univplanbuilder")
AUTO_SOURCES(common_HEADER "*.h" "${univplan_SRC_DIR}/common")
AUTO_SOURCES(cwrapper_HEADER "*.h" "${univplan_SRC_DIR}/cwrapper")
AUTO_SOURCES(minmax_HEADER "*.h" "${univplan_SRC_DIR}/minmax")
AUTO_SOURCES(testutil_HEADER "*.h" "${univplan_SRC_DIR}/testutil")
INCLUDE_DIRECTORIES(${univplan_ROOT_DIR})
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/src)
INCLUDE_DIRECTORIES(${DEPENDENCY_INSTALL_PREFIX}/include)
INCLUDE_DIRECTORIES(/usr/local/include)
LINK_DIRECTORIES(/usr/local/lib)
LINK_DIRECTORIES(${DEPENDENCY_INSTALL_PREFIX}/lib)
ADD_LIBRARY(univplan-shared SHARED
${UNIVPLAN_PROTO_HDRS}
${UNIVPLAN_PROTO_SRCS}
${univplan_SOURCES}
)
# ADD_LIBRARY(univplan-static STATIC ${univplan_SOURCES} ${UNIVPLAN_PROTO_SRCS} ${UNIVPLAN_PROTO_HDRS})
SET_TARGET_PROPERTIES(univplan-shared PROPERTIES OUTPUT_NAME "univplan")
# SET_TARGET_PROPERTIES(univplan-static PROPERTIES OUTPUT_NAME "univplan")
target_link_libraries(univplan-shared ${CLANG_LDFLAGS} dbcommon glog protobuf pthread)
# target_link_libraries(univplan-static ${CLANG_LDFLAGS} dbcommon glog protobuf pthread)
INSTALL(TARGETS univplan-shared
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
INSTALL(FILES ${univplanbuilder_HEADER} DESTINATION include/univplan/univplanbuilder)
INSTALL(FILES ${common_HEADER} DESTINATION include/univplan/common)
INSTALL(FILES ${cwrapper_HEADER} DESTINATION include/univplan/cwrapper)
INSTALL(FILES ${minmax_HEADER} DESTINATION include/univplan/minmax)
INSTALL(FILES ${testutil_HEADER} DESTINATION include/univplan/testutil)
INSTALL(FILES ${UNIVPLAN_PROTO_HDRS} DESTINATION include/univplan/proto)
SET(univplan_ROOT_DIR ${univplan_ROOT_DIR} PARENT_SCOPE)