Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 1 addition & 36 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,18 +223,6 @@ jobs:
;;
esac

- name: "Clone required repos"
uses: actions/checkout@master
with:
repository: profelis/das-fmt # Path to repository with das-fmt scripts
ref: refs/pull/4/head
path: das-fmt

- name: "Clone submodules"
if: matrix.target != 'linux_arm' # support opengl in glfw on linux arm
run: |
# Some of them will be disabled, but who cares
git submodule update --init --recursive $(cat ci/release_modules.txt | grep -v "^#" | cut -d':' -f1 | sed 's|^|modules/|' | xargs)
- name: "Build: Daslang"
run: |
set -eux
Expand Down Expand Up @@ -300,19 +288,6 @@ jobs:
# || (echo "Generated code changed! To reproduce use "./bin/daslang dasgen/gen_bind.das" or rebuild "daslang-dev" to regenerate aot files." && exit 1)
# ;;
# esac
- name: "Run formatter"
if: matrix.cmake_preset == 'Release'
run: |
set -eux
case "${{ matrix.target }}${{ matrix.architecture }}" in
windows*)
./bin/"${{ matrix.cmake_preset }}"/daslang ./das-fmt/dasfmt.das -- --path ./ --verify
;;
*)
./bin/daslang ./das-fmt/dasfmt.das -- --path ./ --verify
;;
esac

- name: "Test"
run: |
set -eux
Expand Down Expand Up @@ -350,22 +325,12 @@ jobs:
echo "Skipping AOT tests on 32-bit Windows"
;;
windows*)
# Run single instance of daslang_static. It takes ~5 sec and
# one instance is enough to make sure it works.
cd bin/"${{ matrix.cmake_preset }}"
./daslang_static _dasroot_/dastest/dastest.das -- --color --failures-only --test ../../tests
./test_aot -use-aot _dasroot_/dastest/dastest.das -- --use-aot --color --failures-only --timeout 900 --test ../../tests
;;
*)
cd bin
./test_aot -use-aot _dasroot_/dastest/dastest.das -- --use-aot --color --failures-only --timeout 900 --test ../tests

# Run coverage only in Release since it is slow.
./daslang _dasroot_/dastest/dastest.das -- --cov-path coverage.lcov --color --test ../tests --timeout 1800
./daslang _dasroot_/utils/dascov/main.das -- coverage.lcov --exclude tests/

# Run single instance of daslang_static. It takes ~5 sec and
# one instance is enough to make sure it works.
./daslang_static _dasroot_/dastest/dastest.das -- --color --failures-only --test ../tests
;;
esac

Expand Down
180 changes: 180 additions & 0 deletions .github/workflows/extended_checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
name: extended checks

on:
push:
branches: [master]
pull_request:
workflow_dispatch:
defaults:
run:
shell: bash

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:

###########################################################
pre_job:
###########################################################
runs-on: ubuntu-latest-fat
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: 'same_content'
do_not_skip: '["pull_request", "workflow_dispatch"]'

###########################################################
extended_checks:
###########################################################
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
target: [linux, darwin15, windows]
architecture: [64, arm64]

include:
- target: linux
runner: ubuntu-latest-fat
build_system: cmake
cmake_generator: Ninja

- target: darwin15
architecture: arm64
runner: macos-15-xlarge
architecture_string: arm64
build_system: cmake
cmake_generator: Ninja

- target: windows
runner: windows-latest-fat
build_system: cmake
cmake_generator: Visual Studio 17 2022
architecture_string: x64

exclude:
- target: linux
architecture: arm64
- target: windows
architecture: arm64
- target: darwin15
architecture: 64

steps:
- name: "SCM Checkout"
uses: actions/checkout@v4

- name: "Install CMake and Ninja"
uses: lukka/get-cmake@latest

- if: runner.os == 'Windows'
uses: ilammy/setup-nasm@v1

- name: "Install: Required Dev Packages"
run: |
set -eux
case "${{ matrix.target }}" in
darwin15)
brew install bison openssl
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/bison/lib -L$(brew --prefix openssl)/lib"
export CPPFLAGS="-I$(brew --prefix openssl)/include"
;;
linux)
echo "MARCH=64" >> $GITHUB_ENV
sudo apt-get update -y
sudo apt-get install --no-install-recommends -y \
mesa-common-dev \
libx11-dev \
libxrandr-dev \
libxcursor-dev \
libxinerama-dev \
libxi-dev
;;
esac

- name: "Install openssl (Windows)"
if: runner.os == 'Windows'
run: |
git clone https://github.com/microsoft/vcpkg && ./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install openssl:x64-windows --binarycaching
echo "VCPKG_ROOT=$(pwd)/vcpkg" >> $GITHUB_ENV

- name: "Clone required repos"
uses: actions/checkout@v4
with:
repository: profelis/das-fmt
path: das-fmt

- name: "Build: Daslang (Release)"
run: |
set -eux
ACTIVE_MODULES=$(grep -v "^#" ci/release_modules.txt | cut -d':' -f2 | sed 's|^|-D|' | xargs)
case "${{ matrix.target }}" in
windows)
export PATH="/c/Strawberry/perl/bin:$PATH"
cmake --no-warn-unused-cli -B./build -G "${{ matrix.cmake_generator }}" -T host=x64 -A ${{ matrix.architecture_string }} \
$ACTIVE_MODULES -DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
cmake --build ./build --config Release --target daslang das-fmt daslang_static
;;
*)
CC=clang CXX=clang++ cmake --no-warn-unused-cli -B./build \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.architecture_string }}" \
-G "${{ matrix.cmake_generator }}" $ACTIVE_MODULES
cmake --build ./build --config Release --target daslang daslang_static
;;
esac

- name: "Install ast-grep"
run: npm install -g @ast-grep/cli

- name: "Run examples from modules"
run: cmake --build ./build --config Release --target run_examples

- name: "Run utils tests"
run: cmake --build ./build --config Release --target run_utils_tests

- name: "Build standalone executables"
run: |
set -eux
cmake --build ./build --config Release --target all_utils_exe
case "${{ matrix.target }}" in
windows) BIN=./bin/Release/ ;;
*) BIN=./bin/ ;;
esac
$BIN/daslang -exe -output ./bin/das-fmt ./das-fmt/dasfmt.das

- name: "Run formatter"
run: |
set -eux
case "${{ matrix.target }}" in
windows) BIN=./bin/Release/ ;;
*) BIN=./bin/ ;;
esac
$BIN/daslang ./das-fmt/dasfmt.das -- --path ./ --verify
$BIN/das-fmt.exe --path ./ --verify

- name: "Test daslang_static"
run: |
set -eux
case "${{ matrix.target }}" in
windows) BIN=bin/Release TESTS=../../tests ;;
*) BIN=bin TESTS=../tests ;;
esac
cd $BIN
./daslang_static _dasroot_/dastest/dastest.das -- --color --failures-only --test $TESTS

- name: "Coverage"
if: matrix.target == 'linux'
run: |
cd bin
./daslang _dasroot_/dastest/dastest.das -- --cov-path coverage.lcov --color --test ../tests --timeout 1800
./dascov.exe -- coverage.lcov --exclude tests/
3 changes: 0 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,6 @@ jobs:
./vcpkg/vcpkg install openssl:${{ matrix.architecture == 32 && 'x86' || 'x64' }}-windows --binarycaching
echo "VCPKG_ROOT=$(pwd)/vcpkg" >> $GITHUB_ENV
echo "CMAKE_TOOLCHAIN_FILE=$(pwd)/vcpkg/scripts/buildsystems/vcpkg.cmake" >> $GITHUB_ENV
- name: "Clone submodules"
run: |
git submodule update --init --recursive $(cat ci/release_modules.txt | grep -v "^#" | cut -d':' -f1 | sed 's|^|modules/|' | xargs)
- name: "Build: Daslang Linux with modules"
if: runner.os != 'Windows'
run: |
Expand Down
Empty file removed CMakeCpuDetect.txt
Empty file.
33 changes: 33 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ SET(DAS_DYN_MODULES_LIBS)
SET(DAS_MODULES_LIBS)

SET(DAS_ALL_EXAMPLES)
SET(DAS_EXAMPLES_TO_RUN)
FILE(GLOB _modules RELATIVE "${PROJECT_SOURCE_DIR}/modules" "modules/*")

# Every dynamic module should pass through this macro.
Expand Down Expand Up @@ -384,6 +385,14 @@ MACRO(ADD_EXAMPLE tgt)
LIST(APPEND DAS_ALL_EXAMPLES ${tgt})
ENDMACRO()

# Register a .das file to be run as a headless example check.
# Modules call this from their CMakeLists.txt for examples that
# can run without GUI, audio, or user interaction.
MACRO(ADD_EXAMPLE_RUN das_file)
MESSAGE("EXAMPLE_RUN ${das_file}")
LIST(APPEND DAS_EXAMPLES_TO_RUN ${das_file})
ENDMACRO()

FUNCTION(ADD_MODULE_CPP cpp)
FILE(APPEND ${DAS_MODULES_NEED_INC}.temp "NEED_MODULE(Module_${cpp});\n")
FILE(APPEND ${DAS_MODULES_DECLARE_INC}.temp "DECLARE_MODULE(Module_${cpp});\n")
Expand Down Expand Up @@ -424,6 +433,24 @@ FOREACH(_example ${DAS_ALL_EXAMPLES})
ADD_DEPENDENCIES(${_example} ${DAS_MODULES_LIBS})
ENDFOREACH()

# run_examples — runs all .das files registered via ADD_EXAMPLE_RUN.
# Each example is executed with `daslang <file>` and must exit cleanly.
IF(DAS_EXAMPLES_TO_RUN)
SET(_run_example_commands)
FOREACH(_das ${DAS_EXAMPLES_TO_RUN})
LIST(APPEND _run_example_commands
COMMAND ${CMAKE_COMMAND} -E echo "Running ${_das}"
COMMAND $<TARGET_FILE:daslang> ${_das}
)
ENDFOREACH()
ADD_CUSTOM_TARGET(run_examples
${_run_example_commands}
DEPENDS daslang
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Running headless module examples"
)
ENDIF()

ADD_CUSTOM_COMMAND(
DEPENDS ${DAS_MODULES_NEED_INC}.temp
OUTPUT ${DAS_MODULES_NEED_INC}
Expand Down Expand Up @@ -1599,6 +1626,12 @@ if(NOT ${DAS_TREE_SITTER_DISABLED})
C_STANDARD 11
PREFIX ""
OUTPUT_NAME "daslang"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${PROJECT_SOURCE_DIR}/tree-sitter-daslang"
)
if(MSVC)
target_compile_options(tree_sitter_daslang PRIVATE /W3)
Expand Down
10 changes: 0 additions & 10 deletions generate_gcc.sh

This file was deleted.

10 changes: 0 additions & 10 deletions generate_gcc_linux.sh

This file was deleted.

8 changes: 0 additions & 8 deletions generate_gcc_linux_release.sh

This file was deleted.

10 changes: 0 additions & 10 deletions generate_gcc_release.sh

This file was deleted.

8 changes: 0 additions & 8 deletions generate_msvc.bat

This file was deleted.

8 changes: 0 additions & 8 deletions generate_msvc_2019.bat

This file was deleted.

8 changes: 0 additions & 8 deletions generate_msvc_2022.bat

This file was deleted.

8 changes: 0 additions & 8 deletions generate_msvc_32.bat

This file was deleted.

Loading
Loading