deskflow/CMakeLists.txt
BostonVaulter b46d872a5e Actually compile unit tests correctly
Previously the unit tests were being compiled without linking in the
actual test file, we will still need to prettify the cmake file (i.e.
don't put the test file in the add executable section
2011-02-15 07:44:14 +00:00

101 lines
3.5 KiB
CMake

# synergy -- mouse and keyboard sharing utility
# Copyright (C) 2009 Chris Schoeneman, Nick Bolton, Sorin Sbarnea
#
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file COPYING that should have accompanied this file.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Version number for Synergy
SET(VERSION_MAJOR 1)
SET(VERSION_MINOR 5)
SET(VERSION_REV 0)
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REV}")
# The check for 2.6 may be too strict (consider lowering).
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7)
# CMake complains if we don't have this.
IF(COMMAND cmake_policy)
CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND cmake_policy)
# We're escaping quotes in the Windows version number, because
# for some reason CMake won't do it at config version 2.4.7
# It seems that this restores the newer behaviour where define
# args are not auto-escaped.
IF(COMMAND cmake_policy)
CMAKE_POLICY(SET CMP0005 NEW)
ENDIF(COMMAND cmake_policy)
# First, declare project (important for prerequisite checks).
PROJECT(synergy C CXX)
# Set some easy to type variables.
SET(root_dir ${CMAKE_SOURCE_DIR})
SET(cmake_dir ${root_dir}/cmake)
SET(bin_dir ${root_dir}/bin)
SET(doc_dir ${root_dir}/doc)
SET(doc_dir ${root_dir}/doc)
# Now for the stuff to generate config.h (and setup defines).
INCLUDE(${cmake_dir}/CMakeLists_config.txt)
# Now for all the executables and libraries.
INCLUDE(${cmake_dir}/CMakeLists_lib.txt)
INCLUDE(${cmake_dir}/CMakeLists_synergyc.txt)
INCLUDE(${cmake_dir}/CMakeLists_synergys.txt)
INCLUDE(${cmake_dir}/CMakeLists_launcher.txt)
INCLUDE(${cmake_dir}/CMakeLists_gtest.txt)
INCLUDE(${cmake_dir}/CMakeLists_test.txt)
#add_subdirectory(third_party/gtest)
if (CONF_CPACK)
# Setup the CPack config.
INCLUDE(${cmake_dir}/CMakeLists_cpack.txt)
endif()
if (CONF_DOXYGEN)
# Setup doxygen
INCLUDE(${cmake_dir}/CMakeLists_doxygen.txt)
endif()
IF(WIN32)
# add /analyze in order to unconver potential bugs in the source code
# Details: http://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx
# add /FR to generate browse information (ncb files) usefull for using IDE
#define _BIND_TO_CURRENT_CRT_VERSION 1
#define _BIND_TO_CURRENT_ATL_VERSION 1
#define _BIND_TO_CURRENT_MFC_VERSION 1
#define _BIND_TO_CURRENT_OPENMP_VERSION 1
# next line replaced the previous 4 ones:
#define _BIND_TO_CURRENT_VCLIBS_VERSION 1;
# compiler: /MP - use multi cores to compile
# added _SECURE_SCL=1 for finding bugs with iterators - http://msdn.microsoft.com/en-us/library/aa985965.aspx
# common args between all vs builds
SET(VS_ARGS "/FR /MP /D _BIND_TO_CURRENT_VCLIBS_VERSION=1 /D _SECURE_SCL=1 ${VS_ARGS_EXTRA}")
# we may use `cmake -D VS_ARGS_EXTRA="/analyze"` for example to specify
# analyze mode (since we don't always want to use it; e.g. on non-team
# or non-x86 compiler editions where there's no support)
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${VS_ARGS}")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${VS_ARGS}")
# this line removes "/D NDEBUG" from release, we want them in order to
# find bugs even on release builds.
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2 /Ob2")
ENDIF(WIN32)