diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/apple.cmake | 2 | ||||
-rw-r--r-- | cmake/linux.cmake | 6 | ||||
-rw-r--r-- | cmake/mingw-w64.cmake | 94 | ||||
-rw-r--r-- | cmake/mrproper.cmake | 8 | ||||
-rw-r--r-- | cmake/msvc.cmake | 23 | ||||
-rw-r--r-- | cmake/opentrack-boilerplate.cmake | 71 | ||||
-rw-r--r-- | cmake/opentrack-hier.cmake | 114 | ||||
-rw-r--r-- | cmake/opentrack-i18n.cmake | 77 | ||||
-rw-r--r-- | cmake/opentrack-load-user-settings.cmake | 3 | ||||
-rw-r--r-- | cmake/opentrack-pkg-config.cmake | 17 | ||||
-rw-r--r-- | cmake/opentrack-platform.cmake | 162 | ||||
-rw-r--r-- | cmake/opentrack-policy.cmake | 17 | ||||
-rw-r--r-- | cmake/opentrack-qt.cmake | 34 | ||||
-rw-r--r-- | cmake/opentrack-version.cmake | 19 | ||||
-rw-r--r-- | cmake/opentrack-word-size.cmake | 6 |
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()
|