# # Marlin Firmware # PlatformIO Configuration File # ################################# # # # Native / Simulation # # # ################################# # # No supported Arduino libraries, base Marlin only # [env:linux_native] platform = native framework = build_flags = -D__PLAT_LINUX__ -std=gnu++17 -ggdb -g -lrt -lpthread -D__MARLIN_FIRMWARE__ -Wno-expansion-to-defined src_build_flags = -Wall -IMarlin/src/HAL/LINUX/include build_unflags = -Wall lib_ldf_mode = off lib_deps = src_filter = ${common.default_src_filter} + # # Native Simulation # Builds with a small subset of available features # Required system libraries: SDL2, SDL2-net, OpenGL, GLM # # Tested with Linux (Mint 20) : gcc [9.3.0, 10.2.0]: libsdl2-dev[2.0.10], libsdl2-net-dev[2.0.1], libglm-dev[0.9.9.7, 0.9.9.8] # # Debugging with gdb in vscode is as easy as adding the launch task as usual, but platformio # will randomly remove your task when it recreates its tasks from a template. Add your gdb # launch task to '~/.platformio/penv/lib/python{PYTHON_VERSION}/site-packages/platformio/ide/tpls/vscode/.vscode' # to avoid this until platformio updates. # [simulator_common] platform = native framework = build_flags = ${common.build_flags} -std=gnu++17 -D__PLAT_NATIVE_SIM__ -DU8G_HAL_LINKS -I/usr/include/SDL2 -IMarlin -IMarlin/src/HAL/NATIVE_SIM/include -IMarlin/src/HAL/NATIVE_SIM/u8g src_build_flags = -Wall -Wno-expansion-to-defined -Wcast-align release_flags = -g0 -O3 -flto debug_build_flags = -fstack-protector-strong -g -g3 -ggdb lib_compat_mode = off src_filter = ${common.default_src_filter} + lib_deps = ${common.lib_deps} MarlinSimUI=https://github.com/p3p/MarlinSimUI.git Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/marlin_sim_native.zip LiquidCrystal=https://github.com/p3p/LiquidCrystal/archive/master.zip extra_scripts = ${common.extra_scripts} pre:buildroot/share/PlatformIO/scripts/simulator.py [simulator_linux] extends = simulator_common build_flags = ${simulator_common.build_flags} -ldl -lpthread -lSDL2 -lSDL2_net -lGL [env:simulator_linux_debug] platform = ${simulator_linux.platform} extends = simulator_linux build_type = debug [env:simulator_linux_release] platform = ${simulator_linux.platform} extends = simulator_linux build_type = release build_flags = ${simulator_linux.build_flags} ${simulator_linux.release_flags} # # Simulator for macOS (MacPorts) # # sudo port install gcc10 gdb glm libsdl2 freetype # sudo port install ld64 @3_3 +ld64_xcode # sudo port uninstall ld64 ld64-latest # cd /opt/local/bin # sudo rm -f gcc g++ cc # sudo ln gcc-mp-10 gcc ; sudo ln g++-mp-10 g++ ; sudo ln g++ cc # cd - # # Use 'sudo port install mesa' to get a if no Xcode is installed. # If Xcode is installed be sure to run `xcode-select --install` first. # # For VSCode debugging paste the block below near the top of launch.json. # NOTE: The PlatformIO VSCode extension will remove it when regenerating launch.json. # # { "name": "Debug Sim", # "type": "cppdbg", # "request": "launch", # "program": "${workspaceFolder}/.pio/build/simulator_macos/MarlinSimulator", # "miDebuggerPath": "/opt/local/bin/ggdb", # "MIMode": "gdb", # "cwd": "${workspaceFolder}/.pio/build/simulator_macos" }, # [simulator_macos] build_unflags = -lGL custom_verbose = 0 build_flags = -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/SDL2/ -L/opt/local/lib -Wl,-framework,OpenGl -Wl,-framework,CoreFoundation -lSDL2 [env:simulator_macos_debug] platform = ${env:simulator_linux_release.platform} extends = env:simulator_linux_debug build_flags = ${env:simulator_linux_debug.build_flags} ${simulator_macos.build_flags} -ggdb -Og -D_THREAD_SAFE build_unflags = ${simulator_macos.build_unflags} [env:simulator_macos_release] platform = ${env:simulator_linux_release.platform} extends = env:simulator_linux_release build_flags = ${env:simulator_linux_release.build_flags} ${simulator_macos.build_flags} build_unflags = ${simulator_macos.build_unflags} # # Simulator for Windows 10 # # MSYS2 mingw-w64-x86_64 with these packages: # pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw64/mingw-w64-x86_64-glm mingw64/mingw-w64-x86_64-SDL2 mingw64/mingw-w64-x86_64-SDL2_net mingw-w64-x86_64-dlfcn # [env:simulator_windows] platform = ${simulator_common.platform} extends = simulator_common src_build_flags = ${simulator_common.src_build_flags} -fpermissive build_flags = ${simulator_common.build_flags} ${simulator_common.debug_build_flags} -IC:\\msys64\\mingw64\\include\\SDL2 -fno-stack-protector -Wl,-subsystem,windows -ldl -lmingw32 -lSDL2main -lSDL2 -lSDL2_net -lopengl32 -lssp build_type = debug