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
18 changes: 18 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,24 @@ jobs:
cd wd && git ls-files -z -- '**/*.c' '**/*.cc' '**/*.h' |
xargs -0 -- clang-format-22 --dry-run --style=file --Werror --

cmake_analysis:
name: CMake analysis
runs-on: ubuntu-26.04
steps:
- run: uname -rms
- run: python3 --version
- run: python3 -m pip install --user cmakelang
- run: echo "cloning ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}"
- run: git clone --no-checkout -- ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} wd
- run: >
cd wd &&
git fetch -- origin ${{ github.event.pull_request.head.sha }} &&
git checkout FETCH_HEAD
- run: >
cd wd &&
git ls-files -z -- ':(glob)**/CMakeLists.txt' ':(glob)**/*.cmake' |
xargs -0 -- python3 -m cmakelang.lint

python_analysis:
name: Python analysis
runs-on: ubuntu-26.04
Expand Down
38 changes: 27 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -126,37 +126,53 @@ endif()
# comment for OpenBSD maintainers grepping packages:
# Rumur uses pledge() on OpenBSD

set(TEST_PATH "$ENV{PATH}")
add_subdirectory(librumur)
set(TEST_INC "${CMAKE_CURRENT_SOURCE_DIR}/librumur/include")
set(TEST_INC "${TEST_INC}:${CMAKE_CURRENT_BINARY_DIR}/librumur")
add_subdirectory(murphi-format)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi-format:${TEST_PATH}")
add_subdirectory(murphi2c)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi2c:${TEST_PATH}")
add_subdirectory(murphi2murphi)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi2murphi:${TEST_PATH}")
add_subdirectory(murphi2smv)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi2smv:${TEST_PATH}")
add_subdirectory(murphi2uclid)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi2uclid:${TEST_PATH}")
add_subdirectory(murphi2xml)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/murphi2xml:${TEST_PATH}")
add_subdirectory(rumur)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/rumur:${TEST_PATH}")
add_subdirectory(share)
add_subdirectory(tests/element-is-pure)
set(TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/tests/element-is-pure:${TEST_PATH}")
add_subdirectory(tests/murphi-comment-ls)
set(
TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/tests/murphi-comment-ls:${TEST_PATH}"
)
add_subdirectory(tests/union-array-width)
set(
TEST_PATH "${CMAKE_CURRENT_BINARY_DIR}/tests/union-array-width:${TEST_PATH}"
)

add_custom_target(check
COMMAND env
PATH=${CMAKE_CURRENT_BINARY_DIR}/rumur:${CMAKE_CURRENT_BINARY_DIR}/murphi-format:${CMAKE_CURRENT_BINARY_DIR}/murphi2c:${CMAKE_CURRENT_BINARY_DIR}/murphi2murphi:${CMAKE_CURRENT_BINARY_DIR}/murphi2uclid:${CMAKE_CURRENT_BINARY_DIR}/murphi2xml:${CMAKE_CURRENT_BINARY_DIR}/tests/element-is-pure:${CMAKE_CURRENT_BINARY_DIR}/tests/murphi-comment-ls:${CMAKE_CURRENT_BINARY_DIR}/tests/union-array-width:$ENV{PATH}
CPLUS_INCLUDE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/librumur/include:${CMAKE_CURRENT_BINARY_DIR}/librumur
LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/librumur
LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/librumur
python3 -m pytest --capture=no --override-ini=cache_dir=${CMAKE_CURRENT_BINARY_DIR} --verbose --verbose ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.py
"PATH=${TEST_PATH}"
"CPLUS_INCLUDE_PATH=${TEST_INC}"
"LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/librumur"
"LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/librumur"
python3 -m pytest --capture=no
--override-ini=cache_dir=${CMAKE_CURRENT_BINARY_DIR} --verbose --verbose
${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.py
COMMENT "Running test suite"
USES_TERMINAL
)
add_dependencies(check
murphi-format murphi2c murphi2murphi murphi2uclid murphi2xml rumur
murphi-format murphi2c murphi2murphi murphi2smv murphi2uclid murphi2xml rumur
)
if(NOT CMAKE_CROSSCOMPILING)
add_dependencies(check element-is-pure)
add_dependencies(check murphi-comment-ls)
add_dependencies(check union-array-width)
endif()

add_custom_target(format
COMMAND git ls-files -z '**/*.c' '**/*.cc' '**/*.h' |
xargs -0 -- clang-format -i --style=file
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
20 changes: 15 additions & 5 deletions librumur/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,30 +45,40 @@ include(CheckCXXCompilerFlag)
set_source_files_properties(lexer.l.cc PROPERTIES COMPILE_FLAGS "")
CHECK_CXX_COMPILER_FLAG(-Wsign-compare HAS_WARNING_SIGN_COMPARE)
if(HAS_WARNING_SIGN_COMPARE)
set_source_files_properties(lexer.l.cc PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-sign-compare")
set_source_files_properties(lexer.l.cc
PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-sign-compare"
)
endif()
get_source_file_property(LEXER_COMPILE_FLAGS lexer.l.cc COMPILE_FLAGS)
CHECK_CXX_COMPILER_FLAG(-Wregister HAS_WARNING_REGISTER)
if(HAS_WARNING_REGISTER)
set_source_files_properties(lexer.l.cc PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-register")
set_source_files_properties(lexer.l.cc
PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-register"
)
endif()
get_source_file_property(LEXER_COMPILE_FLAGS lexer.l.cc COMPILE_FLAGS)
CHECK_CXX_COMPILER_FLAG(-Wdeprecated-register HAS_WARNING_DEPRECATED_REGISTER)
if(HAS_WARNING_DEPRECATED_REGISTER)
set_source_files_properties(lexer.l.cc PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-deprecated-register")
set_source_files_properties(lexer.l.cc
PROPERTIES COMPILE_FLAGS "${LEXER_COMPILE_FLAGS} -Wno-deprecated-register"
)
endif()

add_custom_command(
OUTPUT version.c
COMMAND src/make-version.py ${CMAKE_CURRENT_BINARY_DIR}/version.c
MAIN_DEPENDENCY src/make-version.py
DEPENDS always_run
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating version.c"
)

# Dummy output to make sure we always re-evaluate the version step above.
add_custom_command(
OUTPUT always_run
COMMAND /usr/bin/env true)
COMMAND /usr/bin/env true
COMMENT "Triggering version.c regeneration"
)

add_library(librumur
${CMAKE_CURRENT_BINARY_DIR}/version.c
Expand Down
18 changes: 13 additions & 5 deletions murphi-format/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
add_custom_command(
OUTPUT resources_manpage.c
COMMAND ../misc/xxd.py doc/murphi-format.1 ${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.c
COMMAND ../misc/xxd.py doc/murphi-format.1
${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.c
MAIN_DEPENDENCY doc/murphi-format.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating resources_manpage.c"
)

add_executable(murphi-format
${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.c
Expand All @@ -20,12 +23,17 @@ target_link_libraries(murphi-format PRIVATE librumur)

add_custom_target(man-murphi-format
ALL
DEPENDS murphi-format.1.gz)
DEPENDS murphi-format.1.gz
COMMENT "murphi-format man page"
)
add_custom_command(
OUTPUT murphi-format.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi-format.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi-format.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi-format.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi-format.1.gz"
MAIN_DEPENDENCY doc/murphi-format.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi-format.1"
)

install(TARGETS murphi-format
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Expand Down
32 changes: 23 additions & 9 deletions murphi2c/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
# Define resources.
add_custom_command(
OUTPUT resources_manpage.cc
COMMAND ../misc/xxd.py doc/murphi2c.1 ${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.cc
COMMAND ../misc/xxd.py doc/murphi2c.1
${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.cc
MAIN_DEPENDENCY doc/murphi2c.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating resources_manpage.cc"
)
add_custom_command(
OUTPUT resources_c_prefix.cc
COMMAND ../misc/xxd.py resources/c_prefix.c ${CMAKE_CURRENT_BINARY_DIR}/resources_c_prefix.cc
COMMAND ../misc/xxd.py resources/c_prefix.c
${CMAKE_CURRENT_BINARY_DIR}/resources_c_prefix.cc
MAIN_DEPENDENCY resources/c_prefix.c
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating resources_c_prefix.cc"
)
add_custom_command(
OUTPUT resources_h_prefix.cc
COMMAND ../misc/xxd.py resources/h_prefix.h ${CMAKE_CURRENT_BINARY_DIR}/resources_h_prefix.cc
COMMAND ../misc/xxd.py resources/h_prefix.h
${CMAKE_CURRENT_BINARY_DIR}/resources_h_prefix.cc
MAIN_DEPENDENCY resources/h_prefix.h
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating resources_h_prefix.cc"
)

add_executable(murphi2c
${CMAKE_CURRENT_BINARY_DIR}/resources_c_prefix.cc
Expand Down Expand Up @@ -45,12 +54,17 @@ target_link_libraries(murphi2c
# Compress manpage
add_custom_target(man-murphi2c
ALL
DEPENDS murphi2c.1.gz)
DEPENDS murphi2c.1.gz
COMMENT "murphi2c man page"
)
add_custom_command(
OUTPUT murphi2c.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi2c.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi2c.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi2c.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi2c.1.gz"
MAIN_DEPENDENCY doc/murphi2c.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi2c.1"
)

install(TARGETS murphi2c
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Expand Down
18 changes: 13 additions & 5 deletions murphi2murphi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Define resources.
add_custom_command(
OUTPUT resources_manpage.cc
COMMAND ../misc/xxd.py doc/murphi2murphi.1 ${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.cc
COMMAND ../misc/xxd.py doc/murphi2murphi.1
${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.cc
MAIN_DEPENDENCY doc/murphi2murphi.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating resources_manpage.cc"
)

add_executable(murphi2murphi
${CMAKE_CURRENT_BINARY_DIR}/resources_manpage.cc
Expand Down Expand Up @@ -32,12 +35,17 @@ target_link_libraries(murphi2murphi
# Compress manpage
add_custom_target(man-murphi2murphi
ALL
DEPENDS murphi2murphi.1.gz)
DEPENDS murphi2murphi.1.gz
COMMENT "murphi2murphi man page"
)
add_custom_command(
OUTPUT murphi2murphi.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi2murphi.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi2murphi.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi2murphi.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi2murphi.1.gz"
MAIN_DEPENDENCY doc/murphi2murphi.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi2murphi.1"
)

install(TARGETS murphi2murphi
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Expand Down
11 changes: 9 additions & 2 deletions murphi2smv/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ add_custom_command(
MAIN_DEPENDENCY doc/murphi2smv.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating manpage.cc"
)

add_executable(murphi2smv
Expand All @@ -21,12 +22,18 @@ target_include_directories(murphi2smv PRIVATE

target_link_libraries(murphi2smv PRIVATE librumur)

add_custom_target(man-murphi2smv ALL DEPENDS murphi2smv.1.gz)
add_custom_target(man-murphi2smv
ALL
DEPENDS murphi2smv.1.gz
COMMENT "murphi2smv man page"
)
add_custom_command(
OUTPUT murphi2smv.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi2smv.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi2smv.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi2smv.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi2smv.1.gz"
MAIN_DEPENDENCY doc/murphi2smv.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi2smv.1"
)

install(TARGETS murphi2smv
Expand Down
18 changes: 13 additions & 5 deletions murphi2uclid/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
add_custom_command(
OUTPUT manpage.cc
COMMAND ../misc/xxd.py doc/murphi2uclid.1 ${CMAKE_CURRENT_BINARY_DIR}/manpage.cc
COMMAND ../misc/xxd.py doc/murphi2uclid.1
${CMAKE_CURRENT_BINARY_DIR}/manpage.cc
MAIN_DEPENDENCY doc/murphi2uclid.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating manpage.cc"
)

add_executable(murphi2uclid
${CMAKE_CURRENT_BINARY_DIR}/manpage.cc
Expand All @@ -24,12 +27,17 @@ target_link_libraries(murphi2uclid

add_custom_target(man-murphi2uclid
ALL
DEPENDS murphi2uclid.1.gz)
DEPENDS murphi2uclid.1.gz
COMMENT "murphi2uclid man page"
)
add_custom_command(
OUTPUT murphi2uclid.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi2uclid.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi2uclid.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi2uclid.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi2uclid.1.gz"
MAIN_DEPENDENCY doc/murphi2uclid.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi2uclid.1"
)

install(TARGETS murphi2uclid
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Expand Down
15 changes: 11 additions & 4 deletions murphi2xml/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ add_custom_command(
COMMAND ../misc/xxd.py doc/murphi2xml.1 ${CMAKE_CURRENT_BINARY_DIR}/manpage.cc
MAIN_DEPENDENCY doc/murphi2xml.1
DEPENDS ../misc/xxd.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating manpage.cc"
)

add_executable(murphi2xml
${CMAKE_CURRENT_BINARY_DIR}/manpage.cc
Expand All @@ -23,12 +25,17 @@ target_link_libraries(murphi2xml
# Compress manpages
add_custom_target(man-murphi2xml
ALL
DEPENDS murphi2xml.1.gz)
DEPENDS murphi2xml.1.gz
COMMENT "murphi2xml man page"
)
add_custom_command(
OUTPUT murphi2xml.1.gz
COMMAND gzip -9 --no-name --to-stdout doc/murphi2xml.1 >"${CMAKE_CURRENT_BINARY_DIR}/murphi2xml.1.gz"
COMMAND gzip -9 --no-name --to-stdout doc/murphi2xml.1
>"${CMAKE_CURRENT_BINARY_DIR}/murphi2xml.1.gz"
MAIN_DEPENDENCY doc/murphi2xml.1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "GZIP-compressing murphi2xml.1"
)

install(TARGETS murphi2xml
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Expand Down
Loading
Loading