Skip to content

Commit

Permalink
Merge pull request #193 from friction2d/main
Browse files Browse the repository at this point in the history
Cut new stable branch
  • Loading branch information
rodlie authored Jun 22, 2024
2 parents bba3d41 + f49ec57 commit ec92a92
Show file tree
Hide file tree
Showing 1,814 changed files with 5,456 additions and 16,991 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,8 @@ build-*
*.diff
*.patch
ffmpeg

*.7z
distfiles
backup
CHANGES.md
friction-distfiles
10 changes: 5 additions & 5 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[submodule "src/skia"]
path = src/skia
[submodule "src/engine/skia"]
path = src/engine/skia
url = https://github.com/friction2d/skia
[submodule "src/gperftools"]
path = src/gperftools
url = https://github.com/friction2d/gperftools
[submodule "src/plugins/shaders"]
path = src/plugins/shaders
url = https://github.com/friction2d/friction-shader-plugins
[submodule "docs"]
path = docs
url = https://github.com/friction2d/friction2d.github.io
[submodule "src/app/icons"]
path = src/app/icons
url = https://github.com/friction2d/friction-icon-theme
20 changes: 11 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

cmake_minimum_required(VERSION 3.9)
cmake_minimum_required(VERSION 3.12)
project(friction.graphics)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/src/cmake")
Expand All @@ -31,18 +31,18 @@ if(UNIX AND NOT APPLE)
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
set(CPACK_PACKAGE_NAME ${FRICTION_NAME})
set(CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION})
set(CPACK_PACKAGE_DESCRIPTION ${PROJECT_SUMMARY})
set(CPACK_PACKAGE_VENDOR ${PROJECT_COPYRIGHT})
set(CPACK_STRIP_FILES TRUE)

set(CPACK_RPM_SPEC_MORE_DEFINE "%define _build_id_links none")
set(CPACK_RPM_PACKAGE_LICENSE ${PROJECT_LICENSE})
set(CPACK_RPM_PACKAGE_SUMMARY ${PROJECT_DESCRIPTION})
set(CPACK_RPM_PACKAGE_SUMMARY ${PROJECT_SUMMARY})
set(CPACK_RPM_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION})
set(CPACK_RPM_PACKAGE_URL ${PROJECT_HOMEPAGE_URL})
set(CPACK_RPM_FILE_NAME "${FRICTION_NAME}.rpm")

set(CPACK_DEBIAN_PACKAGE_DEPENDS "qt5-image-formats-plugins, libqt5multimedia5-plugins")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5multimedia5-plugins")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PROJECT_COPYRIGHT})
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${PROJECT_HOMEPAGE_URL})
Expand All @@ -51,11 +51,13 @@ if(UNIX AND NOT APPLE)
include(CPack)
endif()

add_subdirectory(src/engine)
if(UNIX)
option(BUILD_TESTING "Don't build gperftools tests" OFF)
add_subdirectory(src/gperftools)
endif()
add_subdirectory(src/core)
add_subdirectory(src/ui)
add_subdirectory(src/app)

# Bundle experimental shaders
option(BUNDLE_SHADERS "Include shader effects with the application" OFF)
if(${BUNDLE_SHADERS})
add_subdirectory(src/plugins/shaders)
endif()
add_dependencies(frictioncore Engine)
127 changes: 111 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,131 @@
# Friction

Friction is a powerful and versatile free and open-source motion graphics application that allows you to create stunning vector and raster animations for web and video platforms with ease. See [friction.graphics](https://friction.graphics) for more information.
[Friction](https://friction.graphics) is a powerful and versatile motion graphics application that allows you to create stunning vector and raster animations for web and video platforms with ease.

## Contribute

We accept any contributions (in form of a PR). Before submitting a PR it's recommended that you communicate with the developers first (in `Issues` or `Discussions`). Someone might already be working on the same feature/issue, or for some reason the feature is not wanted.
We accept any contributions, big or small. Before submitting a PR it's recommended that you communicate with the developers first (in [issues](https://github.com/friction2d/friction/issues) or [discussions](https://github.com/friction2d/friction/discussions)).

It's always preferred to submit PR's against the `main` branch. If your feature is experimental, a new branch could be made available for further development before entering `main`.
It's always preferred to submit PR's against the `main` branch.

## Branches and versions

Friction uses `X.Y.Z` version numbers and `X.Y` branches.
Friction uses `X.Y.Z` version numbers and `vX.Y` branches.

* `X` = Major
* `Y` = Minor
* `Z` = Patch

Branch `main` is always the current branch for the next `X` or `Y` release. The `main` branch should not be considered stable, but usable.

A new stable branch is cut from `main` on each `X` or `Y` release and is maintained until a new stable branch is created.

The next `Z` release usually comes from the latest stable branch (`vX.Y`).

Breaking features under development should be kept in it's own branch until ready to be merged with `main`.

*During `v0.9` development minor and patch releases are combined. Meaning `v0.9.x` will contain both features and fixes. This is an exception until we reach `v1.0.0`.*
Branch `main` is always the current branch for the next `X` or `Y` release.

A new stable branch is cut from `main` on each `X` or `Y` release and is maintained until a new stable branch is created. Patch (`Z`) releases comes from the parent stable branch (`vX.Y`).

Critical fixes to `main` will be backported to active stable branches when possible (and within reason).

## Build

Generic build instructions.

### Requirements on Linux

* pkg-config
* ninja
* python3
* cmake *(3.12+)*
* clang *(7+)*
* Qt *(5.15.x)*
* Gui
* Widgets
* OpenGL
* Multimedia
* Qml
* Xml
* qscintilla
* ffmpeg *(4.2.x)*
* libavformat
* libavcodec
* libavutil
* libswscale
* libswresample
* libunwind
* expat
* harfbuzz
* freetype
* fontconfig
* libjpeg-turbo
* libpng
* libwebp
* zlib
* icu

### Requirements on Windows

* [Visual Studio 2017 Build Tools](https://aka.ms/vs/15/release/vs_buildtools.exe)
* `git` must be available in `PATH`
* `cmake` must be available in `PATH`
* `python3` must be available in `PATH`
* [LLVM](https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/LLVM-15.0.7-win64.exe) installed to default location
* Qt 5.15.14 libraries and headers in `friction\src\qt`
* See [configure_qt5.bat](src/scripts/configure_qt5.bat) and [build_qt5.bat](src/scripts/build_qt5.bat)
* QScintilla 2.14.1 libraries and headers in `friction\src\qscintilla`
* See [build_qscintilla.bat](src/scripts/build_qscintilla.bat)
* FFmpeg 4.2.9 libraries and headers in `friction\src\ffmpeg`
* See [build_mxe_ffmpeg.sh](src/scripts/build_mxe_ffmpeg.sh) and [mxe](https://github.com/friction2d/mxe)

### Get

```
git clone --recurse-submodules https://github.com/friction2d/friction
```

Or download a release tarball *(friction-VERSION.tar.bz2)*.

### Build on Linux

```
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER=clang \
..
```
Note that on some configurations you may need to specify `qscintilla` paths:
```
-DQSCINTILLA_INCLUDE_DIRS=<PATH_TO_QSCINTILLA_INCLUDE_DIR> \
-DQSCINTILLA_LIBRARIES_DIRS=<PATH_TO_LIBS> \
-DQSCINTILLA_LIBRARIES=<QSCINTILLA_LIBRARY_NAME> \
```

Now build:

```
cmake --build . --config Release
```

### Build on Windows

All requirements must be installed in the correct folders, this is an example and should be adjusted to fit your enviroment.

```
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\VsDevCmd.bat"
set QT_DIR=%cd%\src\qt
set PATH=C:\Python;%ProgramFiles%\CMake\bin;%ProgramFiles%\Git\bin;%QT_DIR%\bin;%PATH%
mkdir build
cd build
cmake -G "Visual Studio 15 2017" -A x64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%QT_DIR% ..
cmake --build . --config Release
```

## License

Copyright &copy; Friction [contributors](https://github.com/friction2d/friction/graphs/contributors).

Friction is a fork of [enve](https://github.com/MaurycyLiebner/enve). Copyright &copy; [Maurycy Liebner](https://github.com/MaurycyLiebner).
Copyright &copy; Friction contributors.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Expand Down
Loading

0 comments on commit ec92a92

Please sign in to comment.