File tree Expand file tree Collapse file tree 10 files changed +174
-0
lines changed Expand file tree Collapse file tree 10 files changed +174
-0
lines changed Original file line number Diff line number Diff line change 1+ name : CMake Build
2+
3+ on : [push]
4+
5+ jobs :
6+ build :
7+ name : Build
8+ runs-on : ubuntu-24.04
9+ steps :
10+ - uses : actions/checkout@v3
11+ - uses : awalsh128/cache-apt-pkgs-action@latest
12+ with :
13+ packages : libc++-18-dev clang-18
14+ - name : Cache Build
15+ id : restore-cache-build
16+ uses : actions/cache/restore@v4
17+ with :
18+ path : build
19+ key : ${{ runner.os }}-build
20+ - name : CMake Action
21+ 22+ with :
23+ args : -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS='-D__cpp_concepts=202002L' -DCMAKE_EXE_LINKER_FLAGS='-static'
24+ run-build : true
25+ c-compiler : clang-18
26+ cxx-compiler : clang++-18
27+ - uses : actions/cache/save@v3
28+ name : Save build cache
29+ with :
30+ path : build
31+ key : ${{ runner.os }}-build
32+ - name : Run tests
33+ working-directory : ./build
34+ run : ctest --rerun-failed --output-on-failure .
35+ - uses : actions/upload-artifact@v4
36+ with :
37+ name : ' ubuntu-cli'
38+ path : build/bin/ts-compiler
39+ if-no-files-found : error
40+ retention-days : 90
41+ compression-level : 6
42+ overwrite : true
Original file line number Diff line number Diff line change 1+ build
2+ .cache
3+ cases-lock.ls
4+ CMakeUserPresets.json
5+ .clangd
6+ .DS_Store
Original file line number Diff line number Diff line change 1+ cmake_minimum_required (VERSION 3.28.1)
2+ project (ts-compiler VERSION 0.0.1 LANGUAGES C CXX)
3+ mark_as_advanced (CMAKE_MAKE_PROGRAM )
4+ include (GNUInstallDirs)
5+ include (CMakePrintHelpers)
6+ include (FetchContent)
7+
8+ set (CMAKE_CXX_STANDARD 23)
9+ set (CMAKE_C_EXTENSIONS OFF )
10+ set (CMAKE_CXX_EXTENSIONS OFF )
11+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
12+ set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
13+ set (THREADS_PREFER_PTHREAD_FLAG ON )
14+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
15+ set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /bin)
16+ add_compile_options (-fexperimental-library)
17+
18+ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR )
19+ set (IS_ROOT_PROJECT ON )
20+ else ()
21+ set (IS_ROOT_PROJECT OFF )
22+ endif ()
23+
24+ option (TS_COMPILER_BUILD_CLI "build cli" ${IS_ROOT_PROJECT} )
25+
26+ include ("${CMAKE_CURRENT_SOURCE_DIR} /CMakeUtils.txt" )
27+ include ("${CMAKE_CURRENT_SOURCE_DIR} /vendor/rapidjson.cmake" )
28+ add_subdirectory ("src/libtypescript" )
29+ if (TS_COMPILER_BUILD_CLI)
30+ add_subdirectory ("src/ts-cli" )
31+ endif ()
Original file line number Diff line number Diff line change 1+ # Remove strings matching given regular expression from a list.
2+ # @param(in,out) aItems Reference of a list variable to filter.
3+ # @param aRegEx Value of regular expression to match.
4+ function (filter_items aItems aRegEx)
5+ # For each item in our list
6+ foreach (item ${${aItems}})
7+ # Check if our items matches our regular expression
8+ if ("${item}" MATCHES ${aRegEx})
9+ # Remove current item from our list
10+ list (REMOVE_ITEM ${aItems} ${item})
11+ endif ("${item}" MATCHES ${aRegEx})
12+ endforeach(item)
13+ # Provide output parameter
14+ set(${aItems} ${${aItems}} PARENT_SCOPE)
15+ endfunction (filter_items)
Original file line number Diff line number Diff line change 1+ file (GLOB_RECURSE TS_LIB_HEADERS src/*.hpp src/*.h)
2+ file (GLOB_RECURSE TS_LIB_SOURCES src/*.cpp src/*.c)
3+
4+ add_library (
5+ libtypescript
6+ ${TS_LIB_SOURCES}
7+ )
8+ add_dependencies (libtypescript RapidJSON)
9+ target_include_directories (
10+ libtypescript
11+ INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} /src/
12+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src/
13+ PRIVATE SYSTEM ${RAPIDJSON_INCLUDE_DIR}
14+ )
15+ get_target_property (LIBB_INCLUDES libtypescript INCLUDE_DIRECTORIES )
Original file line number Diff line number Diff line change 1+ void check () {};
Original file line number Diff line number Diff line change 1+ include ("${CMAKE_CURRENT_SOURCE_DIR} /vendor/cli11.cmake" )
2+
3+ file (GLOB_RECURSE TS_CLI_SOURCES src/*.cpp src/*.c)
4+ add_executable (
5+ ts-compiler
6+ src/main.cpp
7+ ${TS_CLI_SOURCES}
8+ )
9+ add_dependencies (ts-compiler RapidJSON)
10+ target_link_libraries (
11+ ts-compiler
12+ PRIVATE CLI11::CLI11
13+ PRIVATE libtypescript
14+ )
15+ target_include_directories (
16+ ts-compiler
17+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src/
18+ PRIVATE SYSTEM ${CLI11_INCLUDE_DIR}
19+ PRIVATE SYSTEM ${RAPIDJSON_INCLUDE_DIR}
20+ )
Original file line number Diff line number Diff line change 1+ #include < CLI/App.hpp>
2+ #include < CLI/Error.hpp>
3+ #include < CLI/Option.hpp>
4+
5+ #include < cstdlib>
6+
7+ int main (int argc, char **argv) {
8+ CLI::App app;
9+ argv = app.ensure_utf8 (argv);
10+ CLI11_PARSE (app, argc, argv);
11+ return EXIT_SUCCESS;
12+ }
Original file line number Diff line number Diff line change 1+ include (FetchContent)
2+ set (CLI11_BUILD_DOCS OFF )
3+ set (CLI11_BUILD_TESTS OFF )
4+ set (CLI11_BUILD_EXAMPLES OFF )
5+ set (CLI11_PRECOMPILED ON )
6+ FetchContent_Declare(
7+ cli11_proj
8+ GIT_REPOSITORY https://github.com/CLIUtils/CLI11.git
9+ GIT_TAG v2.4.1
10+ )
11+
12+ FetchContent_MakeAvailable(cli11_proj)
13+ set (CLI11_INCLUDE_DIR ${cli11_proj_SOURCE_DIR} /include /)
Original file line number Diff line number Diff line change 1+ include (FetchContent)
2+ set (RAPIDJSON_BUILD_DOC OFF CACHE INTERNAL "" )
3+ set (RAPIDJSON_BUILD_EXAMPLES OFF CACHE INTERNAL "" )
4+ set (RAPIDJSON_BUILD_TESTS OFF CACHE INTERNAL "" )
5+ set (RAPIDJSON_BUILD_CXX20 ON CACHE INTERNAL "" )
6+ FetchContent_Declare(
7+ rapidjson
8+ GIT_REPOSITORY https://github.com/Tencent/rapidjson.git
9+ GIT_TAG ab1842a2dae061284c0a62dca1cc6d5e7e37e346
10+ GIT_SUBMODULES ""
11+ CMAKE_ARGS
12+ -DCMAKE_COMPILER_ARGS="-D RAPIDJSON_HAS_CXX11_RVALUE_REFS 1"
13+ CONFIGURE_COMMAND ""
14+ BUILD_COMMAND ""
15+ INSTALL_COMMAND ""
16+ UPDATE_COMMAND ""
17+ )
18+ FetchContent_MakeAvailable(rapidjson)
19+ set (RAPIDJSON_INCLUDE_DIR ${rapidjson_SOURCE_DIR} /include )
You can’t perform that action at this time.
0 commit comments