2010-03-04 10:24:28 +00:00
project(OpenMW)
2015-02-15 05:34:43 +00:00
# If the user doesn't supply a CMAKE_BUILD_TYPE via command line, choose one for them.
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF()
2012-01-29 19:28:05 +00:00
if (APPLE)
set(APP_BUNDLE_NAME "${CMAKE_PROJECT_NAME}.app")
set(APP_BUNDLE_DIR "${OpenMW_BINARY_DIR}/${APP_BUNDLE_NAME}")
endif (APPLE)
2011-03-27 19:28:46 +00:00
2011-10-22 11:55:06 +00:00
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
2011-07-08 12:24:09 +00:00
# Version
2014-02-19 13:19:08 +00:00
message(STATUS "Configuring OpenMW...")
2014-02-19 12:43:14 +00:00
set(OPENMW_VERSION_MAJOR 0)
2015-05-04 17:06:02 +00:00
set(OPENMW_VERSION_MINOR 36)
set(OPENMW_VERSION_RELEASE 0)
2014-02-19 12:43:14 +00:00
2014-02-19 13:19:08 +00:00
set(OPENMW_VERSION_COMMITHASH "")
set(OPENMW_VERSION_TAGHASH "")
2014-02-19 12:43:14 +00:00
set(OPENMW_VERSION "${OPENMW_VERSION_MAJOR}.${OPENMW_VERSION_MINOR}.${OPENMW_VERSION_RELEASE}")
2014-12-30 21:37:33 +00:00
set(GIT_CHECKOUT FALSE)
2014-02-19 12:43:14 +00:00
if(EXISTS ${PROJECT_SOURCE_DIR}/.git)
2014-02-19 13:19:08 +00:00
if(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
find_package(Git)
if(GIT_FOUND)
2014-12-30 21:37:33 +00:00
set(GIT_CHECKOUT TRUE)
2014-02-19 13:19:08 +00:00
else(GIT_FOUND)
message(WARNING "Git executable not found")
endif(GIT_FOUND)
else(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
message(STATUS "Shallow Git clone detected, not attempting to retrieve version info")
endif(NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/shallow)
2014-02-19 12:43:14 +00:00
endif(EXISTS ${PROJECT_SOURCE_DIR}/.git)
2011-07-08 12:24:09 +00:00
2014-02-19 13:19:08 +00:00
# Macros
include(OpenMWMacros)
2011-07-08 12:24:09 +00:00
2014-08-04 15:49:54 +00:00
if (ANDROID)
2014-09-05 22:02:39 +00:00
set(CMAKE_FIND_ROOT_PATH ${OPENMW_DEPENDENCIES_DIR} "${CMAKE_FIND_ROOT_PATH}")
2014-08-04 15:49:54 +00:00
endif (ANDROID)
2011-07-08 12:52:34 +00:00
# doxygen main page
2014-10-12 09:28:56 +00:00
configure_file ("${OpenMW_SOURCE_DIR}/docs/mainpage.hpp.cmake" "${OpenMW_BINARY_DIR}/docs/mainpage.hpp")
2011-07-08 12:52:34 +00:00
2012-04-05 11:01:09 +00:00
option(MYGUI_STATIC "Link static build of Mygui into the binaries" FALSE)
2012-12-10 09:32:00 +00:00
option(BOOST_STATIC "Link static build of Boost into the binaries" FALSE)
2013-06-18 12:31:47 +00:00
option(SDL2_STATIC "Link static build of SDL into the binaries" FALSE)
2012-03-17 19:03:37 +00:00
2014-03-16 22:40:59 +00:00
option(OPENMW_UNITY_BUILD "Use fewer compilation units to speed up compile time" FALSE)
2012-04-13 15:39:46 +00:00
# Apps and tools
2015-02-17 15:05:28 +00:00
option(BUILD_OPENMW "build OpenMW" ON)
2014-09-11 19:48:24 +00:00
option(BUILD_BSATOOL "build BSA extractor" ON)
2012-04-13 15:39:46 +00:00
option(BUILD_ESMTOOL "build ESM inspector" ON)
option(BUILD_LAUNCHER "build Launcher" ON)
option(BUILD_MWINIIMPORTER "build MWiniImporter" ON)
2015-01-16 23:11:36 +00:00
option(BUILD_ESSIMPORTER "build ESS (Morrowind save game) importer" ON)
2012-11-21 16:31:18 +00:00
option(BUILD_OPENCS "build OpenMW Construction Set" ON)
2013-12-07 15:17:07 +00:00
option(BUILD_WIZARD "build Installation Wizard" ON)
2012-08-19 19:23:46 +00:00
option(BUILD_WITH_CODE_COVERAGE "Enable code coverage with gconv" OFF)
2015-01-09 19:48:36 +00:00
option(BUILD_UNITTESTS "Enable Unittests with Google C++ Unittest" OFF)
2014-09-11 21:12:38 +00:00
option(BUILD_MYGUI_PLUGIN "build MyGUI plugin for OpenMW resources, to use with MyGUI tools" ON)
2010-08-13 15:11:03 +00:00
2012-07-27 21:53:50 +00:00
# OS X deployment
option(OPENMW_OSX_DEPLOYMENT OFF)
2015-06-08 13:41:39 +00:00
if (MSVC)
option(OPENMW_MP_BUILD "Build OpenMW with /MP flag" OFF)
option(OPENMW_LTO_BUILD "Build OpenMW with Link-Time Optimization (Needs ~2GB of RAM)" OFF)
endif()
2010-09-09 22:56:22 +00:00
# Location of morrowind data files
2013-07-31 08:04:27 +00:00
if (APPLE)
set(MORROWIND_DATA_FILES "./data" CACHE PATH "location of Morrowind data files")
2014-06-01 21:32:05 +00:00
set(OPENMW_RESOURCE_FILES "./resources" CACHE PATH "location of OpenMW resources files")
2013-07-31 08:04:27 +00:00
elseif(UNIX)
2014-06-01 21:32:05 +00:00
set(MORROWIND_DATA_FILES "${CMAKE_INSTALL_PREFIX}/share/games/openmw/data/" CACHE PATH "location of Morrowind data files")
set(OPENMW_RESOURCE_FILES "${CMAKE_INSTALL_PREFIX}/share/games/openmw/resources/" CACHE PATH "location of OpenMW resources files")
2011-01-04 19:42:09 +00:00
else()
2013-07-31 08:04:27 +00:00
set(MORROWIND_DATA_FILES "data" CACHE PATH "location of Morrowind data files")
2014-06-01 21:32:05 +00:00
set(OPENMW_RESOURCE_FILES "resources" CACHE PATH "location of OpenMW resources files")
2013-07-31 08:04:27 +00:00
endif(APPLE)
2010-09-09 22:56:22 +00:00
2010-09-19 00:01:01 +00:00
if (WIN32)
option(USE_DEBUG_CONSOLE "whether a debug console should be enabled for debug builds, if false debug output is redirected to Visual Studio output" ON)
endif()
2010-02-28 13:51:17 +00:00
# We probably support older versions than this.
cmake_minimum_required(VERSION 2.6)
2010-08-13 15:11:03 +00:00
# Sound setup
2014-09-11 06:47:00 +00:00
set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE SWRESAMPLE AVRESAMPLE)
2014-09-15 08:49:07 +00:00
unset(FFMPEG_LIBRARIES CACHE)
2014-09-11 06:47:00 +00:00
find_package(FFmpeg)
if ( NOT AVCODEC_FOUND OR NOT AVFORMAT_FOUND OR NOT AVUTIL_FOUND OR NOT SWSCALE_FOUND )
message(FATAL_ERROR "FFmpeg component required, but not found!")
endif()
2014-07-28 15:46:41 +00:00
set(SOUND_INPUT_INCLUDES ${FFMPEG_INCLUDE_DIRS})
set(SOUND_INPUT_LIBRARY ${FFMPEG_LIBRARIES} ${SWSCALE_LIBRARIES})
2014-09-11 06:47:00 +00:00
if( SWRESAMPLE_FOUND )
add_definitions(-DHAVE_LIBSWRESAMPLE)
set(SOUND_INPUT_LIBRARY ${FFMPEG_LIBRARIES} ${SWRESAMPLE_LIBRARIES})
else()
2014-09-15 09:46:11 +00:00
if( AVRESAMPLE_FOUND )
set(SOUND_INPUT_LIBRARY ${FFMPEG_LIBRARIES} ${AVRESAMPLE_LIBRARIES})
2014-09-11 06:47:00 +00:00
else()
2014-09-15 09:46:11 +00:00
message(FATAL_ERROR "Install either libswresample (FFmpeg) or libavresample (Libav).")
2014-09-11 06:47:00 +00:00
endif()
endif()
2010-08-13 20:30:22 +00:00
2013-09-13 13:11:17 +00:00
# TinyXML
option(USE_SYSTEM_TINYXML "Use system TinyXML library instead of internal." OFF)
if(USE_SYSTEM_TINYXML)
find_library(TINYXML_LIBRARIES tinyxml)
find_path(TINYXML_INCLUDE_DIR tinyxml.h)
message(STATUS "Found TinyXML: ${TINYXML_LIBRARIES} ${TINYXML_INCLUDE_DIR}")
2013-09-14 11:33:49 +00:00
add_definitions (-DTIXML_USE_STL)
2013-09-13 13:11:17 +00:00
if(TINYXML_LIBRARIES AND TINYXML_INCLUDE_DIR)
include_directories(${TINYXML_INCLUDE_DIR})
message(STATUS "Using system TinyXML library.")
else()
message(FATAL_ERROR "Detection of system TinyXML incomplete.")
endif()
endif()
2010-08-13 20:30:22 +00:00
2010-03-04 10:24:28 +00:00
# Platform specific
if (WIN32)
2013-08-06 16:55:17 +00:00
if(NOT MINGW)
2012-03-25 21:12:00 +00:00
set(Boost_USE_STATIC_LIBS ON)
2010-07-05 03:17:10 +00:00
add_definitions(-DBOOST_ALL_NO_LIB)
2013-08-06 16:55:17 +00:00
endif(NOT MINGW)
2014-01-04 05:41:23 +00:00
# Suppress WinMain(), provided by SDL
add_definitions(-DSDL_MAIN_HANDLED)
2015-06-08 13:41:39 +00:00
# Get rid of useless crud from windows.h
add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
2010-08-30 01:12:54 +00:00
endif()
2010-03-04 10:24:28 +00:00
2010-02-28 13:51:17 +00:00
# Dependencies
2010-06-06 10:56:46 +00:00
2012-03-28 19:40:06 +00:00
# Fix for not visible pthreads functions for linker with glibc 2.15
2012-03-19 19:54:30 +00:00
if (UNIX AND NOT APPLE)
2012-12-10 09:32:00 +00:00
find_package (Threads)
2012-03-19 19:54:30 +00:00
endif()
2014-03-05 16:08:58 +00:00
# Look for stdint.h
include(CheckIncludeFile)
check_include_file(stdint.h HAVE_STDINT_H)
if(NOT HAVE_STDINT_H)
unset(HAVE_STDINT_H CACHE)
message(FATAL_ERROR "stdint.h was not found" )
endif()
2013-05-26 10:44:10 +00:00
include (CheckIncludeFileCXX)
check_include_file_cxx(unordered_map HAVE_UNORDERED_MAP)
if (HAVE_UNORDERED_MAP)
add_definitions(-DHAVE_UNORDERED_MAP)
endif ()
2012-07-24 22:47:08 +00:00
2012-07-22 12:41:23 +00:00
2013-12-29 21:25:49 +00:00
set(BOOST_COMPONENTS system filesystem program_options)
2014-05-22 11:42:47 +00:00
if(WIN32)
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} locale)
endif(WIN32)
2012-07-22 12:41:23 +00:00
2012-12-10 09:32:00 +00:00
IF(BOOST_STATIC)
set(Boost_USE_STATIC_LIBS ON)
endif()
2015-06-02 23:18:36 +00:00
find_package(OpenSceneGraph 3.2.0 REQUIRED osgDB osgViewer osgGA osgAnimation osgParticle osgQt osgUtil osgFX)
2015-02-17 16:08:55 +00:00
include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS})
2012-03-18 14:11:37 +00:00
find_package(MyGUI REQUIRED)
2014-08-26 14:59:41 +00:00
if (${MYGUI_VERSION} VERSION_LESS "3.2.1")
message(FATAL_ERROR "OpenMW requires MyGUI 3.2.1 or later, please install the latest version from http://mygui.info")
endif()
2012-07-22 12:41:23 +00:00
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
2013-01-08 10:19:05 +00:00
find_package(SDL2 REQUIRED)
2010-08-12 14:13:54 +00:00
find_package(OpenAL REQUIRED)
2011-01-30 12:19:41 +00:00
find_package(Bullet REQUIRED)
2014-06-02 07:34:43 +00:00
2015-05-09 22:36:04 +00:00
include_directories("."
2015-03-09 20:49:40 +00:00
SYSTEM
2013-01-08 10:19:05 +00:00
${SDL2_INCLUDE_DIR}
${Boost_INCLUDE_DIR}
2012-03-18 14:11:37 +00:00
${MYGUI_INCLUDE_DIRS}
2010-08-30 01:12:54 +00:00
${OPENAL_INCLUDE_DIR}
2015-03-05 23:56:37 +00:00
${BULLET_INCLUDE_DIRS}
2010-07-08 09:53:59 +00:00
)
2015-06-03 21:04:35 +00:00
link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS} ${MYGUI_LIB_DIR})
2010-02-28 13:51:17 +00:00
2014-06-02 07:34:43 +00:00
if(MYGUI_STATIC)
add_definitions(-DMYGUI_STATIC)
endif (MYGUI_STATIC)
2012-04-16 13:27:57 +00:00
if (APPLE)
2012-07-24 20:13:33 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/mac/Info.plist
"${APP_BUNDLE_DIR}/Contents/Info.plist")
configure_file(${OpenMW_SOURCE_DIR}/files/mac/openmw.icns
"${APP_BUNDLE_DIR}/Contents/Resources/OpenMW.icns" COPYONLY)
2012-04-16 13:27:57 +00:00
endif (APPLE)
2010-09-14 10:29:26 +00:00
2012-08-14 18:45:16 +00:00
# Set up DEBUG define
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS_DEBUG DEBUG=1)
2012-07-20 14:44:03 +00:00
2012-04-16 13:27:57 +00:00
add_subdirectory(files/)
2010-09-14 10:29:26 +00:00
2010-06-06 10:56:46 +00:00
# Specify build paths
2011-03-27 19:28:46 +00:00
if (APPLE)
2013-03-12 20:21:08 +00:00
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${APP_BUNDLE_DIR}/Contents/MacOS")
2014-09-11 21:12:38 +00:00
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${APP_BUNDLE_DIR}/Contents/MacOS")
2011-03-27 19:28:46 +00:00
else (APPLE)
2013-03-12 20:21:08 +00:00
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${OpenMW_BINARY_DIR}")
2014-09-11 21:12:38 +00:00
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${OpenMW_BINARY_DIR}")
2011-03-27 19:28:46 +00:00
endif (APPLE)
2010-06-06 10:56:46 +00:00
# Other files
2012-04-01 15:14:49 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg
"${OpenMW_BINARY_DIR}/settings-default.cfg")
2011-04-24 10:39:50 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg.local
2011-04-28 07:30:45 +00:00
"${OpenMW_BINARY_DIR}/openmw.cfg")
2013-06-24 02:17:52 +00:00
2011-04-28 07:30:45 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.cfg
"${OpenMW_BINARY_DIR}/openmw.cfg.install")
2011-04-24 10:39:50 +00:00
2014-05-06 12:33:32 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/opencs.ini
"${OpenMW_BINARY_DIR}/opencs.ini")
2011-04-08 17:24:21 +00:00
2013-10-20 15:21:09 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/opencs/defaultfilters
2013-10-20 08:56:27 +00:00
"${OpenMW_BINARY_DIR}/resources/defaultfilters" COPYONLY)
2011-04-08 17:24:21 +00:00
2014-12-20 20:46:11 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/gamecontrollerdb.txt
"${OpenMW_BINARY_DIR}/gamecontrollerdb.txt")
2013-02-27 03:44:35 +00:00
if (NOT WIN32 AND NOT APPLE)
2012-04-13 15:36:31 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/openmw.desktop
"${OpenMW_BINARY_DIR}/openmw.desktop")
2015-02-03 12:18:03 +00:00
configure_file(${OpenMW_SOURCE_DIR}/files/openmw-cs.desktop
"${OpenMW_BINARY_DIR}/openmw-cs.desktop")
2011-03-28 22:34:35 +00:00
endif()
2011-04-08 17:24:21 +00:00
2015-03-09 18:37:43 +00:00
# CXX Compiler settings
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
2015-05-01 00:24:27 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -std=c++98 -pedantic -Wno-long-long")
2012-03-26 19:21:51 +00:00
2015-04-02 01:44:41 +00:00
if (CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT APPLE)
execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE CLANG_VERSION)
string(REGEX REPLACE ".*version ([0-9\\.]*).*" "\\1" CLANG_VERSION ${CLANG_VERSION})
if ("${CLANG_VERSION}" VERSION_GREATER 3.6 OR "${CLANG_VERSION}" VERSION_EQUAL 3.6)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-potentially-evaluated-expression")
endif ("${CLANG_VERSION}" VERSION_GREATER 3.6 OR "${CLANG_VERSION}" VERSION_EQUAL 3.6)
endif(CMAKE_CXX_COMPILER_ID STREQUAL Clang AND NOT APPLE)
2012-03-26 19:21:51 +00:00
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION)
2015-03-09 18:37:43 +00:00
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU AND "${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-parameter")
endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU AND "${GCC_VERSION}" VERSION_GREATER 4.6 OR "${GCC_VERSION}" VERSION_EQUAL 4.6)
2015-02-09 23:55:31 +00:00
elseif (MSVC)
# Enable link-time code generation globally for all linking
2015-06-08 13:41:39 +00:00
if (OPENMW_LTO_BUILD)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /FORCE:MULTIPLE")
2015-03-09 18:37:43 +00:00
endif (CMAKE_CXX_COMPILER_ID STREQUAL GNU OR CMAKE_CXX_COMPILER_ID STREQUAL Clang)
2010-06-25 12:41:49 +00:00
2013-07-31 15:25:11 +00:00
IF(NOT WIN32 AND NOT APPLE)
2014-06-10 12:58:09 +00:00
# Linux building
2013-07-31 15:11:03 +00:00
# Paths
2014-06-10 12:58:09 +00:00
SET(BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Where to install binaries")
2015-02-06 20:27:12 +00:00
SET(LIBDIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "Where to install libraries")
2014-06-10 12:58:09 +00:00
SET(DATAROOTDIR "${CMAKE_INSTALL_PREFIX}/share" CACHE PATH "Sets the root of data directories to a non-default location")
2014-09-22 13:36:42 +00:00
SET(GLOBAL_DATA_PATH "${DATAROOTDIR}/games/" CACHE PATH "Set data path prefix")
SET(DATADIR "${GLOBAL_DATA_PATH}/openmw" CACHE PATH "Sets the openmw data directories to a non-default location")
2014-06-10 12:58:09 +00:00
SET(ICONDIR "${DATAROOTDIR}/pixmaps" CACHE PATH "Set icon dir")
SET(LICDIR "${DATAROOTDIR}/licenses/openmw" CACHE PATH "Sets the openmw license directory to a non-default location.")
2014-09-19 05:13:06 +00:00
IF("${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr")
2014-09-22 13:36:42 +00:00
SET(GLOBAL_CONFIG_PATH "/etc/" CACHE PATH "Set config dir prefix")
2014-09-19 05:13:06 +00:00
ELSE()
2014-09-22 13:36:42 +00:00
SET(GLOBAL_CONFIG_PATH "${CMAKE_INSTALL_PREFIX}/etc/" CACHE PATH "Set config dir prefix")
2014-09-19 05:13:06 +00:00
ENDIF()
2014-09-22 13:36:42 +00:00
SET(SYSCONFDIR "${GLOBAL_CONFIG_PATH}/openmw" CACHE PATH "Set config dir")
2014-06-10 12:58:09 +00:00
# Install binaries
2015-02-17 15:05:28 +00:00
IF(BUILD_OPENMW)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw" DESTINATION "${BINDIR}" )
ENDIF(BUILD_OPENMW)
2014-06-10 12:58:09 +00:00
IF(BUILD_LAUNCHER)
2015-01-29 23:07:18 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-launcher" DESTINATION "${BINDIR}" )
2014-06-10 12:58:09 +00:00
ENDIF(BUILD_LAUNCHER)
IF(BUILD_BSATOOL)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/bsatool" DESTINATION "${BINDIR}" )
ENDIF(BUILD_BSATOOL)
IF(BUILD_ESMTOOL)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/esmtool" DESTINATION "${BINDIR}" )
ENDIF(BUILD_ESMTOOL)
IF(BUILD_MWINIIMPORTER)
2015-01-29 23:07:18 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-iniimporter" DESTINATION "${BINDIR}" )
2014-06-10 12:58:09 +00:00
ENDIF(BUILD_MWINIIMPORTER)
2015-01-16 23:11:36 +00:00
IF(BUILD_ESSIMPORTER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-essimporter" DESTINATION "${BINDIR}" )
ENDIF(BUILD_ESSIMPORTER)
2014-06-10 12:58:09 +00:00
IF(BUILD_OPENCS)
2015-02-03 12:18:03 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-cs" DESTINATION "${BINDIR}" )
2014-06-10 12:58:09 +00:00
ENDIF(BUILD_OPENCS)
2014-11-18 16:43:51 +00:00
IF(BUILD_WIZARD)
2014-11-18 16:54:37 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/openmw-wizard" DESTINATION "${BINDIR}" )
2014-11-18 16:43:51 +00:00
ENDIF(BUILD_WIZARD)
2015-06-07 23:58:12 +00:00
#if(BUILD_MYGUI_PLUGIN)
# INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Plugin_MyGUI_OpenMW_Resources.so" DESTINATION "${LIBDIR}" )
#ENDIF(BUILD_MYGUI_PLUGIN)
2014-06-10 12:58:09 +00:00
# Install licenses
2014-06-10 21:24:16 +00:00
INSTALL(FILES "docs/license/DejaVu Font License.txt" DESTINATION "${LICDIR}" )
2011-01-04 19:42:09 +00:00
2013-07-31 14:13:04 +00:00
# Install icon and desktop file
2015-02-07 22:27:32 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/launcher/images/openmw.png" DESTINATION "${ICONDIR}" COMPONENT "openmw")
2013-07-31 15:25:11 +00:00
IF(BUILD_OPENCS)
2015-02-07 22:27:32 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw-cs.desktop" DESTINATION "${DATAROOTDIR}/applications" COMPONENT "opencs")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/opencs/openmw-cs.png" DESTINATION "${ICONDIR}" COMPONENT "opencs")
2013-07-31 15:25:11 +00:00
ENDIF(BUILD_OPENCS)
2011-09-30 07:36:06 +00:00
2013-07-31 14:13:04 +00:00
# Install global configuration files
2015-02-07 22:27:32 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "${SYSCONFDIR}" RENAME "openmw.cfg" COMPONENT "openmw")
2015-02-27 21:22:32 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
2013-07-31 15:49:23 +00:00
IF(BUILD_OPENCS)
2015-02-07 22:27:32 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION "${SYSCONFDIR}" COMPONENT "opencs")
2013-07-31 15:49:23 +00:00
ENDIF(BUILD_OPENCS)
2011-01-04 19:42:09 +00:00
2013-07-31 14:13:04 +00:00
# Install resources
2015-02-07 22:27:32 +00:00
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION "${DATADIR}" COMPONENT "Resources")
2013-08-16 20:32:16 +00:00
INSTALL(DIRECTORY DESTINATION "${DATADIR}/data" COMPONENT "Resources")
2013-07-31 15:25:11 +00:00
ENDIF(NOT WIN32 AND NOT APPLE)
2011-01-04 19:42:09 +00:00
2012-01-29 22:08:02 +00:00
if(WIN32)
2012-04-19 12:58:27 +00:00
FILE(GLOB dll_files "${OpenMW_BINARY_DIR}/Release/*.dll")
INSTALL(FILES ${dll_files} DESTINATION ".")
2012-01-29 22:08:02 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "." RENAME "openmw.cfg")
2015-01-20 14:24:33 +00:00
INSTALL(FILES "${OpenMW_SOURCE_DIR}/CHANGELOG.md" DESTINATION "." RENAME "CHANGELOG.txt")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/README.md" DESTINATION "." RENAME "README.txt")
2012-04-07 21:33:54 +00:00
INSTALL(FILES
2014-06-14 11:54:12 +00:00
"${OpenMW_SOURCE_DIR}/Docs/license/GPL3.txt"
"${OpenMW_SOURCE_DIR}/Docs/license/DejaVu Font License.txt"
2012-04-07 21:33:54 +00:00
"${OpenMW_BINARY_DIR}/settings-default.cfg"
2015-01-20 00:55:17 +00:00
"${OpenMW_BINARY_DIR}/gamecontrollerdb.txt"
2012-04-19 12:58:27 +00:00
"${OpenMW_BINARY_DIR}/Release/openmw.exe"
2012-04-07 21:33:54 +00:00
DESTINATION ".")
2013-10-29 12:28:43 +00:00
IF(BUILD_LAUNCHER)
2015-01-29 23:07:18 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-launcher.exe" DESTINATION ".")
2013-10-29 12:28:43 +00:00
ENDIF(BUILD_LAUNCHER)
IF(BUILD_MWINIIMPORTER)
2015-01-29 23:07:18 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-iniimporter.exe" DESTINATION ".")
2013-10-29 12:28:43 +00:00
ENDIF(BUILD_MWINIIMPORTER)
2015-01-16 23:11:36 +00:00
IF(BUILD_ESSIMPORTER)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-essimporter.exe" DESTINATION ".")
ENDIF(BUILD_ESSIMPORTER)
2013-10-29 12:28:43 +00:00
IF(BUILD_OPENCS)
2015-02-03 12:18:03 +00:00
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-cs.exe" DESTINATION ".")
2014-05-09 15:19:44 +00:00
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION ".")
2013-10-29 12:28:43 +00:00
ENDIF(BUILD_OPENCS)
2013-12-07 15:17:07 +00:00
IF(BUILD_WIZARD)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/openmw-wizard.exe" DESTINATION ".")
ENDIF(BUILD_WIZARD)
2014-09-11 21:12:38 +00:00
if(BUILD_MYGUI_PLUGIN)
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/Plugin_MyGUI_OpenMW_Resources.dll" DESTINATION ".")
ENDIF(BUILD_MYGUI_PLUGIN)
2013-10-29 12:28:43 +00:00
2012-01-29 22:08:02 +00:00
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".")
2015-06-08 13:41:39 +00:00
FILE(GLOB plugin_dir "${OpenMW_BINARY_DIR}/Release/osgPlugins-*")
INSTALL(DIRECTORY ${plugin_dir} DESTINATION ".")
2012-01-29 22:08:02 +00:00
SET(CPACK_GENERATOR "NSIS")
SET(CPACK_PACKAGE_NAME "OpenMW")
SET(CPACK_PACKAGE_VENDOR "OpenMW.org")
SET(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
SET(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR})
2013-02-12 12:23:25 +00:00
SET(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINOR})
2012-01-29 22:08:02 +00:00
SET(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
2013-10-29 12:28:43 +00:00
SET(CPACK_PACKAGE_EXECUTABLES "openmw;OpenMW")
IF(BUILD_LAUNCHER)
2015-01-29 23:07:18 +00:00
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};openmw-launcher;OpenMW Launcher")
2013-10-29 12:28:43 +00:00
ENDIF(BUILD_LAUNCHER)
IF(BUILD_OPENCS)
2015-02-03 12:18:03 +00:00
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};openmw-cs;OpenMW Construction Set")
2013-10-29 12:28:43 +00:00
ENDIF(BUILD_OPENCS)
2013-12-07 15:17:07 +00:00
IF(BUILD_WIZARD)
SET(CPACK_PACKAGE_EXECUTABLES "${CPACK_PACKAGE_EXECUTABLES};openmw-wizard;OpenMW Wizard")
ENDIF(BUILD_WIZARD)
2015-01-20 14:24:33 +00:00
SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Readme.lnk' '\$INSTDIR\\\\README.txt'")
2012-04-07 21:33:54 +00:00
SET(CPACK_NSIS_DELETE_ICONS_EXTRA "
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\Readme.lnk\\\"
")
2015-01-20 14:24:33 +00:00
SET(CPACK_RESOURCE_FILE_README "${OpenMW_SOURCE_DIR}/README.md")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${OpenMW_SOURCE_DIR}/README.md")
2012-01-29 22:08:02 +00:00
SET(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
2013-02-27 22:44:20 +00:00
SET(CPACK_NSIS_DISPLAY_NAME "OpenMW ${OPENMW_VERSION}")
2012-01-29 22:08:02 +00:00
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.openmw.org")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.openmw.org")
2015-01-29 23:07:18 +00:00
SET(CPACK_NSIS_INSTALLED_ICON_NAME "openmw-launcher.exe")
2014-09-12 02:32:53 +00:00
SET(CPACK_NSIS_MUI_ICON "${OpenMW_SOURCE_DIR}/files/windows/openmw.ico")
SET(CPACK_NSIS_MUI_UNIICON "${OpenMW_SOURCE_DIR}/files/windows/openmw.ico")
2012-04-19 12:58:27 +00:00
SET(CPACK_PACKAGE_ICON "${OpenMW_SOURCE_DIR}\\\\files\\\\openmw.bmp")
2012-01-29 22:08:02 +00:00
2012-03-01 00:32:02 +00:00
SET(VCREDIST32 "${OpenMW_BINARY_DIR}/vcredist_x86.exe")
if(EXISTS ${VCREDIST32})
INSTALL(FILES ${VCREDIST32} DESTINATION "redist")
2012-01-29 22:12:40 +00:00
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x86.exe\\\" /q'" )
2012-03-01 00:32:02 +00:00
endif(EXISTS ${VCREDIST32})
SET(VCREDIST64 "${OpenMW_BINARY_DIR}/vcredist_x64.exe")
if(EXISTS ${VCREDIST64})
INSTALL(FILES ${VCREDIST64} DESTINATION "redist")
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x64.exe\\\" /q'" )
endif(EXISTS ${VCREDIST64})
2012-02-16 07:52:26 +00:00
SET(OALREDIST "${OpenMW_BINARY_DIR}/oalinst.exe")
if(EXISTS ${OALREDIST})
INSTALL(FILES ${OALREDIST} DESTINATION "redist")
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}
ExecWait '\\\"$INSTDIR\\\\redist\\\\oalinst.exe\\\" /s'" )
endif(EXISTS ${OALREDIST})
2012-01-29 22:12:40 +00:00
2012-03-01 00:32:02 +00:00
if(CMAKE_CL_64)
SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
endif()
2012-01-29 22:08:02 +00:00
include(CPack)
endif(WIN32)
2012-07-03 20:27:22 +00:00
# Extern
2015-04-19 18:14:06 +00:00
add_subdirectory (extern/osg-ffmpeg-videoplayer)
2015-04-01 15:02:15 +00:00
add_subdirectory (extern/oics)
2012-07-03 20:27:22 +00:00
2011-11-06 08:30:15 +00:00
# Components
add_subdirectory (components)
2014-09-12 17:27:49 +00:00
# Plugins
2015-04-22 16:01:55 +00:00
#if (BUILD_MYGUI_PLUGIN)
# add_subdirectory(plugins/mygui_resource_plugin)
#endif()
2014-09-11 21:12:38 +00:00
2010-07-08 20:53:14 +00:00
# Apps and tools
2015-02-17 15:05:28 +00:00
if (BUILD_OPENMW)
add_subdirectory( apps/openmw )
endif()
2010-07-08 20:53:14 +00:00
2013-03-04 23:45:25 +00:00
if (BUILD_BSATOOL)
add_subdirectory( apps/bsatool )
endif()
2010-07-21 11:52:28 +00:00
if (BUILD_ESMTOOL)
add_subdirectory( apps/esmtool )
endif()
2010-09-19 00:01:01 +00:00
2011-09-29 12:59:20 +00:00
if (BUILD_LAUNCHER)
add_subdirectory( apps/launcher )
endif()
2011-03-28 23:31:42 +00:00
2012-03-30 18:59:44 +00:00
if (BUILD_MWINIIMPORTER)
add_subdirectory( apps/mwiniimporter )
endif()
2015-01-16 23:11:36 +00:00
if (BUILD_ESSIMPORTER)
add_subdirectory (apps/essimporter )
endif()
2012-11-21 16:31:18 +00:00
if (BUILD_OPENCS)
add_subdirectory (apps/opencs)
endif()
2013-12-07 15:17:07 +00:00
if (BUILD_WIZARD)
add_subdirectory(apps/wizard)
endif()
2012-08-19 19:23:46 +00:00
# UnitTests
if (BUILD_UNITTESTS)
add_subdirectory( apps/openmw_test_suite )
endif()
2010-09-19 00:01:01 +00:00
if (WIN32)
2011-01-04 11:40:28 +00:00
if (MSVC)
2015-06-08 13:41:39 +00:00
if (OPENMW_MP_BUILD)
2014-09-17 03:05:47 +00:00
set( MT_BUILD "/MP")
2015-06-08 13:41:39 +00:00
endif()
2014-09-17 03:05:47 +00:00
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
2014-09-24 18:09:48 +00:00
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "$(SolutionDir)$(Configuration)" )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "$(ProjectDir)$(Configuration)" )
2014-09-17 03:05:47 +00:00
endforeach( OUTPUTCONFIG )
2015-06-08 13:41:39 +00:00
if (USE_DEBUG_CONSOLE AND BUILD_OPENMW)
2011-01-04 11:40:28 +00:00
set_target_properties(openmw PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE")
2015-06-08 13:41:39 +00:00
elseif (BUILD_OPENMW)
2011-01-04 11:40:28 +00:00
# Turn off debug console, debug output will be written to visual studio output instead
set_target_properties(openmw PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS")
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS")
2010-09-19 00:01:01 +00:00
endif()
2011-01-30 12:19:41 +00:00
2015-06-08 13:41:39 +00:00
if (BUILD_OPENMW)
# Release builds use the debug console
set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:CONSOLE")
set_target_properties(openmw PROPERTIES COMPILE_DEFINITIONS_RELEASE "_CONSOLE")
set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:CONSOLE")
endif()
2012-03-13 20:55:50 +00:00
# Play a bit with the warning levels
2012-03-13 21:47:39 +00:00
set(WARNINGS "/Wall") # Since windows can only disable specific warnings, not enable them
2012-03-13 20:55:50 +00:00
set(WARNINGS_DISABLE
2012-03-13 22:51:48 +00:00
# Warnings that aren't enabled normally and don't need to be enabled
# They're unneeded and sometimes completely retarded warnings that /Wall enables
2015-06-08 13:41:39 +00:00
# Not going to bother commenting them as they tend to warn on every standard library file
4061 4263 4264 4266 4350 4371 4435 4514 4548 4571 4610 4619 4623 4625 4626 4628 4640 4668 4710 4711 4820 4826 4917 4946
2012-03-13 22:51:48 +00:00
# Warnings that are thrown on standard libraries and not OpenMW
4347 # Non-template function with same name and parameter count as template function
2012-03-14 10:36:13 +00:00
4365 # Variable signed/unsigned mismatch
2012-03-13 22:51:48 +00:00
4510 4512 # Unable to generate copy constructor/assignment operator as it's not public in the base
4706 # Assignment in conditional expression
2012-03-15 13:10:12 +00:00
4738 # Storing 32-bit float result in memory, possible loss of performance
2012-03-13 22:51:48 +00:00
4986 # Undocumented warning that occurs in the crtdbg.h file
2014-05-15 01:12:52 +00:00
4987 # nonstandard extension used (triggered by setjmp.h)
2012-03-13 22:51:48 +00:00
4996 # Function was declared deprecated
2014-09-23 02:33:09 +00:00
# caused by boost
4191 # 'type cast' : unsafe conversion (1.56, thread_primitives.hpp, normally off)
2012-03-13 22:51:48 +00:00
# OpenMW specific warnings
2012-03-13 22:04:33 +00:00
4099 # Type mismatch, declared class or struct is defined with other type
2012-03-13 21:47:39 +00:00
4100 # Unreferenced formal parameter (-Wunused-parameter)
2015-02-16 02:10:21 +00:00
4101 # Unreferenced local variable (-Wunused-variable)
2012-03-13 21:47:39 +00:00
4127 # Conditional expression is constant
4242 # Storing value in a variable of a smaller type, possible loss of data
2012-03-13 22:04:33 +00:00
4244 # Storing value of one type in variable of another (size_t in int, for example)
2015-06-08 13:41:39 +00:00
4245 # Signed/unsigned mismatch
2014-06-24 05:13:34 +00:00
4267 # Conversion from 'size_t' to 'int', possible loss of data
2012-03-13 22:04:33 +00:00
4305 # Truncating value (double to float, for example)
4309 # Variable overflow, trying to store 128 in a signed char for example
2014-06-23 06:13:30 +00:00
4351 # New behavior: elements of array 'array' will be default initialized (desired behavior)
2012-03-13 21:47:39 +00:00
4355 # Using 'this' in member initialization list
2014-05-15 01:12:52 +00:00
4505 # Unreferenced local function has been removed
2012-03-13 21:47:39 +00:00
4701 # Potentially uninitialized local variable used
2014-05-15 01:12:52 +00:00
4702 # Unreachable code
2013-03-12 20:21:08 +00:00
4800 # Boolean optimization warning, e.g. myBool = (myInt != 0) instead of myBool = myInt
2012-03-13 20:55:50 +00:00
)
foreach(d ${WARNINGS_DISABLE})
set(WARNINGS "${WARNINGS} /wd${d}")
endforeach(d)
2012-03-13 21:47:39 +00:00
2015-06-08 13:41:39 +00:00
set_target_properties(components PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
2014-06-23 06:13:30 +00:00
# oics uses tinyxml, which has an initialized but unused variable
2015-06-08 13:41:39 +00:00
set_target_properties(oics PROPERTIES COMPILE_FLAGS "${WARNINGS} /wd4189 ${MT_BUILD}")
set_target_properties(osg-ffmpeg-videoplayer PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
if (BUILD_BSATOOL)
set_target_properties(bsatool PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_ESMTOOL)
set_target_properties(esmtool PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_ESSIMPORTER)
set_target_properties(openmw-essimporter PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_LAUNCHER)
set_target_properties(openmw-launcher PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_MWINIIMPORTER)
set_target_properties(openmw-iniimporter PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
2015-03-02 14:45:29 +00:00
2014-05-15 01:12:52 +00:00
if (BUILD_OPENCS)
2015-06-08 13:41:39 +00:00
set_target_properties(openmw-cs PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_OPENMW)
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
if (BUILD_WIZARD)
set_target_properties(openmw-wizard PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
2011-01-04 11:40:28 +00:00
endif(MSVC)
2011-01-08 20:58:47 +00:00
2011-01-04 11:40:28 +00:00
# TODO: At some point release builds should not use the console but rather write to a log file
#set_target_properties(openmw PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
#set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
2010-09-19 00:01:01 +00:00
endif()
2012-01-29 19:28:05 +00:00
# Apple bundling
if (APPLE)
2012-02-13 06:31:43 +00:00
set(INSTALL_SUBDIR OpenMW)
2012-01-29 19:28:05 +00:00
2012-02-13 06:31:43 +00:00
install(DIRECTORY "${APP_BUNDLE_DIR}" USE_SOURCE_PERMISSIONS DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
install(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" RENAME "openmw.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
2012-04-16 13:27:57 +00:00
install(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
2015-01-20 00:55:17 +00:00
install(FILES "${OpenMW_BINARY_DIR}/gamecontrollerdb.txt" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
2014-05-09 15:19:44 +00:00
install(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
2012-02-28 16:19:44 +00:00
2012-02-01 16:48:13 +00:00
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
set(CPACK_PACKAGE_VERSION_MAJOR ${OPENMW_VERSION_MAJOR})
2013-09-15 19:03:07 +00:00
set(CPACK_PACKAGE_VERSION_MINOR ${OPENMW_VERSION_MINOR})
2012-02-01 16:48:13 +00:00
set(CPACK_PACKAGE_VERSION_PATCH ${OPENMW_VERSION_RELEASE})
2013-11-10 18:04:13 +00:00
set(OPENMW_APP "\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR}/${APP_BUNDLE_NAME}")
2015-02-06 06:59:00 +00:00
set(OPENCS_BUNDLE_NAME "OpenMW-CS.app")
2013-12-12 11:20:04 +00:00
set(OPENCS_APP "\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR}/${OPENCS_BUNDLE_NAME}")
2013-11-10 18:04:13 +00:00
2014-02-16 15:01:28 +00:00
install(CODE "
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
" COMPONENT Runtime)
2012-02-01 16:48:13 +00:00
#For now, search unresolved dependencies only in default system paths, so if you put unresolveable (i.e. with @executable_path in id name) lib or framework somewhere else, it would fail
set(DIRS "")
2012-04-16 13:27:57 +00:00
include(CPack)
2012-02-14 08:26:06 +00:00
endif (APPLE)
2012-08-22 18:11:03 +00:00
2014-10-12 09:28:56 +00:00
# Doxygen Target -- simply run 'make doc' or 'make doc_pages'
2014-10-12 16:30:39 +00:00
# output directory for 'make doc' is "${OpenMW_BINARY_DIR}/docs/Doxygen"
# output directory for 'make doc_pages' is "${DOXYGEN_PAGES_OUTPUT_DIR}" if defined
# or "${OpenMW_BINARY_DIR}/docs/Pages" otherwise
2014-10-12 09:28:56 +00:00
find_package(Doxygen)
2014-10-12 16:30:39 +00:00
if (DOXYGEN_FOUND)
# determine output directory for doc_pages
if (NOT DEFINED DOXYGEN_PAGES_OUTPUT_DIR)
set(DOXYGEN_PAGES_OUTPUT_DIR "${OpenMW_BINARY_DIR}/docs/Pages")
endif ()
configure_file(${OpenMW_SOURCE_DIR}/docs/Doxyfile.cmake ${OpenMW_BINARY_DIR}/docs/Doxyfile @ONLY)
configure_file(${OpenMW_SOURCE_DIR}/docs/DoxyfilePages.cmake ${OpenMW_BINARY_DIR}/docs/DoxyfilePages @ONLY)
2014-10-12 09:28:56 +00:00
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${OpenMW_BINARY_DIR}/docs/Doxyfile
WORKING_DIRECTORY ${OpenMW_BINARY_DIR}
2014-10-12 16:30:39 +00:00
COMMENT "Generating Doxygen documentation at ${OpenMW_BINARY_DIR}/docs/Doxygen"
VERBATIM)
2014-10-12 09:28:56 +00:00
add_custom_target(doc_pages
${DOXYGEN_EXECUTABLE} ${OpenMW_BINARY_DIR}/docs/DoxyfilePages
WORKING_DIRECTORY ${OpenMW_BINARY_DIR}
2014-10-12 16:30:39 +00:00
COMMENT "Generating documentation for the github-pages at ${DOXYGEN_PAGES_OUTPUT_DIR}" VERBATIM)
endif ()