Add: [Script] Custom news message text for industry SetProductionLevel.
[openttd-github.git] / cmake / Options.cmake
blob371b03d841382a15a729f3645c456c256899af80
1 include(GNUInstallDirs)
3 # Set the options for the directories (personal, shared, global).
5 # set_directory_options()
7 function(set_directory_options)
8     if(APPLE)
9         set(DEFAULT_PERSONAL_DIR "Documents/OpenTTD")
10         set(DEFAULT_SHARED_DIR "/Library/Application Support/OpenTTD")
11         set(DEFAULT_GLOBAL_DIR "(not set)")
12     elseif(WIN32)
13         set(DEFAULT_PERSONAL_DIR "OpenTTD")
14         set(DEFAULT_SHARED_DIR "(not set)")
15         set(DEFAULT_GLOBAL_DIR "(not set)")
16     elseif(UNIX)
17         set(DEFAULT_PERSONAL_DIR ".${BINARY_NAME}")
18         set(DEFAULT_SHARED_DIR "(not set)")
19         set(DEFAULT_GLOBAL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${BINARY_NAME}")
20     else()
21         message(FATAL_ERROR "Unknown OS found; please consider creating a Pull Request to add support for this OS.")
22     endif()
24     if(NOT PERSONAL_DIR)
25         set(PERSONAL_DIR "${DEFAULT_PERSONAL_DIR}" CACHE STRING "Personal directory")
26         message(STATUS "Detecting Personal Data directory - ${PERSONAL_DIR}")
27     endif()
29     if(NOT SHARED_DIR)
30         set(SHARED_DIR "${DEFAULT_SHARED_DIR}" CACHE STRING "Shared directory")
31         message(STATUS "Detecting Shared Data directory - ${SHARED_DIR}")
32     endif()
34     if(NOT GLOBAL_DIR)
35         set(GLOBAL_DIR "${DEFAULT_GLOBAL_DIR}" CACHE STRING "Global directory")
36         message(STATUS "Detecting Global Data directory - ${GLOBAL_DIR}")
37     endif()
39     set(HOST_BINARY_DIR "" CACHE PATH "Full path to native cmake build directory")
40 endfunction()
42 # Set some generic options that influence what is being build.
44 # set_options()
46 function(set_options)
47     option(OPTION_PACKAGE_DEPENDENCIES "Copy dependencies into lib/ for easy packaging (Linux only)" OFF)
49     if(UNIX AND NOT APPLE AND NOT OPTION_PACKAGE_DEPENDENCIES)
50         set(DEFAULT_OPTION_INSTALL_FHS ON)
51     else()
52         set(DEFAULT_OPTION_INSTALL_FHS OFF)
53     endif()
55     option(OPTION_FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
57     option(OPTION_DEDICATED "Build dedicated server only (no GUI)" OFF)
58     option(OPTION_INSTALL_FHS "Install with Filesystem Hierarchy Standard folders" ${DEFAULT_OPTION_INSTALL_FHS})
59     option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" ON)
60     if(EMSCRIPTEN)
61         # Although pthreads is supported, it is not in a way yet that is
62         # useful for us.
63         option(OPTION_USE_THREADS "Use threads" OFF)
64     else()
65         option(OPTION_USE_THREADS "Use threads" ON)
66     endif()
67     option(OPTION_USE_NSIS "Use NSIS to create windows installer; enable only for stable releases" OFF)
68     option(OPTION_TOOLS_ONLY "Build only tools target" OFF)
69     option(OPTION_DOCS_ONLY "Build only docs target" OFF)
71     if (OPTION_DOCS_ONLY)
72         set(OPTION_TOOLS_ONLY ON PARENT_SCOPE)
73     endif()
75     option(OPTION_SURVEY_KEY "Survey-key to use for the opt-in survey (empty if you have none)" "")
76 endfunction()
78 # Show the values of the generic options.
80 # show_options()
82 function(show_options)
83     message(STATUS "Option Package Dependencies - ${OPTION_PACKAGE_DEPENDENCIES}")
84     message(STATUS "Option Dedicated - ${OPTION_DEDICATED}")
85     message(STATUS "Option Install FHS - ${OPTION_INSTALL_FHS}")
86     message(STATUS "Option Use assert - ${OPTION_USE_ASSERTS}")
87     message(STATUS "Option Use threads - ${OPTION_USE_THREADS}")
88     message(STATUS "Option Use NSIS - ${OPTION_USE_NSIS}")
90     if(OPTION_SURVEY_KEY)
91         message(STATUS "Option Survey Key - USED")
92     else()
93         message(STATUS "Option Survey Key - NOT USED")
94     endif()
95 endfunction()
97 # Add the definitions for the options that are selected.
99 # add_definitions_based_on_options()
101 function(add_definitions_based_on_options)
102     if(OPTION_DEDICATED)
103         add_definitions(-DDEDICATED)
104     endif()
106     if(NOT OPTION_USE_THREADS)
107         add_definitions(-DNO_THREADS)
108     endif()
110     if(OPTION_USE_ASSERTS)
111         add_definitions(-DWITH_ASSERT)
112     else()
113         add_definitions(-DNDEBUG)
114     endif()
116     if(OPTION_SURVEY_KEY)
117         add_definitions(-DSURVEY_KEY="${OPTION_SURVEY_KEY}")
118     endif()
119 endfunction()