summaryrefslogtreecommitdiffhomepage
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--[-rwxr-xr-x]CMakeLists.txt133
1 files changed, 92 insertions, 41 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 074e4011..c28ead74 100755..100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,64 +21,115 @@
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
-include(opentrack-check-build-directory)
-include(opentrack-build)
+set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
-project(opentrack)
-cmake_minimum_required(VERSION 2.8.11)
+set(CMAKE_C_LINKER_PREFERENCE_PROPAGATES OFF)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES ON)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/")
include(opentrack-policy NO_POLICY_SCOPE)
+cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
+project(opentrack)
+
+# must be prior to CMakeDetermineCXXCompiler due to rpath
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
+endif()
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
+endif()
+
+if(POLICY CMP0083)
+ cmake_policy(SET CMP0083 NEW)
+ include(CheckPIESupported)
+ check_pie_supported()
+endif()
+
+include(CMakeDetermineCCompiler)
+include(CMakeDetermineCXXCompiler)
+
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT __otr_compile_flags_set)
+ set(__otr_compile_flags_set TRUE CACHE INTERNAL "" FORCE)
+ foreach(i C CXX)
+ set(CMAKE_${i}_FLAGS_RELEASE "-O3 -march=native" CACHE STRING "" FORCE)
+ set(CMAKE_${i}_FLAGS "-ggdb -Wall -Wextra -Wpedantic" CACHE STRING "" FORCE)
+ endforeach()
+endif()
+
+include(CMakeParseArguments)
+
+include(opentrack-load-user-settings)
+include(opentrack-mrproper)
+
set_property(GLOBAL PROPERTY opentrack-all-modules "")
set_property(GLOBAL PROPERTY opentrack-all-source-dirs "")
-set(opentrack-all-translations nl_NL ru_RU stub)
-include(opentrack-word-size)
+set(opentrack_all-translations "de_DE;nl_NL;ru_RU;stub;zh_CN")
+
include(opentrack-hier)
-include(opentrack-qt)
include(opentrack-platform)
+include(opentrack-i18n)
include(opentrack-boilerplate)
+include(opentrack-qt)
include(opentrack-version)
-include(opentrack-install)
+include(opentrack-variant)
if(WIN32)
enable_language(RC)
endif()
-add_custom_target(mrproper COMMAND ${CMAKE_COMMAND} -P "${CMAKE_SOURCE_DIR}/cmake/opentrack-clean-build-directory.cmake" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
-
-set(C CMakeLists.txt)
-file(GLOB opentrack-subprojects
- "tracker-*/${C}"
- "proto-*/${C}"
- "filter-*/${C}"
- "options/${C}"
- "api/${C}"
- "compat/${C}"
- "logic/${C}"
- "dinput/${C}"
- "gui/${C}"
- "x-plane-plugin/${C}"
- "csv/${C}"
- "pose-widget/${C}"
- "spline/${C}"
- "qxt-mini/${C}"
- "macosx/${C}"
- "cv/${C}"
- "migration/${C}"
-)
-
-list(SORT opentrack-subprojects)
-
-foreach(i ${opentrack-subprojects})
- get_filename_component(i ${i} DIRECTORY)
- add_subdirectory(${i})
+add_custom_target(mrproper
+ COMMAND "${CMAKE_COMMAND}" -P
+ "${CMAKE_SOURCE_DIR}/cmake/mrproper.cmake"
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
+
+function(otr_add_subdirs)
+ otr_init_variant()
+ get_property(_globs GLOBAL PROPERTY opentrack-subprojects)
+ otr_add_target_dirs(_globbed ${_globs})
+
+ foreach(k ${_globbed})
+ get_filename_component(k "${k}" DIRECTORY)
+ # we want to compile macosx last so we can run proper install scripts
+ if (k MATCHES "macosx$")
+ set(o ${k})
+ else()
+ add_subdirectory("${k}")
+ endif()
+ endforeach()
+ # Add macosx last
+ add_subdirectory("${o}")
+endfunction()
+
+otr_add_subdirs()
+otr_merge_translations()
+
+include(opentrack-install)
+
+message("Install directory:")
+message(" ${CMAKE_INSTALL_PREFIX}")
+string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE)
+message("Compile flags:")
+#foreach(j C CXX)
+foreach(j CXX)
+ foreach(i "" "_${CMAKE_BUILD_TYPE}")
+ message(" ${j}${i}: ${CMAKE_${j}_FLAGS${i}}")
+ endforeach()
endforeach()
-merge_translations()
-install_sources()
+message("Link flags:")
+foreach(j "" "_${CMAKE_BUILD_TYPE}")
+ #foreach(i EXE SHARED)
+ foreach(i SHARED)
+ message(" LINK_${i}${j}: ${CMAKE_${i}_LINKER_FLAGS${j}}")
+ endforeach()
+endforeach()
-foreach(k C CXX)
- fix_flags(${k} "DNDEBUG" "")
+message("Static archive flags:")
+foreach(k "" "_${CMAKE_BUILD_TYPE}")
+ message(" STATIC${k}: ${CMAKE_STATIC_LINKER_FLAGS${k}}")
endforeach()
+message("--")