Loading...
Searching...
No Matches
Config.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2024 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#pragma once
26
27
29// SFML version
31#define SFML_VERSION_MAJOR 3
32#define SFML_VERSION_MINOR 0
33#define SFML_VERSION_PATCH 0
34#define SFML_VERSION_IS_RELEASE true
35
36
38// Identify the operating system
39// see https://sourceforge.net/p/predef/wiki/Home/
41#if defined(_WIN32)
42
43// Windows
44#define SFML_SYSTEM_WINDOWS
45#ifndef NOMINMAX
46#define NOMINMAX
47#endif
48
49#elif defined(__APPLE__) && defined(__MACH__)
50
51// Apple platform, see which one it is
52#include "TargetConditionals.h"
53
54#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
55
56// iOS
57#define SFML_SYSTEM_IOS
58
59#elif TARGET_OS_MAC
60
61// macOS
62#define SFML_SYSTEM_MACOS
63
64#else
65
66// Unsupported Apple system
67#error This Apple operating system is not supported by SFML library
68
69#endif
70
71#elif defined(__unix__)
72
73// UNIX system, see which one it is
74#if defined(__ANDROID__)
75
76// Android
77#define SFML_SYSTEM_ANDROID
78
79#elif defined(__linux__)
80
81// Linux
82#define SFML_SYSTEM_LINUX
83
84#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
85
86// FreeBSD
87#define SFML_SYSTEM_FREEBSD
88
89#elif defined(__OpenBSD__)
90
91// OpenBSD
92#define SFML_SYSTEM_OPENBSD
93
94#elif defined(__NetBSD__)
95
96// NetBSD
97#define SFML_SYSTEM_NETBSD
98
99#else
100
101// Unsupported UNIX system
102#error This UNIX operating system is not supported by SFML library
103
104#endif
105
106#else
107
108// Unsupported system
109#error This operating system is not supported by SFML library
110
111#endif
112
113
115// Portable debug macro
117#if !defined(NDEBUG)
118
119#define SFML_DEBUG
120
121#endif
122
123
125// Helpers to create portable import / export macros for each module
127#if !defined(SFML_STATIC)
128
129#if defined(SFML_SYSTEM_WINDOWS)
130
131// Windows compilers need specific (and different) keywords for export and import
132#define SFML_API_EXPORT __declspec(dllexport)
133#define SFML_API_IMPORT __declspec(dllimport)
134
135// For Visual C++ compilers, we also need to turn off this annoying C4251 warning
136#ifdef _MSC_VER
137
138#pragma warning(disable : 4251)
139
140#endif
141
142#else // Linux, FreeBSD, macOS
143
144#define SFML_API_EXPORT __attribute__((__visibility__("default")))
145#define SFML_API_IMPORT __attribute__((__visibility__("default")))
146
147#endif
148
149#else
150
151// Static build doesn't need import/export macros
152#define SFML_API_EXPORT
153#define SFML_API_IMPORT
154
155#endif