diff --git a/.github/workflows/build-firmware-windows.yaml b/.github/workflows/build-firmware-windows.yaml index 7b6bf539bd..79723d80bd 100644 --- a/.github/workflows/build-firmware-windows.yaml +++ b/.github/workflows/build-firmware-windows.yaml @@ -41,9 +41,9 @@ jobs: - name: Test Java Compiler run: javac -version - - name: Generate Configs, Enums & Live Documentation + - name: Generate Enums & Live Documentation working-directory: ./firmware/ - run: bash gen_default_everything.sh + run: bash gen_live_documentation.sh - name: Print arm GCC version working-directory: . diff --git a/.github/workflows/build-firmware.yaml b/.github/workflows/build-firmware.yaml index 0d0ebcfe43..4128c4e84e 100644 --- a/.github/workflows/build-firmware.yaml +++ b/.github/workflows/build-firmware.yaml @@ -513,30 +513,6 @@ jobs: working-directory: ./firmware/ run: ./gen_live_documentation.sh - - name: Generate Configs for build-target - if: ${{ env.skip != 'true' }} - working-directory: ./firmware/ - # todo: we have code duplication with gen_config.sh here :( - run: | - if [ "${{ matrix.build-target }}" = "kinetis" ]; then - config/boards/kinetis/config/gen_kinetis_config.sh - [ $? -eq 0 ] || { echo "ERROR generating board kinetis kin"; exit 1; } - elif [ "${{ matrix.build-target }}" = "cypress" ]; then - config/boards/cypress/config/gen_cypress_config.sh - [ $? -eq 0 ] || { echo "ERROR generating board cypress cypress"; exit 1; } - elif [ "${{ matrix.build-target }}" = "subaru_eg33_f7" ]; then - bash config/boards/subaru_eg33/config/gen_subaru_config.sh - [ $? -eq 0 ] || { echo "ERROR generating board subaru_eg33 subaru_eg33_f7"; exit 1; } - elif [ "${{ matrix.build-target }}" = "subaru_eg33_f7_no_bl" ]; then - bash config/boards/subaru_eg33/config/gen_subaru_config.sh - [ $? -eq 0 ] || { echo "ERROR generating board subaru_eg33 subaru_eg33_f7_no_bl"; exit 1; } - elif [ "${{ matrix.short-board-name }}" = "" ]; then - echo "ERROR: ${{ matrix.build-target }} is missing short-board-name attribute" - exit -1 - else - bash gen_config_board.sh ${{matrix.folder}} ${{matrix.short-board-name}} - fi - - name: Set Build Env Variables if: ${{ env.skip != 'true' }} working-directory: ./firmware/ diff --git a/.github/workflows/build-unit-tests-windows.yaml b/.github/workflows/build-unit-tests-windows.yaml index f3ffbbbabf..08d899dc91 100644 --- a/.github/workflows/build-unit-tests-windows.yaml +++ b/.github/workflows/build-unit-tests-windows.yaml @@ -33,9 +33,9 @@ jobs: - name: Test Java Compiler run: javac -version - - name: Generate Configs, Enums & Live Documentation + - name: Generate Enums & Live Documentation working-directory: ./firmware/ - run: bash gen_default_everything.sh + run: bash gen_live_documentation.sh - name: Print GCC version working-directory: . diff --git a/.github/workflows/build-unit-tests.yaml b/.github/workflows/build-unit-tests.yaml index 0196835633..3942b3cce9 100644 --- a/.github/workflows/build-unit-tests.yaml +++ b/.github/workflows/build-unit-tests.yaml @@ -35,7 +35,7 @@ jobs: - name: Install required software (macos) if: ${{ matrix.os == 'macos-latest' }} run: | - brew install mtools zip dosfstools + brew install mtools zip dosfstools flock - name: Print bash version working-directory: . diff --git a/.github/workflows/custom-board-build.yaml b/.github/workflows/custom-board-build.yaml index cfc1312cd3..4ada857f54 100644 --- a/.github/workflows/custom-board-build.yaml +++ b/.github/workflows/custom-board-build.yaml @@ -116,10 +116,6 @@ jobs: sudo bash ${{inputs.rusefi_dir}}/misc/actions/add-ubuntu-latest-apt-mirrors.sh sudo apt-get install sshpass sshpass mtools - - name: Gen Config - working-directory: ${{inputs.rusefi_dir}}/firmware - run: bash gen_config_board.sh - - name: Repo Status run: | git status @@ -133,6 +129,23 @@ jobs: echo Not a repository fi + - name: Configs build_server upload SSH variables + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + run: | + if [ "${{github.event_name}}" = "push" ] && [ "${{github.ref}}" = "refs/heads/master" ]; then + echo "Setting credentials..." + echo "RUSEFI_SSH_SERVER=${{secrets.RUSEFI_SSH_SERVER}}" >> $GITHUB_ENV + echo "RUSEFI_SSH_USER=${{secrets.RUSEFI_SSH_USER}}" >> $GITHUB_ENV + echo "RUSEFI_SSH_PASS=${{secrets.RUSEFI_SSH_PASS}}" >> $GITHUB_ENV + else + echo "NOT setting credentials: ${{github.event_name}} ${{github.ref}}" + fi + + - name: Build Firmware + working-directory: ${{inputs.rusefi_dir}}/firmware + run: bash bin/compile.sh -b ${{ env.BOARD_META_PATH }} deliver/rusefi.bin + - name: Push Config run: | git config --local user.email "action@github.com" @@ -170,23 +183,6 @@ jobs: working-directory: generated/tunerstudio/generated run: ../../../${{inputs.rusefi_dir}}/firmware/tunerstudio/upload_ini.sh ${{ secrets.RUSEFI_ONLINE_FTP_USER }} ${{ secrets.RUSEFI_ONLINE_FTP_PASS }} ${{ secrets.RUSEFI_FTP_SERVER }} - - name: Configs build_server upload SSH variables - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - run: | - if [ "${{github.event_name}}" = "push" ] && [ "${{github.ref}}" = "refs/heads/master" ]; then - echo "Setting credentials..." - echo "RUSEFI_SSH_SERVER=${{secrets.RUSEFI_SSH_SERVER}}" >> $GITHUB_ENV - echo "RUSEFI_SSH_USER=${{secrets.RUSEFI_SSH_USER}}" >> $GITHUB_ENV - echo "RUSEFI_SSH_PASS=${{secrets.RUSEFI_SSH_PASS}}" >> $GITHUB_ENV - else - echo "NOT setting credentials: ${{github.event_name}} ${{github.ref}}" - fi - - - name: Build Firmware - working-directory: ${{inputs.rusefi_dir}}/firmware - run: bash bin/compile.sh -b ${{ env.BOARD_META_PATH }} deliver/rusefi.bin - - name: Upload github action bin artifact uses: actions/upload-artifact@v4 with: diff --git a/firmware/Makefile b/firmware/Makefile index 2c562e2981..58c9794d9b 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -382,6 +382,8 @@ ULIBS = -lm --specs=nano.specs -Wl,--sort-section=alignment include $(RULESFILE) +include rusefi_config.mk + # Enable precompiled header include rusefi_pch.mk diff --git a/firmware/bundle.mk b/firmware/bundle.mk index 0eacfbfeb6..7933f59213 100644 --- a/firmware/bundle.mk +++ b/firmware/bundle.mk @@ -22,8 +22,6 @@ else FOLDER = rusefi.snapshot.$(BUNDLE_NAME) endif -INI_FILE = $(META_OUTPUT_ROOT_FOLDER)tunerstudio/generated/rusefi_$(SHORT_BOARD_NAME).ini - DELIVER = deliver ARTIFACTS = ../artifacts diff --git a/firmware/config/boards/cypress/meta-info.env b/firmware/config/boards/cypress/meta-info.env index e669c85486..7527a7a7fa 100644 --- a/firmware/config/boards/cypress/meta-info.env +++ b/firmware/config/boards/cypress/meta-info.env @@ -1,2 +1,3 @@ SHORT_BOARD_NAME=cypress PROJECT_CPU=custom_platform +CUSTOM_GEN_CONFIG=config/gen_cypress_config.sh diff --git a/firmware/config/boards/kinetis/meta-info.env b/firmware/config/boards/kinetis/meta-info.env index aa9b771eef..fbc5e46914 100644 --- a/firmware/config/boards/kinetis/meta-info.env +++ b/firmware/config/boards/kinetis/meta-info.env @@ -1,2 +1,3 @@ SHORT_BOARD_NAME=kin PROJECT_CPU=custom_platform +CUSTOM_GEN_CONFIG=config/gen_kinetis_config.sh diff --git a/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7.env b/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7.env index a146d54cc2..e2687a1199 100644 --- a/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7.env +++ b/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7.env @@ -1,3 +1,4 @@ SHORT_BOARD_NAME=subaru_eg33_f7 PROJECT_CPU=ARCH_STM32F7 USE_OPENBLT=yes +CUSTOM_GEN_CONFIG=config/gen_subaru_config.sh diff --git a/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7_no_bl.env b/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7_no_bl.env index dec8d042c8..2e4bb59ff6 100644 --- a/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7_no_bl.env +++ b/firmware/config/boards/subaru_eg33/meta-info-subaru_eg33_f7_no_bl.env @@ -1,2 +1,3 @@ SHORT_BOARD_NAME=subaru_eg33_f7 PROJECT_CPU=ARCH_STM32F7 +CUSTOM_GEN_CONFIG=config/gen_subaru_config.sh diff --git a/firmware/gen_config_board.sh b/firmware/gen_config_board.sh index e18be80285..7d71432d86 100755 --- a/firmware/gen_config_board.sh +++ b/firmware/gen_config_board.sh @@ -13,7 +13,7 @@ set -e cd ../java_tools -./gradlew :config_definition:shadowJar +flock /tmp/java.lock ./gradlew :config_definition:shadowJar cd ../firmware echo "This script reads rusefi_config.txt and produces firmware persistent configuration headers" diff --git a/firmware/rusefi_config.mk b/firmware/rusefi_config.mk new file mode 100644 index 0000000000..e8bfe0902f --- /dev/null +++ b/firmware/rusefi_config.mk @@ -0,0 +1,25 @@ +INI_FILE = $(META_OUTPUT_ROOT_FOLDER)tunerstudio/generated/rusefi_$(SHORT_BOARD_NAME).ini + +CONFIG_FILES = \ + $(PROJECT_DIR)/$(INI_FILE) \ + $(PROJECT_DIR)/controllers/generated/$(PROJECT)_generated_$(SHORT_BOARD_NAME).h \ + $(PROJECT_DIR)/controllers/generated/signature_$(SHORT_BOARD_NAME).h \ + $(PROJECT_DIR)/hw_layer/mass_storage/ramdisk_image.h \ + $(PROJECT_DIR)/hw_layer/mass_storage/ramdisk_image_compressed.h \ + $(PROJECT_DIR)/../java_console/models/src/main/java/com/rusefi/config/generated/Fields.java \ + $(PROJECT_DIR)/$(BOARD_DIR)/connectors/generated_outputs.h \ + $(PROJECT_DIR)/$(BOARD_DIR)/connectors/generated_ts_name_by_pin.cpp + +.FORCE: + +$(ACOBJS): $(CONFIG_FILES) + +$(CONFIG_FILES): .config-sentinel ; + +.config-sentinel: .FORCE +ifneq (,$(CUSTOM_GEN_CONFIG)) + bash $(PROJECT_DIR)/$(BOARD_DIR)/$(CUSTOM_GEN_CONFIG) +else + bash $(PROJECT_DIR)/gen_config_board.sh $(BOARD_DIR) $(SHORT_BOARD_NAME) +endif + @touch $@ diff --git a/firmware/rusefi_pch.mk b/firmware/rusefi_pch.mk index 588ca66552..bd6515e42e 100644 --- a/firmware/rusefi_pch.mk +++ b/firmware/rusefi_pch.mk @@ -1,12 +1,10 @@ - - # Add the PCH dir to source path SRCPATHS += $(PCH_DIR) PCHOBJ = $(addprefix $(PCH_DIR)/, $(notdir $(PCHSRC:.h=.h.gch)))/$(PCHSUB) # Compile precompiled header file(s) as a cpp file, but output to .h.gch file -$(PCHOBJ) : $(PCH_DIR)/%.h.gch/$(PCHSUB) : %.h Makefile +$(PCHOBJ) : $(PCH_DIR)/%.h.gch/$(PCHSUB) : %.h Makefile $(CONFIG_FILES) @mkdir -p $<.gch ifeq ($(USE_VERBOSE_COMPILE),yes) @echo