From 1bc4d54ce914e14968c2f72d9ab7b205de781d5e Mon Sep 17 00:00:00 2001
From: James Goppert <james.goppert@gmail.com>
Date: Thu, 19 Apr 2012 16:05:08 -0400
Subject: [PATCH] Worked on ArduCopter cmake options.

---
 ArduCopter/CMakeLists.txt     |  9 ++++--
 ArduCopter/options.cmake      | 60 ++++++++++++++---------------------
 ArduPlane/options.cmake       |  2 +-
 cmake/modules/APMOption.cmake |  9 ++++--
 4 files changed, 38 insertions(+), 42 deletions(-)

diff --git a/ArduCopter/CMakeLists.txt b/ArduCopter/CMakeLists.txt
index 6c88ad554..4cc004e11 100644
--- a/ArduCopter/CMakeLists.txt
+++ b/ArduCopter/CMakeLists.txt
@@ -16,10 +16,13 @@ include(CMakeParseArguments)
 include(APMOption)
 
 # options
-add_definitions(-DUSE_CMAKE_APM_CONFIG)
 include(options.cmake)
 include_directories(${CMAKE_BINARY_DIR})
-apm_option_generate_config(FILE "APM_Config_cmake.h" OPTIONS ${APM_OPTIONS})
+add_definitions(-DUSE_CMAKE_APM_CONFIG)
+apm_option_generate_config(FILE "APM_Config_cmake.h" BUILD_FLAGS APM_BUILD_FLAGS)
+add_definitions(${APM_BUILD_FLAGS})
+message(STATUS "build flags: ${APM_BUILD_FLAGS}")
+#configure_file(APM_Config2.h.cmake APM_Config2.h)
 
 # disallow in-source build
 include(MacroEnsureOutOfSourceBuild)
@@ -28,7 +31,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/ArduCopter/options.cmake b/ArduCopter/options.cmake
index 9f3a23442..993c76e18 100644
--- a/ArduCopter/options.cmake
+++ b/ArduCopter/options.cmake
@@ -30,9 +30,9 @@ apm_option("APM_PROCESSOR" TYPE STRING
     DEFAULT "mega2560"
     OPTIONS "mega" "mega2560")
 
-apm_option("CLI_SLIDER_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?" 
@@ -60,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?"
@@ -85,31 +93,11 @@ 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
+apm_option("MAVLINK10" TYPE BOOL DEFINE_ONLY BUILD_FLAG
     DESCRIPTION "Use mavlink version 1.0?" 
     DEFAULT OFF)
 
@@ -159,7 +147,7 @@ apm_option("FRAME_CONFIG" TYPE STRING
 
 apm_option("FRAME_ORIENTATION" TYPE STRING
     DESCRIPTION "Vehicle type?"
-    DEFAULT "QUAD_FRAME"
+    DEFAULT "PLUS_FRAME"
     OPTIONS
 	    "PLUS_FRAME"
 	    "X_FRAME"
diff --git a/ArduPlane/options.cmake b/ArduPlane/options.cmake
index f984b36ab..6fdc62c25 100644
--- a/ArduPlane/options.cmake
+++ b/ArduPlane/options.cmake
@@ -38,7 +38,7 @@ apm_option("LOGGING_ENABLED" TYPE BOOL
     DESCRIPTION "Enable logging?" 
     DEFAULT OFF)
 
-apm_option("QUATERNION_ENABLE" TYPE BOOL
+apm_option("QUATERNION_ENABLE" TYPE BOOL ADVANCED
     DESCRIPTION "Enable quaterion navigation?" 
     DEFAULT OFF)
 
diff --git a/cmake/modules/APMOption.cmake b/cmake/modules/APMOption.cmake
index 6114ff44a..a71ad89c9 100644
--- a/cmake/modules/APMOption.cmake
+++ b/cmake/modules/APMOption.cmake
@@ -91,7 +91,9 @@ function(apm_option_generate_config)
     cmake_parse_arguments(ARG "" "FILE;BUILD_FLAGS" "" ${ARGN})
 
     # options
-    list(REMOVE_DUPLICATES APM_OPTIONS_LIST)
+    if (NOT "${APM_OPTIONS_LIST}" STREQUAL "")
+        list(REMOVE_DUPLICATES APM_OPTIONS_LIST)
+    endif()
     file (WRITE "${CMAKE_BINARY_DIR}/${ARG_FILE}" "//automatically generated, do not edit\n")
     file (APPEND "${CMAKE_BINARY_DIR}/${ARG_FILE}" "#define OFF 0\n#define ON 1\n")
     foreach(ITEM ${APM_OPTIONS_LIST})
@@ -110,9 +112,12 @@ function(apm_option_generate_config)
     endforeach()
 
     # build flags
-    list(REMOVE_DUPLICATES APM_BUILD_FLAGS_LIST)
+    if (NOT "${APM_BUILD_FLAGS_LIST}" STREQUAL "")
+        list(REMOVE_DUPLICATES APM_BUILD_FLAGS_LIST)
+    endif()
     foreach(ITEM ${APM_BUILD_FLAGS_LIST})
         #message(STATUS "build flags: ${ITEM}")
+        set(${ARG_BUILD_FLAGS} "" CACHE INTERNAL "build flags" FORCE)
         get_property(ITEM_VALUE CACHE ${ITEM} PROPERTY VALUE) 
         if (${${ITEM}_DEFINE_ONLY})
             if (${ITEM_VALUE})
-- 
GitLab