2 Commits
Author SHA1 Message Date
samsonium 6f54286724 doc: update project building steps 2026-10-29 18:18:50 +03:00
samsonium fe5fcd7b96 feat: add compiler installation step
- Ref: add `-debug` suffix to debug targets
- Ref: remove `-release` suffix from release targets
- Feat: add `make install` command
- Feat: add cmake variables:
  - `FZL_TESTS` for enable testing
  - `FZL_SKIP_C` to not build the compiler
  - `FZL_SKIP_VM` to not build the vm
2026-10-29 18:18:35 +03:00
3 changed files with 137 additions and 119 deletions
+27 -8
View File
@@ -8,6 +8,7 @@ add_compile_options(-Wall -Wextra -Werror=implicit-function-declaration)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
add_compile_options(-fsanitize=address,undefined -g)
add_link_options(-fsanitize=address,undefined)
set(FZL_TESTS TRUE)
endif()
include_directories(include)
@@ -29,7 +30,8 @@ set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS ${PREV_SUPPRESS_DEV} CACHE INTERNAL "")
# --------------
# Compiler
add_executable(fzc
if (NOT FZL_SKIP_C)
add_executable(fzc
src/compiler/utils/fzl_const_pool.c
src/compiler/utils/fzl_symtable.c
src/compiler/utils/fzl_linked.c
@@ -93,9 +95,11 @@ add_executable(fzc
src/compiler/fzl_walker.c
src/compiler/fzl_writer.c
src/compiler/main.c)
endif ()
# Virtual machine
add_executable(fz
if (NOT FZL_SKIP_VM)
add_executable(fz
src/vm/handlers/group_and_or.c
src/vm/handlers/group_cmp.c
src/vm/handlers/group_ctx.c
@@ -114,16 +118,30 @@ add_executable(fz
src/vm/fzl_vm_debug.c
src/vm/main.c)
target_link_libraries(fz PRIVATE ffi_static dl)
target_link_libraries(fz PRIVATE ffi_static dl)
endif ()
#
# ========== Installtion ===========
#
if (NOT FZL_SKIP_C)
install (TARGETS fzc RUNTIME DESTINATION bin)
endif ()
if (NOT FZL_SKIP_VM)
install (TARGETS fz RUNTIME DESTINATION bin)
endif ()
#
# ========== Tests ==========
#
enable_testing()
if (FZL_TESTS)
enable_testing()
file(GLOB TEST_PROGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "tests/programs/*.fzs")
foreach (TEST_FILE IN LISTS TEST_PROGS)
file(GLOB TEST_PROGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "tests/programs/*.fzs")
foreach (TEST_FILE IN LISTS TEST_PROGS)
get_filename_component(TEST_NAME "${TEST_FILE}" NAME_WE)
add_test(
@@ -142,6 +160,7 @@ foreach (TEST_FILE IN LISTS TEST_PROGS)
if (TEST_NAME MATCHES "negr_")
set_tests_properties("progs_runtime_${TEST_NAME}" PROPERTIES WILL_FAIL TRUE)
endif()
endforeach()
endif ()
endforeach ()
endif ()
+12 -9
View File
@@ -7,34 +7,37 @@ MAX_ITER ?= 2000000
current_time = python3 -c "import time; print(time.time())"
build:
build-debug:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
build-release:
build:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release $(COMPARING)
cmake --build build $(COMPARING)
debug-c: build
install: build-release
cmake --install build
debug-c: build-debug
gdb --args ./build/fzc -v ${FILE}
debug-vm: build
debug-vm: build-debug
gdb --args ./build/fz ${FILE}
test-debug: build-debug
ctest --output-on-failure --test-dir build
test: build
ctest --output-on-failure --test-dir build
test-release: build-release
ctest --output-on-failure --test-dir build
bench: COMPARING=&>/dev/null
bench: build-release
bench: build
@./build/fzc -o build/benchmark.fzb $(BENCH_FILE)
@python3 scripts/benchmark.py --runs $(RUNS) --warmup $(WARMUP) \
--max-iter $(MAX_ITER) --vm ./build/fz --program build/benchmark.fzb
compare: COMPARING=&>/dev/null
compare: build-release
compare: build
@echo "=== Million sums benchmark ==="
@./build/fzc -o build/bench.fzb $(BENCH_FILE) 1>/dev/null 2>/dev/null
+2 -6
View File
@@ -27,12 +27,8 @@
## Инструкции по сборке
1. Склонировать проект: `git clone https://git.samsonium.dev/samsonium/fz-lang.git`
2. Собрать проект: `make build-release`
После этого в корне появится директория **"build"**. В ней будут лежать два скомпилированных бинарных файла:
- `fzc` - компилятор
- `fz` - виртуальная машина
2. Собрать проект: `make build`
3. Установить проект: `sudo make install`
Оба бинарных файла предоставляют справку по использованию при запуске с флагом `--help` (или `-h`).