Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gamedev/fggl
  • onuralpsezer/fggl
2 results
Show changes
Commits on Source (306)
Showing
with 445 additions and 263 deletions
*,ogg filter=lfs diff=lfs merge=lfs -text
*.mtl filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
build/ # build files
builds/ builds/
cmake-build-debug/ cmake-build-*
cmake-build-debug-coverage/
imgui.ini imgui.ini
.flatpak-builder/ .flatpak-builder/
compile_commands.json compile_commands.json
# dotfiles # Engine data
demo/data/*.bin
# dotfiles (IDE)
.idea/ .idea/
.cache/ .cache/
.venv/
# windows vs stuff # windows visual studio
.vs/ .vs/
out/
CMakePresets.json CMakePresets.json
CMakeSettings.json CMakeSettings.json
\ No newline at end of file
...@@ -15,74 +15,83 @@ ...@@ -15,74 +15,83 @@
image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest
stages: # List of stages for jobs, and their order of execution stages:
- build - build
- test - test
- deploy - deploy
#build-job: # This job runs in the build stage, which runs first. variables:
# stage: build GIT_SUBMODULE_STRATEGY: recursive
# before_script:
# - apk update && apk --update add build-base g++ libstdc++ cmake extra-cmake-modules bash mesa-gl mesa-egl mesa-gles wayland-dev wayland-protocols libxkbcommon-dev
# script:
# - mkdir build && cd build
# - cmake ..
# - make
.f34-ogl: .f34-ogl:
image: git.fossgalaxy.com:8042/gamedev/containers/fedora:34-opengl image: git.fossgalaxy.com:8042/gamedev/containers/fedora:36-opengl
before_script:
- dnf install -y pkgconfig\(dri\) pkgconfig\(glu\) pkgconfig\(x11\) pkgconfig\(xcursor\) pkgconfig\(xi\) pkgconfig\(xinerama\) pkgconfig\(xrandr\) pkgconfig\(lua\) doxygen
- dnf install -y glm-devel glfw-devel openal-soft-devel spdlog-devel freetype-devel yaml-cpp-devel assimp-devel gtest-devel gmock-devel
# Use glfw-wayland from fedora repostory ##
build:f34-repo-wayland: # Build Targets check it builds on popular Linux Distributions
##
build:fedora:
extends: .f34-ogl extends: .f34-ogl
stage: build stage: build
script: script:
- dnf install -y glfw-devel spdlog-devel - cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DFGGL_EXT_BULLET=OFF
- pip install conan - cmake --build build
- mkdir build && cd build
- cmake .. -DCMAKE_BUILD_TYPE=Debug
- make
artifacts: artifacts:
paths: paths:
- build/fggl/ - build/fggl/
- build/tests/
# use vendored glfw build:ubuntu:
build:f34-fallback-wayland: image: ubuntu:jammy
extends: .f34-ogl
stage: build stage: build
before_script:
- apt update && apt install -y build-essential cmake
- apt install -y libglm-dev libglfw3-dev libopenal-dev libspdlog-dev libfreetype-dev libyaml-cpp-dev libassimp-dev libbullet-extras-dev libgtest-dev libgmock-dev liblua5.2-dev
script: script:
- dnf install -y wayland-devel wayland-protocols-devel libxkbcommon-devel - cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DFGGL_EXT_BULLET=OFF -DFGGL_EXT_LUA=OFF
- pip install conan - cmake --build build
- mkdir build && cd build
- cmake .. -DCMAKE_BUILD_TYPE=Debug
- make # Based on Bruce Cowan's wordsearch package:
flatpak:
image: alpine:latest
stage: deploy
when: manual
only:
- develop
variables:
MANIFEST_PATH: "build-aux/com.fossgalaxy.fggl.demo.yml"
RUNTIME_REPO: "https://flathub.org/repo/flathub.flatpakrepo"
FLATPAK_MODULE: "fggl"
BUNDLE: "fggl-demo.flatpak"
APP_ID: "com.fossgalaxy.fggl.demo"
script:
- apk update && apk add flatpak-builder
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
- flatpak install -y flathub org.freedesktop.Platform 21.08
- flatpak install -y flathub org.freedesktop.Sdk 21.08
- flatpak-builder _repo ${MANIFEST_PATH}
- flatpak build-bundle _repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${APP_ID}
artifacts: artifacts:
paths: paths:
- build/fggl/ - ${BUNDLE}
- build/tests/ - _build/meson-logs/meson-log.txt
cache:
paths:
- .flatpak-builder/cache
- .flatpak-builder/downloads
test:f34-fallback-wayland: # Deploy doxygen pages
pages:
extends: .f34-ogl extends: .f34-ogl
stage: test stage: deploy
needs: [ "build:f34-fallback-wayland" ] only:
- develop
script: script:
- cd build && ./tests/testfggl/fggl_test - cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
dependencies: - cmake --build build --target docs
- build:f34-fallback-wayland - cp -r build/docs/html public
artifacts:
#unit-test-job: # This job runs in the test stage. paths:
# stage: test # It only starts when the job in the build stage completes successfully. - public
# before_script:
# - apk update && apk --update add build-base g++ libstdc++ cmake extra-cmake-modules bash mesa-gl wayland-dev wayland-protocols
# script:
# - mkdir build && cd build
# - cmake .. && make # TODO cache build from previous step
# - ./tests/testfggl/fggl_test
#lint-test-job: # This job also runs in the test stage.
# stage: test # It can run at the same time as unit-test-job (in parallel).
# script:
# - echo "Linting code... This will take about 10 seconds."
# - sleep 10
# - echo "No lint issues found."
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
set(namespace "fggl") set(namespace "fggl")
set(CONAN_BUILD_TYPE "Debug") set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
# Define the project option(FGGL_EXAMPLES "Should we build examples or just the library" ON)
project(fggl option(FGGL_TESTS "Should we enable the testing suite?" ON)
VERSION 0.1 option(FGGL_DOCS "Should we build documentation?" ON)
DESCRIPTION ""
HOMEPAGE_URL "" option(FGGL_EXT_BULLET "Should we build the bullet module?" OFF)
LANGUAGES CXX) option(FGGL_EXT_LUA "Should we build the lua module?" ON)
## ##
# begin conan support # Windows
# When on windows, integrate vcpkg
## ##
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake" CACHE STRING "")
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif() endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
#list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
#list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
#conan_cmake_autodetect(settings)
conan_cmake_run(CONANFILE conanfile.txt # or relative build/conanfile.txt
BUILD_TYPE ${CONAN_BUILD_TYPE}
BASIC_SETUP CMAKE_TARGETS
BUILD missing
SETTINGS ${settings}
)
## ##
# end conan support # /windows
## ##
# Set C++ version # Define the project
set(CMAKE_CXX_STANDARD 17) project(fggl
set(CMAKE_CXX_STANDARD_REQUIRED True) VERSION 0.1
DESCRIPTION "FOSS Galaxy Game Library, for use in Education, and Games"
HOMEPAGE_URL "https://git.fossgalaxy.com/gamedev/fggl"
LANGUAGES C CXX)
# export compile commands for vim/neovim users
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_library(${PROJECT_NAME} STATIC) # vendor dependencies
add_subdirectory( vendor/entt )
add_subdirectory( vendor/imgui )
add_subdirectory( vendor/glad )
## # engine headers
# begin windows support file(GLOB_RECURSE public_headers
## ${PROJECT_SOURCE_DIR}/include/fggl/*.hpp
if(MSVC) )
target_compile_options(${PROJECT_NAME} PUBLIC "/ZI")
target_link_options(${PROJECT_NAME} PUBLIC "/INCREMENTAL")
endif()
##
# end windows support
##
set(FGGL_WAYLAND True) # engine sources, enable strict compiler warnings
add_subdirectory( fggl )
target_compile_options( fggl PRIVATE -Wall -Wpedantic -Wextra -Wodr -fno-strict-aliasing -fno-strict-overflow )
set_property(TARGET fggl PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
# Unit Tests
if (FGGL_TESTS)
include(CTest)
add_subdirectory(tests)
endif()
include(GNUInstallDirs) # Documentation support
target_include_directories(${PROJECT_NAME} if (FGGL_DOCS)
PRIVATE find_package(Doxygen)
${CMAKE_CURRENT_SOURCE_DIR} if (Doxygen_FOUND)
${CMAKE_CURRENT_SOURCE_DIR}/vendor/headers add_subdirectory( docs )
PUBLIC else()
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> message(STATUS "Doxygen not found, not building docs")
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> endif()
) endif()
# Doxygen Support ##
# Based on https://vicrucann.github.io/tutorials/quick-cmake-doxygen/ # Optional/Extra modules
option(BUILD_DOC "Build Documentation" ON) ##
find_package( Doxygen )
if (DOXYGEN_FOUND) # 3rd party integrations
# Set docs folder if ( FGGL_EXT_BULLET )
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in) add_subdirectory( integrations/bullet )
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# configure file
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
message("Doxygen build started")
# note the option ALL which allows to build the docs together with the application
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
endif (DOXYGEN_FOUND)
# depedencies
find_package( glfw3 )
if ( GLFW3_FOUND )
target_link_libraries(fggl PRIVATE glfw)
else()
message("GLFW couldn't be found - something strange is going on")
find_package( CONAN_PKG::glfw )
target_link_libraries(fggl PRIVATE glfw)
endif() endif()
if ( FGGL_EXT_LUA )
add_subdirectory( integrations/lua )
endif()
# engine # Tools
#add_subdirectory(vendor/imgui/) # add_subdirectory( tools/pack )
add_subdirectory(fggl)
# extras # Demo project
#add_subdirectory(tests) if (FGGL_EXAMPLES)
add_subdirectory(demo) add_subdirectory(demo EXCLUDE_FROM_ALL)
endif()
## ##
# INSTALL PHASE # INSTALL PHASE
# see https://decovar.dev/blog/2021/03/08/cmake-cpp-library/ # see https://decovar.dev/blog/2021/03/08/cmake-cpp-library/
## ##
file(GLOB_RECURSE public_headers include(GNUInstallDirs)
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/*.hpp
${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}/*.h
)
#include(CMakePrintHelpers)
# Structure preserving header macro # Structure preserving header macro
foreach(header ${public_headers}) foreach(header ${public_headers})
...@@ -131,40 +103,42 @@ endforeach() ...@@ -131,40 +103,42 @@ endforeach()
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d") set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d")
include(CMakePackageConfigHelpers)
set(FGGL_CONFIG_PATH "${CMAKE_INSTALL_LIBDIR}/cmake/fggl")
# generate and install export file # generate and install export file
install(EXPORT "${PROJECT_NAME}Targets" install(EXPORT "${PROJECT_NAME}Targets"
FILE "${PROJECT_NAME}Targets.cmake" FILE "${PROJECT_NAME}Targets.cmake"
NAMESPACE ${namespace}:: NAMESPACE ${namespace}::
DESTINATION cmake DESTINATION "${FGGL_CONFIG_PATH}"
) )
include(CMakePackageConfigHelpers)
# generate the version file for the config file # generate the version file for the config file
write_basic_package_version_file( write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION "${version}" VERSION "${version}"
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
# create config file
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION cmake INSTALL_DESTINATION "${FGGL_CONFIG_PATH}"
) )
# install config files # install config files
install(FILES install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION cmake DESTINATION "${FGGL_CONFIG_PATH}"
) )
# generate the export targets for the build tree # generate the export targets for the build tree
install(TARGETS ${PROJECT_NAME}
EXPORT fgglTargets
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
export(EXPORT "${PROJECT_NAME}Targets" export(EXPORT "${PROJECT_NAME}Targets"
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Targets.cmake" FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
NAMESPACE ${namespace}:: NAMESPACE ${namespace}::
) )
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
@PACKAGE_INIT@ @PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(glm)
find_dependency(fmt)
find_dependency(Lua)
find_dependency(spdlog)
find_dependency(Freetype)
find_dependency(OpenAL CONFIG)
find_dependency(OpenGL)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components(@PROJECT_NAME@) check_required_components(@PROJECT_NAME@)
\ No newline at end of file
...@@ -4,14 +4,25 @@ A library for building FOSS Games, Educational Resources and Academic Experiment ...@@ -4,14 +4,25 @@ A library for building FOSS Games, Educational Resources and Academic Experiment
## Development Instructions ## Development Instructions
### Installing dependenecies
FGGL depends on a few dependencies to work correctly.
On Ubuntu:
```bash
sudo apt install build-essential cmake
sudo apt install -y libglm-dev libglfw3-dev libopenal-dev libspdlog-dev libfreetype-dev libyaml-cpp-dev libassimp-dev libbullet-dev
```
On Fedora:
```bash
sudo dnf install -y glm-devel glfw-devel openal-soft-devel spdlog-devel freetype-devel yaml-cpp-devel assimp-devel bullet-devel gcc gcc-c++ cmake gtest-devel doxygen lua lua-devel gmock gmock-devel
```
### Building ### Building
It's designed to be a fairly standard cmake project, so the standard cmake steps should work: It's designed to be a fairly standard cmake project, so the standard cmake steps should work:
```bash ```bash
mkdir build cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cd build cmake --build build
cmake ..
make
``` ```
The library should also build the test scene (`demo`). There is a shellscript in the root of the The library should also build the test scene (`demo`). There is a shellscript in the root of the
...@@ -20,7 +31,34 @@ project that will build the project and run the demo project in gdb. ...@@ -20,7 +31,34 @@ project that will build the project and run the demo project in gdb.
Most of the dependencies should be downloaded automatically. If you're on X don't use glfw from the Most of the dependencies should be downloaded automatically. If you're on X don't use glfw from the
Fedora repos, it won't work (it's configured for Wayland). The version the project builds should work. Fedora repos, it won't work (it's configured for Wayland). The version the project builds should work.
### Useful Tools ### Deploying
The library is designed to be used as a shared library, as it is licenced in the LGPL. You can generate the shared library, header files and assoicated cmake files using the following command:
```bash
cmake --install build --prefix /tmp/fggl-lib
```
This will place the files in /tmp/fggl-lib, you can adjust this to suit your needs.
You can then include the library in your application using cmake, eg:
```bash
find_package(spdlog REQUIRED)
target_link_libraries(game spdlog::spdlog)
find_package( fggl REQUIRED PATHS /tmp/fggl-lib )
target_link_libraries(game fggl::fggl)
```
### Flatpak Demo
This is still experimental, but the command used to test flatpak compatablity with the demo application is:
```
flatpak-builder builds/flatpak build-aux/com.fossgalaxy.fggl.demo.yml --force-clean --install --user
```
## Useful Tools
The following tools are helpful for development: The following tools are helpful for development:
* Valgrind (see the ways in which memory is messed up) * Valgrind (see the ways in which memory is messed up)
......
app-id: com.fossgalaxy.fggl.demo app-id: com.fossgalaxy.fggl.Demo
runtime: org.freedesktop.Platform.GL.default runtime: org.freedesktop.Platform
runtime-version: '21.08' runtime-version: '21.08'
sdk: org.freedesktop.Sdk sdk: org.freedesktop.Sdk
command: fggl-demo command: /app/bin/demo
finish-args:
- "--device=dri"
- "--share=ipc"
- "--socket=fallback-x11"
- "--socket=wayland"
modules: modules:
- name: glfw - modules/glfw.yml
buildsystem: cmake-ninja
builddir: true
sources:
- type: archive
url: https://github.com/glfw/glfw/releases/download/3.3.4/glfw-3.3.4.zip
sha256: bbd2c42c660b725e9755eb417e40b373f0d4c03138c9b2e210d02cd308bd99cd
cleanup:
- /include
- /lib/pkgconfig
- modules/glm-0.9.9.8.json - modules/glm-0.9.9.8.json
- shared-modules/glew/glew.json - modules/fmt.yml
- shared-modules/glu/glu-9.json - modules/spdlog.json
- modules/googletest.yml - modules/googletest.yml
- shared-modules/glu/glu-9.json
- modules/yaml-cpp.yml
- modules/assimp.yml
- name: fggl - name: fggl
buildsystem: cmake buildsystem: cmake
builddir: true
sources: sources:
- type: dir - type: dir
path: ../ path: ../
cleanup:
- '/include'
- '/cmake'
- '*.a'
Name: fggl
Version: 0.1.0
Release: 1%{?dist}
Summary: FOSS Galaxy game library
License: LGPLv3
# The source was pulled from github
source0: https://git.fossgalaxy.com/gamedev/fggl/-/archive/develop/fggl-develop.zip
BuildRequires: g++
BuildRequires: cmake
BuildRequires: glfw-devel
BuildRequires: openal-devel
BuildRequires: glm-devel
BuildRequires: glfw-devel
BuildRequires: openal-soft-devel
BuildRequires: spdlog-devel
BuildRequires: freetype-devel
BuildRequires: yaml-cpp-devel
BuildRequires: assimp-devel
BuildRequires: bullet-devel
BuildRequires: gtest-devel
BuildRequires: gmock-devel
# demo desktop stuff
BuildRequires: libappstream-glib
BuildRequires: desktop-file-utils
%description
%{summary}.
%prep
%setup -q -n %{name}-develop
%build
%cmake
%cmake_build
%install
%cmake_install
%check
%ctest
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml
desktop-file-validate %{buildroot}/%{_datadir}/applications/com.fossgalaxy.fggl.Demo.desktop
%package demos
Summary: Demos for fggl
Group: System Environment/Libraries
Requires: %{name} = %{version}-%{release}
%description demos
FGGL example binaries
%package devel
Summary: FGGL development libraries and header files
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
fggl dynamic libraries and header files.
%files
%{_libdir}/libfggl.so
%files devel
%{_includedir}/fggl/*
%{_libdir}/cmake/%{name}
# this feels like a packaging bug...
%{_libdir}/libimgui.a
%files demos
%{_bindir}/demo
%{_datadir}/fggl-demo/*
%{_datadir}/applications/com.fossgalaxy.fggl.Demo.desktop
%{_metainfodir}/com.fossgalaxy.fggl.Demo.metainfo.xml
name: assimp
buildsystem: cmake
config-opts:
- -DASSIMP_BUILD_ASSIMP_TOOLS=OFF
- -DASSIMP_BUILD_TESTS=OFF
sources:
- type: git
url: https://github.com/assimp/assimp.git
tag: v5.2.4
cleanup:
- '/include'
- '/lib/cmake'
- '/lib/pkgconfig'
name: fmt
buildsystem: cmake
sources:
- type: git
url: https://github.com/fmtlib/fmt.git
tag: 8.1.1
cleanup:
- '/include'
- '/lib/cmake'
- '/lib/pkgconfig'
- '*.a'
name: glfw
buildsystem: cmake-ninja
builddir: true
sources:
- type: archive
url: https://github.com/glfw/glfw/releases/download/3.3.4/glfw-3.3.4.zip
sha256: bbd2c42c660b725e9755eb417e40b373f0d4c03138c9b2e210d02cd308bd99cd
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
- '*.a'
...@@ -4,3 +4,8 @@ sources: ...@@ -4,3 +4,8 @@ sources:
- type: archive - type: archive
url: https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip url: https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip
sha256: 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a sha256: 353571c2440176ded91c2de6d6cd88ddd41401d14692ec1f99e35d013feda55a
cleanup:
- '/include'
- '/lib/cmake'
- '/lib/pkgconfig'
- '*.a'
{
"name": "spdlog",
"buildsystem": "cmake",
"sources": [
{
"type": "git",
"url": "https://github.com/gabime/spdlog.git",
"tag": "v1.10.0"
}
],
"cleanup": [
"/include",
"/lib/cmake",
"/lib/pkgconfig",
"*.a"
]
}
name: yaml-cpp
buildsystem: cmake
config-opts:
- -DYAML_CPP_BUILD_TESTS=off
sources:
- type: git
url: https://github.com/jbeder/yaml-cpp.git
tag: yaml-cpp-0.7.0
cleanup:
- '/include'
- '/share/cmake'
- '/share/pkgconfig'
- '*.a'
Subproject commit 0534d3276b3966e87abacd163f757454b6fcf724 Subproject commit 1bb53934f105743f84f923693847185dce613cef
...@@ -2,13 +2,9 @@ ...@@ -2,13 +2,9 @@
CACHE=/tmp/fggl/ CACHE=/tmp/fggl/
LOG=$CACHE/demo.log LOG=$CACHE/demo.log
EXE="../builds/cli/bin/FgglDemo"
# check build directory exists BUILD_PATH="builds/cli"
if [[ ! -d "builds/cli/" ]] DEMO_EXE="$PWD/$BUILD_PATH/demo/demo"
then
mkdir -p builds/cli
fi
# check cmake exists # check cmake exists
if [ ! -x "$(command -v cmake)" ]; then if [ ! -x "$(command -v cmake)" ]; then
...@@ -18,43 +14,32 @@ if [ ! -x "$(command -v cmake)" ]; then ...@@ -18,43 +14,32 @@ if [ ! -x "$(command -v cmake)" ]; then
fi fi
# if doing shader development, disable the cache to make sure changes take affect # if doing shader development, disable the cache to make sure changes take affect
rm -rf builds/cli
rm -rf $CACHE rm -rf $CACHE
# #
# build step # build step
# #
pushd builds/cli cmake -S . -B $BUILD_PATH -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake ../.. cmake --build $BUILD_PATH
if [ $? -ne 0 ] cmake --install $BUILD_PATH --prefix /tmp/fggl-lib
then
echo "[!] Cmake failed"
exit 1
fi
make
if [ $? -ne 0 ]
then
echo "[!] make failed"
exit 1
fi
popd
# #
# additional stuff # additional stuff
# #
EXE="gdb $EXE" #EXE="gdb $EXE"
# gamemoderun # gamemoderun
if [ -x "$(command -v gamemoderun)" ]; then if [ -x "$(command -v gamemoderun)" ]; then
EXE="gamemoderun $EXE" DEMO_EXE="gamemoderun $DEMO_EXE"
fi fi
# mangohud # mangohud
if [ -x "$(command -v mangohud)" ]; then if [ -x "$(command -v mangohud)" ]; then
EXE="mangohud --dlsym $EXE" DEMO_EXE="mangohud --dlsym $DEMO_EXE"
fi fi
pushd demo pushd demo
$EXE $DEMO_EXE
popd popd
{
"graph_lock": {
"nodes": {
"0": {
"options": "glfw:shared=False\nglfw:vulkan_static=False",
"requires": [
"1"
],
"path": "conanfile.txt",
"context": "host"
},
"1": {
"ref": "glfw/3.3.7#b1675b8bd08103ef3974e36843431966",
"options": "shared=False\nvulkan_static=False",
"package_id": "d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc",
"prev": "7a205e7cb0d8ac4470491033ab29c8ac",
"requires": [
"2"
],
"context": "host"
},
"2": {
"ref": "opengl/system#3582b5d3184289461f73339622c71d31",
"options": "",
"package_id": "5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9",
"prev": "e0c823b9bed28348dd7f3bcedf045c58",
"context": "host"
}
},
"revisions_enabled": true
},
"version": "0.4",
"profile_host": "[settings]\narch=x86_64\narch_build=x86_64\nbuild_type=Release\ncompiler=Visual Studio\ncompiler.runtime=MD\ncompiler.version=16\nos=Windows\nos_build=Windows\n[options]\n[build_requires]\n[env]\n"
}
\ No newline at end of file
[requires]
opengl/system
glfw/3.3.7
glad/0.1.35
glm/0.9.9.8
spdlog/1.10.0
[generators]
cmake_find_package
cmake_paths
[options]
glad:gl_profile=core
glad:gl_version=4.5
glad:extensions="GL_ARB_get_program_binary"
\ No newline at end of file
cmake_minimum_required(VERSION 3.16)
project(demo)
# Executable # Executable
add_executable(FgglDemo main.cpp) add_executable(demo
target_link_libraries(FgglDemo fggl) demo/main.cpp
target_include_directories(FgglDemo PUBLIC ${PROJECT_BINARY_DIR}) demo/GameScene.cpp
demo/rollball.cpp
demo/topdown.cpp
demo/grid.cpp
demo/robot/programmer.cpp
demo/models/viewer.cpp
demo/hexboard/board.cpp
demo/hexboard/camera.cpp
)
# set build flags
target_compile_options( demo PRIVATE -Wall -Wextra -Wodr -Wdouble-promotion -fno-strict-aliasing -fno-strict-overflow )
set_property(TARGET demo PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
target_include_directories(demo
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
)
target_link_libraries( demo fggl )
#target_link_libraries(demo fggl fgglbt)
if ( FGGL_EXT_LUA )
target_link_libraries( demo fggl-lua )
endif()
# rssources find_package(spdlog)
target_link_libraries(demo spdlog::spdlog)
#target_include_directories(FgglDemo PUBLIC ${PROJECT_BINARY_DIR})
#find_package(Lua)
#target_link_libraries(demo ${LUA_LIBRARIES})
# resources
file(GLOB_RECURSE data data/*) file(GLOB_RECURSE data data/*)
file(COPY ${data} DESTINATION data ) file(COPY ${data} DESTINATION data )
include(GNUInstallDirs)
install(
TARGETS demo
RUNTIME
DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(
DIRECTORY data/
DESTINATION ${CMAKE_INSTALL_DATADIR}/fggl-demo
)
# Linux Desktop Entries
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install(FILES aux/com.fossgalaxy.fggl.Demo.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications )
install(FILES aux/com.fossgalaxy.fggl.Demo.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo )
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
[Desktop Entry]
Name=FGGL Demo
Exec=demo
Type=Application
Categories=Game