Added Logo
This commit is contained in:
parent
29f21d84d8
commit
d3eba6560d
@ -33,6 +33,7 @@ add_library(fennec STATIC
|
||||
|
||||
include/fennec/lang/detail/__numeric_transforms.h
|
||||
include/fennec/lang/detail/__type_traits.h
|
||||
include/fennec/lang/detail/__variadics.h
|
||||
|
||||
|
||||
# MEMORY ===============================================================================================================
|
||||
@ -70,9 +71,6 @@ add_library(fennec STATIC
|
||||
include/fennec/math/detail/__fwd.h
|
||||
include/fennec/math/detail/__types.h
|
||||
include/fennec/math/detail/__vector_traits.h
|
||||
|
||||
include/fennec/lang/detail/__variadics.h
|
||||
|
||||
)
|
||||
|
||||
add_subdirectory(metaprogramming)
|
||||
|
33
README.md
33
README.md
@ -1,5 +1,14 @@
|
||||
# fennec
|
||||
*a free and open source game engine*
|
||||
<br><br>
|
||||
|
||||
<div style="width: 100%;">
|
||||
<img src="./logo/raster.png" alt="drawing" width="128px" style="display: block; margin-left: auto; margin-right: auto;"/>
|
||||
<figcaption>
|
||||
<h1 style="text-align: center; top:-1em;">fennec</h1>
|
||||
<p style="text-align: center; top:-4em;">a free and open source game engine</p>
|
||||
</figcaption>
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
## Table of Contents
|
||||
1. [Introduction](#introduction)
|
||||
@ -17,14 +26,23 @@
|
||||
fennec is designed to be a general purpose, educational game engine.
|
||||
|
||||
Interfacing with the API in C++ follows the [GNU Coding Standards](https://www.gnu.org/prep/standards/html_node/index.html).
|
||||
|
||||
<br>
|
||||
|
||||
Some main areas where the engine strays from the GNU standard includes the following:
|
||||
|
||||
- [Section 4.7, Standards for Graphical Interfaces](https://www.gnu.org/prep/standards/html_node/Graphical-Interfaces.html).
|
||||
fennec provides an implementation for X11, however it does not use the GTK toolkit.
|
||||
|
||||
<br>
|
||||
|
||||
The C++ stdlib is reimplemented in the fennec engine.
|
||||
There are a few reasons for this:
|
||||
|
||||
1. Standardize implementations across compilers
|
||||
2. Set proper naming conventions, i.e. `std::vector`->`fennec::dynarray`
|
||||
3. Optimize compilation times, binary size, and performance.
|
||||
4. Inject debugging information when necessary.
|
||||
5. Expose functionality in a readable manner for those interested in learning the
|
||||
intricacies of the implementation.
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
@ -108,3 +126,8 @@ cmake -G "Visual Studio 17 2022" -A x64
|
||||
## Running the Test Suite
|
||||
|
||||
`test.sh` provides profiles for building the test suite and executes them.
|
||||
|
||||
By default, it runs in debug mode and the first failed test will throw an assertion.
|
||||
Any tests that involve running as an application will spawn a subprocess with a window,
|
||||
and give a short description of the behaviour in the terminal. It will then have you confirm
|
||||
whether the information displayed is correct.
|
7
build.sh
7
build.sh
@ -21,7 +21,7 @@
|
||||
|
||||
Help()
|
||||
{
|
||||
echo "Bash script for building fennec from source."
|
||||
echo "Bash script for building fennec from source. By default, the build script executes in release mode."
|
||||
echo
|
||||
echo "GNU long options:"
|
||||
echo "--help (-h) = Print this help info."
|
||||
@ -82,6 +82,11 @@ All()
|
||||
|
||||
# Main Program =========================================================================================================
|
||||
|
||||
if [[ $# -eq 0 ]] ; then
|
||||
Release
|
||||
exit 0
|
||||
fi
|
||||
|
||||
while [ "${1:-}" != '' ]; do
|
||||
case "$1" in
|
||||
'--debug' | '-d')
|
||||
|
@ -43,7 +43,8 @@ public:
|
||||
using alloc_t = Alloc;
|
||||
|
||||
dynarray() : _alloc(), _size(0) {}
|
||||
dynarray()
|
||||
dynarray(size_t size) : _alloc(size), _size(size) { }
|
||||
dynarray(const alloc_t& alloc) : _alloc(alloc), _size(0) {}
|
||||
|
||||
private:
|
||||
allocation<element_t, alloc_t> _alloc;
|
||||
|
@ -20,7 +20,7 @@
|
||||
#ifndef FENNEC_LANG_INTRINSICS_H
|
||||
#define FENNEC_LANG_INTRINSICS_H
|
||||
|
||||
// Most major compilers support __has_builtin
|
||||
// Most major compilers support __has_builtin, notably GCC, MINGW, CLANG, and MSVC
|
||||
#if defined(__has_builtin)
|
||||
|
||||
|
||||
@ -91,6 +91,14 @@
|
||||
# define FENNEC_HAS_BUILTIN_IS_STANDARD_LAYOUT 0
|
||||
#endif
|
||||
|
||||
// Difficult and Inconsistent without intrinsics
|
||||
#if __has_builtin(__is_constructible)
|
||||
# define FENNEC_BUILTIN_CAN_CONSTRUCT 1
|
||||
# define FENNEC_BUILTIN_CAN_CONSTRUCT(type, args...) __is_constructible(type, args)
|
||||
#else
|
||||
# define FENNEC_HAS_BUILTIN_CAN_CONSTRUCT 0
|
||||
#endif
|
||||
|
||||
|
||||
// For compilers without or differently named builtins
|
||||
#else
|
||||
|
@ -204,9 +204,19 @@ template<typename T0, typename T1> struct can_convert
|
||||
/// \brief shorthand
|
||||
/// \param T0 First type
|
||||
/// \param T1 Second type
|
||||
template<typename T0, typename T1> using can_convert_v = typename can_convert<T0, T1>::type;
|
||||
template<typename T0, typename T1> using can_convert_v
|
||||
= typename can_convert<T0, T1>::type;
|
||||
|
||||
|
||||
// fennec::is_constructible ============================================================================================
|
||||
|
||||
|
||||
template<typename ClassT, typename...ArgsT> struct can_construct
|
||||
: bool_constant<FENNEC_BUILTIN_CAN_CONSTRUCT(ClassT, ArgsT...)> {};
|
||||
|
||||
template<typename ClassT, typename...ArgsT> constexpr bool_t can_construct_v
|
||||
= can_construct<ClassT, ArgsT...>{};
|
||||
|
||||
//
|
||||
|
||||
}
|
||||
|
@ -106,6 +106,8 @@ public:
|
||||
|
||||
/// \brief Rebinds the allocator type to produce an element type of type `TypeT`
|
||||
template<typename TypeT> using rebind = typename __rebind<Alloc, TypeT>::type;
|
||||
|
||||
// TODO: allocator_traits static functions
|
||||
};
|
||||
|
||||
|
||||
@ -180,19 +182,22 @@ public:
|
||||
|
||||
///
|
||||
/// \brief Default Constructor, initializes internal data to `null` and the capacity to `0`
|
||||
constexpr allocation() noexcept : _data(nullptr), _capacity(0) {}
|
||||
constexpr allocation() noexcept
|
||||
: _data(nullptr), _capacity(0) {}
|
||||
|
||||
///
|
||||
/// \brief Sized Constructor, initializes the allocation with a block of size `n * sizeof(T)` bytes
|
||||
/// \param n The number of elements of type `T` to allocate for
|
||||
constexpr allocation(size_t n) noexcept : _data(_alloc.al), _capacity(n) {}
|
||||
constexpr allocation(size_t n) noexcept
|
||||
: _data(_alloc.al), _capacity(n) {}
|
||||
|
||||
///
|
||||
/// \brief Allocator Constructor
|
||||
/// \param alloc The allocation object to copy.
|
||||
///
|
||||
/// \details This constructor should be used when the type `AllocT` needs internal data.
|
||||
constexpr allocation(const alloc_t& alloc) noexcept : _alloc(alloc), _data(nullptr), _capacity(0) {}
|
||||
constexpr allocation(const alloc_t& alloc) noexcept
|
||||
: _alloc(alloc), _data(nullptr), _capacity(0) {}
|
||||
|
||||
///
|
||||
/// \brief Sized Allocator Constructor
|
||||
@ -200,7 +205,24 @@ public:
|
||||
/// \param alloc The allocation object to copy.
|
||||
///
|
||||
/// \details This constructor should be used when the type `AllocT` needs internal data.
|
||||
constexpr allocation(size_t n, const alloc_t& alloc) noexcept : _alloc(alloc), _data(nullptr), _capacity(0) {}
|
||||
constexpr allocation(size_t n, const alloc_t& alloc) noexcept
|
||||
: _alloc(alloc), _data(nullptr), _capacity(0) {}
|
||||
|
||||
///
|
||||
/// \brief Copy Constructor, creates an allocation of equal size and performs a byte-wise copy
|
||||
/// \param alloc The allocation to copy
|
||||
constexpr allocation(const allocation& alloc) noexcept
|
||||
: _alloc(alloc._alloc), _data(_alloc.allocate(alloc._capacity)), _capacity(alloc._capacity)
|
||||
{ fennec::memcpy(_data, alloc._data, alloc._capacity * sizeof(T)); }
|
||||
|
||||
///
|
||||
/// \brief Move Constructor, moves the data in `alloc` to the new object and cleans `alloc` so that it
|
||||
/// can safely destruct
|
||||
/// \param alloc The allocation to move
|
||||
constexpr allocation(allocation&& alloc) noexcept
|
||||
: _alloc(alloc._alloc), _data(alloc._data), _capacity(alloc._capacity)
|
||||
{ alloc._data = nullptr; alloc._capacity = 0; }
|
||||
|
||||
|
||||
///
|
||||
/// \brief Default Destructor, releases the memory block if still present
|
||||
|
@ -20,6 +20,7 @@
|
||||
#ifndef FENNEC_MEMORY_H
|
||||
#define FENNEC_MEMORY_H
|
||||
|
||||
#include <fennec/lang/type_traits.h>
|
||||
#include <fennec/memory/detail/__memory.h>
|
||||
|
||||
namespace fennec
|
||||
@ -152,22 +153,6 @@ constexpr void* memset(void* dst, int ch, size_t n)
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
||||
template<typename TypeT>
|
||||
struct default_delete
|
||||
{
|
||||
constexpr default_delete() noexcept = default;
|
||||
|
||||
template<class U> default_delete(const default_delete<U>&) noexcept;
|
||||
template<class U> default_delete(const default_delete<U[]>&) noexcept;
|
||||
};
|
||||
|
||||
template<typename TypeT>
|
||||
struct default_delete<TypeT[]>
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // FENNEC_MEMORY_H
|
||||
|
@ -19,19 +19,105 @@
|
||||
#ifndef FENNEC_LANG_POINTERS_H
|
||||
#define FENNEC_LANG_POINTERS_H
|
||||
|
||||
#include <fennec/lang/type_traits.h>
|
||||
|
||||
template<typename TypeT, class DeleteT = >
|
||||
namespace fennec
|
||||
{
|
||||
|
||||
template<typename TypeT>
|
||||
struct default_delete
|
||||
{
|
||||
///
|
||||
/// \brief Default constructor
|
||||
constexpr default_delete() noexcept = default;
|
||||
|
||||
///
|
||||
/// \brief Conversion Constructor
|
||||
/// \tparam ConvT of other deleter
|
||||
template<class ConvT> requires requires { can_convert<ConvT*, TypeT*>{}.value == true; }
|
||||
constexpr default_delete(const default_delete<ConvT>&) noexcept {}
|
||||
|
||||
///
|
||||
/// \brief Function Call Operator, calls `delete` on `ptr`
|
||||
/// \param ptr Memory resource to delete
|
||||
constexpr void operator()(TypeT* ptr) const noexcept
|
||||
{
|
||||
static_assert(not is_void_v<TypeT>, "cannot delete a pointer to an incomplete type");
|
||||
static_assert(not sizeof(TypeT) > 0, "cannot delete a pointer to an incomplete type");
|
||||
delete ptr;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename TypeT>
|
||||
struct default_delete<TypeT[]>
|
||||
{
|
||||
///
|
||||
/// \brief Default constructor
|
||||
constexpr default_delete() noexcept = default;
|
||||
|
||||
///
|
||||
/// \brief Conversion Constructor
|
||||
/// \tparam ConvT of other deleter
|
||||
template<class ConvT> requires requires { can_convert<ConvT(*)[], TypeT(*)[]>{}.value == true; }
|
||||
constexpr default_delete(const default_delete<ConvT(*)[]>&) noexcept {}
|
||||
|
||||
///
|
||||
/// \brief Function Call Operator, calls `delete` on `ptr`
|
||||
/// \param ptr Memory resource to delete
|
||||
template<class ArrT> requires requires { can_convert<ArrT(*)[], TypeT(*)[]>{}.value == true; }
|
||||
constexpr void operator()(TypeT* ptr) const noexcept
|
||||
{
|
||||
static_assert(not is_void_v<TypeT>, "cannot delete a pointer to an incomplete type");
|
||||
static_assert(not sizeof(TypeT) > 0, "cannot delete a pointer to an incomplete type");
|
||||
delete[] ptr;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename TypeT, class DeleteT = default_delete<TypeT>>
|
||||
class unique_ptr
|
||||
{
|
||||
public:
|
||||
/// \brief the element type
|
||||
using element_t = TypeT;
|
||||
|
||||
/// \brief pointer to element type
|
||||
using pointer_t = element_t*;
|
||||
|
||||
/// \brief the deleter
|
||||
using delete_t = DeleteT;
|
||||
|
||||
///
|
||||
/// \brief Default Constructor, creates a unique_ptr that owns nothing.
|
||||
constexpr unique_ptr() : unique_ptr(nullptr) {}
|
||||
constexpr unique_ptr(pointer_t ptr) : _handle(ptr) {}
|
||||
|
||||
///
|
||||
/// \brief Nullptr Constructor, creates a unique_ptr that owns nothing.
|
||||
constexpr unique_ptr(nullptr_t) noexcept : unique_ptr(nullptr) {}
|
||||
|
||||
///
|
||||
/// \brief Pointer Constructor, creates a unique_ptr that owns `ptr` with deleter `del`
|
||||
/// \param ptr The resource to own
|
||||
/// \param del The deleter
|
||||
explicit constexpr unique_ptr(pointer_t ptr, const delete_t& del) : _delete(del), _handle(ptr) {}
|
||||
|
||||
///
|
||||
/// \brief Pointer Constructor, creates a unique_ptr that owns `ptr` with deleter `del`
|
||||
/// \param ptr The resource to own
|
||||
/// \param del The deleter
|
||||
explicit constexpr unique_ptr(pointer_t ptr, delete_t&& del) : _delete(del), _handle(ptr) {}
|
||||
|
||||
///
|
||||
/// \brief Move Constructor, transfers ownership from `other`
|
||||
/// \param other The unique_ptr to take ownership from
|
||||
constexpr unique_ptr(unique_ptr&& other) : _handle(other._handle) { other._handle = nullptr; }
|
||||
|
||||
constexpr ~unique_ptr() { if(_handle) ::operator delete(_handle); }
|
||||
// Delete copy constructor
|
||||
constexpr unique_ptr(const unique_ptr&) = delete;
|
||||
|
||||
///
|
||||
/// \brief Default Constructor, if it owns a resource, it deletes it using `delete_t`
|
||||
constexpr ~unique_ptr() { if(_handle) _delete(_handle); }
|
||||
|
||||
|
||||
constexpr unique_ptr& operator=(unique_ptr&& r) noexcept
|
||||
{ _handle = r._handle; r._handle = nullptr; return *this; }
|
||||
@ -40,7 +126,10 @@ public:
|
||||
|
||||
|
||||
private:
|
||||
delete_t _delete;
|
||||
pointer_t _handle;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // FENNEC_LANG_POINTERS_H
|
||||
|
BIN
logo/raster.png
Normal file
BIN
logo/raster.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
70
logo/vector.svg
Normal file
70
logo/vector.svg
Normal file
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="512"
|
||||
height="512"
|
||||
viewBox="0 0 512 512"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.2 (2aeb623e1d, 2025-05-12)"
|
||||
sodipodi:docname="vector.svg"
|
||||
inkscape:export-filename="../254afa7f/raster.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="313.2483"
|
||||
inkscape:cy="291.68155"
|
||||
inkscape:window-width="3440"
|
||||
inkscape:window-height="1371"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" /><defs
|
||||
id="defs1" /><g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"><path
|
||||
style="fill:#ecc891;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 222.19154,399.0475 0.43986,1.89206 1.60752,3.38161 6.12598,6.727 10.20652,4.60182 10.81077,1.82709 9.341,0.22611 14.13783,-2.96492 10.98115,-6.4368 4.9427,-10.80883 -1.20772,-15.04887 -9.5032,-18.99825 -8.89851,-11.62383 -7.8785,-5.31048 h -12.59159 l -8.84005,4.51085 -9.6954,12.56982 -9.71699,20.74007 z"
|
||||
id="path16"
|
||||
sodipodi:nodetypes="ccccccccccccccccccc" /><g
|
||||
id="g4"
|
||||
transform="matrix(1.1676266,0,0,1.1678831,-29.151974,-24.864933)"><path
|
||||
style="fill:#f3b431"
|
||||
d="m 214.21,362.142 -0.95,-0.849 -10.873,-3.699 -10.873,-3.699 -5.127,-3.335 -5.127,-3.334 -4.65,-4.868 -4.65,-4.867 -3.526,-5.587 -3.527,-5.587 -4.006,-9.413 -4.006,-9.413 -0.632,-2.5 -0.633,-2.5 -2.185,-2.644 -2.185,-2.644 -8.95,-5.741 -8.951,-5.741 -5.204,-5.204 -5.204,-5.205 -2.946,-5.91 -2.947,-5.911 -2.62,-7 -2.621,-7 -2.532,-9.5 -2.532,-9.5 -1.984,-10.237 -1.984,-10.237 -1.582,-12.763 -1.5816,-12.763 -0.0464,-18.5 -0.0464,-18.5 1.1624,-6.5 1.163,-6.5 2.057,-6.317 2.057,-6.317 3.646,-3.829 3.646,-3.829 4.445,-1.195 4.444,-1.195 5.241,0.655 5.24,0.655 7.815,3.798 7.815,3.798 6,4.571 6,4.571 8.611,8.817 8.61,8.817 6.411,8 6.411,8 4.629,6.5 4.628,6.5 4.888,8 4.888,8 7.444,13.307 7.443,13.308 5.019,6.664 5.018,6.665 3.398,2.278 3.398,2.278 h 2.902 2.902 l 2.7,-1.418 2.7,-1.417 3.607,-3.833 3.607,-3.832 2.999,-4.5 2.999,-4.5 10.302,-17.993 10.303,-17.994 4.063,-6.006 4.062,-6.007 4.99,-6.5 4.991,-6.5 7.896,-9.275 7.897,-9.275 7.282,-6.352 7.283,-6.351 4.63,-3.186 4.63,-3.185 6.73,-3.155 6.729,-3.156 7,0.025 7,0.025 3,1.597 3,1.598 2.137,2.345 2.137,2.345 2.032,4.05 2.031,4.049 1.664,7.951 1.664,7.95 0.554,13.5 0.554,13.5 -1.184,13.5 -1.185,13.5 -1.485,10 -1.484,10 -2.563,11.452 -2.563,11.452 -2.956,9.048 -2.956,9.048 -3.568,7.421 -3.568,7.421 -4.631,4.992 -4.63,4.993 -9.5,6.218 -9.5,6.218 -2.087,2.369 -2.086,2.368 -3.288,8.5 -3.288,8.5 -3.896,7.575 -3.895,7.574 -4.73,5.861 -4.73,5.86 -6.182,4.225 -6.183,4.225 -11.944,3.916 -11.945,3.917 -0.517,-6.443 -0.517,-6.443 -4.07,-8.134 -4.069,-8.133 -3.811,-4.977 -3.81,-4.976 -3.374,-2.274 -3.374,-2.273 h -5.392 -5.391 l -3.786,1.931 -3.785,1.931 -4.152,5.382 -4.152,5.381 -4.161,8.88 -4.161,8.879 -0.112,6.3 -0.112,6.3 -0.05,0.008 -0.05,0.008 -0.95,-0.849 m 11.35,-44.351 1.2,-1.2 -0.01,-2.55 -0.01,-2.55 -2.416,-5.191 -2.417,-5.19 -4.092,-2.964 -4.092,-2.964 -4.953,-1.189 -4.952,-1.188 -4.131,0.698 -4.131,0.698 -3.049,2.725 -3.05,2.724 0.677,2.696 0.676,2.695 3.539,3.917 3.538,3.916 4.186,1.531 4.187,1.531 7.932,1.043 7.932,1.042 3.436,-0.23 m 53.902,-1.673 6.203,-0.988 3.664,-1.739 3.664,-1.738 2.883,-3.981 2.884,-3.981 v -2.782 -2.782 l -3.25,-2.318 -3.25,-2.318 -6.5,0.034 -6.5,0.033 -3.5,1.831 -3.5,1.83 -2.841,2.636 -2.842,2.636 -1.773,3.5 -1.773,3.5 -0.668,3.682 -0.668,3.682 1.623,0.909 1.624,0.908 4.159,-0.783 4.159,-0.784 6.202,-0.987 m -111.966,-47.654 5.235,-2.349 3.765,-2.78 3.764,-2.78 3.047,-2.532 3.047,-2.532 2.943,-2 2.942,-2 3.883,-3.921 3.883,-3.921 1.378,-3.297 1.377,-3.297 v -4.997 -4.997 l -1.55,-4.785 -1.551,-4.785 -0.92,-2 -0.921,-2 -2.431,-6.608 -2.43,-6.608 -2.93,-5.892 -2.93,-5.892 -4.812,-8.5 -4.812,-8.5 -7.815,-11.5 -7.815,-11.5 -7.134,-7.763 -7.134,-7.763 -5.878,-4.523 -5.877,-4.522 -4.28,-1.943 -4.28,-1.942 -4.661,-0.022 -4.661,-0.022 -2.55,3.031 -2.551,3.031 -1.191,3.719 -1.192,3.719 -0.44,16 -0.44,16 1.149,11 1.148,11 2.401,13.5 2.4,13.5 1.469,6.638 1.468,6.639 2.177,7.361 2.178,7.362 3.309,7.197 3.308,7.197 4.808,5.14 4.808,5.14 2.858,1.478 2.858,1.478 4.174,0.847 4.173,0.846 4,-0.501 4,-0.501 m 183.477,-2.31 4.99,-2.528 4.142,-5.24 4.141,-5.239 2.957,-6.455 2.956,-6.454 3.311,-11.548 3.311,-11.547 1.7,-9.5 1.699,-9.5 1.308,-8.5 1.308,-8.5 1.248,-12.244 1.247,-12.243 -0.583,-11.757 -0.582,-11.756 -1.639,-5.37 -1.639,-5.37 -2.381,-2.38 -2.38,-2.38 -4.295,0.01 -4.296,0.01 -5.459,2.541 -5.459,2.541 -4.041,3.32 -4.041,3.32 -4.88,4.879 -4.88,4.879 -5.799,7.085 -5.799,7.084 -7.109,10.916 -7.11,10.915 -5.372,10.5 -5.372,10.5 -4.215,10.5 -4.214,10.5 -1.363,5 -1.363,5 0.01,3.5 0.01,3.5 1.827,4 1.827,4 4.401,4.027 4.401,4.026 8,6.055 8,6.055 4.647,2.703 4.647,2.703 4.353,0.906 4.353,0.906 4.244,-0.42 4.244,-0.421 4.989,-2.529"
|
||||
id="path5"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /><path
|
||||
style="fill:#302825"
|
||||
d="m 38.669874,343.2406 v -205.5 c 0,-64.218747 38.539714,-102.749997 102.772576,-102.749998 h 205.54514 c 64.23285,10e-7 102.77257,38.531251 102.7726,102.749998 v 205.5 c 0,64.21875 -38.53971,102.75 -102.7726,102.75 H 141.44245 c -64.232862,0 -102.772576,-38.53125 -102.772576,-102.75 z m 215.644396,34.439 6.05408,-1.26932 4.70234,-2.75576 4.70234,-2.75575 4.85015,-9.57131 11.55776,-3.70496 11.55777,-3.70496 6.26074,-4.27833 6.26074,-4.27832 4.72973,-5.86039 4.72974,-5.86039 3.89579,-7.57475 3.89578,-7.57476 3.28767,-8.5 3.28767,-8.5 2.08681,-2.36823 2.08681,-2.36824 9.5,-6.21818 9.5,-6.21819 4.63022,-4.99269 4.63023,-4.99269 3.56838,-7.42089 3.56837,-7.42089 2.95592,-9.048 2.95592,-9.048 2.56263,-11.452 2.56263,-11.452 1.48484,-10 1.48484,-10 1.18444,-13.5 1.18444,-13.5 -0.55378,-13.5 -0.55379,-13.5 -1.66446,-7.9502 -1.66446,-7.95021 -2.03104,-4.04979 -2.03104,-4.0498 -2.13715,-2.34501 -2.13714,-2.34502 -3,-1.59754 -3,-1.59754 -7,-0.0247 -7,-0.0247 -6.72956,3.15517 -6.72956,3.15517 -4.63001,3.18554 -4.63002,3.18553 -7.28271,6.3516 -7.28271,6.35159 -7.89653,9.27498 -7.89653,9.27497 -4.9902,6.5 -4.99021,6.5 -4.06264,6.00673 -4.06265,6.00673 -10.3024,17.99327 -10.3024,17.99327 -2.99908,4.5 -2.99907,4.5 -3.60686,3.83242 -3.60686,3.83242 -2.70034,1.41758 -2.70034,1.41758 h -2.90178 -2.90178 l -3.39788,-2.27813 -3.39788,-2.27813 -5.0186,-6.66431 -5.01859,-6.66432 -7.4435,-13.30755 -7.44349,-13.30756 -4.88782,-8 -4.88782,-8 -4.62853,-6.5 -4.62852,-6.5 -6.41106,-8 -6.41107,-8 -8.6105,-8.81716 -8.6105,-8.81717 -6,-4.57056 -6,-4.57056 -7.81514,-3.79846 -7.81513,-3.79845 -5.24036,-0.65474 -5.24035,-0.65474 -4.44451,1.19482 -4.44451,1.19482 -3.64616,3.82904 -3.64615,3.82905 -2.05676,6.31705 -2.05675,6.31706 -1.1629,6.5 -1.162903,6.5 0.04643,18.5 0.04643,18.5 1.581683,12.76302 1.58168,12.76302 1.98409,10.23698 1.98408,10.23698 2.53212,9.5 2.53212,9.5 2.62048,7 2.62048,7 2.94656,5.91077 2.94656,5.91077 5.20407,5.20407 5.20407,5.20408 8.95038,5.74141 8.95038,5.74141 2.18498,2.64375 2.18499,2.64374 0.63266,2.5 0.63266,2.5 4.006,9.41317 4.00601,9.41317 3.52645,5.58683 3.52645,5.58683 4.6499,4.86738 4.6499,4.86738 5.14188,3.34419 5.14189,3.34419 11.68957,3.89294 10.02667,3.48665 2.00001,1.68169 0.37671,1.62008 1.37674,2.8955 2.62326,2.88 2.62327,2.88 4.37062,1.97016 4.37063,1.97015 4.62937,0.78223 4.62938,0.78222 4,0.0968 4,0.0968 z"
|
||||
id="path4"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /></g><path
|
||||
style="fill:#191104;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 241.54011,399.64959 3.09336,5.58232 5.58117,3.09411 13.60733,0.0826 6.82614,-6.82761 v -8.14723 l -7.07452,-5.95411 -7.73281,-1.451 -9.58761,2.58224 -4.79572,6.09812 z"
|
||||
id="path23" /><path
|
||||
style="fill:#f0d09a;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 400.8078,244.96043 3.86601,-13.48555 5.49603,-32.11678 2.98445,-24.22656 1.45602,-14.2984 -1.36028,-27.46043 -3.82748,-12.54307 -5.55907,-5.55912 -10.03107,0.0234 -12.74815,5.93519 -9.43676,7.75474 -11.39604,11.3962 -13.54213,16.54774 -16.60248,25.49606 -12.54497,24.52553 -9.84193,24.52554 -3.18295,11.67884 0.0233,8.17518 4.2665,9.34308 10.27746,9.40496 18.68202,14.14306 10.85193,6.31358 10.16535,2.11618 9.91082,-0.98218 c 0,0 11.65175,-5.90598 11.65175,-5.90598 l 9.67143,-12.23824 6.90419,-15.07621 z"
|
||||
id="path25" /><path
|
||||
style="fill:#f0d09a;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 188.43989,273.51869 6.87148,-4.67155 9.06779,-9.15853 3.21681,-7.70103 v -11.67182 l -3.62081,-11.17664 -2.1496,-4.67154 -5.67583,-15.43473 -6.84229,-13.76233 -11.23723,-19.85402 -18.25001,-26.86131 -16.6597,-18.13255 -13.72545,-10.56351 -9.99488,-4.53723 -10.88461,-0.0514 -5.95606,7.07972 -2.782458,8.68671 -1.02751,37.37225 2.682038,25.69344 5.60578,31.53283 3.42931,15.50598 5.08502,17.19474 7.72617,16.81052 11.22789,12.00583 6.67417,3.45227 9.74619,1.97723 9.341,-1.17023 12.22621,-5.48554 8.79107,-6.49343 z"
|
||||
id="path26" /><path
|
||||
style="fill:#191104;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 234.21786,346.27779 1.40115,-1.40146 -0.0233,-5.9562 -5.64314,-12.12379 -9.55586,-6.92321 -11.56534,-2.77606 -9.64692,1.63037 -7.12136,6.36378 1.5798,6.29607 8.26329,9.14803 9.77652,3.57605 18.52325,2.43504 z"
|
||||
id="path27" /><path
|
||||
style="fill:#191104;fill-opacity:1;stroke-width:1.16776"
|
||||
d="m 276.41005,345.18466 3.79128,2.12204 24.19672,-4.13664 8.55636,-4.06072 6.73371,-9.2987 v -6.49809 l -7.58957,-5.4143 -15.17913,0.0783 -8.17341,4.27562 -6.63561,6.15708 -4.14041,8.17519 z"
|
||||
id="path28" /></g></svg>
|
After Width: | Height: | Size: 10 KiB |
4
test.sh
4
test.sh
@ -21,7 +21,7 @@
|
||||
|
||||
Help()
|
||||
{
|
||||
echo "Bash script for building fennec from source."
|
||||
echo "Bash script for running the fennec test suite. By default, the build script executes in debug mode."
|
||||
echo
|
||||
echo "GNU long options:"
|
||||
echo "--help (-h) = Print this help info."
|
||||
@ -87,7 +87,7 @@ All()
|
||||
# Main Program =========================================================================================================
|
||||
|
||||
if [[ $# -eq 0 ]] ; then
|
||||
All
|
||||
Debug
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user