summaryrefslogtreecommitdiffhomepage
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/apple.cmake2
-rw-r--r--cmake/linux.cmake6
-rw-r--r--cmake/mingw-w64.cmake94
-rw-r--r--cmake/mrproper.cmake8
-rw-r--r--cmake/msvc.cmake23
-rw-r--r--cmake/opentrack-boilerplate.cmake71
-rw-r--r--cmake/opentrack-hier.cmake114
-rw-r--r--cmake/opentrack-i18n.cmake77
-rw-r--r--cmake/opentrack-load-user-settings.cmake3
-rw-r--r--cmake/opentrack-pkg-config.cmake17
-rw-r--r--cmake/opentrack-platform.cmake162
-rw-r--r--cmake/opentrack-policy.cmake17
-rw-r--r--cmake/opentrack-qt.cmake34
-rw-r--r--cmake/opentrack-version.cmake19
-rw-r--r--cmake/opentrack-word-size.cmake6
15 files changed, 329 insertions, 324 deletions
diff --git a/cmake/apple.cmake b/cmake/apple.cmake
index 627ef3c1..f6b83382 100644
--- a/cmake/apple.cmake
+++ b/cmake/apple.cmake
@@ -3,7 +3,7 @@ set(CMAKE_BUILD_TYPE_INIT RELEASE)
set(CMAKE_CXX_FLAGS "-arch x86_64 -stdlib=libc++" CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS "-arch x86_64" CACHE STRING "" FORCE)
-set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -fvisibility=hidden -g" CACHE STRING "" FORCE)
+set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -g" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE " ${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE)
set(cmake-link-common "-stdlib=libc++ -arch x86_64")
diff --git a/cmake/linux.cmake b/cmake/linux.cmake
index 945f7e77..5513f511 100644
--- a/cmake/linux.cmake
+++ b/cmake/linux.cmake
@@ -1,13 +1,13 @@
set(CMAKE_BUILD_TYPE_INIT RELEASE)
-set(CMAKE_CXX_FLAGS "-fPIC" CACHE STRING "" FORCE)
-set(CMAKE_C_FLAGS "-fPIC" CACHE STRING "" FORCE)
+set(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE)
+set(CMAKE_C_FLAGS "" CACHE STRING "" FORCE)
set(CMAKE_AR "gcc-ar" CACHE STRING "" FORCE)
set(CMAKE_NM "gcc-nm" CACHE STRING "" FORCE)
set(CMAKE_RANLIB "gcc-ranlib" CACHE STRING "" FORCE)
-set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -fuse-linker-plugin -fvisibility=hidden -fPIC" CACHE STRING "" FORCE)
+set(CMAKE_C_FLAGS_RELEASE "-ffast-math -O3 -flto -fuse-linker-plugin -fPIC" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE " ${CMAKE_C_FLAGS_RELEASE} " CACHE STRING "" FORCE)
set(cmake-link-common "")
diff --git a/cmake/mingw-w64.cmake b/cmake/mingw-w64.cmake
index 1879ab3a..b543bbdd 100644
--- a/cmake/mingw-w64.cmake
+++ b/cmake/mingw-w64.cmake
@@ -3,14 +3,9 @@
# mkdir build && cd build && cmake -DCMAKE_TOOLCHAIN_FILE=$(pwd)/../cmake/mingw-w64.cmake
# -sh 20140922
-if((NOT CMAKE_BUILD_TYPE STREQUAL "DEBUG") AND (NOT CMAKE_BUILD_TYPE STREQUAL "RELEASE"))
- set(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "" FORCE)
-endif()
+include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
-string(TOUPPER "${CMAKE_BUILD_TYPE}" __build_type)
-if(NOT __build_type STREQUAL CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE "${__build_type}" CACHE STRING "" FORCE)
-endif()
+string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE)
if(NOT CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE STRING "" FORCE)
@@ -19,29 +14,29 @@ endif()
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_SYSTEM_VERSION 5)
-# specify the cross compiler
-if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
- #set(p D:/cygwin64/opt/bin/)
- #set(p "/mingw32/bin/")
- set(p "")
- set(e .exe)
- set(c "${p}")
-else()
- set(p "")
- set(c "${p}i686-w64-mingw32-")
- set(e "")
-endif()
-
-SET(CMAKE_C_COMPILER ${c}gcc${e})
-SET(CMAKE_CXX_COMPILER ${c}g++${e})
-set(CMAKE_RC_COMPILER ${c}windres${e})
-set(CMAKE_LINKER ${c}ld${e})
-set(CMAKE_AR ${c}gcc-ar${e} CACHE STRING "" FORCE)
-set(CMAKE_NM ${c}gcc-nm${e} CACHE STRING "" FORCE)
-set(CMAKE_RANLIB ${c}gcc-ranlib${e} CACHE STRING "" FORCE)
-set(CMAKE_OBJCOPY ${c}objcopy${e} CACHE STRING "" FORCE)
-set(CMAKE_OBJDUMP ${c}objdump${e} CACHE STRING "" FORCE)
-set(CMAKE_STRIP ${c}strip${e} CACHE STRING "" FORCE)
+## specify the cross compiler
+#if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
+# #set(p D:/cygwin64/opt/bin/)
+# #set(p "/mingw32/bin/")
+# set(p "")
+# set(e .exe)
+# set(c "${p}")
+#else()
+# set(p "")
+# set(c "${p}i686-w64-mingw32-")
+# set(e "")
+#endif()
+#
+#SET(CMAKE_C_COMPILER ${c}gcc${e})
+#SET(CMAKE_CXX_COMPILER ${c}g++${e})
+#set(CMAKE_RC_COMPILER ${c}windres${e})
+#set(CMAKE_LINKER ${c}ld${e})
+#set(CMAKE_AR ${c}gcc-ar${e} CACHE STRING "" FORCE)
+#set(CMAKE_NM ${c}gcc-nm${e} CACHE STRING "" FORCE)
+#set(CMAKE_RANLIB ${c}gcc-ranlib${e} CACHE STRING "" FORCE)
+#set(CMAKE_OBJCOPY ${c}objcopy${e} CACHE STRING "" FORCE)
+#set(CMAKE_OBJDUMP ${c}objdump${e} CACHE STRING "" FORCE)
+#set(CMAKE_STRIP ${c}strip${e} CACHE STRING "" FORCE)
# search for programs in the host directories
@@ -51,30 +46,25 @@ SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# oldest CPU supported here is Northwood-based Pentium 4. -sh 20150811
-set(fpu "-ffast-math -mfpmath=both -mstackrealign -falign-functions=16 -falign-loops=16")
-set(cpu "-O3 -march=native -frename-registers")
+set(fpu "-ffast-math -mfpmath=sse -mstackrealign")
+set(cpu "-O3 -msse3 -mtune=skylake")
#set(lto "-fno-lto -fno-use-linker-plugin -flto-compression-level=9 -flto-partition=balanced -fno-ipa-pta -fno-lto-odr-type-merging")
set(lto "")
-set(sections "-ffunction-sections -fdata-sections -s")
+set(sections "-ffunction-sections -fdata-sections")
set(cc "")
#set(cc "-fdump-statistics-details -fdump-ipa-cgraph")
-set(clang-warns "")
-if(CMAKE_COMPILER_IS_CLANG)
- set(clang-warns "-Wweak-vtables")
-endif()
-
set(noisy-warns "")
set(suggest-final "")
set(numerics "")
set(missing-override "")
if(WARNINGS_ENABLE)
if(WARNINGS_FINAL_SUGGESTIONS)
- set(suggest-final "-Wsuggest-final-types -Wsuggest-final-methods")
+ set(suggest-final "-Wsuggest-final-types")
endif()
if(WARNINGS_NUMERIC)
- set(numerics "-Wdouble-promotion -Wsign-compare")
+ set(numerics "-Wdouble-promotion")
endif()
if(WARNINGS_MISSING_OVERRIDE)
set(missing-override "-Wsuggest-override")
@@ -86,12 +76,12 @@ set(_CXX_WARNS "")
set(_C_WARNS "")
if(WARNINGS_ENABLE)
- set(usual-warns "-Wdelete-non-virtual-dtor -Wno-suggest-override -Wno-odr -Wno-attributes -Wcast-align")
+ set(usual-warns "-Wstrict-aliasing=3 -Wstrict-overflow=4 -Wdelete-non-virtual-dtor -Wno-odr -Wattributes")
set(_C_WARNS "-Wall -Wextra -Wpedantic -Wcast-align")
- set(_CXX_WARNS "${_C_WARNS} ${usual-warns} ${clang-warns} ${noisy-warns} ${missing-override}")
+ set(_CXX_WARNS "${_C_WARNS} ${usual-warns} ${noisy-warns} ${missing-override}")
endif()
-set(ccflags-common "-fvisibility=hidden -pipe -g3")
+set(ccflags-common "-pipe -g3")
set(_CXXFLAGS "${ccflags-common} ${_CXX_WARNS}")
set(_CFLAGS "${ccflags-common} -std=c11 ${_C_WARNS}")
set(_CFLAGS_RELEASE "${cpu} ${fpu} ${lto} ${sections} ${cc}")
@@ -101,9 +91,9 @@ set(_CXXFLAGS_DEBUG "${_CFLAGS_DEBUG}")
add_definitions(-DSTRSAFE_NO_DEPRECATE)
-set(_LDFLAGS "-Wl,--dynamicbase,--nxcompat,--as-needed")
-set(_LDFLAGS_RELEASE "-Wl,--gc-sections,--exclude-libs,ALL")
-set(_LDFLAGS_DEBUG "")
+#set(_LDFLAGS "-Wl,--dynamicbase,--nxcompat,--as-needed")
+#set(_LDFLAGS_RELEASE "-Wl,--gc-sections,--exclude-libs,ALL")
+#set(_LDFLAGS_DEBUG "")
set(enable-val FALSE)
if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
@@ -122,10 +112,8 @@ foreach(j C CXX)
endforeach()
endforeach()
-foreach(j "" _DEBUG _RELEASE)
- foreach(i MODULE EXE SHARED)
- set(CMAKE_${i}_LINKER_FLAGS${j} "${_LDFLAGS${j}} ${CMAKE_${i}_LINKER_FLAGS${j}}")
- endforeach()
-endforeach()
-
-
+#foreach(j "" _DEBUG _RELEASE)
+# foreach(i MODULE EXE SHARED)
+# set(CMAKE_${i}_LINKER_FLAGS${j} "${_LDFLAGS${j}} ${CMAKE_${i}_LINKER_FLAGS${j}}")
+# endforeach()
+#endforeach()
diff --git a/cmake/mrproper.cmake b/cmake/mrproper.cmake
index f531a6cb..1e8713ef 100644
--- a/cmake/mrproper.cmake
+++ b/cmake/mrproper.cmake
@@ -1,4 +1,4 @@
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
-include(opentrack-mrproper)
-
-cleanup_build_dir()
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+include(opentrack-mrproper)
+
+cleanup_build_dir()
diff --git a/cmake/msvc.cmake b/cmake/msvc.cmake
index 651d8075..7275badf 100644
--- a/cmake/msvc.cmake
+++ b/cmake/msvc.cmake
@@ -18,23 +18,18 @@ set(cc "${cc} -FS -arch:SSE2 -D_HAS_EXCEPTIONS=0")
#set(cc "${cc} -Qvec-report:1")
set(warns_ "")
+
+#C4457: declaration of 'id' hides function parameter
+#C4456: declaration of 'i' hides previous local declaration
+#C4263 - member function does not override any base class virtual member function
+#C4264 - no override available for virtual member function from base class, function is hidden
+#C4265 - class has virtual functions, but destructor is not virtual
+#C4266 - no override available for virtual member function from base type, function is hidden
+#C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied
set(warns-disable 4530 4577 4789 4244 4702 4530 4244 4127 4458 4456 4251 4100 4702 4457)
if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
include("${CMAKE_CURRENT_LIST_DIR}/opentrack-policy.cmake" NO_POLICY_SCOPE)
- #C4457: declaration of 'id' hides function parameter
- #C4456: declaration of 'i' hides previous local declaration
- #C4263 - member function does not override any base class virtual member function
- #C4264 - no override available for virtual member function from base class, function is hidden
- #C4265 - class has virtual functions, but destructor is not virtual
- #C4266 - no override available for virtual member function from base type, function is hidden
- #C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied
-
- foreach(k CMP0020 CMP0022 CMP0058 CMP0028 CMP0042 CMP0063 CMP0053 CMP0011 CMP0054 CMP0012)
- if(POLICY ${k})
- cmake_policy(SET ${k} NEW)
- endif()
- endforeach()
# C4265: class has virtual functions, but destructor is not virtual
set(warns 4265)
@@ -58,7 +53,7 @@ if(CMAKE_PROJECT_NAME STREQUAL "opentrack")
set(CMAKE_RC_FLAGS "/nologo /DWIN32")
endif()
-set(base-cflags "-MT -Zi -Zf -Zo -W4 -Zo -bigobj -cgthreads1 -diagnostics:caret ${warns_}")
+set(base-cflags "-MT -Zi -Zf -Zo -W4 -bigobj -cgthreads1 -diagnostics:caret ${warns_}")
#set(base-cflags "${base-cflags} -d2cgsummary")
set(_CFLAGS "${base-cflags}")
diff --git a/cmake/opentrack-boilerplate.cmake b/cmake/opentrack-boilerplate.cmake
index 84bd3a03..683f63a4 100644
--- a/cmake/opentrack-boilerplate.cmake
+++ b/cmake/opentrack-boilerplate.cmake
@@ -1,47 +1,57 @@
include_guard(GLOBAL)
-add_custom_target(moc COMMENT "Qt temporary files")
-
set(opentrack-perms-file WORLD_READ OWNER_WRITE OWNER_READ GROUP_READ)
set(opentrack-perms-dir WORLD_READ WORLD_EXECUTE OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE)
set(opentrack-perms-exec "${opentrack-perms-dir}")
set(new-hier-path "#pragma once
-#ifndef OPENTRACK_NO_QT_PATH
+#ifdef QT_CORE_LIB
# include <QCoreApplication>
# include <QString>
# include \"compat/base-path.hpp\"
#endif
+
+#if defined __APPLE__
+# define OPENTRACK_LIBRARY_EXTENSION \"dylib\"
+#elif defined _WIN32
+# define OPENTRACK_LIBRARY_EXTENSION \"dll\"
+#else
+# define OPENTRACK_LIBRARY_EXTENSION \"so\"
+#endif
+
+#define OPENTRACK_LIBRARY_PREFIX \"\"
#define OPENTRACK_LIBRARY_PATH \"${opentrack-hier-path}\"
#define OPENTRACK_DOC_PATH \"${opentrack-hier-doc}\"
#define OPENTRACK_CONTRIB_PATH \"${opentrack-hier-doc}contrib/\"
#define OPENTRACK_I18N_PATH \"${opentrack-i18n-path}\"
")
-include_directories("${CMAKE_BINARY_DIR}")
+function(otr_write_library_paths)
+ set(hier-path-filename "${CMAKE_BINARY_DIR}/opentrack-library-path.hxx")
+ set(orig-hier-path "")
+ if(EXISTS "${hier-path-filename}")
+ file(READ ${hier-path-filename} orig-hier-path)
+ endif()
+ if(NOT (orig-hier-path STREQUAL new-hier-path))
+ file(WRITE "${hier-path-filename}" "${new-hier-path}")
+ endif()
+endfunction()
-set(hier-path-filename "${CMAKE_BINARY_DIR}/__opentrack-library-path.h")
-set(orig-hier-path "")
-if(EXISTS "${hier-path-filename}")
- file(READ ${hier-path-filename} orig-hier-path)
-endif()
-if(NOT (orig-hier-path STREQUAL new-hier-path))
- file(WRITE "${hier-path-filename}" "${new-hier-path}")
-endif()
+otr_write_library_paths()
function(otr_glob_sources var)
set(basedir "${CMAKE_CURRENT_SOURCE_DIR}")
foreach(dir . ${ARGN})
set(dir "${basedir}/${dir}")
- file(GLOB ${var}-cxx ${dir}/*.cpp)
- file(GLOB ${var}-cc ${dir}/*.c)
- file(GLOB ${var}-hh ${dir}/*.h ${dir}/*.hpp)
- file(GLOB ${var}-res ${dir}/*.rc)
+ file(GLOB ${var}-cxx "${dir}/*.cpp")
+ file(GLOB ${var}-cc "${dir}/*.c")
+ file(GLOB ${var}-hh "${dir}/*.h" "${dir}/*.hpp" "${dir}/*.inc")
+ file(GLOB ${var}-res "${dir}/*.rc")
foreach(f ${var}-res)
set_source_files_properties(${f} PROPERTIES LANGUAGE RC)
endforeach()
- file(GLOB ${var}-ui ${dir}/*.ui)
- file(GLOB ${var}-rc ${dir}/*.qrc)
+ file(GLOB ${var}-ui "${dir}/*.ui")
+ file(GLOB ${var}-rc "${dir}/*.qrc")
set(${var}-all ${${var}-cc} ${${var}-cxx} ${${var}-hh} ${${var}-rc} ${${var}-res})
foreach(i ui rc res cc cxx hh all)
set(${var}-${i} "${${var}-${i}}" PARENT_SCOPE)
@@ -117,8 +127,6 @@ function(otr_install_pdb_current_project target)
endif()
endfunction()
-include(CMakeParseArguments)
-
function(otr_module n_)
message(STATUS "module ${n_}")
cmake_parse_arguments(arg
@@ -133,8 +141,6 @@ function(otr_module n_)
endif()
set(n "opentrack-${n_}")
- # XXX TODO update callers to use instead of long name -sh 20180527
- set(self "${n}" PARENT_SCOPE)
if(NOT arg_SUBDIRS)
otr_glob_sources(${n} .)
@@ -169,9 +175,11 @@ function(otr_module n_)
set_property(TARGET "${n}" PROPERTY PREFIX "")
endif()
- set_property(SOURCE ${${n}-moc} ${${n}-uih} PROPERTY GENERATED TRUE)
- add_custom_target(moc-${n} DEPENDS ${${n}-moc} ${${n}-uih} ${${n}-rc} COMMENT "")
- add_dependencies(moc "moc-${n}")
+ if(NOT arg_NO-QT)
+ otr_qt2("${n}")
+ endif()
+
+ set(self "${n}" PARENT_SCOPE)
if(NOT arg_RELINK)
set_property(TARGET ${n} PROPERTY LINK_DEPENDS_NO_SHARED TRUE)
@@ -201,6 +209,18 @@ function(otr_module n_)
set(arg_NO-INSTALL TRUE)
endif()
+ otr_compat(${n})
+
+ if(CMAKE_COMPILER_IS_CLANGXX AND (arg_EXECUTABLE OR NOT arg_BIN))
+ set(opts
+ weak-vtables
+ header-hygiene
+ )
+ foreach(k ${opts})
+ target_compile_options(${n} PRIVATE "-Wno-${k}")
+ endforeach()
+ endif()
+
if(NOT arg_NO-INSTALL)
if(arg_BIN AND WIN32)
install(TARGETS "${n}" RUNTIME DESTINATION . PERMISSIONS ${opentrack-perms-exec})
@@ -215,7 +235,6 @@ function(otr_module n_)
endif()
endif()
- otr_compat(${n})
if(NOT arg_NO-QT)
otr_i18n_for_target_directory(${n_})
endif()
diff --git a/cmake/opentrack-hier.cmake b/cmake/opentrack-hier.cmake
index 2b3159b4..950bfefb 100644
--- a/cmake/opentrack-hier.cmake
+++ b/cmake/opentrack-hier.cmake
@@ -1,56 +1,58 @@
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
-# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
-# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-include_guard(GLOBAL)
-
-set(opentrack-install-rpath "")
-if(APPLE)
- set(opentrack-hier-pfx ".")
- set(opentrack-hier-path "/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-str RUNTIME DESTINATION . LIBRARY DESTINATION .)
- set(opentrack-doc-pfx "./doc")
- set(opentrack-doc-src-pfx "./source-code")
- set(opentrack-i18n-pfx "./i18n")
- set(opentrack-i18n-path "./i18n")
-elseif(WIN32)
- set(opentrack-hier-pfx "./modules")
- set(opentrack-hier-path "/modules/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/doc/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-doc-pfx "./doc")
- set(opentrack-doc-src-pfx "./source-code")
- set(opentrack-hier-str RUNTIME DESTINATION ./modules/ LIBRARY DESTINATION ./modules/)
- set(opentrack-i18n-pfx "./i18n")
- set(opentrack-i18n-path "./i18n")
- set(opentrack-hier-debug "./debug")
-else()
- set(opentrack-hier-pfx "libexec/opentrack")
- set(opentrack-hier-path "/../libexec/opentrack/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-hier-doc "/share/doc/opentrack/") # MUST HAVE A TRAILING BACKSLASH
- set(opentrack-doc-pfx "./share/doc/opentrack")
- set(opentrack-doc-src-pfx "./share/doc/opentrack/source-code")
- set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/${opentrack-hier-pfx}")
- set(opentrack-hier-str ARCHIVE DESTINATION share/opentrack LIBRARY DESTINATION ${opentrack-hier-pfx} RUNTIME DESTINATION bin)
- set(opentrack-i18n-pfx "./share/opentrack/i18n")
- set(opentrack-i18n-path "../share/opentrack/i18n")
-endif()
-
-function(otr_escape_string var str)
- string(REGEX REPLACE "([\$\\\"#])" "\\\\\\1" tmp__ "${str}")
- set(${var} "${tmp__}" PARENT_SCOPE)
-endfunction()
-
-set(opentrack-contrib-pfx "${opentrack-doc-pfx}/contrib")
-
-set(opentrack-binary-suffix "")
-if(APPLE)
- set(opentrack-binary-suffix ".bin")
-elseif(WIN32)
- set(opentrack-binary-suffix ".exe")
-endif()
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+include_guard(GLOBAL)
+
+set(opentrack-install-rpath "")
+if(APPLE)
+ set(opentrack-hier-pfx ".")
+ set(opentrack-hier-path "/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-hier-doc "/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-hier-str RUNTIME DESTINATION . LIBRARY DESTINATION .)
+ set(opentrack-doc-pfx "./doc")
+ set(opentrack-doc-src-pfx "./source-code")
+ set(opentrack-i18n-pfx "./i18n")
+ set(opentrack-i18n-path "./i18n")
+elseif(WIN32)
+ set(opentrack-hier-pfx "./modules")
+ set(opentrack-hier-path "/modules/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-hier-doc "/doc/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-doc-pfx "./doc")
+ set(opentrack-doc-src-pfx "./source-code")
+ set(opentrack-hier-str RUNTIME DESTINATION ./modules/ LIBRARY DESTINATION ./modules/)
+ set(opentrack-i18n-pfx "./i18n")
+ set(opentrack-i18n-path "./i18n")
+ set(opentrack-hier-debug "./debug")
+else()
+ set(opentrack-hier-pfx "libexec/opentrack")
+ set(opentrack-hier-path "/../libexec/opentrack/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-hier-doc "/share/doc/opentrack/") # MUST HAVE A TRAILING BACKSLASH
+ set(opentrack-doc-pfx "./share/doc/opentrack")
+ set(opentrack-doc-src-pfx "./share/doc/opentrack/source-code")
+ set(opentrack-install-rpath "${CMAKE_INSTALL_PREFIX}/${opentrack-hier-pfx}")
+ set(opentrack-hier-str ARCHIVE DESTINATION share/opentrack LIBRARY DESTINATION ${opentrack-hier-pfx} RUNTIME DESTINATION bin)
+ set(opentrack-i18n-pfx "./share/opentrack/i18n")
+ set(opentrack-i18n-path "../share/opentrack/i18n")
+endif()
+
+function(otr_escape_string var str)
+ string(REGEX REPLACE "([^_A-Za-z0-9./:-])" "\\\\\\1" str "${str}")
+ set(${var} "${str}" PARENT_SCOPE)
+endfunction()
+
+set(opentrack-contrib-pfx "${opentrack-doc-pfx}/contrib")
+
+set(opentrack-binary-suffix "")
+if(APPLE)
+ set(opentrack-binary-suffix ".bin")
+elseif(WIN32)
+ set(opentrack-binary-suffix ".exe")
+endif()
+
+set(CMAKE_INSTALL_RPATH "${opentrack-install-rpath}")
diff --git a/cmake/opentrack-i18n.cmake b/cmake/opentrack-i18n.cmake
index b98a469b..1d471fb2 100644
--- a/cmake/opentrack-i18n.cmake
+++ b/cmake/opentrack-i18n.cmake
@@ -1,69 +1,63 @@
include_guard(GLOBAL)
-add_custom_target(i18n ALL)
add_custom_target(i18n-lupdate)
-add_custom_target(i18n-lrelease)
-add_dependencies(i18n-lrelease i18n-lupdate)
-add_dependencies(i18n i18n-lrelease)
+set_property(TARGET i18n-lupdate PROPERTY FOLDER "i18n")
+add_custom_target(i18n-lrelease DEPENDS i18n-lupdate)
+set_property(TARGET i18n-lrelease PROPERTY FOLDER "i18n")
+add_custom_target(i18n ALL DEPENDS i18n-lrelease)
function(otr_i18n_for_target_directory n)
set(k "opentrack-${n}")
get_property(lupdate-binary TARGET "${Qt5_LUPDATE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION)
- set(target-names "")
#make_directory("${CMAKE_CURRENT_BINARY_DIR}/lang")
+ set(ts-files "")
+ foreach(k ${opentrack_all-translations})
+ list(APPEND ts-files "lang/${k}.ts")
+ set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${k}" "${CMAKE_CURRENT_SOURCE_DIR}/lang/${k}.ts")
+ endforeach()
+ set(stamp "${CMAKE_CURRENT_BINARY_DIR}/lupdate.stamp")
+
foreach(i ${opentrack_all-translations})
set(t "${CMAKE_CURRENT_SOURCE_DIR}/lang/${i}.ts")
- set(t2 "${i}.ts")
set(input "${${k}-all}")
if (NOT EXISTS "${t}")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lang")
file(READ "${CMAKE_SOURCE_DIR}/cmake/translation-stub.ts" stub)
file(WRITE "${t}" "${stub}")
endif()
- add_custom_command(OUTPUT "${t2}"
- COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_SOURCE_DIR}/lang"
- COMMAND "${CMAKE_COMMAND}" -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lang"
- COMMAND "${lupdate-binary}"
- -I "${CMAKE_SOURCE_DIR}"
- -silent
- -recursive
- -no-obsolete
- -locations none
- .
- -ts "${t}"
- COMMAND "${CMAKE_COMMAND}" -E copy "${t}" "${CMAKE_CURRENT_BINARY_DIR}/${t2}"
- DEPENDS "${k}" "${t}"
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
- COMMENT "Running lupdate for ${n}/${i}")
- set(target-name "i18n-lang-${i}-ts-${n}")
- list(APPEND target-names "${target-name}")
- add_custom_target(${target-name} DEPENDS "${t2}" COMMENT "")
- set_property(GLOBAL APPEND PROPERTY "opentrack-ts-files-${i}" "${CMAKE_CURRENT_BINARY_DIR}/${t2}")
- set_property(GLOBAL APPEND PROPERTY "opentrack-ts-module-${n}" "${target-name}")
- add_dependencies(i18n-lupdate "${target-name}")
endforeach()
+
+ add_custom_command(OUTPUT "${stamp}"
+ COMMAND "${lupdate-binary}"
+ -I "${CMAKE_SOURCE_DIR}"
+ -silent
+ -recursive
+ -no-obsolete
+ -locations none
+ .
+ -ts ${ts-files}
+ COMMAND "${CMAKE_COMMAND}" -E touch "${stamp}"
+ DEPENDS ${${k}-cc} ${${k}-hh} ${${k}-uih} ${${k}-moc}
+ COMMENT "Running lupdate for ${n}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
+ set(target-name "i18n-module-${n}")
+ add_custom_target(${target-name} DEPENDS "${stamp}" COMMENT "")
+ set_property(TARGET ${target-name} PROPERTY FOLDER "i18n")
+ add_dependencies(i18n-lupdate ${target-name})
endfunction()
function(otr_merge_translations)
otr_escape_string(i18n-pfx "${opentrack-i18n-pfx}")
install(CODE "file(REMOVE_RECURSE \"\${CMAKE_INSTALL_PREFIX}/${i18n-pfx}\")")
- set(all-ts-targets "")
-
- get_property(all-modules GLOBAL PROPERTY opentrack-all-modules)
- foreach(target ${all-modules})
- get_property(ts-targets GLOBAL PROPERTY "opentrack-ts-module-${target}")
- list(APPEND all-ts-targets "${ts-targets}")
- endforeach()
-
foreach(i ${opentrack_all-translations})
get_property(ts-files GLOBAL PROPERTY "opentrack-ts-files-${i}")
get_property(lrelease-binary TARGET "${Qt5_LRELEASE_EXECUTABLE}" PROPERTY IMPORTED_LOCATION)
- set(qm-output "${i}.qm")
+ set(qm-output "${CMAKE_BINARY_DIR}/${i}.qm")
# whines about duplicate messages since tracker-pt-base is static
if(WIN32)
@@ -80,15 +74,16 @@ function(otr_merge_translations)
${ts-files}
-qm "${qm-output}"
${to-null}
- DEPENDS ${all-ts-targets}
+ DEPENDS ${ts-files} i18n-lupdate
COMMENT "Running lrelease for ${i}"
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
- set(target-name "i18n-qm-${i}")
- add_custom_target("${target-name}" DEPENDS "${qm-output}")
- add_dependencies(i18n-lrelease "${target-name}")
+ set(target-name i18n-qm-${i})
+ add_custom_target(${target-name} DEPENDS "${qm-output}")
+ set_property(TARGET ${target-name} PROPERTY FOLDER "i18n")
+ add_dependencies(i18n-lrelease ${target-name})
- install(FILES "${CMAKE_BINARY_DIR}/${qm-output}"
+ install(FILES "${qm-output}"
DESTINATION "${CMAKE_INSTALL_PREFIX}/${opentrack-i18n-pfx}"
PERMISSIONS ${opentrack-perms-file})
endforeach()
diff --git a/cmake/opentrack-load-user-settings.cmake b/cmake/opentrack-load-user-settings.cmake
index a0284943..0ce6e9b0 100644
--- a/cmake/opentrack-load-user-settings.cmake
+++ b/cmake/opentrack-load-user-settings.cmake
@@ -20,9 +20,6 @@ else()
endif()
endif()
-include(CMakeDetermineCCompiler)
-include(CMakeDetermineCXXCompiler)
-
if(NOT CMAKE_SYSTEM_NAME STREQUAL CMAKE_HOST_SYSTEM_NAME)
set(__sdk_host_os "${CMAKE_HOST_SYSTEM_NAME}-cross-")
else()
diff --git a/cmake/opentrack-pkg-config.cmake b/cmake/opentrack-pkg-config.cmake
index b12b786c..5b84cf40 100644
--- a/cmake/opentrack-pkg-config.cmake
+++ b/cmake/opentrack-pkg-config.cmake
@@ -2,27 +2,18 @@ include_guard(GLOBAL)
include(FindPkgConfig)
function(otr_pkgconfig target)
- set(cflags "")
- set(includes "")
- set(ldflags "")
- set(libs "")
foreach(i ${ARGN})
set(k pkg-config_${i})
pkg_check_modules(${k} QUIET ${i})
if(${${k}_FOUND})
- set(cflags "${cflags} ${${k}_CFLAGS} ")
- set(includes ${includes} ${${k}_INCLUDE_DIRS} ${${k}_INCLUDEDIR})
- set(ldflags "${ldflags} ${${k}_LDFLAGS} ")
- set(libs ${libs} ${${k}_LIBRARIES})
- #message(STATUS "${target} | ${i} | ${cflags} | ${includes} | ${ldflags} | ${libs} | ")
+ target_compile_options(${target} PRIVATE "${${k}_CFLAGS}")
+ target_link_options(${target} PRIVATE ${${k}_LDFLAGS})
+ target_include_directories(${target} SYSTEM PRIVATE ${${k}_INCLUDE_DIRS} ${${k}_INCLUDEDIR})
+ target_link_libraries(${target} ${${k}_LIBRARIES})
else()
message(FATAL_ERROR "Can't find '${i}'. Please install development files for this package.")
endif()
endforeach()
- set_property(TARGET ${target} APPEND_STRING PROPERTY COMPILE_FLAGS "${cflags} ")
- target_include_directories(${target} SYSTEM PRIVATE ${includes})
- set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS "${ldflags} ")
- target_link_libraries(${target} ${libs})
endfunction()
diff --git a/cmake/opentrack-platform.cmake b/cmake/opentrack-platform.cmake
index 4b7cde09..99589a76 100644
--- a/cmake/opentrack-platform.cmake
+++ b/cmake/opentrack-platform.cmake
@@ -23,29 +23,50 @@
include_guard(GLOBAL)
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE)
- if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
- endif()
+if(MSVC AND MSVC_VERSION LESS "1915" AND NOT ".${CMAKE_CXX_COMPILER_ID}" STREQUAL ".Clang")
+ message(FATAL_ERROR "Visual Studio too old. Use Visual Studio 2017 or newer.")
endif()
-string(TOUPPER "${CMAKE_BUILD_TYPE}" __build_type)
-set(CMAKE_BUILD_TYPE "${__build_type}" CACHE STRING "" FORCE)
+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(APPLE)
- if(NOT CMAKE_OSX_ARCHITECTURES)
- set(CMAKE_OSX_ARCHITECTURES "x86_64")
- endif()
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "RELEASE" CACHE STRING "" FORCE)
endif()
-if(MSVC AND MSVC_VERSION LESS "1915" AND NOT ".${CMAKE_CXX_COMPILER_ID}" STREQUAL ".Clang")
- message(FATAL_ERROR "Visual Studio too old. Use Visual Studio 2017 Preview or newer.")
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # for clang
+
+string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE)
+set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "" FORCE)
+
+include_directories("${CMAKE_SOURCE_DIR}")
+
+set(opentrack_maintainer-mode FALSE CACHE INTERNAL "Select if developing core code (not modules)")
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_DEFAULT 17)
+set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
+set(CMAKE_CXX_EXTENSIONS FALSE)
+
+set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+set(CMAKE_SKIP_RPATH FALSE)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC OFF)
+set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+
+set(CMAKE_C_VISIBILITY_PRESET hidden)
+set(CMAKE_CXX_VISIBILITY_PRESET hidden)
+
+if(NOT WIN32 AND NOT APPLE)
+ include(opentrack-pkg-config)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_GNUCXX TRUE)
- set(CMAKE_COMPILER_IS_CLANG TRUE)
+ set(CMAKE_COMPILER_IS_CLANGXX TRUE)
endif()
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
@@ -53,30 +74,67 @@ if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANG TRUE)
endif()
-if((NOT CMAKE_COMPILER_IS_GNUCXX) EQUAL (NOT (NOT CMAKE_COMPILER_IS_GNUCC)))
- # this build system has logic errors otherwise
- message(FATAL_ERROR "use either use both gcc and g++ or neither")
+if(APPLE AND NOT CMAKE_OSX_ARCHITECTURES)
+ set(CMAKE_OSX_ARCHITECTURES "x86_64")
+ set(opentrack-intel TRUE)
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*|i[0-9]86.*|x86.*")
+ set(opentrack-intel TRUE)
+elseif(MSVC AND CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "")
+ set(opentrack-intel TRUE)
+else()
+ set(opentrack-intel FALSE)
+endif()
+
+if(CMAKE_SIZEOF_VOID_P GREATER_EQUAL 8)
+ set(opentrack-64bit TRUE)
+else()
+ set(opentrack-64bit FALSE)
endif()
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(LINUX TRUE)
endif()
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-cxa-atexit")
+
+ # assume binutils
+ foreach (i SHARED MODULE EXE)
+ set(CMAKE_${i}_LINKER_FLAGS "${CMAKE_${i}_LINKER_FLAGS} -Wl,--exclude-libs,ALL")
+ endforeach()
+
+ if(UNIX)
+ foreach (i SHARED MODULE EXE)
+ set(CMAKE_${i}_LINKER_FLAGS "${CMAKE_${i}_LINKER_FLAGS} -Wl,-z,relro,-z,now")
+ endforeach()
+ endif()
+endif()
+
if(WIN32)
- add_definitions(-D_USE_MATH_DEFINES=1)
+ add_definitions(-D_USE_MATH_DEFINES=1 -DSTRSAFE_NO_DEPRECATE)
+endif()
+
+if(MINGW)
+ add_definitions(-DMINGW_HAS_SECURE_API)
endif()
if(MSVC)
- add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_NO_DEBUG_HEAP)
+ add_definitions(-DNOMINMAX)
+ add_definitions(-DWIN32_LEAN_AND_MEAN)
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+ add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1)
+ add_definitions(-D_SCL_SECURE_NO_WARNINGS)
+
add_definitions(-D_ITERATOR_DEBUG_LEVEL=0)
add_definitions(-D_HAS_EXCEPTIONS=0)
+
add_definitions(-D_ENABLE_EXTENDED_ALIGNED_STORAGE)
add_definitions(-D_SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING)
add_definitions(-D_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING)
set(__stuff "-permissive- -diagnostics:caret")
set(CMAKE_CXX_FLAGS "${__stuff} ${CMAKE_CXX_FLAGS}")
- set(CMAKE_C_FLAGS "${__stuff} ${CMAKE_CXX_FLAGS}")
+ set(CMAKE_C_FLAGS "${__stuff} ${CMAKE_C_FLAGS}")
if(opentrack-64bit)
set(ent "-HIGHENTROPYVA")
@@ -90,67 +148,11 @@ if(MSVC)
endforeach()
endif()
-if(WIN32)
- if(CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_RC_COMPILER_INIT i686-w64-mingw32-windres)
- set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> --use-temp-file -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
- endif()
- enable_language(RC)
-endif()
-
-if(opentrack-install-rpath)
- set(CMAKE_INSTALL_RPATH "${opentrack-install-rpath}")
-else()
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}")
-endif()
-
-set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-set(CMAKE_SKIP_INSTALL_RPATH FALSE)
-set(CMAKE_SKIP_RPATH FALSE)
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC OFF)
-set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-
-include_directories("${CMAKE_SOURCE_DIR}")
-
-if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE)
- set(_common "-fvisibility=hidden")
- set(CMAKE_C_FLAGS "${_common} ${CMAKE_C_FLAGS}")
- set(CMAKE_CXX_FLAGS "${_common} -fuse-cxa-atexit ${CMAKE_CXX_FLAGS}")
-endif()
-
if(APPLE)
set(CMAKE_MACOSX_RPATH OFF)
- set(apple-frameworks "-stdlib=libc++ -framework Cocoa -framework CoreFoundation -lobjc -lz -framework Carbon")
- set(CMAKE_SHARED_LINKER_FLAGS " ${apple-frameworks} ${CMAKE_SHARED_LINKER_FLAGS}")
- #set(CMAKE_STATIC_LINKER_FLAGS " ${apple-frameworks} ${CMAKE_STATIC_LINKER_FLAGS}")
- set(CMAKE_EXE_LINKER_FLAGS " ${apple-frameworks} ${CMAKE_EXE_LINKER_FLAGS}")
- set(CMAKE_MODULE_LINKER_FLAGS " ${apple-frameworks} ${CMAKE_MODULE_LINKER_FLAGS}")
- set(CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}")
-endif()
-
-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_DEFAULT 17)
-set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
-set(CMAKE_CXX_EXTENSIONS FALSE)
-
-foreach(k _RELEASE _DEBUG _RELWITHDEBINFO _MINSIZEREL)
- set(CMAKE_C_FLAGS${k} "${CMAKE_C_FLAGS${k}} -UNDEBUG")
- set(CMAKE_CXX_FLAGS${k} "${CMAKE_CXX_FLAGS${k}} -UNDEBUG")
-endforeach()
-
-if(MINGW)
- add_definitions(-DMINGW_HAS_SECURE_API)
- add_definitions(-DSTRSAFE_NO_DEPRECATE)
-endif()
-
-# assume binutils
-if(UNIX AND NOT APPLE)
- foreach (i SHARED MODULE EXE)
- set(CMAKE_${i}_LINKER_FLAGS "-Wl,-z,relro,-z,now,--exclude-libs,ALL ${CMAKE_${i}_LINKER_FLAGS}")
+ set(apple-frameworks "-framework Cocoa -framework CoreFoundation -lobjc -lz -framework Carbon")
+ foreach (k SHARED EXE MODULE)
+ set(CMAKE_${k}_LINKER_FLAGS "-stdlib=libc++ ${CMAKE_${k}_LINKER_FLAGS} ${apple-frameworks}")
endforeach()
- include(opentrack-pkg-config)
+ set(CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}")
endif()
-
-set(opentrack_maintainer-mode FALSE CACHE BOOL "Select if developing core code (not modules)")
diff --git a/cmake/opentrack-policy.cmake b/cmake/opentrack-policy.cmake
index e86cd284..209ef529 100644
--- a/cmake/opentrack-policy.cmake
+++ b/cmake/opentrack-policy.cmake
@@ -1,5 +1,20 @@
include_guard(GLOBAL)
-foreach(k CMP0020 CMP0022 CMP0058 CMP0028 CMP0042 CMP0063 CMP0053 CMP0011 CMP0054 CMP0012)
+
+set(_policies
+ CMP0020
+ CMP0022
+ CMP0058
+ CMP0028
+ CMP0042
+ CMP0063
+ CMP0053
+ CMP0011
+ CMP0054
+ CMP0012
+ CMP0069
+ CMP0063
+)
+foreach(k ${_policies})
if(POLICY ${k})
cmake_policy(SET ${k} NEW)
endif()
diff --git a/cmake/opentrack-qt.cmake b/cmake/opentrack-qt.cmake
index e90e3250..5a8c27a0 100644
--- a/cmake/opentrack-qt.cmake
+++ b/cmake/opentrack-qt.cmake
@@ -20,9 +20,12 @@ endfunction()
function(otr_install_qt_libs)
if(WIN32)
foreach(i Qt5::Core Qt5::Gui Qt5::Network Qt5::SerialPort Qt5::Widgets)
- get_property(path TARGET "${i}" PROPERTY LOCATION)
- if("${path}" STREQUAL "")
- message(FATAL_ERROR "${i} ${path}")
+ get_property(path TARGET "${i}" PROPERTY "LOCATION_${CMAKE_BUILD_TYPE}")
+ if(path STREQUAL "")
+ get_property(path TARGET "${i}" PROPERTY LOCATION)
+ endif()
+ if(path STREQUAL "")
+ message(FATAL_ERROR "can't find ${i}")
endif()
install(FILES "${path}" DESTINATION .)
if(MSVC AND opentrack_install-debug-info)
@@ -33,7 +36,13 @@ function(otr_install_qt_libs)
endif()
endforeach()
- get_property(path TARGET Qt5::QWindowsIntegrationPlugin PROPERTY LOCATION)
+ get_property(path TARGET Qt5::QWindowsIntegrationPlugin PROPERTY "LOCATION_${CMAKE_BUILD_TYPE}")
+ if(path STREQUAL "")
+ get_property(path TARGET Qt5::QWindowsIntegrationPlugin PROPERTY LOCATION)
+ endif()
+ if(path STREQUAL "")
+ message(FATAL_ERROR "can't find Qt5::QWindowsIntegrationPlugin")
+ endif()
install(FILES "${path}" DESTINATION ./platforms)
if(MSVC AND opentrack_install-debug-info)
otr_pdb_for_dll(pdb-path "${path}")
@@ -59,8 +68,17 @@ function(otr_qt n)
list(APPEND ${n}-all ${${n}-${i}})
endforeach()
set(${n}-all "${${n}-all}" PARENT_SCOPE)
- include_directories(SYSTEM ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
- add_definitions(${Qt5Core_DEFINITIONS} ${Qt5Gui_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ${Qt5Network_DEFINITIONS})
- add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT)
- add_definitions(-DQT_DEPRECATED -DQT_DISABLE_DEPRECATED_BEFORE=-1)
endfunction()
+
+function(otr_qt2 n)
+ target_include_directories("${n}" PRIVATE SYSTEM
+ ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS}
+ )
+ target_compile_definitions("${n}" PRIVATE
+ ${Qt5Core_DEFINITIONS} ${Qt5Gui_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ${Qt5Network_DEFINITIONS}
+ -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
+ -DQT_MESSAGELOGCONTEXT
+ )
+endfunction()
+
+include_directories("${CMAKE_BINARY_DIR}")
diff --git a/cmake/opentrack-version.cmake b/cmake/opentrack-version.cmake
index a85d7ffe..0ff516f2 100644
--- a/cmake/opentrack-version.cmake
+++ b/cmake/opentrack-version.cmake
@@ -6,19 +6,9 @@ if(GIT_FOUND)
git_describe(OPENTRACK_COMMIT --tags --always)
endif()
-unset(_build_type)
-if(CMAKE_BUILD_TYPE)
- string(TOUPPER ${CMAKE_BUILD_TYPE} _build_type)
- if (NOT _build_type STREQUAL "DEBUG")
- unset(_build_type)
- else()
- set(_build_type "-${_build_type}")
- endif()
-endif()
-
-file(WRITE ${CMAKE_BINARY_DIR}/opentrack-version.h "#define OPENTRACK_VERSION \"${OPENTRACK_COMMIT}${_build_type}\"")
+file(WRITE ${CMAKE_BINARY_DIR}/opentrack-version.hxx "#define OPENTRACK_VERSION \"${OPENTRACK_COMMIT}\"")
-set(version-string "
+set(version-string "\
#ifdef __cplusplus
extern \"C\"
#else
@@ -26,8 +16,7 @@ extern
#endif
const char* const opentrack_version;
-
-const char* const opentrack_version = \"${OPENTRACK_COMMIT}${_build_type}\";
+const char* const opentrack_version = \"${OPENTRACK_COMMIT}\";
")
set(file "${CMAKE_CURRENT_BINARY_DIR}/version.cpp")
@@ -43,5 +32,5 @@ endif()
add_library(opentrack-version STATIC "${file}")
if(NOT MSVC)
- set_property(TARGET opentrack-version APPEND_STRING PROPERTY COMPILE_FLAGS "-fno-lto ")
+ target_compile_options(opentrack-version PRIVATE -fno-lto)
endif()
diff --git a/cmake/opentrack-word-size.cmake b/cmake/opentrack-word-size.cmake
deleted file mode 100644
index e539f1cd..00000000
--- a/cmake/opentrack-word-size.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-include_guard(GLOBAL)
-if(CMAKE_SIZEOF_VOID_P GREATER 4)
- set(opentrack-64bit TRUE)
-else()
- set(opentrack-64bit FALSE)
-endif()