From 3eb39ddac2c2580edc2c30b85d2aab419c129f55 Mon Sep 17 00:00:00 2001 From: Max Paperno Date: Wed, 29 Mar 2017 09:46:48 -0400 Subject: [PATCH] [build] Add "all-libsimulators" target to build all simulator flavors at once. (#4710) * [build] Add "all-libsimulators" target to build all simulator flavors at once. * [build] Refine the "all simulators" target setup and deal with GNU 'make' parallelism issue (ninja=faster); rename to "all-simu-libs". --- radio/src/CMakeLists.txt | 1 + radio/src/targets/9x/CMakeLists.txt | 1 + radio/src/targets/gruvin9x/CMakeLists.txt | 1 + radio/src/targets/simu/CMakeLists.txt | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index f2a7f145c..f8b1773e3 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -96,6 +96,7 @@ elseif(PCB STREQUAL 9X2561) set(MCU atmega2561) string(TOLOWER ${PCB} FLAVOUR) set(EEPROM EEPROM_RLC) + set(SDCARD NO) add_definitions(-DEEPROM_VARIANT=${M2561_VARIANT}) set(GUI_DIR 128x64) set(TARGET_DIR 9x) diff --git a/radio/src/targets/9x/CMakeLists.txt b/radio/src/targets/9x/CMakeLists.txt index 1e0a99b70..67131794c 100644 --- a/radio/src/targets/9x/CMakeLists.txt +++ b/radio/src/targets/9x/CMakeLists.txt @@ -6,6 +6,7 @@ set(AVRDUDE_MCU m64) string(TOLOWER ${PCB} FLAVOUR) set(EEPROM_VARIANT_NEEDED ON) set(EEPROM EEPROM_RLC) +set(SDCARD NO) set(GUI_DIR 128x64) set(TARGET_DIR 9x) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} 9x_bitmaps) diff --git a/radio/src/targets/gruvin9x/CMakeLists.txt b/radio/src/targets/gruvin9x/CMakeLists.txt index 311b7685d..158cba68f 100644 --- a/radio/src/targets/gruvin9x/CMakeLists.txt +++ b/radio/src/targets/gruvin9x/CMakeLists.txt @@ -4,6 +4,7 @@ set(AVRDUDE_MCU m2560) string(TOLOWER ${PCB} FLAVOUR) set(EEPROM EEPROM_RLC) add_definitions(-DEEPROM_VARIANT=0) +set(SDCARD NO) set(GUI_DIR 128x64) set(TARGET_DIR gruvin9x) set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} 9x_bitmaps) diff --git a/radio/src/targets/simu/CMakeLists.txt b/radio/src/targets/simu/CMakeLists.txt index c72cdb85e..5c5ea5234 100644 --- a/radio/src/targets/simu/CMakeLists.txt +++ b/radio/src/targets/simu/CMakeLists.txt @@ -32,6 +32,28 @@ if(Qt5Widgets_FOUND) target_link_libraries(${SIMULATOR_TARGET} ${SDL_LIBRARY}) qt5_use_modules(${SIMULATOR_TARGET} Core) add_custom_target(libsimulator DEPENDS ${SIMULATOR_TARGET}) + + # Prepare the "all-simu-libs" target to build simulator libraries for *every* supported PCB type (PCB_TYPES list) + # (a fast build machine or corresponding amount of patience is recommended for this target). + if(${CMAKE_GENERATOR} MATCHES ".*Unix Makefiles$") + # Ensure parallel builds with GCC make (try with MAKEFLAGS but this seems to be getting clobbered somewhere). + # otherwise 'make' may complain: "warning: jobserver unavailable: using -j1..." and build single-threaded. (Ninja always rocks this.) + set(mkflags "$ENV{MAKEFLAGS}") + if (mkflags STREQUAL "") + set(mkflags "-j") + endif() + endif() + set(all_libs_cmd ${CMAKE_COMMAND} -E echo "Building all simulator libraries") + foreach(pcb ${PCB_TYPES}) + set(pcbrev "") + if(pcb STREQUAL SKY9X) + set(pcbrev "-DPCBREV=REVC") + elseif(pcb STREQUAL X12S) + set(pcbrev "-DPCBREV=13") + endif() + set(all_libs_cmd ${all_libs_cmd} && ${CMAKE_COMMAND} -DPCB=${pcb} ${pcbrev} -Wno-dev ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} && ${CMAKE_COMMAND} --build . --target libsimulator -- ${mkflags}) + endforeach() + add_custom_target(all-simu-libs COMMAND ${all_libs_cmd} USES_TERMINAL WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) endif() if(WIN32)