diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2018-01-16 04:12:23 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-01-16 06:45:50 +0100 |
commit | 790e04b5141c31c28b2a9dceace1fdeef00ebed5 (patch) | |
tree | bf7c293976dbddca4848c098a1034e3e5cfde99e | |
parent | 8c21096c50bad5e8d91c717af6a2b909e740291a (diff) |
cmake: split variant handling to each variant
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | cmake/opentrack-variant.cmake | 72 | ||||
-rw-r--r-- | variant/default/_variant.cmake | 27 | ||||
-rw-r--r-- | variant/trackmouse/_variant.cmake | 19 |
4 files changed, 72 insertions, 49 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index aa1a63dd..8c408efc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,9 +63,6 @@ function(otr_add_subdirs) get_property(_globs GLOBAL PROPERTY opentrack-subprojects) otr_add_target_dirs(_globbed ${_globs}) - get_property(_variant GLOBAL PROPERTY opentrack-variant) - add_subdirectory("variant/${_variant}") - foreach(k ${_globbed}) get_filename_component(k "${k}" DIRECTORY) add_subdirectory("${k}") diff --git a/cmake/opentrack-variant.cmake b/cmake/opentrack-variant.cmake index 607aa441..bae5a451 100644 --- a/cmake/opentrack-variant.cmake +++ b/cmake/opentrack-variant.cmake @@ -1,51 +1,31 @@ -set(opentrack_variant "default" CACHE STRING "") -set_property(CACHE opentrack_variant PROPERTY STRINGS "default;trackmouse") - # XXX that belongs in each variant's directory! function(otr_dist_select_variant) - if(opentrack_variant STREQUAL "trackmouse") - set_property(GLOBAL PROPERTY opentrack-variant "trackmouse") - set_property(GLOBAL PROPERTY opentrack-ident "trackmouse-prototype") - set(subprojects - "tracker-pt" - "proto-mouse" - "filter-accela" - "options" - "api" - "compat" - "logic" - "dinput" - "gui" - "pose-widget" - "spline" - "cv" - "migration") - set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}") - else() - set_property(GLOBAL PROPERTY opentrack-variant "default") - set_property(GLOBAL PROPERTY opentrack-ident "opentrack-2.3") - set(subprojects - "tracker-*" - "proto-*" - "filter-*" - "ext-*" - "options" - "api" - "compat" - "logic" - "dinput" - "gui" - "main" - "x-plane-plugin" - "csv" - "pose-widget" - "spline" - "qxt-mini" - "macosx" - "cv" - "migration") - set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}") + file(GLOB variants "variant/*") + + set(variant-list "") + + foreach(k ${variants}) + get_filename_component(name "${k}" NAME) + if(EXISTS "${k}/_variant.cmake" AND EXISTS "${k}/CMakeLists.txt") + list(APPEND variant-list "${name}") + else() + message(FATAL_ERROR "Stray item in variant dir '${name}'") + endif() + endforeach() + + set(opentrack_variant "default" CACHE STRING "") + set(dir "${CMAKE_SOURCE_DIR}/variant/${opentrack_variant}") + + if(NOT EXISTS "${dir}/_variant.cmake" OR NOT EXISTS "${dir}/CMakeLists.txt") + set(opentrack_variant "default" CACHE STRING "" FORCE) + set(dir "${CMAKE_SOURCE_DIR}/variant/${opentrack_variant}") endif() -endfunction() + set_property(CACHE opentrack_variant PROPERTY STRINGS "${variant-list}") + + include("${dir}/_variant.cmake") + otr_init_variant() + + add_subdirectory("${dir}") +endfunction() diff --git a/variant/default/_variant.cmake b/variant/default/_variant.cmake new file mode 100644 index 00000000..cdf9da56 --- /dev/null +++ b/variant/default/_variant.cmake @@ -0,0 +1,27 @@ +function(otr_init_variant) + set_property(GLOBAL PROPERTY opentrack-variant "default") + set_property(GLOBAL PROPERTY opentrack-ident "opentrack-2.3") + + set(subprojects + "tracker-*" + "proto-*" + "filter-*" + "ext-*" + "options" + "api" + "compat" + "logic" + "dinput" + "gui" + "main" + "x-plane-plugin" + "csv" + "pose-widget" + "spline" + "qxt-mini" + "macosx" + "cv" + "migration") + + set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}") +endfunction() diff --git a/variant/trackmouse/_variant.cmake b/variant/trackmouse/_variant.cmake new file mode 100644 index 00000000..b54ecf52 --- /dev/null +++ b/variant/trackmouse/_variant.cmake @@ -0,0 +1,19 @@ +function(otr_init_variant) + set_property(GLOBAL PROPERTY opentrack-variant "trackmouse") + set_property(GLOBAL PROPERTY opentrack-ident "trackmouse-prototype") + set(subprojects + "tracker-pt" + "proto-mouse" + "filter-accela" + "options" + "api" + "compat" + "logic" + "dinput" + "gui" + "pose-widget" + "spline" + "cv" + "migration") + set_property(GLOBAL PROPERTY opentrack-subprojects "${subprojects}") +endfunction() |