blob: 33f564e2b5a5d5c80eeae4754808d0a53dede776 [file] [log] [blame]
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required (VERSION 2.6)
project(ORC)
# Version number of package
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "1")
SET(CPACK_PACKAGE_VERSION_PATCH "0")
SET(ORC_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
# Make sure that a build type is selected
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to ReleaseWithDebugInfo")
set (CMAKE_BUILD_TYPE "RELWITHDEBINFO")
else ()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
endif ()
# Set the package format
SET(CPACK_GENERATOR "TGZ")
INCLUDE(CPack)
set (GMOCK_VERSION "1.7.0")
set (GMOCK_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/c++/libs/gmock-${GMOCK_VERSION}/include"
"${CMAKE_SOURCE_DIR}/c++/libs/gmock-${GMOCK_VERSION}/gtest/include"
)
set (GMOCK_LIBRARIES gmock)
if(NOT APPLE AND NOT MSVC)
list (APPEND GMOCK_LIBRARIES pthread)
endif(NOT APPLE AND NOT MSVC)
set (PROTOBUF_VERSION "2.6.0")
set (PROTOBUF_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/c++/libs/protobuf-${PROTOBUF_VERSION}/src")
set (PROTOBUF_LIBRARIES protobuf)
set (PROTOBUF_EXECUTABLE "${CMAKE_BINARY_DIR}/c++/libs/protobuf-${PROTOBUF_VERSION}/protoc")
set (SNAPPY_VERSION "1.1.2")
set (SNAPPY_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/c++/libs/snappy-${SNAPPY_VERSION}")
set (SNAPPY_LIBRARIES snappy)
set (ZLIB_VERSION "1.2.8")
set (ZLIB_INCLUDE_DIRS
"${CMAKE_SOURCE_DIR}/c++/libs/zlib-${ZLIB_VERSION}"
"${CMAKE_BINARY_DIR}/c++/libs/zlib-${ZLIB_VERSION}"
)
set (ZLIB_LIBRARIES zlib)
#
# Compiler specific flags
#
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set (CXX11_FLAGS "-std=c++11")
set (WARN_FLAGS "-Weverything -Wno-c++98-compat -Wno-missing-prototypes")
set (WARN_FLAGS "${WARN_FLAGS} -Wno-c++98-compat-pedantic -Wno-padded")
set (WARN_FLAGS "${WARN_FLAGS} -Wno-covered-switch-default")
set (WARN_FLAGS "${WARN_FLAGS} -Wno-missing-noreturn -Wno-unknown-pragmas")
set (WARN_FLAGS "${WARN_FLAGS} -Wconversion -Werror")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set (WARN_FLAGS "-Wall -Wno-unknown-pragmas -Wconversion -Werror")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.3")
set (CXX11_FLAGS "")
set (WARN_FLAGS "-Wformat -Werror")
elseif (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
set (CXX11_FLAGS "-std=c++0x")
else ()
set (CXX11_FLAGS "-std=c++11")
endif ()
elseif (MSVC)
add_definitions (-D_SCL_SECURE_NO_WARNINGS)
add_definitions (-D_CRT_SECURE_NO_WARNINGS)
# TODO: We assume MSVC debug mode. In the future, set these flags
# appropriately for all build mode.
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libc.lib")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt.lib")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcd.lib")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrtd.lib")
endif ()
enable_testing()
set (EXAMPLE_DIRECTORY ${CMAKE_SOURCE_DIR}/examples)
add_subdirectory(c++)
add_subdirectory(tools)
add_subdirectory(java)
# Add another target called test-out that prints the results on failure
if (CMAKE_CONFIGURATION_TYPES)
add_custom_target (test-out
COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process
--output-on-failure --build-config "$<CONFIGURATION>"
)
else (CMAKE_CONFIGURATION_TYPES)
add_custom_target (test-out
COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process
--output-on-failure
)
endif (CMAKE_CONFIGURATION_TYPES)
install(
FILES LICENSE NOTICE
DESTINATION .)