diff --git a/CMakeLists.txt b/CMakeLists.txt index b728232..48dbda7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,5 +7,5 @@ add_subdirectory("vendor/sol2") include_directories("include") include_directories("vendor/sol2/include") -add_executable(grbc src/main.cc src/utils.cc src/file.cc src/target_exe.cc src/platform.cc src/ninja.cc src/generator.cc src/target_lib.cc src/package.cc) +add_executable(grbc src/main.cc src/utils.cc src/file.cc src/target_exe.cc src/platform.cc src/ninja.cc src/generator.cc src/target_lib.cc src/package.cc src/ext.cc src/ext_pkg_config.cc) target_link_libraries(grbc sol2 lua) \ No newline at end of file diff --git a/HConfig b/HConfig index e6a3a9d..5042e3f 100644 --- a/HConfig +++ b/HConfig @@ -1,6 +1,35 @@ grbc_want_version("1.0") grbc_load_platform("platform.hcfg") +local grbc_pkg_config_ext = grbc_library(LibraryConfig.new({ + name = "libgrbc_pkg_config", + language_type = LanguageType.Cpp, + files = { + grbc_file("src/ext_pkg_config.cc") + }, + lib_type = LibraryType.Shared, + + requirements = {}, + compile_flags = {}, + linker_flags = {}, + + include_dirs = { + "include", + "vendor/sol2/include" + }, + + package_config = PackageConfig.new({ + name = "libgrbc_pkg_config", + libraries = {}, + include_dirs = { + grbc_file("include"), + grbc_file("vendor/sol2/include") + }, + compile_flags = {}, + linker_flags = {}, + }) +})) + local grbc_lib = grbc_library(LibraryConfig.new({ name = "libgrbc", language_type = LanguageType.Cpp, @@ -15,7 +44,7 @@ local grbc_lib = grbc_library(LibraryConfig.new({ grbc_file("src/package.cc"), grbc_file("src/ext.cc") }, - lib_type = LibraryType.Shared, + lib_type = LibraryType.Static, requirements = {}, compile_flags = {}, @@ -51,7 +80,8 @@ local grbc_exe = grbc_executable(ExecutableConfig.new({ linker_flags = "-llua -lm -ldl" }), - grbc_pkg("libgrbc") + grbc_pkg("libgrbc"), + grbc_pkg("libgrbc_pkg_config") }, compile_flags = { }, diff --git a/build.ninja b/build.ninja index e53a4c6..8712031 100644 --- a/build.ninja +++ b/build.ninja @@ -40,65 +40,74 @@ rule archive command = rm -f $out; ar crs $out $in description = Creating static library $out +## Compile: src/ext_pkg_config.cc ## + +build $builddir/src/ext_pkg_config.o: cxx src/ext_pkg_config.cc + p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + +## Link: libgrbc_pkg_config.so ## + +build $builddir/libgrbc_pkg_config.so: link_cxx $builddir/src/ext_pkg_config.o + p_linker_flags = -shared -Lbuild -Wl,-rpath,build:. + p_cflags = + ## Compile: src/file.cc ## build $builddir/src/file.o: cxx src/file.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/ninja.cc ## build $builddir/src/ninja.o: cxx src/ninja.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/platform.cc ## build $builddir/src/platform.o: cxx src/platform.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/target_exe.cc ## build $builddir/src/target_exe.o: cxx src/target_exe.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/utils.cc ## build $builddir/src/utils.o: cxx src/utils.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/generator.cc ## build $builddir/src/generator.o: cxx src/generator.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/target_lib.cc ## build $builddir/src/target_lib.o: cxx src/target_lib.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/package.cc ## build $builddir/src/package.o: cxx src/package.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include ## Compile: src/ext.cc ## build $builddir/src/ext.o: cxx src/ext.cc - p_cflags = -fPIC -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include -## Link: libgrbc.so ## +## Link: libgrbc.a ## -build $builddir/libgrbc.so: link_cxx $builddir/src/file.o $builddir/src/ninja.o $builddir/src/platform.o $builddir/src/target_exe.o $builddir/src/utils.o $builddir/src/generator.o $builddir/src/target_lib.o $builddir/src/package.o $builddir/src/ext.o - p_linker_flags = -shared -Lbuild -Wl,-rpath,build:. - p_cflags = +build $builddir/libgrbc.a: archive $builddir/src/file.o $builddir/src/ninja.o $builddir/src/platform.o $builddir/src/target_exe.o $builddir/src/utils.o $builddir/src/generator.o $builddir/src/target_lib.o $builddir/src/package.o $builddir/src/ext.o ## Compile: src/main.cc ## build $builddir/src/main.o: cxx src/main.cc - p_cflags = -Iinclude -Ivendor/sol2/include + p_cflags = -Iinclude -Ivendor/sol2/include -Iinclude -Ivendor/sol2/include ## Link: grbc ## -build $builddir/grbc: link_cxx $builddir/src/main.o | $builddir/libgrbc.so - p_linker_flags = -llua -lm -ldl build/libgrbc.so -Lbuild -Wl,-rpath,build:. +build $builddir/grbc: link_cxx $builddir/src/main.o | $builddir/libgrbc.a $builddir/libgrbc_pkg_config.so + p_linker_flags = -llua -lm -ldl build/libgrbc.a build/libgrbc_pkg_config.so -Lbuild -Wl,-rpath,build:. p_cflags = diff --git a/compile_commands.json b/compile_commands.json index b0c89fa..570bd36 100644 --- a/compile_commands.json +++ b/compile_commands.json @@ -1,506 +1,74 @@ [ { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/grbc.dir", - "output": "cmake_object_order_depends_target_grbc" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/file.o -MF build/src/file.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/file.cc -o build/src/file.o", + "file": "src/file.cc", + "output": "build/src/file.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/main.cc.o -MF CMakeFiles/grbc.dir/src/main.cc.o.d -o CMakeFiles/grbc.dir/src/main.cc.o -c /home/interfiber/dev/grbc/src/main.cc", - "file": "/home/interfiber/dev/grbc/src/main.cc", - "output": "CMakeFiles/grbc.dir/src/main.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ninja.o -MF build/src/ninja.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/ninja.cc -o build/src/ninja.o", + "file": "src/ninja.cc", + "output": "build/src/ninja.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/utils.cc.o -MF CMakeFiles/grbc.dir/src/utils.cc.o.d -o CMakeFiles/grbc.dir/src/utils.cc.o -c /home/interfiber/dev/grbc/src/utils.cc", - "file": "/home/interfiber/dev/grbc/src/utils.cc", - "output": "CMakeFiles/grbc.dir/src/utils.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/platform.o -MF build/src/platform.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/platform.cc -o build/src/platform.o", + "file": "src/platform.cc", + "output": "build/src/platform.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/file.cc.o -MF CMakeFiles/grbc.dir/src/file.cc.o.d -o CMakeFiles/grbc.dir/src/file.cc.o -c /home/interfiber/dev/grbc/src/file.cc", - "file": "/home/interfiber/dev/grbc/src/file.cc", - "output": "CMakeFiles/grbc.dir/src/file.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/target_exe.o -MF build/src/target_exe.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/target_exe.cc -o build/src/target_exe.o", + "file": "src/target_exe.cc", + "output": "build/src/target_exe.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/target_exe.cc.o -MF CMakeFiles/grbc.dir/src/target_exe.cc.o.d -o CMakeFiles/grbc.dir/src/target_exe.cc.o -c /home/interfiber/dev/grbc/src/target_exe.cc", - "file": "/home/interfiber/dev/grbc/src/target_exe.cc", - "output": "CMakeFiles/grbc.dir/src/target_exe.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/utils.o -MF build/src/utils.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/utils.cc -o build/src/utils.o", + "file": "src/utils.cc", + "output": "build/src/utils.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/platform.cc.o -MF CMakeFiles/grbc.dir/src/platform.cc.o.d -o CMakeFiles/grbc.dir/src/platform.cc.o -c /home/interfiber/dev/grbc/src/platform.cc", - "file": "/home/interfiber/dev/grbc/src/platform.cc", - "output": "CMakeFiles/grbc.dir/src/platform.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/generator.o -MF build/src/generator.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/generator.cc -o build/src/generator.o", + "file": "src/generator.cc", + "output": "build/src/generator.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/ninja.cc.o -MF CMakeFiles/grbc.dir/src/ninja.cc.o.d -o CMakeFiles/grbc.dir/src/ninja.cc.o -c /home/interfiber/dev/grbc/src/ninja.cc", - "file": "/home/interfiber/dev/grbc/src/ninja.cc", - "output": "CMakeFiles/grbc.dir/src/ninja.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/target_lib.o -MF build/src/target_lib.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/target_lib.cc -o build/src/target_lib.o", + "file": "src/target_lib.cc", + "output": "build/src/target_lib.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/lib64/ccache/g++ -I/home/interfiber/dev/grbc/include -isystem /home/interfiber/dev/grbc/vendor/sol2/include -O2 -g -DNDEBUG -MD -MT CMakeFiles/grbc.dir/src/generator.cc.o -MF CMakeFiles/grbc.dir/src/generator.cc.o.d -o CMakeFiles/grbc.dir/src/generator.cc.o -c /home/interfiber/dev/grbc/src/generator.cc", - "file": "/home/interfiber/dev/grbc/src/generator.cc", - "output": "CMakeFiles/grbc.dir/src/generator.cc.o" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/package.o -MF build/src/package.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/package.cc -o build/src/package.o", + "file": "src/package.cc", + "output": "build/src/package.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": ": && /usr/lib64/ccache/g++ -O2 -g -DNDEBUG CMakeFiles/grbc.dir/src/main.cc.o CMakeFiles/grbc.dir/src/utils.cc.o CMakeFiles/grbc.dir/src/file.cc.o CMakeFiles/grbc.dir/src/target_exe.cc.o CMakeFiles/grbc.dir/src/platform.cc.o CMakeFiles/grbc.dir/src/ninja.cc.o CMakeFiles/grbc.dir/src/generator.cc.o -o grbc -llua && :", - "file": "CMakeFiles/grbc.dir/src/main.cc.o", - "output": "grbc" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext.o -MF build/src/ext.o.d -fPIC -Iinclude -Ivendor/sol2/include -c src/ext.cc -o build/src/ext.o", + "file": "src/ext.cc", + "output": "build/src/ext.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/edit_cache.util", - "output": "edit_cache" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -o build/libgrbc.so build/src/file.o build/src/ninja.o build/src/platform.o build/src/target_exe.o build/src/utils.o build/src/generator.o build/src/target_lib.o build/src/package.o build/src/ext.o -shared -Lbuild -Wl,-rpath,build:. ", + "file": "build/src/file.o", + "output": "build/libgrbc.so" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/rebuild_cache.util", - "output": "rebuild_cache" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -MMD -MT build/src/main.o -MF build/src/main.o.d -Iinclude -Ivendor/sol2/include -c src/main.cc -o build/src/main.o", + "file": "src/main.cc", + "output": "build/src/main.o" }, { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build && /usr/bin/cmake -P cmake_install.cmake", - "file": "all", - "output": "CMakeFiles/install.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/install.util", - "output": "install" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build && /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake", - "file": "all", - "output": "CMakeFiles/install/local.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/install/local.util", - "output": "install/local" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build && /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake", - "file": "all", - "output": "CMakeFiles/install/strip.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "CMakeFiles/install/strip.util", - "output": "install/strip" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/Experimental", - "output": "vendor/sol2/Experimental" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/Nightly", - "output": "vendor/sol2/Nightly" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/Continuous", - "output": "vendor/sol2/Continuous" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyMemoryCheck", - "output": "vendor/sol2/NightlyMemoryCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyStart", - "output": "vendor/sol2/NightlyStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyUpdate", - "output": "vendor/sol2/NightlyUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyConfigure", - "output": "vendor/sol2/NightlyConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyBuild", - "output": "vendor/sol2/NightlyBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyTest", - "output": "vendor/sol2/NightlyTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyCoverage", - "output": "vendor/sol2/NightlyCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlyMemCheck", - "output": "vendor/sol2/NightlyMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/NightlySubmit", - "output": "vendor/sol2/NightlySubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalStart", - "output": "vendor/sol2/ExperimentalStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalUpdate", - "output": "vendor/sol2/ExperimentalUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalConfigure", - "output": "vendor/sol2/ExperimentalConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalBuild", - "output": "vendor/sol2/ExperimentalBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalTest", - "output": "vendor/sol2/ExperimentalTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalCoverage", - "output": "vendor/sol2/ExperimentalCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalMemCheck", - "output": "vendor/sol2/ExperimentalMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ExperimentalSubmit", - "output": "vendor/sol2/ExperimentalSubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousStart", - "output": "vendor/sol2/ContinuousStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousUpdate", - "output": "vendor/sol2/ContinuousUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousConfigure", - "output": "vendor/sol2/ContinuousConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousBuild", - "output": "vendor/sol2/ContinuousBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousTest", - "output": "vendor/sol2/ContinuousTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousCoverage", - "output": "vendor/sol2/ContinuousCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousMemCheck", - "output": "vendor/sol2/ContinuousMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/ContinuousSubmit", - "output": "vendor/sol2/ContinuousSubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/edit_cache.util", - "output": "vendor/sol2/edit_cache" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/rebuild_cache.util", - "output": "vendor/sol2/rebuild_cache" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build/vendor/sol2 && /usr/bin/cmake -P cmake_install.cmake", - "file": "vendor/sol2/all", - "output": "vendor/sol2/CMakeFiles/install.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/install.util", - "output": "vendor/sol2/install" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build/vendor/sol2 && /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake", - "file": "vendor/sol2/all", - "output": "vendor/sol2/CMakeFiles/install/local.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/install/local.util", - "output": "vendor/sol2/install/local" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "cd /home/interfiber/dev/grbc/build/vendor/sol2 && /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake", - "file": "vendor/sol2/all", - "output": "vendor/sol2/CMakeFiles/install/strip.util" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/CMakeFiles/install/strip.util", - "output": "vendor/sol2/install/strip" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/Continuous", - "output": "Continuous" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousBuild", - "output": "ContinuousBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousConfigure", - "output": "ContinuousConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousCoverage", - "output": "ContinuousCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousMemCheck", - "output": "ContinuousMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousStart", - "output": "ContinuousStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousSubmit", - "output": "ContinuousSubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousTest", - "output": "ContinuousTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ContinuousUpdate", - "output": "ContinuousUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/Experimental", - "output": "Experimental" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalBuild", - "output": "ExperimentalBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalConfigure", - "output": "ExperimentalConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalCoverage", - "output": "ExperimentalCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalMemCheck", - "output": "ExperimentalMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalStart", - "output": "ExperimentalStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalSubmit", - "output": "ExperimentalSubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalTest", - "output": "ExperimentalTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/ExperimentalUpdate", - "output": "ExperimentalUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/Nightly", - "output": "Nightly" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyBuild", - "output": "NightlyBuild" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyConfigure", - "output": "NightlyConfigure" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyCoverage", - "output": "NightlyCoverage" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyMemCheck", - "output": "NightlyMemCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyMemoryCheck", - "output": "NightlyMemoryCheck" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyStart", - "output": "NightlyStart" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlySubmit", - "output": "NightlySubmit" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyTest", - "output": "NightlyTest" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "vendor/sol2/NightlyUpdate", - "output": "NightlyUpdate" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "", - "file": "grbc", - "output": "all" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/bin/cmake -P /home/interfiber/dev/grbc/build/CMakeFiles/VerifyGlobs.cmake", - "file": "/home/interfiber/dev/grbc/build/CMakeFiles/VerifyGlobs.cmake_force", - "output": "/home/interfiber/dev/grbc/build/CMakeFiles/cmake.verify_globs" - }, - { - "directory": "/home/interfiber/dev/grbc/build", - "command": "/usr/bin/cmake --regenerate-during-build -S/home/interfiber/dev/grbc -B/home/interfiber/dev/grbc/build", - "file": "/home/interfiber/dev/grbc/build/CMakeFiles/cmake.verify_globs", - "output": "build.ninja" + "directory": "/home/interfiber/dev/grbc", + "command": "/usr/lib64/ccache/g++ -o build/grbc build/src/main.o -llua -lm -ldl build/libgrbc.so -Lbuild -Wl,-rpath,build:. ", + "file": "build/src/main.o", + "output": "build/grbc" } ] diff --git a/include/grbc/ext.h b/include/grbc/ext.h index c10d95e..ed9968b 100644 --- a/include/grbc/ext.h +++ b/include/grbc/ext.h @@ -1,8 +1,13 @@ #pragma once +#include "sol/state.hpp" #include #define GRBC_EXT_pkg_config_NAME "GRBC_EXT_pkg_config" +typedef void (*EXT_HookInit)(sol::state &lua); + struct Extension { std::string name; + + EXT_HookInit hook_init = nullptr; }; \ No newline at end of file diff --git a/include/grbc/ext_pkg_config.h b/include/grbc/ext_pkg_config.h new file mode 100644 index 0000000..bdd1b53 --- /dev/null +++ b/include/grbc/ext_pkg_config.h @@ -0,0 +1,7 @@ +#pragma once +#include "grbc/ext.h" + +/** + * Get the grbc pkg-config extension + */ +Extension grbc_pkg_config(); \ No newline at end of file diff --git a/include/grbc/spec.h b/include/grbc/spec.h index 2a8f1fe..73fede5 100644 --- a/include/grbc/spec.h +++ b/include/grbc/spec.h @@ -1,4 +1,5 @@ #pragma once +#include "grbc/ext.h" #include #include #include @@ -222,4 +223,8 @@ std::string grbc_get_lib_extension(LibraryType lib_type); Package grbc_bake_package_config(const PackageConfig &config); -Package grbc_pkg(const std::string &package_name); \ No newline at end of file +Package grbc_pkg(const std::string &package_name); + +void grbc_ext(const std::string &extension_id); + +void grbc_register_ext(const std::string &extension_id, const Extension &ext); \ No newline at end of file diff --git a/src/ext.cc b/src/ext.cc index 976374e..77a6b3c 100644 --- a/src/ext.cc +++ b/src/ext.cc @@ -1 +1,5 @@ -#include "grbc/ext.h" \ No newline at end of file +#include "grbc/ext.h" + +void grbc_register_ext(const std::string &extension_id, const Extension &ext) {} + +void grbc_ext(const std::string &extension_id) {} \ No newline at end of file diff --git a/src/ext_pkg_config.cc b/src/ext_pkg_config.cc new file mode 100644 index 0000000..48c6977 --- /dev/null +++ b/src/ext_pkg_config.cc @@ -0,0 +1,17 @@ +#include "grbc/ext_pkg_config.h" +#include "grbc/ext.h" +#include "grbc/helpers.h" +#include "sol/state.hpp" + +void grbc_pkg_config_init(sol::state &state) { + log_msg("pkg_config extension loaded!"); +} + + +Extension grbc_pkg_config() { + Extension ext{}; + ext.name = GRBC_EXT_pkg_config_NAME; + ext.hook_init = grbc_pkg_config_init; + + return ext; +} \ No newline at end of file diff --git a/src/main.cc b/src/main.cc index 4f784d3..34d2cff 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,3 +1,4 @@ +#include "grbc/ext_pkg_config.h" #include "grbc/state.h" #define SOL_ALL_SAFETIES_ON 1 @@ -99,12 +100,17 @@ int main() { lua.set("grbc_get_lib_extension", grbc_get_lib_extension); lua.set("grbc_bake_package_config", grbc_bake_package_config); lua.set("grbc_pkg", grbc_pkg); + lua.set("grbc_ext", grbc_ext); + lua.set("grbc_register_ext", grbc_register_ext); // Load generators GState::get().generators.push_back( {.name = "ninja", .func = ninja_generator}); + // Load default extensions + grbc_register_ext(GRBC_EXT_pkg_config_NAME, grbc_pkg_config()); + log_msg("loading HConfig..."); lua.script_file("HConfig");