From 286662f6549fc29469a51ebe6486529fe112bd49 Mon Sep 17 00:00:00 2001 From: Andrey Derzhavin Date: Sun, 9 Nov 2025 20:38:36 +0300 Subject: [PATCH 1/2] Upd gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5afaba3..483918e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ build/ .cache/ +__pycache__/ +*.png # Prerequisites *.d From 6be245eb4a974b6793d80951569ee5a4957e849c Mon Sep 17 00:00:00 2001 From: Andrey Derzhavin Date: Sun, 9 Nov 2025 20:59:12 +0300 Subject: [PATCH 2/2] [infra] Use lighting as submodule --- .github/workflows/build.yml | 2 ++ .gitmodules | 3 +++ CMakeLists.txt | 1 + cmake/dependencies.cmake | 7 ------ src/jit/lightning/CMakeLists.txt | 42 +------------------------------- third_party/CMakeLists.txt | 40 ++++++++++++++++++++++++++++++ third_party/lightning | 1 + 7 files changed, 48 insertions(+), 48 deletions(-) create mode 100644 .gitmodules create mode 100644 third_party/CMakeLists.txt create mode 160000 third_party/lightning diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 50ba5cd..d9ad611 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,6 +49,8 @@ jobs: steps: - name: Checkout repo and submodules uses: actions/checkout@v4 + with: + submodules: recursive - name: Install Ninja if: ${{ matrix.generator == 'Ninja' }} diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1989ab9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "third_party/lightning"] + path = third_party/lightning + url = git://git.git.savannah.gnu.org/lightning.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bc98a4..1553b0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ include(defaults) include(dependencies) include(utils) +add_subdirectory(third_party) add_subdirectory(src) add_subdirectory(tools) diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index a7853a1..3c2e89f 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -54,13 +54,6 @@ CPMAddPackage( OPTIONS "ASMJIT_STATIC ON" OPTIONS "ASMJIT_NO_DEPRECATED ON") -CPMAddPackage( - NAME lightning - URL "https://ftp.gnu.org/gnu/lightning/lightning-2.2.3.tar.gz" - EXCLUDE_FROM_ALL True - DOWNLOAD_ONLY True -) - # mir CPMAddPackage( NAME mir diff --git a/src/jit/lightning/CMakeLists.txt b/src/jit/lightning/CMakeLists.txt index a5183a0..773ec70 100644 --- a/src/jit/lightning/CMakeLists.txt +++ b/src/jit/lightning/CMakeLists.txt @@ -1,48 +1,8 @@ -# Adding this library Sorry for such creepy code - -include(ExternalProject) - -find_program(MAKE_EXECUTABLE NAMES make REQUIRED) - -set(LIGHTNING_INSTALL_DIR ${lightning_BINARY_DIR}/install) - -set(LIGHTNING_LIBRARY - "${LIGHTNING_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lightning${CMAKE_STATIC_LIBRARY_SUFFIX}" -) - -ExternalProject_Add( - lightning_lib - SOURCE_DIR ${lightning_SOURCE_DIR} - PREFIX ${LIGHTNING_INSTALL_DIR} - UPDATE_DISCONNECTED TRUE # Do not check git updates - # Configure: run autotools - CONFIGURE_COMMAND - ./configure --prefix=${LIGHTNING_INSTALL_DIR} CFLAGS=-O2 --disable-shared - CC=${CMAKE_C_COMPILER} --disable-disassembler - # Build & install - BUILD_COMMAND ${MAKE_EXECUTABLE} -j - INSTALL_COMMAND ${MAKE_EXECUTABLE} install - LOG_CONFIGURE False - LOG_BUILD False - LOG_MERGED_STDOUTERR False - LOG_OUTPUT_ON_FAILURE True - BUILD_IN_SOURCE 1 - BUILD_BYPRODUCTS ${LIGHTNING_LIBRARY}) - -set(LIGHTNING_INCLUDE_DIR "${LIGHTNING_INSTALL_DIR}/include") -make_directory(${LIGHTNING_INCLUDE_DIR}) - -add_library(lightning_iface INTERFACE) -target_include_directories(lightning_iface INTERFACE ${LIGHTNING_INCLUDE_DIR}) -target_link_libraries(lightning_iface INTERFACE ${LIGHTNING_LIBRARY}) -add_dependencies(lightning_iface lightning_lib) - -# --------------------------------------------- add_library(prot_jit_lightning STATIC lightning.cc) target_link_libraries( prot_jit_lightning PUBLIC PROT::isa PROT::exec_engine - PRIVATE PROT::defaults fmt::fmt PROT::JIT::base lightning_iface) + PRIVATE PROT::defaults fmt::fmt PROT::JIT::base PROT::gnu_lightning) target_include_directories(prot_jit_lightning PUBLIC include) add_library(PROT::JIT::lightning ALIAS prot_jit_lightning) diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt new file mode 100644 index 0000000..d522d81 --- /dev/null +++ b/third_party/CMakeLists.txt @@ -0,0 +1,40 @@ +# Lightning build & configure + +include(ExternalProject) + +find_program(MAKE_EXECUTABLE NAMES make REQUIRED) + +set(LIGHTNING_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/lightning/install) + +set(LIGHTNING_LIBRARY + "${LIGHTNING_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lightning${CMAKE_STATIC_LIBRARY_SUFFIX}" +) + +ExternalProject_Add( + lightning_lib + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lightning + PREFIX ${LIGHTNING_INSTALL_DIR} + UPDATE_DISCONNECTED TRUE # Do not check git updates + # Configure: run autotools + CONFIGURE_COMMAND + ./bootstrap && ./configure --prefix=${LIGHTNING_INSTALL_DIR} CFLAGS=-O2 + --disable-shared CC=${CMAKE_C_COMPILER} --disable-disassembler + # Build & install + BUILD_COMMAND ${MAKE_EXECUTABLE} -j + INSTALL_COMMAND ${MAKE_EXECUTABLE} install + LOG_CONFIGURE False + LOG_BUILD False + LOG_MERGED_STDOUTERR False + LOG_OUTPUT_ON_FAILURE True + BUILD_IN_SOURCE 1 + BUILD_BYPRODUCTS ${LIGHTNING_LIBRARY}) + +set(LIGHTNING_INCLUDE_DIR "${LIGHTNING_INSTALL_DIR}/include") +make_directory(${LIGHTNING_INCLUDE_DIR}) + +add_library(lightning_iface INTERFACE) +target_include_directories(lightning_iface INTERFACE ${LIGHTNING_INCLUDE_DIR}) +target_link_libraries(lightning_iface INTERFACE ${LIGHTNING_LIBRARY}) +add_dependencies(lightning_iface lightning_lib) +set_target_properties(lightning_iface PROPERTIES EXCLUDE_FROM_ALL True) +add_library(PROT::gnu_lightning ALIAS lightning_iface) diff --git a/third_party/lightning b/third_party/lightning new file mode 160000 index 0000000..a6bb2b5 --- /dev/null +++ b/third_party/lightning @@ -0,0 +1 @@ +Subproject commit a6bb2b5a7cf36e074e12ccaed32990b437deb784