Switched to project specific cmake lists.

This is better since each project has very different options.
This commit is contained in:
James Goppert 2012-04-17 23:07:20 -04:00
parent ee84a6d301
commit 26e3d6ae45
7 changed files with 172 additions and 136 deletions

18
ArduCopter/CMakeLists.txt Normal file
View File

@ -0,0 +1,18 @@
set(CMAKE_TOOLCHAIN_FILE ../cmake/ArduinoToolchain.cmake) # Arduino Toolchain
cmake_minimum_required(VERSION 2.8)
project(ArduCopter C CXX)
set(PROJECT_VERSION_MAJOR "2")
set(PROJECT_VERSION_MINOR "3")
set(PROJECT_VERSION_PATCH "3")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
set(PROJECT_DESCRIPTION "ArduPilotMega based Quadrotor Autopilot.")
# macro path
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
# common project setup
include(APMProject)

121
ArduCopter/options.cmake Normal file
View File

@ -0,0 +1,121 @@
# options
apm_option("APM_PROGRAMMING_PORT" TYPE STRING
DESCRIPTION "Programming upload port?"
DEFAULT "/dev/ttyUSB0")
apm_option("APM_BOARD" TYPE STRING
DESCRIPTION "ArduPilotMega board?"
DEFAULT "mega2560"
OPTIONS "mega" "mega2560")
apm_option("APM_FRAME" TYPE STRING
DESCRIPTION "Vehicle type?"
DEFAULT "PLANE_FRAME"
OPTIONS
"PLANE FRAME"
"HELI_FRAME"
"HEXA_FRAME"
"OCTA_FRAME"
"Y6_FRAME"
)
apm_option("GPS_PROTOCOL" TYPE STRING
DESCRIPTION "GPS protocol?"
DEFAULT "GPS_PROTOCOL_AUTO"
OPTIONS
"GPS_PROTOOCL_NONE"
"GPS_PROTOCOL_AUTO"
"GPS_PROTOCOL_NONE"
"GPS_PROTOCOL_IMU"
"GPS_PROTOCOL_MTK"
"GPS_PROTOCOL_MTK16"
"GPS_PROTOCOL_UBLOX"
"GPS_PROTOCOL_SIRF"
"GPS_PROTOCOL_NMEA")
apm_option("AIRSPEED_SENSOR" TYPE BOOL
DESCRIPTION "Enable airspeed sensor?"
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("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?"
DEFAULT "HIL_MODE_DISABLED"
OPTIONS
"HIL_MODE_DISABLED"
"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("GPS_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?"
DESCRIPTION "3"
OPTIONS "0" "1" "2" "3")
apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED
DESCRIPTION "MAVLink System ID?"
DESCRIPTION "1")
apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
DESCRIPTION "Serial 0 baudrate?"
DEFAULT "115200"
OPTIONS "57600" "115200")
apm_option("SERIAL3_BAUD" TYPE STRING ADVANCED
DESCRIPTION "Serial 3 baudrate?"
DEFAULT "57600"
OPTIONS "57600" "115200")
apm_option("BATTERY_EVENT" TYPE BOOL ADVANCED
DESCRIPTION "Enable low voltage/ high discharge warnings?"
DEFAULT OFF)
apm_option("LOW_VOLTAGE" TYPE STRING ADVANCED
DESCRIPTION "Voltage to consider low (volts)?"
DEFAULT "9.6")
apm_option("VOLT_DIV_RATIO" TYPE STRING ADVANCED
DESCRIPTION "Voltage division ratio?"
DEFAULT "3.56")
apm_option("CUR_AMPS_PER_VOLT" TYPE STRING ADVANCED
DESCRIPTION "Current amps/volt?"
DEFAULT "27.32")
apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED
DESCRIPTION "Current amps offset?"
DEFAULT "0.0")
apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED
DESCRIPTION "Current amps offset?"
DEFAULT "0.0")

View File

@ -1,73 +1,18 @@
set(CMAKE_TOOLCHAIN_FILE cmake/ArduinoToolchain.cmake) # Arduino Toolchain set(CMAKE_TOOLCHAIN_FILE ../cmake/ArduinoToolchain.cmake) # Arduino Toolchain
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
project(ArduPilotMega C CXX) project(ArduPlane C CXX)
# set these for release
set(PROJECT_VERSION_MAJOR "2") set(PROJECT_VERSION_MAJOR "2")
set(PROJECT_VERSION_MINOR "3") set(PROJECT_VERSION_MINOR "3")
set(PROJECT_VERSION_PATCH "3") set(PROJECT_VERSION_PATCH "3")
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(PROJECT_DESCRIPTION "ArduPilotMega based Airplane Autopilot.")
# macro path # macro path
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
# disallow in-source build # common project setup
include(MacroEnsureOutOfSourceBuild) include(APMProject)
macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build.
Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there.")
# macros
include(CMakeParseArguments)
include(APMOption)
# options
apm_option("APM_PROGRAMMING_PORT" TYPE STRING
DESCRIPTION "Programming upload port?"
DEFAULT "/dev/ttyUSB0")
apm_option("APM_BOARD" TYPE STRING
DESCRIPTION "ArduPilotMega board?"
DEFAULT "mega2560"
OPTIONS "mega" "mega2560")
apm_option("APM_PROJECT" TYPE STRING
DESCRIPTION "ArduPilotMega project to build?"
DEFAULT "ArduPlane"
OPTIONS "ArduPlane" "ArduCopter")
include(options.cmake)
# modify flags from default toolchain flags
set(APM_OPT_FLAGS "-Wformat -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wformat=2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${APM_OPT_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${APM_OPT_FLAGS} -Wno-reorder")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${APM_OPT_FLAGS} -Wl,--relax")
# build apm project
set(${APM_PROJECT}_SKETCH ${CMAKE_SOURCE_DIR}/${APM_PROJECT})
set(${APM_PROJECT}_BOARD ${APM_BOARD})
set(${APM_PROJECT}_PORT ${APM_PROGRAMMING_PORT})
generate_arduino_firmware(${APM_PROJECT})
# packaging settings
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A universal autopilot system for the ArduPilotMega board.")
set(CPACK_PACKAGE_VENDOR "DIYDRONES")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "james.goppert@gmail.com")
set(CPACK_PACKAGE_CONTACT "james.goppert@gmail.com")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${APPLICATION_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${APPLICATION_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${APPLICATION_VERSION_PATCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
set(CPACK_SET_DESTDIR TRUE)
set(CPACK_SOURCE_IGNORE_FILES ${CPACK_SOURCE_IGNORE_FILES}
/.git/;/build/;~$;.*\\\\.bin$;.*\\\\.swp$)
set(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
set(CPACK_SOURCE_GENERATOR "ZIP")
set(CPACK_GENERATOR "ZIP")
set(CPACK_PACKAGE_NAME "${APM_PROJECT}_${BOARD}_${HIL_MODE}")
include(CPack)

View File

@ -4,19 +4,17 @@
#option(CLI_SLIDER "Command-line-interface slider support?" OFF) #option(CLI_SLIDER "Command-line-interface slider support?" OFF)
#option(APM2 "Build for APM 2.0" OFF) #option(APM2 "Build for APM 2.0" OFF)
# set booleans for project # options
foreach(PROJECT_NAME "ArduPlane;ArduCopter") apm_option("APM_PROGRAMMING_PORT" TYPE STRING
if ("${APM_PROJECT}" STREQUAL "${PROJECT_NAME}") DESCRIPTION "Programming upload port?"
set(IS_${PROJECT_NAME} true) DEFAULT "/dev/ttyUSB0")
else()
set(IS_${PROJECT_NAME} false) apm_option("APM_BOARD" TYPE STRING
endif() DESCRIPTION "ArduPilotMega board?"
endforeach() DEFAULT "mega2560"
OPTIONS "mega" "mega2560")
if (IS_ARDUCOPTER)
endif()
apm_option("APM_FRAME" TYPE STRING apm_option("APM_FRAME" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "Vehicle type?" DESCRIPTION "Vehicle type?"
DEFAULT "PLANE_FRAME" DEFAULT "PLANE_FRAME"
OPTIONS OPTIONS
@ -28,7 +26,6 @@ apm_option("APM_FRAME" TYPE STRING
) )
apm_option("GPS_PROTOCOL" TYPE STRING apm_option("GPS_PROTOCOL" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "GPS protocol?" DESCRIPTION "GPS protocol?"
DEFAULT "GPS_PROTOCOL_AUTO" DEFAULT "GPS_PROTOCOL_AUTO"
OPTIONS OPTIONS
@ -43,22 +40,18 @@ apm_option("GPS_PROTOCOL" TYPE STRING
"GPS_PROTOCOL_NMEA") "GPS_PROTOCOL_NMEA")
apm_option("AIRSPEED_SENSOR" TYPE BOOL apm_option("AIRSPEED_SENSOR" TYPE BOOL
DEPENDS IS_ARDUPLANE
DESCRIPTION "Enable airspeed sensor?" DESCRIPTION "Enable airspeed sensor?"
DEFAULT OFF) DEFAULT OFF)
apm_option("AIRSPEED_RATIO" TYPE STRING ADVANCED apm_option("AIRSPEED_RATIO" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Airspeed ratio?" DESCRIPTION "Airspeed ratio?"
DEFAULT "1.9936") DEFAULT "1.9936")
apm_option("MAGNETOMETER" TYPE BOOL apm_option("MAGNETOMETER" TYPE BOOL
DEPENDS IS_ARDUPLANE
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
DEPENDS IS_ARDUPLANE
DESCRIPTION "Magnetometer orientation?" DESCRIPTION "Magnetometer orientation?"
DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD" DEFAULT "AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD"
OPTIONS OPTIONS
@ -68,7 +61,6 @@ apm_option("MAG_ORIENTATION" TYPE STRING ADVANCED
"AP_COMPASS_COMPONENTS_UP_PINS_BACK") "AP_COMPASS_COMPONENTS_UP_PINS_BACK")
apm_option("HIL_MODE" TYPE STRING apm_option("HIL_MODE" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "Hardware-in-the-loop- mode?" DESCRIPTION "Hardware-in-the-loop- mode?"
DEFAULT "HIL_MODE_DISABLED" DEFAULT "HIL_MODE_DISABLED"
OPTIONS OPTIONS
@ -77,73 +69,60 @@ apm_option("HIL_MODE" TYPE STRING
"HIL_MODE_SENSORS") "HIL_MODE_SENSORS")
apm_option("HIL_PORT" TYPE STRING apm_option("HIL_PORT" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "Port for Hardware-in-the-loop communication" DESCRIPTION "Port for Hardware-in-the-loop communication"
DEFAULT "0" DEFAULT "0"
OPTIONS "0" "1" "2" "3") OPTIONS "0" "1" "2" "3")
apm_option("HIL_PROTOCOL" TYPE STRING apm_option("HIL_PROTOCOL" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "Hardware-in-the-loop protocol?" DESCRIPTION "Hardware-in-the-loop protocol?"
DEFAULT "HIL_PROTOCOL_MAVLINK" DEFAULT "HIL_PROTOCOL_MAVLINK"
OPTIONS "HIL_PROTOCOL_MAVLINK" "HIL_PROTOCOL_XPLANE") OPTIONS "HIL_PROTOCOL_MAVLINK" "HIL_PROTOCOL_XPLANE")
apm_option("GPS_PROTOCOL" TYPE STRING apm_option("GPS_PROTOCOL" TYPE STRING
DEPENDS IS_ARDUPLANE
DESCRIPTION "Ground station protocol?" DESCRIPTION "Ground station protocol?"
DEFAULT "GCS_PROTOCOL_MAVLINK" DEFAULT "GCS_PROTOCOL_MAVLINK"
OPTIONS "GCS_PROTOCOL_NONE" "GCS_PROTOCOL_MAVLINK") OPTIONS "GCS_PROTOCOL_NONE" "GCS_PROTOCOL_MAVLINK")
apm_option("GCS_PORT" TYPE STRING ADVANCED apm_option("GCS_PORT" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Ground station port?" DESCRIPTION "Ground station port?"
DESCRIPTION "3" DESCRIPTION "3"
OPTIONS "0" "1" "2" "3") OPTIONS "0" "1" "2" "3")
apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED apm_option("MAV_SYSTEM_ID" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "MAVLink System ID?" DESCRIPTION "MAVLink System ID?"
DESCRIPTION "1") DESCRIPTION "1")
apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED apm_option("SERIAL0_BAUD" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Serial 0 baudrate?" DESCRIPTION "Serial 0 baudrate?"
DEFAULT "115200" DEFAULT "115200"
OPTIONS "57600" "115200") OPTIONS "57600" "115200")
apm_option("SERIAL3_BAUD" TYPE STRING ADVANCED apm_option("SERIAL3_BAUD" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Serial 3 baudrate?" DESCRIPTION "Serial 3 baudrate?"
DEFAULT "57600" DEFAULT "57600"
OPTIONS "57600" "115200") OPTIONS "57600" "115200")
apm_option("BATTERY_EVENT" TYPE BOOL ADVANCED apm_option("BATTERY_EVENT" TYPE BOOL ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Enable low voltage/ high discharge warnings?" DESCRIPTION "Enable low voltage/ high discharge warnings?"
DEFAULT OFF) DEFAULT OFF)
apm_option("LOW_VOLTAGE" TYPE STRING ADVANCED apm_option("LOW_VOLTAGE" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Voltage to consider low (volts)?" DESCRIPTION "Voltage to consider low (volts)?"
DEFAULT "9.6") DEFAULT "9.6")
apm_option("VOLT_DIV_RATIO" TYPE STRING ADVANCED apm_option("VOLT_DIV_RATIO" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Voltage division ratio?" DESCRIPTION "Voltage division ratio?"
DEFAULT "3.56") DEFAULT "3.56")
apm_option("CUR_AMPS_PER_VOLT" TYPE STRING ADVANCED apm_option("CUR_AMPS_PER_VOLT" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Current amps/volt?" DESCRIPTION "Current amps/volt?"
DEFAULT "27.32") DEFAULT "27.32")
apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Current amps offset?" DESCRIPTION "Current amps offset?"
DEFAULT "0.0") DEFAULT "0.0")
apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED apm_option("CUR_AMPS_OFFSET" TYPE STRING ADVANCED
DEPENDS IS_ARDUPLANE
DESCRIPTION "Current amps offset?" DESCRIPTION "Current amps offset?"
DEFAULT "0.0") DEFAULT "0.0")

View File

@ -13,17 +13,17 @@ Building using make
Building using cmake Building using cmake
----------------------------------------------- -----------------------------------------------
- cd ArduPlane (ArduCopter etc ..)
- mkdir build - mkdir build
- cd build - cd build
- cmake .. -DBOARD=mega -DPORT=/dev/ttyUSB0 - cmake .. -DAPM_BOARD=mega -DAPM_PORT=/dev/ttyUSB0
You can select from mega/mega2560. You can select from mega/mega2560.
If you have arduino installed in a non-standard location you by specify it by using: If you have arduino installed in a non-standard location you by specify it by using:
-DARDUINO_SDK_PATH=/path/to/arduino .. -DARDUINO_SDK_PATH=/path/to/arduino ..
- make (will build every sketch) - make (will build the sketch)
- make ArduPlane (will build just ArduPlane etc.) - make ArduPlane-upload (will upload the sketch ArduPlane etc.)
- make ArduPloat-upload (will upload the sketch)
If you have a sync error during upload reset the board/power cycle the board If you have a sync error during upload reset the board or power cycle the board
before the upload starts. before the upload starts.
@ -42,6 +42,8 @@ Building using eclipse
cd /home/name/apm-build cd /home/name/apm-build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../apm-src -D BOARD=mega -D PORT=/dev/ttyUSB0 cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../apm-src -D BOARD=mega -D PORT=/dev/ttyUSB0
Here apm-src can be any sketch, ArduPlane/ ArduCopter etc.
Note: Unix can be substituted for MinGW/ MSYS/ NMake (for windows) Note: Unix can be substituted for MinGW/ MSYS/ NMake (for windows)
(see http://www.vtk.org/Wiki/Eclipse_CDT4_Generator) (see http://www.vtk.org/Wiki/Eclipse_CDT4_Generator)

View File

@ -454,7 +454,7 @@ function(find_arduino_libraries VAR_NAME SRCS)
get_property(LIBRARY_SEARCH_PATH get_property(LIBRARY_SEARCH_PATH
DIRECTORY # Property Scope DIRECTORY # Property Scope
PROPERTY LINK_DIRECTORIES) PROPERTY LINK_DIRECTORIES)
foreach(LIB_SEARCH_PATH ${LIBRARY_SEARCH_PATH} ${ARDUINO_LIBRARIES_PATH} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libraries) foreach(LIB_SEARCH_PATH ${LIBRARY_SEARCH_PATH} ${ARDUINO_LIBRARIES_PATH} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libraries ${ARDUINO_EXTRA_LIBRARIES_PATH})
if(EXISTS ${LIB_SEARCH_PATH}/${INCLUDE_NAME}/${CMAKE_MATCH_1}) if(EXISTS ${LIB_SEARCH_PATH}/${INCLUDE_NAME}/${CMAKE_MATCH_1})
list(APPEND ARDUINO_LIBS ${LIB_SEARCH_PATH}/${INCLUDE_NAME}) list(APPEND ARDUINO_LIBS ${LIB_SEARCH_PATH}/${INCLUDE_NAME})
break() break()

View File

@ -1,19 +1,3 @@
set(CMAKE_TOOLCHAIN_FILE cmake/ArduinoToolchain.cmake) # Arduino Toolchain
cmake_minimum_required(VERSION 2.8)
project(ArduPilotMega C CXX)
# set these for release
set(PROJECT_VERSION_MAJOR "2")
set(PROJECT_VERSION_MINOR "3")
set(PROJECT_VERSION_PATCH "3")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# macro path
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
# disallow in-source build # disallow in-source build
include(MacroEnsureOutOfSourceBuild) include(MacroEnsureOutOfSourceBuild)
macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build. macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build.
@ -24,21 +8,7 @@ include(CMakeParseArguments)
include(APMOption) include(APMOption)
# options # options
apm_option("APM_PROGRAMMING_PORT" TYPE STRING include(options.cmake)
DESCRIPTION "Programming upload port?"
DEFAULT "/dev/ttyUSB0")
apm_option("APM_BOARD" TYPE STRING
DESCRIPTION "ArduPilotMega board?"
DEFAULT "mega2560"
OPTIONS "mega" "mega2560")
apm_option("APM_PROJECT" TYPE STRING
DESCRIPTION "ArduPilotMega project to build?"
DEFAULT "ArduPlane"
OPTIONS "ArduPlane" "ArduCopter")
include(cmake/options-ArduPlane.cmake)
# 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")
@ -47,19 +17,20 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${APM_OPT_FLAGS} -Wno-reorder")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${APM_OPT_FLAGS} -Wl,--relax") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${APM_OPT_FLAGS} -Wl,--relax")
# build apm project # build apm project
set(${APM_PROJECT}_SKETCH ${CMAKE_SOURCE_DIR}/${APM_PROJECT}) set(ARDUINO_EXTRA_LIBRARIES_PATH ${CMAKE_SOURCE_DIR}/../libraries)
set(${APM_PROJECT}_BOARD ${APM_BOARD}) set(${PROJECT_NAME}_SKETCH ${CMAKE_SOURCE_DIR}/../${PROJECT_NAME})
set(${APM_PROJECT}_PORT ${APM_PROGRAMMING_PORT}) set(${PROJECT_NAME}_BOARD ${APM_BOARD})
generate_arduino_firmware(${APM_PROJECT}) set(${PROJECT_NAME}_PORT ${APM_PROGRAMMING_PORT})
generate_arduino_firmware(${PROJECT_NAME})
# packaging settings # packaging settings
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A universal autopilot system for the ArduPilotMega board.") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
set(CPACK_PACKAGE_VENDOR "DIYDRONES") set(CPACK_PACKAGE_VENDOR "DIYDRONES")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "james.goppert@gmail.com") set(CPACK_DEBIAN_PACKAGE_MAINTAINER "james.goppert@gmail.com")
set(CPACK_PACKAGE_CONTACT "james.goppert@gmail.com") set(CPACK_PACKAGE_CONTACT "james.goppert@gmail.com")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.txt") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/../README.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.txt") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/../COPYING.txt")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.txt") set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/../README.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${APPLICATION_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MAJOR "${APPLICATION_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${APPLICATION_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_MINOR "${APPLICATION_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${APPLICATION_VERSION_PATCH}") set(CPACK_PACKAGE_VERSION_PATCH "${APPLICATION_VERSION_PATCH}")