Improved cmake options.

This commit is contained in:
James Goppert 2012-04-18 23:15:29 -04:00
parent 0f90164f03
commit 53c143a575
4 changed files with 62 additions and 44 deletions

View File

@ -14,12 +14,16 @@
apm_option("APM_PROGRAMMING_PORT" TYPE STRING apm_option("APM_PROGRAMMING_PORT" TYPE STRING
DESCRIPTION "Programming upload port?" 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?" DESCRIPTION "APM Hardware?"
OPTIONS "APM_HARDARE_APM2" "APM2_BETA_HARDWARE" "APM1" OPTIONS "APM_HARDWARE_APM2" "APM_HARDWARE_APM1"
DEFAULT "APM_HARDARE_APM2") 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 apm_option("APM_PROCESSOR" TYPE STRING
DESCRIPTION "ArduPilotMega processor (2560 for APM2 and later APM1)?" 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?" DESCRIPTION "MAVLink System ID?"
DEFAULT "1") DEFAULT "1")
apm_option("MAVLINKV10" TYPE BOOL DEFINE_ONLY
DESCRIPTION "Use mavlink version 1.0?"
DEFAULT OFF)
apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
DESCRIPTION "Serial 0 baudrate?" DESCRIPTION "Serial 0 baudrate?"
DEFAULT "115200" DEFAULT "115200"

View File

@ -29,7 +29,7 @@ Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME}
# built variables # built variables
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") 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 # modify flags from default toolchain flags
set(APM_OPT_FLAGS "-Wformat -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wformat=2") set(APM_OPT_FLAGS "-Wformat -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wformat=2")

View File

@ -16,19 +16,23 @@ apm_option("APM_PROGRAMMING_PORT" TYPE STRING
DESCRIPTION "Programming upload port?" DESCRIPTION "Programming upload port?"
DEFAULT "/dev/ttyACM0") DEFAULT "/dev/ttyACM0")
apm_option("APM_HARDWARE" TYPE STRING apm_option("CONFIG_APM_HARDWARE" TYPE STRING
DESCRIPTION "APM Hardware?" DESCRIPTION "APM Hardware?"
OPTIONS "APM_HARDARE_APM2" "APM2_BETA_HARDWARE" "APM1" OPTIONS "APM_HARDWARE_APM2" "APM_HARDWARE_APM1"
DEFAULT "APM_HARDARE_APM2") 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 apm_option("APM_PROCESSOR" TYPE STRING
DESCRIPTION "ArduPilotMega processor (2560 for APM2 and later APM1)?" DESCRIPTION "ArduPilotMega processor (2560 for APM2 and later APM1)?"
DEFAULT "mega2560" DEFAULT "mega2560"
OPTIONS "mega" "mega2560") OPTIONS "mega" "mega2560")
apm_option("CLI_ENABLED" TYPE BOOL #apm_option("CLI_SLIDER_ENABLED" TYPE BOOL
DESCRIPTION "Enable command line interface switch?" #DESCRIPTION "Enable command line interface switch?"
DEFAULT OFF) #DEFAULT OFF)
apm_option("LOGGING_ENABLED" TYPE BOOL apm_option("LOGGING_ENABLED" TYPE BOOL
DESCRIPTION "Enable logging?" DESCRIPTION "Enable logging?"
@ -56,22 +60,30 @@ apm_option("AIRSPEED_SENSOR" TYPE BOOL
DESCRIPTION "Enable airspeed sensor?" DESCRIPTION "Enable airspeed sensor?"
DEFAULT OFF) 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 apm_option("AIRSPEED_RATIO" TYPE STRING ADVANCED
DESCRIPTION "Airspeed ratio?" DESCRIPTION "Airspeed ratio?"
DEFAULT "1.9936") DEFAULT "1.9936")
apm_option("MAGNETOMETER" TYPE BOOL #apm_option("MAGNETOMETER" TYPE BOOL
DESCRIPTION "Enable airspeed sensor?" #DESCRIPTION "Enable airspeed sensor?"
DEFAULT OFF) #DEFAULT OFF)
apm_option("MAG_ORIENTATION" TYPE STRING ADVANCED #apm_option("MAG_ORIENTATION" TYPE STRING ADVANCED
DESCRIPTION "Magnetometer orientation?" #DESCRIPTION "Magnetometer orientation?"
DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD" #DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
OPTIONS #OPTIONS
"AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD" #"AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
"AP_COMPASS_COMPONENTS_DOWN_PINS_BACK" #"AP_COMPASS_COMPONENTS_DOWN_PINS_BACK"
"AP_COMPASS_COMPONENTS_UP_PINS_FORWARD" #"AP_COMPASS_COMPONENTS_UP_PINS_FORWARD"
"AP_COMPASS_COMPONENTS_UP_PINS_BACK") #"AP_COMPASS_COMPONENTS_UP_PINS_BACK")
apm_option("HIL_MODE" TYPE STRING apm_option("HIL_MODE" TYPE STRING
DESCRIPTION "Hardware-in-the-loop- mode?" DESCRIPTION "Hardware-in-the-loop- mode?"
@ -81,30 +93,14 @@ apm_option("HIL_MODE" TYPE STRING
"HIL_MODE_ATTITUDE" "HIL_MODE_ATTITUDE"
"HIL_MODE_SENSORS") "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 apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED
DESCRIPTION "MAVLink System ID?" DESCRIPTION "MAVLink System ID?"
DEFAULT "1") DEFAULT "1")
apm_option("MAVLINKV10" TYPE BOOL DEFINE_ONLY
DESCRIPTION "Use mavlink version 1.0?"
DEFAULT OFF)
apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
DESCRIPTION "Serial 0 baudrate?" DESCRIPTION "Serial 0 baudrate?"
DEFAULT "115200" DEFAULT "115200"

View File

@ -1,6 +1,6 @@
function(apm_option NAME) function(apm_option NAME)
cmake_parse_arguments(ARG cmake_parse_arguments(ARG
"ADVANCED" "ADVANCED;DEFINE_ONLY"
"TYPE;DESCRIPTION;DEFAULT" "OPTIONS;DEPENDS" ${ARGN}) "TYPE;DESCRIPTION;DEFAULT" "OPTIONS;DEPENDS" ${ARGN})
#message(STATUS "parsing argument: ${NAME}") #message(STATUS "parsing argument: ${NAME}")
@ -39,6 +39,12 @@ function(apm_option NAME)
mark_as_advanced(FORCE "${NAME}") mark_as_advanced(FORCE "${NAME}")
endif() 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() endfunction()
function(apm_option_generate_config) function(apm_option_generate_config)
@ -50,6 +56,14 @@ function(apm_option_generate_config)
#message(STATUS "item: ${ITEM}") #message(STATUS "item: ${ITEM}")
get_property(ITEM_VALUE CACHE ${ITEM} PROPERTY VALUE) get_property(ITEM_VALUE CACHE ${ITEM} PROPERTY VALUE)
get_property(ITEM_HELP CACHE ${ITEM} PROPERTY HELPSTRING) 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() endforeach()
endfunction() endfunction()