Skip to content

Commit

Permalink
Setup CI (#22)
Browse files Browse the repository at this point in the history
* Setup CI for lexer and parser tests
  • Loading branch information
wpmed92 authored Aug 2, 2024
1 parent 86c66fe commit 8ee8a3f
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 53 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Shaderpulse tests

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v1
with:
cmake-version: '3.25'

- name: Configure CMake
run: cmake -B build -DENABLE_LLVM=OFF -DCMAKE_BUILD_TYPE=Release

- name: Build
run: cmake --build build --config Release

- name: Run tests
run: ctest --test-dir build/unittests --output-on-failure
111 changes: 58 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,70 +21,75 @@ project(
LANGUAGES CXX C
)

# Set the MLIR and LLVM installation prefixes
set(CMAKE_PREFIX_PATH "./llvm-project/build" ${CMAKE_PREFIX_PATH})
option(ENABLE_LLVM "Enable LLVM dependency" ON)

# MLIR specific
find_package(MLIR REQUIRED CONFIG)
if(ENABLE_LLVM)
set(CMAKE_PREFIX_PATH "./llvm-project/build" ${CMAKE_PREFIX_PATH})

message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
find_package(MLIR REQUIRED CONFIG)

set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})

list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}/cmake/modules")
list(APPEND CMAKE_MODULE_PATH "${MLIR_DIR}/cmake/modules")
list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")

add_subdirectory(lib/Preprocessor)
add_subdirectory(lib/Lexer)
add_subdirectory(lib/Parser)
add_subdirectory(lib/AST)
add_subdirectory(lib/CodeGen)
add_subdirectory(lib/Analysis)
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}/cmake/modules")
list(APPEND CMAKE_MODULE_PATH "${MLIR_DIR}/cmake/modules")

include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)

add_executable(shaderpulse-standalone standalone/shaderpulse.cpp)
include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${MLIR_INCLUDE_DIRS})
link_directories(${LLVM_BUILD_LIBRARY_DIR})
add_definitions(${LLVM_DEFINITIONS})

include(TableGen)
include(AddLLVM)
include(AddMLIR)
include(HandleLLVMOptions)
add_subdirectory(lib/CodeGen)
endif()

include_directories(${LLVM_INCLUDE_DIRS})
include_directories(${MLIR_INCLUDE_DIRS})
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_BINARY_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/utils/include)
link_directories(${LLVM_BUILD_LIBRARY_DIR})
add_definitions(${LLVM_DEFINITIONS})

target_link_libraries(shaderpulse-standalone
PRIVATE
Preprocessor
Lexer
Parser
AST
CodeGen
Analysis
${dialect_libs}
${conversion_libs}
MLIRAnalysis
MLIRCallInterfaces
MLIRCastInterfaces
MLIRIR
MLIRLLVMCommonConversion
MLIRLLVMToLLVMIRTranslation
MLIRMemRefDialect
MLIRSPIRVDialect
MLIRParser
MLIRPass
MLIRSideEffectInterfaces
MLIRTargetLLVMIRExport
MLIRTransforms
)

add_subdirectory(lib/Preprocessor)
add_subdirectory(lib/Lexer)
add_subdirectory(lib/Parser)
add_subdirectory(lib/AST)
add_subdirectory(lib/Analysis)

if(ENABLE_LLVM)
add_executable(shaderpulse-standalone standalone/shaderpulse.cpp)
target_link_libraries(shaderpulse-standalone
PRIVATE
Preprocessor
Lexer
Parser
AST
CodeGen
Analysis
${dialect_libs}
${conversion_libs}
MLIRAnalysis
MLIRCallInterfaces
MLIRCastInterfaces
MLIRIR
MLIRLLVMCommonConversion
MLIRLLVMToLLVMIRTranslation
MLIRMemRefDialect
MLIRSPIRVDialect
MLIRParser
MLIRPass
MLIRSideEffectInterfaces
MLIRTargetLLVMIRExport
MLIRTransforms
)
endif()

add_subdirectory(unittests)
2 changes: 2 additions & 0 deletions include/AST/AST.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#include <stdint.h>
#include <string>
#include <vector>
#include <memory>
#include <algorithm>

namespace shaderpulse {

Expand Down
2 changes: 2 additions & 0 deletions include/AST/Types.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
#include <string>
#include <vector>
#include <assert.h>
#include <memory>
#include <algorithm>

namespace shaderpulse {

Expand Down

0 comments on commit 8ee8a3f

Please sign in to comment.