aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-04-06 20:23:55 +0530
committerAkshay Nair <phenax5@gmail.com>2025-04-06 20:23:55 +0530
commit85a2c290f922f648e5e9f0e69c03116f2d0aeaa6 (patch)
tree0aff3bd3cda13a626615931c1a2829baee717ff2
parentbbde1438e9c31cc83d8c4835ea97a0eaeae4e192 (diff)
downloadnull-browser-85a2c290f922f648e5e9f0e69c03116f2d0aeaa6.tar.gz
null-browser-85a2c290f922f648e5e9f0e69c03116f2d0aeaa6.zip
Change build setup to install lua prefix correctly + static build libluv
-rw-r--r--CMakeLists.txt39
-rw-r--r--Makefile32
-rw-r--r--flake.nix15
-rw-r--r--nix/libluv.nix86
-rw-r--r--src/EventQueue.cpp3
-rw-r--r--src/LuaRuntime.cpp6
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}")
+
diff --git a/Makefile b/Makefile
index 8e341db..bd58185 100644
--- a/Makefile
+++ b/Makefile
@@ -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}
diff --git a/flake.nix b/flake.nix
index 3626549..3d06d0d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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);