this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use O3 + flto with all but msvc (#2696)

* use O3 with flto

* fix msvc builds

* back to minsizerel in msvc, baremetal and 3ds

* default to static in builds with flto

* use ubuntu 22.04 for linux amd64

* use gcc12 in ubuntu 22.04

* include ubuntu24.04 + gcc14 for linux amd64

* Update build.yml

* Update build.yml

* add required dep for ubuntu24.04

* Update build.yml

* try to force strict aliasing

* revert and try to get latest gcc14

* build with Os + flto to compare

* compile with O2 with flto to compare

* go back to O3+flto as is the faster option

* forgot to use release in android

* use macos13 as 12 is being deprecated

* more platforms

---------

Co-authored-by: Vadim Grigoruk <grigoruk@gmail.com>

authored by

Miguel
Vadim Grigoruk
and committed by
GitHub
0365ecc0 ce24e763

+101 -47
+90 -46
.github/workflows/build.yml
··· 112 112 shell: bash 113 113 run: | 114 114 cd build 115 - cmake -G "MSYS Makefiles" -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_ALL=ON -DBUILD_WITH_JANET=OFF .. 116 - cmake --build . --config MinSizeRel --parallel 115 + cmake -G "MSYS Makefiles" -DBUILD_SDLGPU=On -DBUILD_STATIC=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_ALL=ON -DBUILD_WITH_JANET=OFF .. 116 + cmake --build . --parallel 117 117 118 118 # === Ubuntu === 119 - linux: 120 - runs-on: ubuntu-20.04 119 + linux-gcc12-glibc235: 120 + runs-on: ubuntu-22.04 121 121 122 122 steps: 123 123 - uses: actions/checkout@v4 ··· 132 132 - name: Install 133 133 run: | 134 134 sudo apt-get update 135 - sudo apt-get install libglu1-mesa-dev libasound2-dev libpulse-dev libaudio-dev libsamplerate0-dev libcurl4-openssl-dev -y 136 - 135 + sudo apt-get install gcc-12 g++-12 libglu1-mesa-dev libasound2-dev libpulse-dev libaudio-dev libsamplerate0-dev libcurl4-openssl-dev -y 136 + sudo ln -s -f /usr/bin/gcc-12 /usr/bin/gcc 137 + sudo ln -s -f /usr/bin/g++-12 /usr/bin/g++ 138 + 137 139 - name: Build 138 140 run: | 139 141 cd build 140 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=ON .. 142 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SDLGPU=On -DBUILD_STATIC=ON -DBUILD_WITH_ALL=ON .. 143 + cmake --build . --parallel 144 + 145 + - name: Deploy 146 + uses: actions/upload-artifact@v4 147 + with: 148 + name: "tic80-linux-gcc12" 149 + path: | 150 + build/bin/tic80 151 + build/bin/*.so 152 + 153 + - name: Build Pro 154 + run: | 155 + cd build 156 + cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_PRO=On -DBUILD_WITH_ALL=ON .. 141 157 cmake --build . --config MinSizeRel --parallel 142 158 159 + # === Ubuntu gcc14 === 160 + linux-gcc14-glibc239: 161 + runs-on: ubuntu-24.04 162 + 163 + steps: 164 + - uses: actions/checkout@v4 165 + with: 166 + submodules: recursive 167 + fetch-depth: 0 168 + 169 + - uses: ruby/setup-ruby@v1 170 + with: 171 + ruby-version: 2.6 172 + 173 + - name: Install 174 + run: | 175 + sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa 176 + sudo apt update 177 + sudo apt-get install gcc-14 g++-14 libxext-dev libglu1-mesa-dev libasound2-dev libpulse-dev libaudio-dev libsamplerate0-dev libcurl4-openssl-dev -y 178 + sudo ln -s -f /usr/bin/gcc-14 /usr/bin/gcc 179 + sudo ln -s -f /usr/bin/g++-14 /usr/bin/g++ 180 + 181 + - name: Build 182 + run: | 183 + cd build 184 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SDLGPU=On -DBUILD_STATIC=ON -DBUILD_WITH_ALL=ON .. 185 + cmake --build . --parallel 186 + 143 187 - name: Deploy 144 188 uses: actions/upload-artifact@v4 145 189 with: 146 - name: "tic80-linux" 190 + name: "tic80-linux-gcc14" 147 191 path: | 148 192 build/bin/tic80 149 193 build/bin/*.so ··· 173 217 - name: Build 174 218 run: | 175 219 cd build 176 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=rpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 177 - cmake --build . --config MinSizeRel --parallel 220 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC=ON -DCMAKE_TOOLCHAIN_FILE=rpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 221 + cmake --build . --parallel 178 222 179 223 - name: Deploy 180 224 uses: actions/upload-artifact@v3 ··· 226 270 run: | 227 271 git apply build/baremetalpi/circle.patch 228 272 cd build 229 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=baremetalpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 273 + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=baremetalpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 230 274 make tic80studio -j$(nproc) 231 275 cd baremetalpi 232 276 make -j$(nproc) ··· 287 331 run: | 288 332 git apply build/baremetalpi/circle.patch 289 333 cd build 290 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=baremetalpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 334 + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=baremetalpi/toolchain.cmake -DBUILD_WITH_ALL=ON .. 291 335 make tic80studio -j$(nproc) 292 336 cd baremetalpi 293 337 make -j$(nproc) ··· 343 387 name: "tic80-nintendo-3ds" 344 388 path: build/bin/tic80.3dsx 345 389 346 - # === MacOS 12 === 390 + # === MacOS 13 === 347 391 macos: 348 - runs-on: macos-12 392 + runs-on: macos-13 349 393 350 394 steps: 351 395 - uses: actions/checkout@v4 ··· 359 403 - name: Build 360 404 run: | 361 405 cd build 362 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=ON .. 363 - cmake --build . --config MinSizeRel --parallel 406 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC=ON -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=ON .. 407 + cmake --build . --parallel 364 408 365 409 - name: Deploy 366 410 uses: actions/upload-artifact@v4 ··· 373 417 - name: Build Pro 374 418 run: | 375 419 cd build 376 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_PRO=On -DBUILD_WITH_ALL=ON .. 377 - cmake --build . --config MinSizeRel --parallel 420 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SDLGPU=On -DBUILD_PRO=On -DBUILD_WITH_ALL=ON .. 421 + cmake --build . --parallel 378 422 379 423 # === MacOS 14 / arm64 === 380 424 macos-arm64: ··· 392 436 - name: Build 393 437 run: | 394 438 cd build 395 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=ON .. 396 - cmake --build . --config MinSizeRel --parallel 439 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC=ON -DBUILD_SDLGPU=On -DBUILD_WITH_ALL=ON .. 440 + cmake --build . --parallel 397 441 398 442 - name: Deploy 399 443 uses: actions/upload-artifact@v4 ··· 406 450 - name: Build Pro 407 451 run: | 408 452 cd build 409 - cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SDLGPU=On -DBUILD_PRO=On -DBUILD_WITH_ALL=ON .. 410 - cmake --build . --config MinSizeRel --parallel 453 + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SDLGPU=On -DBUILD_PRO=On -DBUILD_WITH_ALL=ON .. 454 + cmake --build . --parallel 411 455 412 456 # === Android === 413 457 android: ··· 468 512 - name: Build lua 469 513 run: | 470 514 cd build 471 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=ON -DTIC80_TARGET=tic80lua .. --fresh 472 - cmake --build . --config MinSizeRel --parallel 515 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=ON -DTIC80_TARGET=tic80lua .. --fresh 516 + cmake --build . --parallel 473 517 474 518 - name: Build ruby 475 519 run: | 476 520 cd build 477 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_RUBY=ON -DTIC80_TARGET=tic80ruby .. --fresh 478 - cmake --build . --config MinSizeRel --parallel 521 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_RUBY=ON -DTIC80_TARGET=tic80ruby .. --fresh 522 + cmake --build . --parallel 479 523 480 524 - name: Build js 481 525 run: | 482 526 cd build 483 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_JS=ON -DTIC80_TARGET=tic80js .. --fresh 484 - cmake --build . --config MinSizeRel --parallel 527 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_JS=ON -DTIC80_TARGET=tic80js .. --fresh 528 + cmake --build . --parallel 485 529 486 530 - name: Build moon 487 531 run: | 488 532 cd build 489 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_MOON=ON -DTIC80_TARGET=tic80moon .. --fresh 490 - cmake --build . --config MinSizeRel --parallel 533 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_MOON=ON -DTIC80_TARGET=tic80moon .. --fresh 534 + cmake --build . --parallel 491 535 492 536 - name: Build fennel 493 537 run: | 494 538 cd build 495 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_FENNEL=ON -DTIC80_TARGET=tic80fennel .. --fresh 496 - cmake --build . --config MinSizeRel --parallel 539 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_FENNEL=ON -DTIC80_TARGET=tic80fennel .. --fresh 540 + cmake --build . --parallel 497 541 498 542 - name: Build scheme 499 543 run: | 500 544 cd build 501 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_SCHEME=ON -DTIC80_TARGET=tic80scheme .. --fresh 502 - cmake --build . --config MinSizeRel --parallel 545 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_SCHEME=ON -DTIC80_TARGET=tic80scheme .. --fresh 546 + cmake --build . --parallel 503 547 504 548 - name: Build squirrel 505 549 run: | 506 550 cd build 507 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_SQUIRREL=ON -DTIC80_TARGET=tic80squirrel .. --fresh 508 - cmake --build . --config MinSizeRel --parallel 551 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_SQUIRREL=ON -DTIC80_TARGET=tic80squirrel .. --fresh 552 + cmake --build . --parallel 509 553 510 554 - name: Build wren 511 555 run: | 512 556 cd build 513 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_WREN=ON -DTIC80_TARGET=tic80wren .. --fresh 514 - cmake --build . --config MinSizeRel --parallel 557 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_WREN=ON -DTIC80_TARGET=tic80wren .. --fresh 558 + cmake --build . --parallel 515 559 516 560 - name: Build wasm 517 561 run: | 518 562 cd build 519 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_WASM=ON -DTIC80_TARGET=tic80wasm .. --fresh 520 - cmake --build . --config MinSizeRel --parallel 563 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_WASM=ON -DTIC80_TARGET=tic80wasm .. --fresh 564 + cmake --build . --parallel 521 565 522 566 - name: Build janet 523 567 run: | 524 568 cd build 525 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_JANET=ON -DTIC80_TARGET=tic80janet .. --fresh 526 - cmake --build . --config MinSizeRel --parallel 569 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_JANET=ON -DTIC80_TARGET=tic80janet .. --fresh 570 + cmake --build . --parallel 527 571 528 572 - name: Build python 529 573 run: | 530 574 cd build 531 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_LUA=OFF -DBUILD_WITH_PYTHON=ON -DTIC80_TARGET=tic80python .. --fresh 532 - cmake --build . --config MinSizeRel --parallel 575 + emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_LUA=OFF -DBUILD_WITH_PYTHON=ON -DTIC80_TARGET=tic80python .. --fresh 576 + cmake --build . --parallel 533 577 534 578 - name: Build all 535 579 run: | 536 580 cd build 537 - emcmake cmake -DBUILD_SDLGPU=On -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_WITH_ALL=ON .. --fresh 538 - cmake --build . --config MinSizeRel --parallel 581 + emcmake cmake -DBUILD_SDLGPU=On -DBUILD_STATIC=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_WITH_ALL=ON .. --fresh 582 + cmake --build . --parallel 539 583 cp html/index.html bin/index.html 540 584 541 585 - name: Deploy
+10
CMakeLists.txt
··· 4 4 5 5 project(TIC-80 VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION} LANGUAGES C CXX) 6 6 7 + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 8 + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -flto -ffat-lto-objects") 9 + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -flto -ffat-lto-objects") 10 + endif() 11 + 12 + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") 13 + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -flto") 14 + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -flto") 15 + endif() 16 + 7 17 if(APPLE) 8 18 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") 9 19 endif()
+1 -1
build/android/app/build.gradle
··· 25 25 arguments "APP_PLATFORM=android-31" 26 26 } 27 27 cmake { 28 - arguments "-DBUILD_WITH_RUBY=OFF", "-DBUILD_PRO=Off", "-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_WITH_ALL=ON" 28 + arguments "-DBUILD_WITH_RUBY=OFF", "-DBUILD_PRO=Off", "-DCMAKE_BUILD_TYPE=Release", "-DBUILD_WITH_ALL=ON" 29 29 } 30 30 } 31 31 }