From f094085c254d90804433c1b3baf86e8e87387177 Mon Sep 17 00:00:00 2001
From: James Goppert <james.goppert@gmail.com>
Date: Wed, 18 Apr 2012 23:15:29 -0400
Subject: [PATCH] Improved cmake options.

---
 ArduCopter/options.cmake      | 16 ++++++--
 ArduPlane/CMakeLists.txt      |  2 +-
 ArduPlane/options.cmake       | 70 +++++++++++++++++------------------
 cmake/modules/APMOption.cmake | 18 ++++++++-
 4 files changed, 62 insertions(+), 44 deletions(-)

diff --git a/ArduCopter/options.cmake b/ArduCopter/options.cmake
index 8d72e374d..9f3a23442 100644
--- a/ArduCopter/options.cmake
+++ b/ArduCopter/options.cmake
@@ -14,12 +14,16 @@
 
 apm_option("APM_PROGRAMMING_PORT" TYPE STRING
     DESCRIPTION "Programming upload port?"
-    DEFAULT "/dev/ttyUSB0")
+    DEFAULT "/dev/ttyACM0")
 
-apm_option("APM_HARDWARE" TYPE STRING
+apm_option("CONFIG_APM_HARDWARE" TYPE STRING
     DESCRIPTION "APM Hardware?" 
-    OPTIONS "APM_HARDARE_APM2" "APM2_BETA_HARDWARE" "APM1"
-    DEFAULT "APM_HARDARE_APM2")
+    OPTIONS "APM_HARDWARE_APM2" "APM_HARDWARE_APM1"
+    DEFAULT "APM_HARDWARE_APM2")
+
+apm_option("APM2_BETA_HARDWARE" TYPE BOOL DEFINE_ONLY
+    DESCRIPTION "Is this an APM 2.0 Beta board?" 
+    DEFAULT OFF)
 
 apm_option("APM_PROCESSOR" TYPE STRING
     DESCRIPTION "ArduPilotMega processor (2560 for APM2 and later APM1)?" 
@@ -105,6 +109,10 @@ apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED
     DESCRIPTION "MAVLink System ID?"
     DEFAULT "1")
 
+apm_option("MAVLINKV10" TYPE BOOL DEFINE_ONLY
+    DESCRIPTION "Use mavlink version 1.0?" 
+    DEFAULT OFF)
+
 apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
     DESCRIPTION "Serial 0 baudrate?"
     DEFAULT "115200" 
diff --git a/ArduPlane/CMakeLists.txt b/ArduPlane/CMakeLists.txt
index d8028fe27..9757f3369 100644
--- a/ArduPlane/CMakeLists.txt
+++ b/ArduPlane/CMakeLists.txt
@@ -29,7 +29,7 @@ Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME}
 
 # built variables
 set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
-set(FIRMWARE_NAME "${PROJECT_NAME}-${APM_HARDWARE}-${APM_PROCESSOR}-${HIL_MODE}")
+set(FIRMWARE_NAME "${PROJECT_NAME}-${CONFIG_APM_HARDWARE}-${APM_PROCESSOR}-${HIL_MODE}")
 
 # modify flags from default toolchain flags
 set(APM_OPT_FLAGS "-Wformat -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wformat=2")
diff --git a/ArduPlane/options.cmake b/ArduPlane/options.cmake
index fe51d290d..9f324202d 100644
--- a/ArduPlane/options.cmake
+++ b/ArduPlane/options.cmake
@@ -16,19 +16,23 @@ apm_option("APM_PROGRAMMING_PORT" TYPE STRING
     DESCRIPTION "Programming upload port?"
     DEFAULT "/dev/ttyACM0")
 
-apm_option("APM_HARDWARE" TYPE STRING
+apm_option("CONFIG_APM_HARDWARE" TYPE STRING
     DESCRIPTION "APM Hardware?" 
-    OPTIONS "APM_HARDARE_APM2" "APM2_BETA_HARDWARE" "APM1"
-    DEFAULT "APM_HARDARE_APM2")
+    OPTIONS "APM_HARDWARE_APM2" "APM_HARDWARE_APM1"
+    DEFAULT "APM_HARDWARE_APM2")
+
+apm_option("APM2_BETA_HARDWARE" TYPE BOOL DEFINE_ONLY
+    DESCRIPTION "Is this an APM 2.0 Beta board?" 
+    DEFAULT OFF)
 
 apm_option("APM_PROCESSOR" TYPE STRING
     DESCRIPTION "ArduPilotMega processor (2560 for APM2 and later APM1)?" 
     DEFAULT "mega2560"
     OPTIONS "mega" "mega2560")
 
-apm_option("CLI_ENABLED" TYPE BOOL
-    DESCRIPTION "Enable command line interface switch?" 
-    DEFAULT OFF)
+#apm_option("CLI_SLIDER_ENABLED" TYPE BOOL
+    #DESCRIPTION "Enable command line interface switch?" 
+    #DEFAULT OFF)
 
 apm_option("LOGGING_ENABLED" TYPE BOOL
     DESCRIPTION "Enable logging?" 
@@ -56,22 +60,30 @@ apm_option("AIRSPEED_SENSOR" TYPE BOOL
     DESCRIPTION "Enable airspeed sensor?"
     DEFAULT OFF)
 
+apm_option("PITOT_ENABLED" TYPE BOOL
+    DESCRIPTION "Enable pitot static system?"
+    DEFAULT OFF)
+
+apm_option("SONAR_ENABLED" TYPE BOOL
+    DESCRIPTION "Enable sonar?"
+    DEFAULT OFF)
+
 apm_option("AIRSPEED_RATIO" TYPE STRING ADVANCED
     DESCRIPTION "Airspeed ratio?"
     DEFAULT "1.9936")
 
-apm_option("MAGNETOMETER" TYPE BOOL
-    DESCRIPTION "Enable airspeed sensor?"
-    DEFAULT OFF)
+#apm_option("MAGNETOMETER" TYPE BOOL
+    #DESCRIPTION "Enable airspeed sensor?"
+    #DEFAULT OFF)
 
-apm_option("MAG_ORIENTATION" TYPE STRING ADVANCED
-    DESCRIPTION "Magnetometer orientation?" 
-    DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
-    OPTIONS 
-        "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
-        "AP_COMPASS_COMPONENTS_DOWN_PINS_BACK"
-        "AP_COMPASS_COMPONENTS_UP_PINS_FORWARD"
-        "AP_COMPASS_COMPONENTS_UP_PINS_BACK")
+#apm_option("MAG_ORIENTATION" TYPE STRING ADVANCED
+    #DESCRIPTION "Magnetometer orientation?" 
+    #DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
+    #OPTIONS 
+        #"AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
+        #"AP_COMPASS_COMPONENTS_DOWN_PINS_BACK"
+        #"AP_COMPASS_COMPONENTS_UP_PINS_FORWARD"
+        #"AP_COMPASS_COMPONENTS_UP_PINS_BACK")
 
 apm_option("HIL_MODE" TYPE STRING
     DESCRIPTION "Hardware-in-the-loop- mode?"
@@ -81,30 +93,14 @@ apm_option("HIL_MODE" TYPE STRING
         "HIL_MODE_ATTITUDE"
         "HIL_MODE_SENSORS")
 
-apm_option("HIL_PORT" TYPE STRING
-    DESCRIPTION "Port for Hardware-in-the-loop communication"
-    DEFAULT "0"
-    OPTIONS "0" "1" "2" "3")
-
-apm_option("HIL_PROTOCOL" TYPE STRING
-    DESCRIPTION "Hardware-in-the-loop protocol?"
-    DEFAULT "HIL_PROTOCOL_MAVLINK"
-    OPTIONS "HIL_PROTOCOL_MAVLINK" "HIL_PROTOCOL_XPLANE")
-
-apm_option("GCS_PROTOCOL" TYPE STRING
-    DESCRIPTION "Ground station protocol?"
-    DEFAULT "GCS_PROTOCOL_MAVLINK"
-    OPTIONS "GCS_PROTOCOL_NONE" "GCS_PROTOCOL_MAVLINK")
-
-apm_option("GCS_PORT" TYPE STRING ADVANCED
-    DESCRIPTION "Ground station port?"
-    DEFAULT "3"
-    OPTIONS "0" "1" "2" "3")
-
 apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED
     DESCRIPTION "MAVLink System ID?"
     DEFAULT "1")
 
+apm_option("MAVLINKV10" TYPE BOOL DEFINE_ONLY
+    DESCRIPTION "Use mavlink version 1.0?" 
+    DEFAULT OFF)
+
 apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
     DESCRIPTION "Serial 0 baudrate?"
     DEFAULT "115200" 
diff --git a/cmake/modules/APMOption.cmake b/cmake/modules/APMOption.cmake
index e507b25b4..48bb054da 100644
--- a/cmake/modules/APMOption.cmake
+++ b/cmake/modules/APMOption.cmake
@@ -1,6 +1,6 @@
 function(apm_option NAME)
     cmake_parse_arguments(ARG
-        "ADVANCED"
+        "ADVANCED;DEFINE_ONLY"
         "TYPE;DESCRIPTION;DEFAULT" "OPTIONS;DEPENDS" ${ARGN})
 
     #message(STATUS "parsing argument: ${NAME}")
@@ -39,6 +39,12 @@ function(apm_option NAME)
         mark_as_advanced(FORCE "${NAME}")
     endif()
 
+    if(ARG_DEFINE_ONLY)
+        set("${NAME}_DEFINE_ONLY" TRUE CACHE INTERNAL "Define only?" FORCE) 
+    else()
+        set("${NAME}_DEFINE_ONLY" FALSE CACHE INTERNAL "Define only?" FORCE) 
+    endif()
+
 endfunction()
 
 function(apm_option_generate_config)
@@ -50,6 +56,14 @@ function(apm_option_generate_config)
         #message(STATUS "item: ${ITEM}")
         get_property(ITEM_VALUE CACHE ${ITEM} PROPERTY VALUE) 
         get_property(ITEM_HELP CACHE ${ITEM} PROPERTY HELPSTRING) 
-        file(APPEND "${CMAKE_BINARY_DIR}/${ARG_FILE}" "\n#define ${ITEM} ${ITEM_VALUE} // ${ITEM_HELP}")
+        if (${ITEM}_DEFINE_ONLY)
+            if (${ITEM}_VALUE)
+                file(APPEND "${CMAKE_BINARY_DIR}/${ARG_FILE}" "\n#define ${ITEM} // ${ITEM_HELP}")
+            else()
+                file(APPEND "${CMAKE_BINARY_DIR}/${ARG_FILE}" "\n//#define ${ITEM} // ${ITEM_HELP}")
+            endif()
+        else()
+            file(APPEND "${CMAKE_BINARY_DIR}/${ARG_FILE}" "\n#define ${ITEM} ${ITEM_VALUE} // ${ITEM_HELP}")
+        endif()
     endforeach()
 endfunction()
-- 
GitLab