diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-04-06 20:23:55 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-04-06 20:23:55 +0530 |
| commit | 85a2c290f922f648e5e9f0e69c03116f2d0aeaa6 (patch) | |
| tree | 0aff3bd3cda13a626615931c1a2829baee717ff2 | |
| parent | bbde1438e9c31cc83d8c4835ea97a0eaeae4e192 (diff) | |
| download | null-browser-85a2c290f922f648e5e9f0e69c03116f2d0aeaa6.tar.gz null-browser-85a2c290f922f648e5e9f0e69c03116f2d0aeaa6.zip | |
Change build setup to install lua prefix correctly + static build libluv
Diffstat (limited to '')
| -rw-r--r-- | CMakeLists.txt | 39 | ||||
| -rw-r--r-- | Makefile | 32 | ||||
| -rw-r--r-- | flake.nix | 15 | ||||
| -rw-r--r-- | nix/libluv.nix | 86 | ||||
| -rw-r--r-- | src/EventQueue.cpp | 3 | ||||
| -rw-r--r-- | src/LuaRuntime.cpp | 6 |
6 files changed, 98 insertions, 83 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index ff74ded..dc6c9e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,9 +16,14 @@ find_package(PkgConfig REQUIRED) set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) -# TODO: Please fix this. This sucks -# Path to installed lua/ directory -add_compile_definitions(PROJECT_LUA_PATH="${CMAKE_CURRENT_LIST_DIR}/lua/?.lua") +# message(COMMENT "${CMAKE_INSTALL_PREFIX} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}") + +# Lua path +if(NOT DEFINED NULL_LUA_PREFIX OR NOT NULL_LUA_PREFIX) + set(NULL_LUA_PREFIX "${CMAKE_SOURCE_DIR}/lua") +endif() +set(PROJECT_LUA_PATH "${NULL_LUA_PREFIX}/?.lua") +add_compile_definitions(PROJECT_LUA_PATH="${PROJECT_LUA_PATH}") if(DEFINED ENV{RELEASE}) set(CMAKE_BUILD_TYPE Release) @@ -34,7 +39,7 @@ list(FILTER SOURCE_FILES EXCLUDE REGEX "src/main.cpp$") file(GLOB_RECURSE HEADER_FILES src/*.hpp) file(GLOB_RECURSE SPEC_FILES spec/*.cpp) -# project +# Project add_executable(${PROJECT}) target_sources(${PROJECT} PRIVATE src/main.cpp ${SOURCE_FILES}) target_include_directories(${PROJECT} PRIVATE src/) @@ -49,6 +54,11 @@ target_link_libraries(${PROJECT} Qt6::Widgets Qt6::WebEngineWidgets) +# Lua.LUV +pkg_check_modules(LuaLUV REQUIRED libluv) +target_include_directories(${PROJECT} PRIVATE ${LuaLUV_INCLUDE_DIRS}) +target_link_libraries(${PROJECT} ${LuaLUV_LINK_LIBRARIES}) + # LuaJIT pkg_check_modules(LuaJIT REQUIRED luajit) target_include_directories(${PROJECT} PRIVATE ${LuaJIT_INCLUDE_DIRS}) @@ -59,11 +69,6 @@ pkg_check_modules(LibUV REQUIRED libuv) target_include_directories(${PROJECT} PRIVATE ${LibUV_INCLUDE_DIRS}) target_link_libraries(${PROJECT} ${LibUV_LINK_LIBRARIES}) -# Lua.LUV -pkg_check_modules(LuaLUV REQUIRED libluv) -target_include_directories(${PROJECT} PRIVATE ${LuaLUV_INCLUDE_DIRS}) -target_link_libraries(${PROJECT} ${LuaLUV_LINK_LIBRARIES}) - # Testing enable_testing() @@ -72,22 +77,26 @@ target_sources(tests PRIVATE ${SOURCE_FILES} ${MOC_SRCS} ${SPEC_FILES}) target_include_directories(tests PRIVATE src/ spec/ + ${LuaLUV_INCLUDE_DIRS} ${LuaJIT_INCLUDE_DIRS} - ${LibUV_INCLUDE_DIRS} - ${LuaLUV_INCLUDE_DIRS}) + ${LibUV_INCLUDE_DIRS}) target_link_libraries(tests PRIVATE Qt6::Core Qt6::Widgets Qt6::WebEngineWidgets Qt6::Test + ${LuaLUV_LINK_LIBRARIES} ${LuaJIT_LINK_LIBRARIES} - ${LibUV_LINK_LIBRARIES} - ${LuaLUV_LINK_LIBRARIES}) + ${LibUV_LINK_LIBRARIES}) add_test(NAME NullBrowserTests COMMAND tests) + +# Install install(TARGETS ${PROJECT} EXPORT "${TARGETS_EXPORT_NAME}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" -) + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") +install(DIRECTORY lua/ DESTINATION lua) +# file(COPY "${CMAKE_SOURCE_DIR}/lua" DESTINATION "${CMAKE_INSTALL_PREFIX}") + @@ -1,36 +1,42 @@ -.PHONY: clean build build-release test check +.PHONY: clean build build-release build-source test run check -all: build +all: build-dev PREFIX = "${PWD}/build/installdir" +LUA_PREFIX = "" -build: +build-source: @mkdir -p build - @cd build/ && cmake .. -DCMAKE_INSTALL_PREFIX="${PREFIX}" && make -j12 - # cp --no-preserve=mode,ownership -r ${CEF_PACKAGE_PATH}/lib/* ./build/lib/ - # cp --no-preserve=mode,ownership -r ${CEF_PACKAGE_PATH}/share/cef/* ./build/lib/ + @cd build/ && cmake .. \ + -DNULL_LUA_PREFIX="${LUA_PREFIX}" \ + -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ + && make -j8 + +dev-setup: @cp build/compile_commands.json . -install: build-release +build-dev: build-source dev-setup + +build: + RELEASE=1 make build-source LUA_PREFIX="${PREFIX}/lua" + +install: cd build && cmake --install . --prefix "${PREFIX}" -test: build +test: build-source cd build && QT_QPA_PLATFORM=offscreen ctest -V clean: rm -rf build/ rm -f compile_commands.json -run: build +run: build-dev ./build/null-browser debug: - DEBUG=1 make build + DEBUG=1 make build-dev gdb ./build/null-browser -build-release: - RELEASE=1 make build - check: clang-format -i ./src/**/*.{hpp,cpp} clang-tidy --config-file=.clang-tidy ./src/**/*.{hpp,cpp} @@ -8,16 +8,15 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; config.allowUnsupportedSystem = true; }; + inherit (pkgs) pkgsStatic; - myPkgs = with pkgs; { + myPkgs = { libuv = pkgsStatic.libuv; luajit = pkgsStatic.luajit; - qt = qt6; # pkgsStatic.qt6 - lua-libluv = lua-libluv; - }; - - lua-libluv = pkgs.callPackage (import ./nix/libluv.nix) { - inherit (myPkgs) libuv luajit; + qt = pkgs.qt6; # pkgsStatic.qt6 + lua-libluv = pkgs.callPackage (import ./nix/libluv.nix) { + inherit (myPkgs) libuv luajit; + }; }; dependencies = [ @@ -41,7 +40,7 @@ nativeBuildInputs = with pkgs; [gobject-introspection]; LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; - FOOBARITY = "${lua-libluv}"; + FOOBARITY = "${myPkgs.lua-libluv}"; }; packages.default = pkgs.stdenv.mkDerivation { diff --git a/nix/libluv.nix b/nix/libluv.nix index 6909ead..e2d4652 100644 --- a/nix/libluv.nix +++ b/nix/libluv.nix @@ -1,48 +1,48 @@ -{ luajitPackages, luajit, libuv, fetchurl, ... }: +{ luajitPackages, luajit, libuv, fetchurl, stdenv, fetchgit, cmake, git, ... }: let - lua-libluv = luajitPackages.libluv.overrideAttrs (oldAttrs: rec { - version = "1.50.0-1"; - buildInputs = [luajit libuv]; - knownRockspec = (fetchurl { - url = "mirror://luarocks/luv-${version}.rockspec"; - sha256 = "sha256-IL2EejtmT0pw0cAupMz0gvP3a19NPsc45W1RaoeGJgY="; - }).outPath; - src = fetchurl { - url = "https://github.com/luvit/luv/releases/download/${version}/luv-${version}.tar.gz"; - sha256 = "sha256-2GfDAk2cmB1U8u3YPhP9bcEVjwYIY197HA9rVYa1vDQ="; - }; - }); - - # TODO: Figure out static linking - # lua-libluv = with pkgs; stdenv.mkDerivation rec { + # lua-libluv = luajitPackages.libluv.overrideAttrs (oldAttrs: rec { # version = "1.50.0-1"; - # pname = "libluv"; - # src = fetchgit { - # url = "https://github.com/luvit/luv"; - # tag = version; - # sha256 = "sha256-pmp/lUX2lAFMZA8LiL21G0fNFLEOpNWLp5UPBubTQeM="; - # fetchSubmodules = true; - # leaveDotGit = true; + # buildInputs = [luajit libuv]; + # knownRockspec = (fetchurl { + # url = "mirror://luarocks/luv-${version}.rockspec"; + # sha256 = "sha256-IL2EejtmT0pw0cAupMz0gvP3a19NPsc45W1RaoeGJgY="; + # }).outPath; + # src = fetchurl { + # url = "https://github.com/luvit/luv/releases/download/${version}/luv-${version}.tar.gz"; + # sha256 = "sha256-2GfDAk2cmB1U8u3YPhP9bcEVjwYIY197HA9rVYa1vDQ="; # }; - # cmakeFlags = [ - # "-DBUILD_MODULE=OFF" - # "-DBUILD_STATIC_LIBS=ON" - # "-DWITH_LUA_ENGINE=LuaJIT" - # "-DWITH_SHARED_LIBUV=OFF" - # "-DLUA_BUILD_TYPE=Static" - # ]; - # postInstall = '' - # mkdir -p $out/lib/pkgconfig; - # cp $src/libluv.pc.in $out/lib/pkgconfig/libluv.pc; - # substituteInPlace $out/lib/pkgconfig/libluv.pc \ - # --replace "@prefix@" "$out" \ - # --replace "@libdir@" "$out/lib" \ - # --replace "@includedir@" "$out/include" \ - # --replace "@LUV_VERSION@" ${version} \ - # --replace "@LIBS" ""; - # ''; - # buildInputs = [pkgs.luajit pkgs.libuv]; - # nativeBuildInputs = [cmake git]; - # }; + # }); + + # TODO: Figure out static linking + lua-libluv = stdenv.mkDerivation rec { + version = "1.50.0-1"; + pname = "libluv"; + src = fetchgit { + url = "https://github.com/luvit/luv"; + tag = version; + sha256 = "sha256-pmp/lUX2lAFMZA8LiL21G0fNFLEOpNWLp5UPBubTQeM="; + fetchSubmodules = true; + leaveDotGit = true; + }; + cmakeFlags = [ + "-DBUILD_MODULE=OFF" + "-DBUILD_STATIC_LIBS=ON" + "-DWITH_LUA_ENGINE=LuaJIT" + "-DWITH_SHARED_LIBUV=OFF" + "-DLUA_BUILD_TYPE=System" + ]; + postInstall = '' + mkdir -p $out/lib/pkgconfig; + cp $src/libluv.pc.in $out/lib/pkgconfig/libluv.pc; + substituteInPlace $out/lib/pkgconfig/libluv.pc \ + --replace "@prefix@" "$out" \ + --replace "@libdir@" "$out/lib" \ + --replace "@includedir@" "$out/include" \ + --replace "@LUV_VERSION@" ${version} \ + --replace "@LIBS" ""; + ''; + buildInputs = [luajit libuv]; + nativeBuildInputs = [cmake git]; + }; in lua-libluv diff --git a/src/EventQueue.cpp b/src/EventQueue.cpp index eebda76..9fef368 100644 --- a/src/EventQueue.cpp +++ b/src/EventQueue.cpp @@ -18,6 +18,9 @@ void EventQueue::dispatch_event(BrowserEvent *event) { // TODO: Pattern filter event_handler.handler(event); } + + // TODO: to delete or not to delete + // delete event; }); } diff --git a/src/LuaRuntime.cpp b/src/LuaRuntime.cpp index 328cd89..d54bb37 100644 --- a/src/LuaRuntime.cpp +++ b/src/LuaRuntime.cpp @@ -271,8 +271,7 @@ int LuaRuntime::lua_tab_list(lua_State *state) { int LuaRuntime::lua_history_back(lua_State *state) { auto &runtime = LuaRuntime::instance(); - qsizetype history_index = - lua_isnoneornil(state, 1) ? 1 : lua_tointeger(state, 1); + qsizetype history_index = lua_isnoneornil(state, 1) ? 1 : lua_tointeger(state, 1); WebViewId tab_id = lua_isnoneornil(state, 2) ? 0 : lua_tointeger(state, 2); @@ -283,8 +282,7 @@ int LuaRuntime::lua_history_back(lua_State *state) { int LuaRuntime::lua_history_forward(lua_State *state) { auto &runtime = LuaRuntime::instance(); - qsizetype history_index = - lua_isnoneornil(state, 1) ? 1 : lua_tointeger(state, 1); + qsizetype history_index = lua_isnoneornil(state, 1) ? 1 : lua_tointeger(state, 1); WebViewId tab_id = lua_isnoneornil(state, 2) ? 0 : lua_tointeger(state, 2); |
