initial commit
This commit is contained in:
+127
@@ -0,0 +1,127 @@
|
||||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveMacros: false
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllConstructorInitializersOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: MultiLine
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
AfterExternBlock: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 80
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||
Priority: 3
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
IncludeIsMainRegex: '(Test)?$'
|
||||
IndentCaseLabels: false
|
||||
IndentPPDirectives: None
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBinPackProtocolList: Auto
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Right
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Auto
|
||||
StatementMacros:
|
||||
- Q_UNUSED
|
||||
- QT_REQUIRE_VERSION
|
||||
TabWidth: 8
|
||||
UseTab: Never
|
||||
...
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
---
|
||||
Checks: [
|
||||
'-*',
|
||||
'clang-diagnostic-*',
|
||||
'clang-analyzer-*',
|
||||
'bugprone-*',
|
||||
'concurrency-*',
|
||||
'cppcoreguidelines-*',
|
||||
'modernize-*',
|
||||
'readability-*',
|
||||
'-readability-redundant-access-specifiers',
|
||||
'-readability-function-cognitive-complexity'
|
||||
]
|
||||
ExtraArgs: ['-Wno-unknown-warning-option']
|
||||
FormatStyle: none
|
||||
HeaderFileExtensions: ['', 'h','hh','hpp','hxx']
|
||||
HeaderFilterRegex: ''
|
||||
ImplementationFileExtensions: ['c','cc','cpp','cxx']
|
||||
CheckOptions:
|
||||
- key: MinimumExceptionNameLength
|
||||
value: 1
|
||||
- key: MinimumLoopCounterNameLength
|
||||
value: 3
|
||||
- key: MinimumParameterNameLength
|
||||
value: 3
|
||||
- key: MinimumVariableNameLength
|
||||
value: 3
|
||||
User: 'scott.e.graves@protonmail.com'
|
||||
WarningsAsErrors: ''
|
||||
...
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"CompileFlags": {
|
||||
"Remove": ["-flarge-source-files", "-fext-numeric-literals"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
aarch64
|
||||
advapi32
|
||||
armv8
|
||||
autogen
|
||||
backwardcpp_project
|
||||
bcrypt
|
||||
binutils_version
|
||||
bitcoinsystem
|
||||
boost_asio_has_std_string_view
|
||||
bugprone
|
||||
cflags
|
||||
chrono
|
||||
clsctx_inproc_server
|
||||
clsid_shelllink
|
||||
cmake_current_source_dir
|
||||
cmake_host_win32
|
||||
comdlg32
|
||||
cpp_httplib_hash
|
||||
cppcoreguidelines
|
||||
cppdbg
|
||||
cppflags
|
||||
cpphttplib
|
||||
cppvsdbg
|
||||
crypto_aead_xchacha20poly1305_ietf_npubbytes
|
||||
cspan
|
||||
cstdint
|
||||
cxxflags
|
||||
cxxopts_project
|
||||
cxxstd
|
||||
d_largefile64_source
|
||||
d_largefile_source
|
||||
d_ndebug
|
||||
dbackward_has_dwarf
|
||||
dbackward_shared
|
||||
dbghelp
|
||||
dbinaries
|
||||
dboost_root
|
||||
dbuild_shared_libs
|
||||
dc_link_args
|
||||
dcli11_warnings_as_errors
|
||||
dcmake_cxx_flags
|
||||
dcpp_args
|
||||
dcpphttplib_openssl_support
|
||||
dcpphttplib_tcp_nodelay
|
||||
dcurl_ca_bundle
|
||||
dcurl_ca_fallback
|
||||
dcurl_disable_ldap
|
||||
dcurl_staticlib
|
||||
dcurl_use_libpsl
|
||||
dcurl_use_libssh2
|
||||
dcurl_zlib
|
||||
dcxxopts_build_examples
|
||||
dcxxopts_build_tests
|
||||
dcxxopts_enable_install
|
||||
dcxxopts_enable_warnings
|
||||
dcxxopts_use_unicode_help
|
||||
ddebug
|
||||
ddefault_library
|
||||
decmult_gen_prec_bits
|
||||
decmult_window_size
|
||||
default_handler_is_spdlog
|
||||
defl_ctx
|
||||
degl
|
||||
denable_threaded_resolver
|
||||
deps
|
||||
devent__disable_openssl
|
||||
devent__disable_tests
|
||||
devent__library_type
|
||||
dfail_on_warnings
|
||||
dfmt_test
|
||||
dfuse_use_version
|
||||
dgles1
|
||||
dgles2
|
||||
dhas_setxattr
|
||||
dhttplib_require_brotli
|
||||
dhttplib_require_openssl
|
||||
dhttplib_require_zlib
|
||||
dinstall_manpages
|
||||
djson_buildtests
|
||||
dnana_cmake_enable_audio
|
||||
dnana_cmake_enable_jpeg
|
||||
dnana_cmake_enable_png
|
||||
dnana_cmake_install
|
||||
dndebug
|
||||
dopengl
|
||||
dopenssl_root_dir
|
||||
dopenssl_use_static_libs
|
||||
dpng_shared
|
||||
dpng_static
|
||||
dpng_tests
|
||||
dpng_tools
|
||||
dportable
|
||||
dproject_enable_backward_cpp
|
||||
dproject_static_link
|
||||
drocksdb_install_on_windows
|
||||
dshared
|
||||
dspdlog_fmt_external
|
||||
dthreads_prefer_pthread_flag
|
||||
duse_libidn2
|
||||
duuid_build_tests
|
||||
dwith_benchmark
|
||||
dwith_gflags
|
||||
dwith_iostats_context
|
||||
dwxuse_opengl
|
||||
dzlib_use_static_libs
|
||||
ecdh
|
||||
endforeach
|
||||
endfunction
|
||||
eventlib
|
||||
expect_streq
|
||||
fext
|
||||
fifthgrid
|
||||
flac_version
|
||||
flarge
|
||||
fontconfig_version
|
||||
freetype2_version
|
||||
glapi
|
||||
gmock
|
||||
googletest
|
||||
gpath
|
||||
gtest_version
|
||||
has_setxattr
|
||||
hresult
|
||||
httpapi
|
||||
httplib
|
||||
icns
|
||||
icudata
|
||||
icui18n
|
||||
icuuc
|
||||
iostreams
|
||||
iphlpapi
|
||||
istream_reader
|
||||
libbitcoin
|
||||
libbitcoinsystem
|
||||
libcurl
|
||||
libevent
|
||||
libexample
|
||||
libfuse3
|
||||
libgmock
|
||||
libgtest
|
||||
libiconv_version
|
||||
libjpeg
|
||||
libpcre2_version
|
||||
libpng_project
|
||||
librocksdb
|
||||
libsecp256k1
|
||||
libsfml
|
||||
libsodium_type
|
||||
libspdlog
|
||||
libuuid
|
||||
libuuid_include_dirs
|
||||
libvlc_include_dirs
|
||||
libvlc_libraries
|
||||
libvlccore
|
||||
libvorbis
|
||||
linkflags
|
||||
mbig
|
||||
msvc
|
||||
msvcr120
|
||||
msvcr90
|
||||
mswsock
|
||||
mtune
|
||||
mwindows
|
||||
nana
|
||||
ncrypt
|
||||
nlohmann_json
|
||||
nmakeprg
|
||||
nominmax
|
||||
nuspell_version
|
||||
oleaut32
|
||||
openal_version
|
||||
openssldir
|
||||
ostream_writer
|
||||
pkgconfig
|
||||
project_enable_cxxopts
|
||||
project_enable_fontconfig
|
||||
project_enable_gtkmm
|
||||
project_enable_libdsm
|
||||
project_enable_libiconv
|
||||
project_enable_libtasn1
|
||||
project_enable_winfsp
|
||||
propgrid
|
||||
pugi
|
||||
pugixml_project
|
||||
pwhash
|
||||
richtext
|
||||
rocksdb_library
|
||||
rpcrt4
|
||||
sdl2_no_mwindows
|
||||
secp256k1
|
||||
secur32
|
||||
sfml_project
|
||||
shlwapi
|
||||
smb_stat_wtime
|
||||
source_subdir
|
||||
spdlog
|
||||
spdlog_project
|
||||
st_ctim
|
||||
static-libgcc
|
||||
static-libstdc++
|
||||
stduuid_project
|
||||
stod
|
||||
streq
|
||||
strequal
|
||||
tolower
|
||||
uring
|
||||
userenv
|
||||
vorbis_version
|
||||
wall
|
||||
wcast-align
|
||||
wconversion
|
||||
wdouble-promotion
|
||||
wduplicated-branches
|
||||
wduplicated-cond
|
||||
wextra
|
||||
wformat=2
|
||||
win32_find_dataa
|
||||
winfsp
|
||||
winhttp
|
||||
wininet
|
||||
winspool
|
||||
wlogical-op
|
||||
wmisleading-indentation
|
||||
wno-useless-cast
|
||||
wnon-virtual-dtor
|
||||
wnull-dereference
|
||||
wold-style-cast
|
||||
woverloaded-virtual
|
||||
wpedantic
|
||||
wserialization
|
||||
wshadow
|
||||
wsign-conversion
|
||||
wunused
|
||||
wxwidgets_version
|
||||
xattr
|
||||
xcursor
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
.cache/
|
||||
.vs/
|
||||
build*/
|
||||
compile_commands.json
|
||||
cspell.json
|
||||
deps/
|
||||
dist/
|
||||
override.sh
|
||||
scripts/cleanup.cmd
|
||||
scripts/cleanup.sh
|
||||
support/Dockerfile
|
||||
version.cpp
|
||||
version.rc
|
||||
+181
@@ -0,0 +1,181 @@
|
||||
#!groovy
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
environment {
|
||||
PROJECT_TEST_CONFIG_DIR = "/.ci/cpp_build_system/test"
|
||||
}
|
||||
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
skipDefaultCheckout()
|
||||
timestamps()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Windows') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('win32_shared') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared' } } }
|
||||
}
|
||||
stage('win32_shared_crypto') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 1' } } }
|
||||
}
|
||||
stage('win32_shared_crypto_no_boost') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 7' } } }
|
||||
}
|
||||
stage('win32_shared_dsm') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 2' } } }
|
||||
}
|
||||
stage('win32_shared_sqlite') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 3' } } }
|
||||
}
|
||||
stage('win32_shared_errors_v1') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 4' } } }
|
||||
}
|
||||
stage('win32_shared_fmt') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 5' } } }
|
||||
}
|
||||
stage('win32_shared_libevent') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh shared 6' } } }
|
||||
}
|
||||
|
||||
stage('win32_static') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static' } } }
|
||||
}
|
||||
stage('win32_static_crypto') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 1' } } }
|
||||
}
|
||||
stage('win32_static_crypto_no_boost') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 7' } } }
|
||||
}
|
||||
stage('win32_static_dsm') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 2' } } }
|
||||
}
|
||||
stage('win32_static_sqlite') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 3' } } }
|
||||
}
|
||||
stage('win32_static_errors_v1') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 4' } } }
|
||||
}
|
||||
stage('win32_static_fmt') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 5' } } }
|
||||
}
|
||||
stage('win32_static_libevent') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_win32.sh static 6' } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Linux') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('linux_shared') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared' } } }
|
||||
}
|
||||
stage('linux_shared_crypto') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 1' } } }
|
||||
}
|
||||
stage('linux_shared_crypto_no_boost') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 7' } } }
|
||||
}
|
||||
stage('linux_shared_dsm') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 2' } } }
|
||||
}
|
||||
stage('linux_shared_sqlite') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 3' } } }
|
||||
}
|
||||
stage('linux_shared_errors_v1') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 4' } } }
|
||||
}
|
||||
stage('linux_shared_fmt') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 5' } } }
|
||||
}
|
||||
stage('linux_shared_libevent') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 6' } } }
|
||||
}
|
||||
|
||||
stage('linux_static') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static' } } }
|
||||
}
|
||||
stage('linux_static_crypto') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 1' } } }
|
||||
}
|
||||
stage('linux_static_crypto_no_boost') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 7' } } }
|
||||
}
|
||||
stage('linux_static_dsm') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 2' } } }
|
||||
}
|
||||
stage('linux_static_sqlite') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 3' } } }
|
||||
}
|
||||
stage('linux_static_errors_v1') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 4' } } }
|
||||
}
|
||||
stage('linux_static_fmt') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 5' } } }
|
||||
}
|
||||
stage('linux_static_libevent') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 6' } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
body()
|
||||
return
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
|
||||
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
+243
@@ -0,0 +1,243 @@
|
||||
#!groovy
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
environment {
|
||||
PROJECT_TEST_CONFIG_DIR = "${env.HOME}/.ci/cpp_build_system/test"
|
||||
}
|
||||
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
skipDefaultCheckout()
|
||||
timestamps()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('macOS arm64') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('macos_aarch64_shared') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_crypto') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 1' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_crypto_no_boost') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 7' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_dsm') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 2' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_sqlite') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 3' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_errors_v1') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 4' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_fmt') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 5' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_shared_libevent') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 6' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_crypto') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 1' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_crypto_no_boost') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 7' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_dsm') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 2' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_sqlite') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 3' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_errors_v1') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 4' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_fmt') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 5' } }
|
||||
}
|
||||
}
|
||||
stage('macos_aarch64_static_libevent') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 6' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('macOS x86_64') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('macos_x86_64_shared') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared "" x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_crypto') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 1 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_crypto_no_boost') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 7 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_dsm') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 2 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_sqlite') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 3 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_errors_v1') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 4 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_fmt') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 5 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_shared_libevent') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh shared 6 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static "" x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_crypto') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 1 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_crypto_no_boost') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 7 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_dsm') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 2 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_sqlite') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 3 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_errors_v1') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 4 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_fmt') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 5 x86_64' } }
|
||||
}
|
||||
}
|
||||
stage('macos_x86_64_static_libevent') {
|
||||
steps {
|
||||
script { retryWithBackoff(2, 5) { sh 'scripts/test_unix.sh static 6 x86_64' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
body()
|
||||
return
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
|
||||
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 sgraves
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR=$(realpath "$0")
|
||||
CURRENT_DIR=$(dirname "${CURRENT_DIR}")
|
||||
|
||||
function do_update() {
|
||||
pushd "../$1"
|
||||
git pull
|
||||
popd
|
||||
|
||||
./update_project.sh $1 ..
|
||||
|
||||
pushd "../$1"
|
||||
scripts/cleanup.sh
|
||||
git add .
|
||||
git commit -a -m 'updated build system'
|
||||
git push
|
||||
popd
|
||||
}
|
||||
|
||||
pushd "${CURRENT_DIR}"
|
||||
git add .
|
||||
git commit -a -m "updates"
|
||||
git push
|
||||
|
||||
do_update dxmedia3
|
||||
do_update fifthgrid
|
||||
do_update gamepadx
|
||||
do_update joule
|
||||
do_update med
|
||||
do_update repertory
|
||||
do_update monitarr
|
||||
popd
|
||||
@@ -0,0 +1,16 @@
|
||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
message(FATAL_ERROR "32-bit compilation is not supported")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*|ARM64.*)")
|
||||
set(IS_ARM_SYSTEM 1)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_ARM64 AND NOT IS_ARM_SYSTEM AND NOT PROJECT_REQUIRE_ALPINE)
|
||||
message(FATAL_ERROR "aarch64 cross-compile is not supported")
|
||||
endif()
|
||||
|
||||
string(REPLACE "_" "-" PROJECT_MARCH ${PROJECT_BUILD_ARCH})
|
||||
if("${PROJECT_BUILD_ARCH}" STREQUAL "aarch64")
|
||||
set(PROJECT_MARCH armv8-a)
|
||||
endif()
|
||||
@@ -0,0 +1,123 @@
|
||||
list(APPEND PROJECT_COMMON_FLAG_LIST
|
||||
-D_FILE_OFFSET_BITS=64
|
||||
-D_GNU_SOURCE
|
||||
-D_LARGEFILE64_SOURCE
|
||||
-D_LARGEFILE_SOURCE
|
||||
-D_TIME_BITS=64
|
||||
-march=${PROJECT_MARCH}
|
||||
-mtune=generic
|
||||
)
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
list(APPEND PROJECT_COMMON_FLAG_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-Wa,-mbig-obj
|
||||
-flarge-source-files
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_DEBUG_FLAG_LIST
|
||||
-DDEBUG
|
||||
-D_DEBUG
|
||||
-Og
|
||||
-fno-omit-frame-pointer
|
||||
-g
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_RELEASE_FLAG_LIST
|
||||
-DNDEBUG
|
||||
-D_NDEBUG
|
||||
-O3
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
-Wall
|
||||
-Wcast-align
|
||||
-Wconversion
|
||||
-Wdouble-promotion
|
||||
-Wextra
|
||||
-Wformat=2
|
||||
-Wmisleading-indentation
|
||||
-Wnon-virtual-dtor
|
||||
-Wnull-dereference
|
||||
-Wold-style-cast
|
||||
-Woverloaded-virtual
|
||||
-Wpedantic
|
||||
-Wshadow
|
||||
-Wsign-conversion
|
||||
-Wunused
|
||||
)
|
||||
|
||||
if (NOT PROJECT_IS_DARWIN)
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
-Wduplicated-branches
|
||||
-Wduplicated-cond
|
||||
-Wlogical-op
|
||||
-Wno-useless-cast
|
||||
)
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_CFLAGS_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-std=c${CMAKE_C_STANDARD}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_CXXFLAGS_LIST
|
||||
${PROJECT_COMMON_FLAG_LIST}
|
||||
-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
)
|
||||
|
||||
if(NOT PROJECT_IS_DARWIN AND PROJECT_STATIC_LINK)
|
||||
list(APPEND PROJECT_CMAKE_EXE_LINKER_FLAGS
|
||||
-static-libgcc
|
||||
-static-libstdc++
|
||||
-static
|
||||
)
|
||||
endif()
|
||||
|
||||
list(JOIN PROJECT_COMMON_FLAG_LIST " " PROJECT_COMMON_FLAG_LIST)
|
||||
list(JOIN PROJECT_DEBUG_FLAG_LIST " " PROJECT_DEBUG_FLAG_LIST)
|
||||
list(JOIN PROJECT_RELEASE_FLAG_LIST " " PROJECT_RELEASE_FLAG_LIST)
|
||||
|
||||
list(JOIN PROJECT_CFLAGS_LIST " " PROJECT_CFLAGS_LIST)
|
||||
list(JOIN PROJECT_CXXFLAGS_LIST " " PROJECT_CXXFLAGS_LIST)
|
||||
|
||||
list(JOIN PROJECT_CMAKE_EXE_LINKER_FLAGS " " PROJECT_CMAKE_EXE_LINKER_FLAGS)
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROJECT_CFLAGS_LIST}")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROJECT_DEBUG_FLAG_LIST}")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_LIST}")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-include cstdint -include utility ${CMAKE_CXX_FLAGS} ${PROJECT_CXXFLAGS_LIST}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROJECT_DEBUG_FLAG_LIST}")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_LIST}")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${PROJECT_CMAKE_EXE_LINKER_FLAGS}")
|
||||
|
||||
set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility ${PROJECT_COMMON_FLAG_LIST}")
|
||||
if (NOT PROJECT_IS_DARWIN)
|
||||
set(EXTERNAL_CMAKE_CXX_FLAGS "-fext-numeric-literals ${EXTERNAL_CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE}
|
||||
-DCMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE}
|
||||
-DCMAKE_CXX_FLAGS=${EXTERNAL_CMAKE_CXX_FLAGS}
|
||||
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
|
||||
-DCMAKE_C_FLAGS=${PROJECT_COMMON_FLAG_LIST}
|
||||
-DCMAKE_C_STANDARD=${CMAKE_C_STANDARD}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_INSTALL_PREFIX=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE}
|
||||
)
|
||||
|
||||
if(CMAKE_TOOLCHAIN_FILE)
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||
)
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" "|" CMAKE_PREFIX_PATH_ALT_SEP "${CMAKE_PREFIX_PATH}")
|
||||
list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_ALT_SEP}
|
||||
)
|
||||
@@ -0,0 +1,188 @@
|
||||
if (PROJECT_MACOS_ICNS_NAME)
|
||||
set(PROJECT_MACOS_ICNS_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/assets/${PROJECT_MACOS_ICNS_NAME}")
|
||||
endif()
|
||||
|
||||
function(set_common_target_options name)
|
||||
target_compile_definitions(${name} PUBLIC
|
||||
${PROJECT_DEFINITIONS}
|
||||
${${name}_DEFINITIONS}
|
||||
)
|
||||
|
||||
target_include_directories(${name} BEFORE PUBLIC
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/include
|
||||
)
|
||||
|
||||
target_link_directories(${name} BEFORE PUBLIC
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib
|
||||
)
|
||||
|
||||
if (PROJECT_STATIC_LINK)
|
||||
target_compile_definitions(${name} PRIVATE U_STATIC_IMPLEMENTATION)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${name} PRIVATE
|
||||
ICU::io
|
||||
ICU::i18n
|
||||
ICU::uc
|
||||
ICU::data
|
||||
)
|
||||
|
||||
target_include_directories(${name} AFTER PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include
|
||||
${name}_INCLUDES
|
||||
)
|
||||
|
||||
if(PROJECT_DEPENDENCIES)
|
||||
add_dependencies(${name} ${PROJECT_DEPENDENCIES})
|
||||
endif()
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set_property(TARGET ${name} PROPERTY LINK_SEARCH_START_STATIC 1)
|
||||
endif()
|
||||
endfunction(set_common_target_options)
|
||||
|
||||
function(add_project_executable2 name dependencies libraries headers sources is_win32)
|
||||
if (PROJECT_WINDOWS_VERSION_RC)
|
||||
list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC})
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN AND PROJECT_MACOS_ICNS_SOURCE AND "${name}" STREQUAL "${PROJECT_NAME}")
|
||||
set_source_files_properties(${PROJECT_MACOS_ICNS_SOURCE} PROPERTIES
|
||||
MACOSX_PACKAGE_LOCATION "Resources"
|
||||
)
|
||||
|
||||
add_executable(${name}
|
||||
MACOSX_BUNDLE
|
||||
${headers}
|
||||
${sources}
|
||||
${PROJECT_MACOS_ICNS_SOURCE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
|
||||
)
|
||||
|
||||
set_target_properties(${name} PROPERTIES
|
||||
MACOSX_BUNDLE TRUE
|
||||
MACOSX_BUNDLE_ICON_FILE "${PROJECT_MACOS_ICNS_NAME}"
|
||||
RESOURCE "${PROJECT_MACOS_ICNS_SOURCE}"
|
||||
)
|
||||
else()
|
||||
add_executable(${name}
|
||||
${headers}
|
||||
${sources}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(dependency ${dependencies})
|
||||
set_common_target_options(${dependency})
|
||||
endforeach()
|
||||
|
||||
set_common_target_options(${name})
|
||||
|
||||
if(dependencies)
|
||||
add_dependencies(${name} ${dependencies})
|
||||
endif()
|
||||
|
||||
target_link_libraries(${name} PRIVATE ${libraries})
|
||||
|
||||
if(PROJECT_ENABLE_SDL AND PROJECT_IS_MINGW)
|
||||
target_link_libraries(${name} PRIVATE SDL2::SDL2main)
|
||||
endif ()
|
||||
|
||||
if (is_win32 AND PROJECT_IS_MINGW)
|
||||
target_link_options(${name} PRIVATE -mwindows)
|
||||
endif()
|
||||
endfunction(add_project_executable2)
|
||||
|
||||
function(add_project_executable name dependencies libraries)
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hxx
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
)
|
||||
|
||||
if(PROJECT_ENABLE_WXWIDGETS OR PROJECT_ENABLE_SDL OR PROJECT_ENABLE_SFML OR PROJECT_ENABLE_NANA)
|
||||
set(IS_WIN32 ON)
|
||||
endif()
|
||||
|
||||
add_project_executable2(${name} "${dependencies}" "${libraries}" "${headers}" "${sources}" "${IS_WIN32}")
|
||||
|
||||
if(PROJECT_ENABLE_WXWIDGETS)
|
||||
target_link_libraries(${name} PRIVATE ${wxWidgets_LIBRARIES})
|
||||
endif()
|
||||
endfunction(add_project_executable)
|
||||
|
||||
function(add_project_library name dependencies libraries additional_sources)
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/${name}/include/*.hxx
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${additional_sources}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
)
|
||||
|
||||
add_library(${name} STATIC
|
||||
${headers}
|
||||
${sources}
|
||||
)
|
||||
|
||||
set_common_target_options(${name})
|
||||
|
||||
set_target_properties(${name} PROPERTIES PREFIX "")
|
||||
target_link_libraries(${name} PRIVATE ${libraries})
|
||||
endfunction(add_project_library)
|
||||
|
||||
function(add_project_test_executable name dependencies libraries)
|
||||
if(PROJECT_ENABLE_TESTING)
|
||||
find_package(GTest ${GTEST_VERSION} REQUIRED)
|
||||
enable_testing()
|
||||
|
||||
file(GLOB_RECURSE headers
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/${name}/include/*.hxx
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/${name}/include/*.hpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/include/*.hh
|
||||
${PROJECT_SUPPORT_DIR}/test/include/*.hpp
|
||||
)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/src/*.cxx
|
||||
${PROJECT_SUPPORT_DIR}/test/src/*.cpp
|
||||
${additional_sources}
|
||||
)
|
||||
|
||||
add_project_executable2(${name} "${dependencies}" "${libraries}" "${headers}" "${sources}" OFF)
|
||||
|
||||
target_compile_definitions(${name} PRIVATE -DPROJECT_TESTING)
|
||||
|
||||
target_include_directories(${name} SYSTEM BEFORE
|
||||
${GTEST_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_include_directories(${name} AFTER PRIVATE
|
||||
${PROJECT_SUPPORT_DIR}/test/include
|
||||
)
|
||||
|
||||
target_link_libraries(${name} PRIVATE
|
||||
GTest::gtest
|
||||
GTest::gmock
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -0,0 +1,43 @@
|
||||
set(BINUTILS_HASH ce2017e059d63e67ddb9240e9d4ec49c2893605035cd60e92ad53177f4377237)
|
||||
set(BOOST2_HASH 7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca)
|
||||
set(BOOST_HASH 9de758db755e8330a01d995b0a24d09798048400ac25c03fc5ea9be364b13c93)
|
||||
set(CLI11_HASH 17e02b4cddc2fa348e5dbdbb582c59a3486fa2b2433e70a0c3bacb871334fd55)
|
||||
set(CPP_HTTPLIB_HASH a66f908f50ccb119769adce44fe1eac75f81b6ffab7c4ac0211bb663ffeb2688)
|
||||
set(CURL_HASH d4d9a5001b491f5726efe9b50bc4aad03029506e73c9261272e809c64b05e814)
|
||||
set(CXXOPTS_HASH 3bfc70542c521d4b55a46429d808178916a579b28d048bd8c727ee76c39e2072)
|
||||
set(EXPAT_HASH 85372797ff0673a8fc4a6be16466bb5a0ca28c0dcf3c6f7ac1686b4a3ba2aabb)
|
||||
set(FLAC_HASH aea54ed186ad07a34750399cb27fc216a2b62d0ffcd6dc2e3064a3518c3146f8)
|
||||
set(FMT_HASH aa3e8fbb6a0066c03454434add1f1fc23299e85758ceec0d7d2d974431481e40)
|
||||
set(FONTCONFIG_HASH 6a33dc555cc9ba8b10caf7695878ef134eeb36d0af366041f639b1da9b6ed220)
|
||||
set(FREETYPE2_HASH 174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34)
|
||||
set(GCC_HASH 7294d65cc1a0558cb815af0ca8c7763d86f7a31199794ede3f630c0d1b0a5723)
|
||||
set(GTEST_HASH 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c)
|
||||
set(ICU_HASH a2c443404f00098e9e90acf29dc318e049d2dc78d9ae5f46efb261934a730ce2)
|
||||
set(INNOSETUP_HASH fa73bf47a4da250d185d07561c2bfda387e5e20db77e4570004cf6a133cc10b1)
|
||||
set(JSON_HASH 4b92eb0c06d10683f7447ce9406cb97cd4b453be18d7279320f7b2f025c10187)
|
||||
set(LIBDSM_HASH 747c4563d6291303d9b085c9e7dc96ac44f91871dcac3e20480fdcc066eee88a)
|
||||
set(LIBEVENT_HASH 7180a979aaa7000e1264da484f712d403fcf7679b1e9212c4e3d09f5c93efc24)
|
||||
set(LIBICONV_HASH 3b08f5f4f9b4eb82f151a7040bfd6fe6c6fb922efe4b1659c66ea933276965e8)
|
||||
set(LIBJPEG_TURBO_HASH 560f6338b547544c4f9721b18d8b87685d433ec78b3c644c70d77adad22c55e6)
|
||||
set(LIBPNG_HASH 71158e53cfdf2877bc99bcab33641d78df3f48e6e0daad030afe9cb8c031aa46)
|
||||
set(LIBSODIUM_HASH 8e5aeca07a723a27bbecc3beef14b0068d37e7fc0e97f51b3f1c82d2a58005c1)
|
||||
set(LIBTASN_HASH 1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a)
|
||||
set(MINGW_HASH 5afe822af5c4edbf67daaf45eec61d538f49eef6b19524de64897c6b95828caf)
|
||||
set(NANA_HASH 56f7b1ed006c750fccf8ef15ab1e83f96751f2dfdcb68d93e5f712a6c9b58bcb)
|
||||
set(NUSPELL_HASH 5d4baa1daf833a18dc06ae0af0571d9574cc849d47daff6b9ce11dac0a5ded6a)
|
||||
set(OGG_HASH 83e6704730683d004d20e21b8f7f55dcb3383cdf84c0daedf30bde175f774638)
|
||||
set(OPENAL_HASH 7e1fecdeb45e7f78722b776c5cf30bd33934b961d7fd2a11e0494e064cc631ce)
|
||||
set(OPENSSL_HASH b6a5f44b7eb69e3fa35dbf15524405b44837a481d43d81daddde3ff21fcbb8e9)
|
||||
set(PKG_CONFIG_HASH 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591)
|
||||
set(PUGIXML_HASH 655ade57fa703fb421c2eb9a0113b5064bddb145d415dd1f88c79353d90d511a)
|
||||
set(ROCKSDB_HASH 7ec942baab802b2845188d02bc5d4e42c29236e61bcbc08f5b3a6bdd92290c22)
|
||||
set(SDL_HASH f50e59da0d383b2c84d43db625c6e23aae58f8f90eabd2944e2138ccc253744b)
|
||||
set(SECP256K1_HASH 61583939f1f25b92e6401e5b819e399da02562de663873df3056993b40148701)
|
||||
set(SFML_HASH 15ff4d608a018f287c6a885db0a2da86ea389e516d2323629e4d4407a7ce047f)
|
||||
set(SPDLOG_HASH 15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67)
|
||||
set(SQLITE_HASH 1d3049dd0f830a025a53105fc79fd2ab9431aea99e137809d064d8ee8356b032)
|
||||
set(STDUUID_HASH b1176597e789531c38481acbbed2a6894ad419aab0979c10410d59eb0ebf40d3)
|
||||
set(VORBIS_HASH 270c76933d0934e42c5ee0a54a36280e2d87af1de3cc3e584806357e237afd13)
|
||||
set(WINFSP_HASH 073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a)
|
||||
set(WXWIDGETS_HASH f936c8d694f9c49a367a376f99c751467150a4ed7cbf8f4723ef19b2d2d9998d)
|
||||
set(ZLIB_HASH 17e88863f3600672ab49182f217281b6fc4d3c762bde361935e436a95214d05c)
|
||||
@@ -0,0 +1,100 @@
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(CURL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(OPENSSL_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
set(SFML_STATIC_LIBRARIES ${PROJECT_STATIC_LINK})
|
||||
if (PROJECT_IS_DARWIN)
|
||||
set(ZLIB_USE_STATIC_LIBS OFF)
|
||||
else()
|
||||
set(ZLIB_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
endif()
|
||||
set(wxWidgets_USE_STATIC ${PROJECT_STATIC_LINK})
|
||||
set(ICU_USE_STATIC_LIBS ${PROJECT_STATIC_LINK})
|
||||
|
||||
include(cmake/libraries/icu.cmake)
|
||||
include(cmake/libraries/openssl.cmake)
|
||||
include(cmake/libraries/boost.cmake)
|
||||
include(cmake/libraries/backward_cpp.cmake)
|
||||
include(cmake/libraries/cli11.cmake)
|
||||
include(cmake/libraries/cpp_httplib.cmake)
|
||||
include(cmake/libraries/curl.cmake)
|
||||
include(cmake/libraries/cxxopts.cmake)
|
||||
include(cmake/libraries/dtl.cmake)
|
||||
include(cmake/libraries/flac.cmake)
|
||||
include(cmake/libraries/fmt.cmake)
|
||||
include(cmake/libraries/fontconfig.cmake)
|
||||
include(cmake/libraries/freetype2.cmake)
|
||||
include(cmake/libraries/fuse.cmake)
|
||||
include(cmake/libraries/fzf.cmake)
|
||||
include(cmake/libraries/gtkmm.cmake)
|
||||
include(cmake/libraries/json.cmake)
|
||||
include(cmake/libraries/libbitcoin_system.cmake)
|
||||
include(cmake/libraries/libdsm.cmake)
|
||||
include(cmake/libraries/libevent.cmake)
|
||||
include(cmake/libraries/libiconv.cmake)
|
||||
include(cmake/libraries/libjpeg_turbo.cmake)
|
||||
include(cmake/libraries/libpng.cmake)
|
||||
include(cmake/libraries/libsodium.cmake)
|
||||
include(cmake/libraries/libtasn.cmake)
|
||||
include(cmake/libraries/nana.cmake)
|
||||
include(cmake/libraries/nuspell.cmake)
|
||||
include(cmake/libraries/ogg.cmake)
|
||||
include(cmake/libraries/openal.cmake)
|
||||
include(cmake/libraries/pugixml.cmake)
|
||||
include(cmake/libraries/rocksdb.cmake)
|
||||
include(cmake/libraries/sago_platform_folders.cmake)
|
||||
include(cmake/libraries/sdl.cmake)
|
||||
include(cmake/libraries/secp256k1.cmake)
|
||||
include(cmake/libraries/sfml.cmake)
|
||||
include(cmake/libraries/spdlog.cmake)
|
||||
include(cmake/libraries/sqlite.cmake)
|
||||
include(cmake/libraries/stduuid.cmake)
|
||||
include(cmake/libraries/testing.cmake)
|
||||
include(cmake/libraries/tpl.cmake)
|
||||
include(cmake/libraries/vlc.cmake)
|
||||
include(cmake/libraries/vorbis.cmake)
|
||||
include(cmake/libraries/winfsp.cmake)
|
||||
include(cmake/libraries/wxwidgets.cmake)
|
||||
|
||||
if(PROJECT_BUILD)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${ZLIB_INCLUDE_DIRS})
|
||||
link_libraries(${ZLIB_LIBRARIES})
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
link_libraries(
|
||||
advapi32
|
||||
bcrypt
|
||||
comdlg32
|
||||
crypt32
|
||||
dbghelp
|
||||
gdi32
|
||||
httpapi
|
||||
iphlpapi
|
||||
kernel32
|
||||
mswsock
|
||||
ncrypt
|
||||
ole32
|
||||
oleaut32
|
||||
rpcrt4
|
||||
secur32
|
||||
shell32
|
||||
shlwapi
|
||||
user32
|
||||
userenv
|
||||
uuid
|
||||
version
|
||||
winhttp
|
||||
wininet
|
||||
winspool
|
||||
ws2_32
|
||||
)
|
||||
elseif(NOT PROJECT_IS_DARWIN)
|
||||
link_libraries(
|
||||
uring
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,11 @@
|
||||
if(PROJECT_ENABLE_BACKWARD_CPP AND PROJECT_BUILD)
|
||||
if(PROJECT_IS_MINGW)
|
||||
add_definitions(-DPROJECT_ENABLE_BACKWARD_CPP)
|
||||
|
||||
link_libraries(msvcr90)
|
||||
else()
|
||||
add_definitions(-DBACKWARD_HAS_BFD)
|
||||
|
||||
link_libraries(bfd)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,152 @@
|
||||
if(PROJECT_ENABLE_BOOST)
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
set(BOOST_MAJOR_VERSION ${BOOST2_MAJOR_VERSION})
|
||||
set(BOOST_MINOR_VERSION ${BOOST2_MINOR_VERSION})
|
||||
set(BOOST_PATCH_VERSION ${BOOST2_PATCH_VERSION})
|
||||
endif()
|
||||
|
||||
set(BOOST_ROOT ${PROJECT_EXTERNAL_BUILD_ROOT})
|
||||
set(BOOST_INCLUDE_DIR ${BOOST_ROOT}/include/boost-${BOOST_MINOR_VERSION}_${BOOST_MINOR_VERSION})
|
||||
|
||||
set(PROJECT_EXTERNAL_CMAKE_FLAGS
|
||||
${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR}
|
||||
-DBOOST_ROOT=${BOOST_ROOT}
|
||||
)
|
||||
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_BOOST)
|
||||
|
||||
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} EXACT
|
||||
REQUIRED
|
||||
COMPONENTS
|
||||
atomic
|
||||
chrono
|
||||
date_time
|
||||
filesystem
|
||||
iostreams
|
||||
locale
|
||||
log
|
||||
log_setup
|
||||
program_options
|
||||
random
|
||||
regex
|
||||
serialization
|
||||
system
|
||||
thread
|
||||
wserialization
|
||||
)
|
||||
else()
|
||||
if(PROJECT_IS_DARWIN)
|
||||
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
endif()
|
||||
|
||||
find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION}
|
||||
REQUIRED
|
||||
COMPONENTS
|
||||
atomic
|
||||
chrono
|
||||
date_time
|
||||
filesystem
|
||||
iostreams
|
||||
locale
|
||||
log
|
||||
log_setup
|
||||
program_options
|
||||
random
|
||||
regex
|
||||
serialization
|
||||
thread
|
||||
wserialization
|
||||
)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${Boost_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
link_libraries(
|
||||
${Boost_LIBRARIES}
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
if (PROJECT_ENABLE_LIBBITCOIN_SYSTEM OR NOT CMAKE_HOST_WIN32)
|
||||
if(PROJECT_CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(BOOST_BUILD_TYPE_LOWER debug)
|
||||
else()
|
||||
set(BOOST_BUILD_TYPE_LOWER release)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_ARM64)
|
||||
set(BOOST_ARCH arm)
|
||||
else()
|
||||
set(BOOST_ARCH x86)
|
||||
endif()
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set(BOOST_LINK static)
|
||||
else()
|
||||
set(BOOST_LINK "static,shared")
|
||||
endif()
|
||||
|
||||
set(BOOST_BUILD_ARGS
|
||||
--openssldir=$ENV{OPENSSL_ROOT_DIR}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
address-model=64
|
||||
architecture=${BOOST_ARCH}
|
||||
cxxstd=20
|
||||
cxxstd-dialect=gnu
|
||||
cxxflags=-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
cxxstd=${CMAKE_CXX_STANDARD}
|
||||
define=BOOST_ASIO_HAS_STD_STRING_VIEW
|
||||
define=BOOST_SYSTEM_NO_DEPRECATED
|
||||
link=${BOOST_LINK}
|
||||
linkflags=-std=gnu++${CMAKE_CXX_STANDARD}
|
||||
threading=multi
|
||||
variant=${BOOST_BUILD_TYPE_LOWER}
|
||||
)
|
||||
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
set(BOOST_URL_HASH SHA256=${BOOST2_HASH})
|
||||
else()
|
||||
set(BOOST_URL_HASH SHA256=${BOOST_HASH})
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(boost_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz
|
||||
URL_HASH ${BOOST_URL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./bootstrap.sh
|
||||
--with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread
|
||||
BUILD_COMMAND
|
||||
./b2
|
||||
-sNO_BZIP2=1
|
||||
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
${BOOST_BUILD_ARGS}
|
||||
INSTALL_COMMAND
|
||||
./b2
|
||||
-sNO_BZIP2=1
|
||||
-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
${BOOST_BUILD_ARGS}
|
||||
install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES boost_project)
|
||||
|
||||
if(PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE)
|
||||
add_dependencies(boost_project icu_project)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(boost_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_CLI11)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CLI11)
|
||||
|
||||
find_package(CLI11 ${CLI11_VERSION} REQUIRED)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(cli11_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/CLI11-${CLI11_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CLI11_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCLI11_WARNINGS_AS_ERRORS=OFF
|
||||
-DCLI11_SINGLE_FILE=ON
|
||||
-DCLI11_BUILD_DOCS=OFF
|
||||
-DCLI11_BUILD_TESTS=OFF
|
||||
-DCLI11_BUILD_EXAMPLES=OFF
|
||||
-DCLI11_INSTALL=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cli11_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,36 @@
|
||||
if(PROJECT_ENABLE_CPP_HTTPLIB)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(
|
||||
-DCPPHTTPLIB_OPENSSL_SUPPORT
|
||||
-DCPPHTTPLIB_TCP_NODELAY=true
|
||||
-DCPPHTTPLIB_ZLIB_SUPPORT
|
||||
-DPROJECT_ENABLE_CPP_HTTPLIB
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(cpphttplib_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/cpp-httplib-${CPP_HTTPLIB_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CPP_HTTPLIB_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DHTTPLIB_REQUIRE_BROTLI=OFF
|
||||
-DHTTPLIB_REQUIRE_OPENSSL=ON
|
||||
-DHTTPLIB_REQUIRE_ZLIB=ON
|
||||
-DHTTPLIB_TEST=OFF
|
||||
-DHTTPLIB_USE_BROTLI_IF_AVAILABLE=OFF
|
||||
-DHTTPLIB_USE_OPENSSL_IF_AVAILABLE=ON
|
||||
-DHTTPLIB_USE_ZLIB_IF_AVAILABLE=ON
|
||||
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cpphttplib_project)
|
||||
|
||||
add_dependencies(cpphttplib_project curl_project)
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(cpphttplib_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,56 @@
|
||||
if(PROJECT_ENABLE_CURL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CURL)
|
||||
|
||||
find_package(CURL ${CURL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${CURL_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(CURL::libcurl)
|
||||
|
||||
if (EXISTS ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
file(REMOVE ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
endif()
|
||||
file(DOWNLOAD https://curl.haxx.se/ca/cacert.pem ${PROJECT_DIST_DIR}/cacert.pem)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(curl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/curl-${CURL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CURL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_CURL_EXE=OFF
|
||||
-DBUILD_LIBCURL_DOCS=OFF
|
||||
-DBUILD_MISC_DOCS=OFF
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_CURL=ON
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCURL_BROTLI=OFF
|
||||
-DCURL_CA_BUNDLE=./cacert.pem
|
||||
-DCURL_CA_FALLBACK=ON
|
||||
-DCURL_DISABLE_LDAP=ON
|
||||
-DCURL_USE_LIBPSL=OFF
|
||||
-DCURL_USE_LIBSSH2=OFF
|
||||
-DCURL_USE_OPENSSL=${PROJECT_ENABLE_OPENSSL}
|
||||
-DCURL_ZLIB=ON
|
||||
-DCURL_ZSTD=OFF
|
||||
-DENABLE_CURL_MANUAL=OFF
|
||||
-DENABLE_THREADED_RESOLVER=ON
|
||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
||||
-DOPENSSL_USE_STATIC_LIBS=${OPENSSL_USE_STATIC_LIBS}
|
||||
-DUSE_LIBIDN2=OFF
|
||||
-DUSE_NGHTTP2=OFF
|
||||
-DZLIB_USE_STATIC_LIBS=${ZLIB_USE_STATIC_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES curl_project)
|
||||
|
||||
if (NOT CMAKE_HOST_WIN32)
|
||||
add_dependencies(curl_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,23 @@
|
||||
if(PROJECT_ENABLE_CXXOPTS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_CXXOPTS)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(cxxopts_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/cxxopts-v${CXXOPTS_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${CXXOPTS_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCXXOPTS_BUILD_EXAMPLES=OFF
|
||||
-DCXXOPTS_BUILD_TESTS=OFF
|
||||
-DCXXOPTS_ENABLE_INSTALL=ON
|
||||
-DCXXOPTS_ENABLE_WARNINGS=OFF
|
||||
-DCXXOPTS_USE_UNICODE_HELP=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES cxxopts_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,18 @@
|
||||
if(PROJECT_ENABLE_DTL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_DTL)
|
||||
else()
|
||||
ExternalProject_Add(dtl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/dtl-v${DTL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=d6dcc7834b4117b5c14456ea73b907d0e2bafa5058e3a06b2c504d53517438c5
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES dtl_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,31 @@
|
||||
if(PROJECT_ENABLE_FLAC)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FLAC)
|
||||
|
||||
find_package(FLAC ${FLAC_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FLAC_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(FLAC::FLAC)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(flac_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/flac-${FLAC_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FLAC_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_EXAMPLES=OFF
|
||||
-DBUILD_PROGRAMS=OFF
|
||||
-DBUILD_TESTING=OFF
|
||||
-DBUILD_DOCS=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DINSTALL_MANPAGES=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES flac_project)
|
||||
|
||||
add_dependencies(flac_project libiconv_project vorbis_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_FMT)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FMT)
|
||||
|
||||
find_package(fmt ${FMT_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FMT_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(fmt::fmt)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(fmt_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/fmt-${FMT_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FMT_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DFMT_DOC=OFF
|
||||
-DFMT_TEST=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES fmt_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,38 @@
|
||||
if(PROJECT_ENABLE_FONTCONFIG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FONTCONFIG)
|
||||
|
||||
find_package(Fontconfig ${FONTCONFIG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FONTCONFIG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Fontconfig::Fontconfig)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(fontconfig_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/fontconfig-${FONTCONFIG_VERSION}.tar.xz
|
||||
URL_HASH SHA256=${FONTCONFIG_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile
|
||||
-C _build
|
||||
INSTALL_COMMAND meson
|
||||
install
|
||||
-C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES fontconfig_project)
|
||||
|
||||
add_dependencies(fontconfig_project
|
||||
freetype2_project
|
||||
libjpeg_turbo_project
|
||||
libpng_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
if(PROJECT_ENABLE_FREETYPE2)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FREETYPE2)
|
||||
|
||||
find_package(Freetype ${FREETYPE2_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${FREETYPE_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Freetype::Freetype)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(freetype2_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/freetype-${FREETYPE2_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${FREETYPE2_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile
|
||||
-C _build
|
||||
INSTALL_COMMAND meson
|
||||
install
|
||||
-C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES freetype2_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FUSE)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_FUSE_INCLUDE_DIRS})
|
||||
|
||||
if(PROJECT_FUSE STREQUAL "fuse3")
|
||||
add_definitions(-DFUSE_USE_VERSION=30)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(libfuse3.a)
|
||||
else()
|
||||
link_libraries(fuse3)
|
||||
endif()
|
||||
elseif(PROJECT_FUSE STREQUAL "fuse2")
|
||||
add_definitions(-DFUSE_USE_VERSION=29)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(libfuse.a)
|
||||
else()
|
||||
link_libraries(fuse)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if (PROJECT_IS_DARWIN)
|
||||
find_library(OSXFUSE NO_CACHE NAMES OSXFUSE)
|
||||
if (NOT OSXFUSE)
|
||||
message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)")
|
||||
endif ()
|
||||
set(PROJECT_FUSE fuse2)
|
||||
else()
|
||||
pkg_check_modules(LIBFUSE3 fuse3>=3.0.0)
|
||||
if(LIBFUSE3_FOUND)
|
||||
set(PROJECT_FUSE fuse3)
|
||||
set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE3_INCLUDE_DIRS})
|
||||
else()
|
||||
pkg_check_modules(LIBFUSE2 fuse>=2.9.0)
|
||||
if(LIBFUSE2_FOUND)
|
||||
set(PROJECT_FUSE fuse2)
|
||||
set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE2_INCLUDE_DIRS})
|
||||
else()
|
||||
message(FATAL_ERROR "fuse library not found")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,3 @@
|
||||
if(PROJECT_ENABLE_FZF AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_FZF)
|
||||
endif()
|
||||
@@ -0,0 +1,23 @@
|
||||
if(PROJECT_ENABLE_GTKMM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_GTKMM)
|
||||
|
||||
find_package(PNG REQUIRED)
|
||||
|
||||
pkg_check_modules(GTKMM REQUIRED gtkmm-${GTKMM_VERSION})
|
||||
|
||||
add_definitions(${GTKMM_DEFINITIONS})
|
||||
|
||||
include_directories(
|
||||
${GTKMM_INCLUDE_DIRS}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
link_directories(${GTKMM_LIBRARY_DIRS})
|
||||
|
||||
link_libraries(
|
||||
${GTKMM_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,24 @@
|
||||
if((PROJECT_IS_DARWIN OR PROJECT_REQUIRE_ALPINE) AND NOT PROJECT_IS_MINGW AND NOT PROJECT_BUILD)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(ICU_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(ICU_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(icu_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/mingw64/icu-release-${ICU_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${ICU_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND chmod +x ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
|
||||
CONFIGURE_COMMAND cd icu4c/source && ${PROJECT_3RD_PARTY_DIR}/icu_configure.sh
|
||||
${PROJECT_MARCH}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${ICU_ENABLE_SHARED}
|
||||
BUILD_COMMAND cd icu4c/source && make -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
INSTALL_COMMAND cd icu4c/source && make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES icu_project)
|
||||
endif()
|
||||
@@ -0,0 +1,29 @@
|
||||
if(PROJECT_ENABLE_JSON)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_JSON)
|
||||
|
||||
find_package(nlohmann_json ${JSON_VERSION} REQUIRED)
|
||||
|
||||
if(PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX)
|
||||
include_directories(BEFORE SYSTEM /mingw64/include/nlohmann)
|
||||
else()
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_EXTERNAL_BUILD_ROOT}/include/nlohmann)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(json_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/json-${JSON_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${JSON_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DJSON_BuildTests=OFF
|
||||
-DJSON_Install=ON
|
||||
-DJSON_MultipleHeaders=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES json_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,51 @@
|
||||
if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(
|
||||
-DPROJECT_ENABLE_LIBBITCOIN_SYSTEM
|
||||
-DBC_STATIC
|
||||
-DECMULT_GEN_PREC_BITS=4
|
||||
-DECMULT_WINDOW_SIZE=15
|
||||
-DWITH_ICU
|
||||
)
|
||||
|
||||
set(LIBBITCOIN_SYSTEM_ROOT ${PROJECT_BUILD_DIR}/external/src/libbitcoin_system_project)
|
||||
|
||||
include_directories(SYSTEM BEFORE ${LIBBITCOIN_SYSTEM_ROOT}/include)
|
||||
|
||||
set(PROJECT_ADDITIONAL_SOURCES
|
||||
${PROJECT_ADDITIONAL_SOURCES}
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/config/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/error.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/formats/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/math/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/math/external/*.c
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/message/network_address.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/unicode/*.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/istream_reader.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/ostream_writer.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/utility/string.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/dictionary.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/electrum.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/electrum_dictionary.cpp
|
||||
${LIBBITCOIN_SYSTEM_ROOT}/src/wallet/mnemonic.cpp
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(libbitcoin_system_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libbitcoin-system-${LIBBITCOIN_SYSTEM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=0d10d79472e914620223f1ddb9396b0fa92ae5eb0b31acc14b9aa634a01d78b6
|
||||
CONFIGURE_COMMAND echo "No configure"
|
||||
BUILD_COMMAND echo "No build"
|
||||
INSTALL_COMMAND echo "No install"
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libbitcoin_system_project)
|
||||
|
||||
if(NOT PROJECT_IS_MINGW_UNIX)
|
||||
add_dependencies(libbitcoin_system_project
|
||||
boost_project
|
||||
secp256k1_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,87 @@
|
||||
if(PROJECT_ENABLE_LIBDSM)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBDSM)
|
||||
|
||||
find_library(libdsm_LIBRARIES NAMES libdsm.a)
|
||||
|
||||
link_libraries(${libdsm_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
set(_meson_c_args "-I${PROJECT_EXTERNAL_BUILD_ROOT}/deps/include")
|
||||
set(_meson_c_link_args "-L${PROJECT_EXTERNAL_BUILD_ROOT}/deps/lib -L${PROJECT_EXTERNAL_BUILD_ROOT}/deps/lib64")
|
||||
set(_meson_host_arg "")
|
||||
set(_meson_host_file "${PROJECT_EXTERNAL_BUILD_ROOT}/libdsm_host_machine.ini")
|
||||
|
||||
if(PROJECT_IS_DARWIN)
|
||||
set(_mac_arch_raw "${CMAKE_OSX_ARCHITECTURES}")
|
||||
string(TOLOWER "${_mac_arch_raw}" _mac_arch)
|
||||
|
||||
if(_mac_arch MATCHES ";")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|arm64|-arch|x86_64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|arm64|-arch|x86_64")
|
||||
else()
|
||||
if(_mac_arch STREQUAL "arm64")
|
||||
set(_meson_cpu_family "aarch64")
|
||||
set(_meson_cpu "arm64")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|arm64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|arm64")
|
||||
elseif(_mac_arch STREQUAL "x86_64")
|
||||
set(_meson_cpu_family "x86_64")
|
||||
set(_meson_cpu "x86_64")
|
||||
set(_meson_c_args "${_meson_c_args}|-arch|x86_64")
|
||||
set(_meson_c_link_args "${_meson_c_link_args}|-arch|x86_64")
|
||||
endif()
|
||||
|
||||
if(DEFINED _meson_cpu_family AND DEFINED _meson_cpu)
|
||||
file(WRITE "${_meson_host_file}"
|
||||
"[binaries]
|
||||
c = 'clang'
|
||||
cpp = 'clang++'
|
||||
|
||||
[host_machine]
|
||||
system = 'darwin'
|
||||
cpu_family = '${_meson_cpu_family}'
|
||||
cpu = '${_meson_cpu}'
|
||||
endian = 'little'
|
||||
"
|
||||
)
|
||||
|
||||
set(_meson_host_arg "--native-file=${_meson_host_file}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libdsm_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libdsm-${LIBDSM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBDSM_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/libdsm_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/libdsm_project
|
||||
CONFIGURE_COMMAND meson
|
||||
setup
|
||||
-Dc_args="${_meson_c_args}"
|
||||
-Dcpp_args="${_meson_c_args}"
|
||||
-Dc_link_args="${_meson_c_link_args}"
|
||||
-Dcpp_link_args="${_meson_c_link_args}"
|
||||
${_meson_host_arg}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-Dbinaries=false
|
||||
-Ddefault_library=static
|
||||
_build
|
||||
BUILD_COMMAND meson
|
||||
compile -C _build
|
||||
INSTALL_COMMAND meson
|
||||
install -C _build
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libdsm_project)
|
||||
|
||||
add_dependencies(libdsm_project
|
||||
libiconv_project
|
||||
libtasn1_project
|
||||
openssl_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,49 @@
|
||||
if(PROJECT_ENABLE_LIBEVENT)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBEVENT)
|
||||
|
||||
if(PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(LIBEVENT REQUIRED libevent>=${LIBEVENT_VERSION})
|
||||
else()
|
||||
set(LIBEVENT_STATIC_LINK ${PROJECT_STATIC_LINK})
|
||||
find_package(Libevent ${LIBEVENT_VERSION} REQUIRED)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${LIBEVENT_INCLUDE_DIRS})
|
||||
if (PROJECT_IS_MINGW_UNIX)
|
||||
unset(LIBEVENT_LIBRARIES)
|
||||
set(LIBEVENT_LIBRARIES
|
||||
/mingw64/lib/libevent.dll.a
|
||||
/mingw64/lib/libevent_core.dll.a
|
||||
/mingw64/lib/libevent_extra.dll.a
|
||||
)
|
||||
endif()
|
||||
link_libraries(${LIBEVENT_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(LIBEVENT_LIBRARY_TYPE BOTH)
|
||||
else()
|
||||
set(LIBEVENT_LIBRARY_TYPE STATIC)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libevent_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libevent-${LIBEVENT_VERSION}-stable.tar.gz
|
||||
URL_HASH SHA256=${LIBEVENT_HASH}
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/libevent_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/libevent_project
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DEVENT__DISABLE_OPENSSL=ON
|
||||
-DEVENT__DISABLE_SAMPLES=ON
|
||||
-DEVENT__DISABLE_TESTS=ON
|
||||
-DEVENT__LIBRARY_TYPE=${LIBEVENT_LIBRARY_TYPE}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libevent_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,25 @@
|
||||
if(PROJECT_ENABLE_LIBICONV)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBICONV)
|
||||
|
||||
find_library(libiconv_LIBRARIES NAMES libiconv.a)
|
||||
|
||||
link_libraries(${libiconv_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libiconv_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libiconv-${LIBICONV_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBICONV_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libiconv_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_LIBJPEG_TURBO)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBJPEG_TURBO)
|
||||
|
||||
find_package(JPEG ${LIBJPEG_TURBO_VERSION} REQUIRED)
|
||||
|
||||
include_directories(${JPEG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(JPEG::JPEG)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libjpeg_turbo_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libjpeg_turbo-${LIBJPEG_TURBO_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBJPEG_TURBO_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DENABLE_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DENABLE_STATIC=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libjpeg_turbo_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
if(PROJECT_ENABLE_LIBPNG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_PNG)
|
||||
|
||||
find_package(PNG ${LIBPNG_VERSION} REQUIRED )
|
||||
|
||||
include_directories(${PNG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(PNG::PNG)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libpng_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libpng-v${LIBPNG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBPNG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DENABLE_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DPNG_SHARED=ON
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_TESTS=OFF
|
||||
-DPNG_TOOLS=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libpng_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
if(PROJECT_ENABLE_LIBSODIUM)
|
||||
if(PROJECT_BUILD)
|
||||
pkg_check_modules(SODIUM libsodium>=${LIBSODIUM_VERSION} REQUIRED)
|
||||
|
||||
add_definitions(-DPROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SODIUM_INCLUDE_DIRS})
|
||||
|
||||
if(PROJECT_IS_MINGW_UNIX)
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(/mingw64/lib/libsodium.a)
|
||||
else()
|
||||
link_libraries(/mingw64/lib/libsodium.dll.a)
|
||||
endif()
|
||||
else()
|
||||
link_libraries(${SODIUM_LIBRARIES})
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_IS_MINGW)
|
||||
set(LIBSODIUM_TYPE mingw64)
|
||||
else()
|
||||
set(LIBSODIUM_TYPE linux)
|
||||
endif()
|
||||
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(LIBSODIUM_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(LIBSODIUM_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(libsodium_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libsodium-${LIBSODIUM_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBSODIUM_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ${PROJECT_3RD_PARTY_DIR}/libsodium_configure.sh
|
||||
${LIBSODIUM_TYPE}
|
||||
${PROJECT_MARCH}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${LIBSODIUM_ENABLE_SHARED}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libsodium_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,30 @@
|
||||
if(PROJECT_ENABLE_LIBTASN)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_LIBTASN)
|
||||
|
||||
find_library(libtasn1_LIBRARIES NAMES libtasn1.a)
|
||||
|
||||
link_libraries(${libtasn1_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(libtasn1_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/libtasn1-${LIBTASN_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${LIBTASN_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--disable-doc
|
||||
--enable-shared=no
|
||||
--enable-static=yes
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES libtasn1_project)
|
||||
|
||||
if (PROJECT_ENABLE_OPENSSL)
|
||||
add_dependencies(libtasn1_project openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,48 @@
|
||||
if(PROJECT_ENABLE_NANA)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_NANA)
|
||||
|
||||
find_library(NANA_LIBRARIES NAMES nana REQUIRED)
|
||||
|
||||
if (NOT PROJECT_IS_MINGW)
|
||||
find_package(X11 REQUIRED)
|
||||
endif()
|
||||
|
||||
include_directories(SYSTEM ${X11_INCLUDE_DIR})
|
||||
|
||||
link_libraries(
|
||||
${NANA_LIBRARIES}
|
||||
${X11_LIBRARIES}
|
||||
)
|
||||
|
||||
if (NOT PROJECT_IS_MINGW)
|
||||
link_libraries(
|
||||
X11::Xft
|
||||
X11::Xcursor
|
||||
)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(nana_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/nana-v${NANA_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${NANA_HASH}
|
||||
LIST_SEPARATOR |
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/nana_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/nana_project
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DNANA_CMAKE_ENABLE_AUDIO=OFF
|
||||
-DNANA_CMAKE_ENABLE_JPEG=ON
|
||||
-DNANA_CMAKE_ENABLE_PNG=ON
|
||||
-DNANA_CMAKE_INSTALL=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES nana_project)
|
||||
|
||||
add_dependencies(nana_project libjpeg_turbo_project libpng_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_NUSPELL)
|
||||
if(PROJECT_BUILD)
|
||||
find_package(Nuspell ${NUSPELL_VERSION} REQUIRED)
|
||||
|
||||
add_definitions(-DPROJECT_ENABLE_NUSPELL)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${NUSPELL_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Nuspell::nuspell)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(nuspell_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/nuspell-v${NUSPELL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${NUSPELL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_DOCS=OFF
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DBUILD_TOOLS=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES nuspell_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_OGG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OGG)
|
||||
|
||||
find_package(Ogg ${OGG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OGG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(Ogg::ogg)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(ogg_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/ogg-v${OGG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OGG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES ogg_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_OPENAL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OPENAL)
|
||||
|
||||
find_package(OpenAL ${OPENAL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OPENAL_INCLUDE_DIR})
|
||||
|
||||
link_libraries(${OPENAL_LIBRARY})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(openal_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/openal-${OPENAL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OPENAL_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES openal_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,59 @@
|
||||
set(OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT_DIR})
|
||||
|
||||
if(PROJECT_ENABLE_OPENSSL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_OPENSSL)
|
||||
|
||||
find_package(OpenSSL ${OPENSSL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${OPENSSL_INCLUDE_DIR})
|
||||
|
||||
link_libraries(
|
||||
OpenSSL::Crypto
|
||||
OpenSSL::SSL
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_IS_MINGW)
|
||||
set(OPENSSL_COMPILE_TYPE mingw64)
|
||||
elseif(PROJECT_IS_DARWIN)
|
||||
if(PROJECT_IS_ARM64)
|
||||
set(OPENSSL_COMPILE_TYPE darwin64-arm64)
|
||||
else()
|
||||
set(OPENSSL_COMPILE_TYPE darwin64-x86_64)
|
||||
endif()
|
||||
elseif(PROJECT_IS_ARM64)
|
||||
set(OPENSSL_COMPILE_TYPE linux-aarch64)
|
||||
else()
|
||||
set(OPENSSL_COMPILE_TYPE linux-x86_64)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_MINGW_UNIX)
|
||||
set(OPENSSL_CROSS_PREFIX "--cross-compile-prefix=x86_64-w64-mingw32-")
|
||||
endif()
|
||||
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(OPENSSL_NO_SHARED shared)
|
||||
else()
|
||||
set(OPENSSL_NO_SHARED no-shared)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(openssl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/openssl-${OPENSSL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${OPENSSL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./Configure
|
||||
${OPENSSL_COMPILE_TYPE}
|
||||
${OPENSSL_CROSS_PREFIX}
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
no-apps
|
||||
no-docs
|
||||
${OPENSSL_NO_SHARED}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES openssl_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,28 @@
|
||||
if(PROJECT_ENABLE_PUGIXML)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_PUGIXML)
|
||||
|
||||
find_package(pugixml ${PUGIXML_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PUGIXML_INCLUDE_DIR})
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
link_libraries(pugixml::static)
|
||||
else()
|
||||
link_libraries(pugixml::pugixml)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(pugixml_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/pugixml-${PUGIXML_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${PUGIXML_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES pugixml_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,38 @@
|
||||
if(PROJECT_ENABLE_ROCKSDB)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_ROCKSDB)
|
||||
find_library(ROCKSDB_LIBRARY NAMES librocksdb.a REQUIRED)
|
||||
link_libraries(${ROCKSDB_LIBRARY})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(rocksdb_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/rocksdb-${ROCKSDB_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${ROCKSDB_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DFAIL_ON_WARNINGS=OFF
|
||||
-DPORTABLE=1
|
||||
-DROCKSDB_BUILD_SHARED=OFF
|
||||
-DROCKSDB_INSTALL_ON_WINDOWS=ON
|
||||
-DWITH_BENCHMARK=OFF
|
||||
-DWITH_BENCHMARK_TOOLS=OFF
|
||||
-DWITH_BZ2=OFF
|
||||
-DWITH_CORE_TOOLS=OFF
|
||||
-DWITH_EXAMPLES=OFF
|
||||
-DWITH_GFLAGS=OFF
|
||||
-DWITH_IOSTATS_CONTEXT=OFF
|
||||
-DWITH_PERF_CONTEXT=OFF
|
||||
-DWITH_TESTS=OFF
|
||||
-DWITH_TOOLS=OFF
|
||||
-DWITH_TRACE_TOOLS=OFF
|
||||
-DWITH_ZLIB=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES rocksdb_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,3 @@
|
||||
if(PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SAGO_PLATFORM_FOLDERS)
|
||||
endif()
|
||||
@@ -0,0 +1,33 @@
|
||||
if(PROJECT_ENABLE_SDL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SDL)
|
||||
|
||||
set(SDL2_NO_MWINDOWS ON)
|
||||
find_package(SDL2 ${SDL_VERSION} REQUIRED)
|
||||
|
||||
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(SDL2::SDL2)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SDL_CONFIGURE_OPTS --enable-shared=yes --enable-static=yes)
|
||||
else()
|
||||
set(SDL_CONFIGURE_OPTS --enable-shared=no --enable-static=yes)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(sdl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/sdl-${SDL_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SDL_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./configure
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${SDL_CONFIGURE_OPTS}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sdl_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,35 @@
|
||||
if(PROJECT_ENABLE_SECP256K1)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SECP256K1)
|
||||
|
||||
pkg_check_modules(SECP256K1 libsecp256k1=${SECP256K1_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SECP256K1_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(${SECP256K1_LINK_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
if(PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SECP256K1_ENABLE_SHARED yes)
|
||||
else()
|
||||
set(SECP256K1_ENABLE_SHARED no)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(secp256k1_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/secp256k1-${SECP256K1_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SECP256K1_HASH}
|
||||
BUILD_IN_SOURCE 1
|
||||
LIST_SEPARATOR |
|
||||
CONFIGURE_COMMAND ./autogen.sh && ./configure
|
||||
--enable-shared=${SECP256K1_ENABLE_SHARED}
|
||||
--enable-static=yes
|
||||
--enable-module-ecdh
|
||||
--enable-module-recovery
|
||||
--prefix=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
BUILD_COMMAND make -j1
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES secp256k1_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,59 @@
|
||||
if(PROJECT_ENABLE_SFML)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SFML)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(X11 REQUIRED)
|
||||
|
||||
find_package(SFML ${SFML_VERSION}
|
||||
COMPONENTS
|
||||
audio
|
||||
graphics
|
||||
network
|
||||
system
|
||||
window
|
||||
REQUIRED
|
||||
)
|
||||
|
||||
if(NOT PROJECT_BUILD_SHARED_LIBS)
|
||||
set(SFML_STATIC_LIB_APPEND "-s")
|
||||
endif()
|
||||
|
||||
link_libraries(
|
||||
${X11_LIBRARIES}
|
||||
sfml-audio${SFML_STATIC_LIB_APPEND}
|
||||
sfml-graphics${SFML_STATIC_LIB_APPEND}
|
||||
sfml-network${SFML_STATIC_LIB_APPEND}
|
||||
sfml-system${SFML_STATIC_LIB_APPEND}
|
||||
sfml-window${SFML_STATIC_LIB_APPEND}
|
||||
)
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${X11_INCLUDE_DIR}
|
||||
${SFML_INCLUDE_DIR}
|
||||
)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(sfml_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/SFML-${SFML_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SFML_HASH}
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/SFML_patch.sh
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sfml_project)
|
||||
|
||||
add_dependencies(sfml_project
|
||||
flac_project
|
||||
fontconfig_project
|
||||
freetype2_project
|
||||
openal_project
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,26 @@
|
||||
if(PROJECT_ENABLE_SPDLOG)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SPDLOG)
|
||||
|
||||
find_package(spdlog ${SPDLOG_VERSION} REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${SPDLOG_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(spdlog::spdlog)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(spdlog_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/spdlog-${SPDLOG_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${SPDLOG_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DSPDLOG_BUILD_EXAMPLE=OFF
|
||||
-DSPDLOG_FMT_EXTERNAL=OFF
|
||||
-DSPDLOG_FMT_EXTERNAL_HO=OFF
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES spdlog_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,29 @@
|
||||
if(PROJECT_ENABLE_SQLITE)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_SQLITE)
|
||||
if (PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(SQLITE3 REQUIRED sqlite3)
|
||||
include_directories(SYSTEM BEFORE ${SQLITE3_INCLUDE_DIRS})
|
||||
link_libraries(${SQLITE3_LIBRARIES})
|
||||
else()
|
||||
set(SQLITE_SYSTEM_ROOT ${PROJECT_BUILD_DIR}/external/src/sqlite_project)
|
||||
|
||||
include_directories(SYSTEM BEFORE ${SQLITE_SYSTEM_ROOT})
|
||||
|
||||
list(APPEND PROJECT_ADDITIONAL_SOURCES
|
||||
${SQLITE_SYSTEM_ROOT}/sqlite3.c
|
||||
)
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW OR PROJECT_IS_MINGW_UNIX)
|
||||
ExternalProject_Add(sqlite_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/sqlite-amalgamation-${SQLITE_VERSION}.zip
|
||||
URL_HASH SHA256=${SQLITE_HASH}
|
||||
CONFIGURE_COMMAND echo "No configure"
|
||||
BUILD_COMMAND echo "No build"
|
||||
INSTALL_COMMAND echo "No install"
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES sqlite_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,27 @@
|
||||
if(PROJECT_ENABLE_STDUUID)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_STDUUID)
|
||||
|
||||
find_package(stduuid REQUIRED)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${stduuid_INCLUDE_DIRS})
|
||||
|
||||
link_libraries(${stduuid_LIBRARIES})
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(stduuid_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/stduuid-${STDUUID_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${STDUUID_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DUUID_BUILD_TESTS=OFF
|
||||
-DUUID_ENABLE_INSTALL=ON
|
||||
-DUUID_USING_CXX20_SPAN=ON
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES stduuid_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,18 @@
|
||||
if (PROJECT_ENABLE_TESTING)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_TESTING)
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(gtest_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/googletest-${GTEST_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${GTEST_HASH}
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES gtest_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,24 @@
|
||||
if(PROJECT_ENABLE_TPL)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_TPL)
|
||||
|
||||
find_package(tiny-process-library REQUIRED)
|
||||
|
||||
link_libraries(tiny-process-library::tiny-process-library)
|
||||
elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32)
|
||||
ExternalProject_Add(tpl_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/tiny-process-library.tar.gz
|
||||
URL_HASH SHA256=82e46657e697aff5bf980387c86ef3aa05bb184622abbd75663a4df549c68f73
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_TESTING=OFF
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES tpl_project)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
if(PROJECT_ENABLE_VLC AND PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_VLC)
|
||||
if (PROJECT_IS_MINGW)
|
||||
set(libvlc_INCLUDE_DIRS ${PROJECT_3RD_PARTY_DIR}/vlc/sdk/include)
|
||||
|
||||
set(libvlc_LIBRARIES
|
||||
${PROJECT_3RD_PARTY_DIR}/vlc/sdk/lib/libvlc.lib
|
||||
${PROJECT_3RD_PARTY_DIR}/vlc/sdk/lib/libvlccore.lib
|
||||
)
|
||||
else()
|
||||
pkg_check_modules(libvlc REQUIRED libvlc>=${VLC_VERSION})
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${libvlc_INCLUDE_DIRS})
|
||||
link_libraries(${libvlc_LIBRARIES})
|
||||
endif()
|
||||
@@ -0,0 +1,34 @@
|
||||
if(PROJECT_ENABLE_VORBIS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_VORBIS)
|
||||
|
||||
if(PROJECT_IS_MINGW AND NOT PROJECT_IS_MINGW_UNIX)
|
||||
pkg_check_modules(VORBIS REQUIRED vorbis>=${VORBIS_VERSION})
|
||||
link_libraries(${VORBIS_LINK_LIBRARIES})
|
||||
else()
|
||||
find_package(Vorbis ${VORBIS_VERSION} REQUIRED)
|
||||
link_libraries(Vorbis::vorbis)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM ${VORBIS_INCLUDE_DIRS})
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(vorbis_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/vorbis-v${VORBIS_VERSION}.tar.gz
|
||||
URL_HASH SHA256=${VORBIS_HASH}
|
||||
PATCH_COMMAND ${PROJECT_3RD_PARTY_DIR}/vorbis_patch.sh
|
||||
${PROJECT_3RD_PARTY_DIR}
|
||||
${CMAKE_BINARY_DIR}/external/src/vorbis_project
|
||||
LIST_SEPARATOR |
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES vorbis_project)
|
||||
|
||||
add_dependencies(vorbis_project ogg_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,15 @@
|
||||
if(PROJECT_ENABLE_WINFSP AND PROJECT_IS_MINGW)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_WINFSP)
|
||||
|
||||
include_directories(BEFORE SYSTEM ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/inc)
|
||||
|
||||
link_directories(BEFORE ${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/lib)
|
||||
|
||||
if(PROJECT_IS_ARM64)
|
||||
link_libraries(winfsp-a64)
|
||||
else()
|
||||
link_libraries(winfsp-x64)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,51 @@
|
||||
if(PROJECT_ENABLE_WXWIDGETS)
|
||||
if(PROJECT_BUILD)
|
||||
add_definitions(-DPROJECT_ENABLE_WXWIDGETS)
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
set(wxWidgets_USE_WINDOWS OFF)
|
||||
find_package(wxWidgets ${WXWIDGETS_VERSION} REQUIRED
|
||||
COMPONENTS
|
||||
net
|
||||
core
|
||||
base
|
||||
gl
|
||||
adv
|
||||
xml
|
||||
aui
|
||||
html
|
||||
media
|
||||
propgrid
|
||||
qa
|
||||
ribbon
|
||||
richtext
|
||||
stc
|
||||
webview
|
||||
xrc
|
||||
)
|
||||
|
||||
if(wxWidgets_USE_FILE)
|
||||
include(${wxWidgets_USE_FILE})
|
||||
endif()
|
||||
elseif(NOT PROJECT_IS_MINGW)
|
||||
ExternalProject_Add(wxwidgets_project
|
||||
PREFIX external
|
||||
URL ${PROJECT_3RD_PARTY_DIR}/wxWidgets-${WXWIDGETS_VERSION}.tar.bz2
|
||||
URL_HASH SHA256=${WXWIDGETS_HASH}
|
||||
LIST_SEPARATOR |
|
||||
BUILD_COMMAND
|
||||
${CMAKE_COMMAND} --build . -- -j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}
|
||||
CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS}
|
||||
-DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
|
||||
-DwxBUILD_MONOLITHIC=OFF
|
||||
-DwxBUILD_SHARED=${PROJECT_BUILD_SHARED_LIBS}
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_DEPENDENCIES wxwidgets_project)
|
||||
|
||||
add_dependencies(wxwidgets_project curl_project)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,40 @@
|
||||
option(PROJECT_ENABLE_BACKWARD_CPP "Enable backward-cpp" OFF)
|
||||
option(PROJECT_ENABLE_BOOST "Enable boost libraries" OFF)
|
||||
option(PROJECT_ENABLE_CLI11 "Enable CLI11 library" OFF)
|
||||
option(PROJECT_ENABLE_CPP_HTTPLIB "Enable cpp-httplib" OFF)
|
||||
option(PROJECT_ENABLE_CURL "Enable curl library" OFF)
|
||||
option(PROJECT_ENABLE_CXXOPTS "Enable cxxopts library" OFF)
|
||||
option(PROJECT_ENABLE_DTL "Enable DTL" OFF)
|
||||
option(PROJECT_ENABLE_FLAC "Enable FLAC library" OFF)
|
||||
option(PROJECT_ENABLE_FMT "Enable fmt library" OFF)
|
||||
option(PROJECT_ENABLE_FONTCONFIG "Enable fontconfig library" OFF)
|
||||
option(PROJECT_ENABLE_FREETYPE2 "Enable freetype2 library" OFF)
|
||||
option(PROJECT_ENABLE_FUSE "Enable FUSE" OFF)
|
||||
option(PROJECT_ENABLE_FZF "Enable fzf" OFF)
|
||||
option(PROJECT_ENABLE_GTKMM "Enable gtkmm" OFF)
|
||||
option(PROJECT_ENABLE_JSON "Enable JSON for Modern C++ library" OFF)
|
||||
option(PROJECT_ENABLE_LIBBITCOIN_SYSTEM "Enable libbitcoin-system library" OFF)
|
||||
option(PROJECT_ENABLE_LIBDSM "Enable dsm library" OFF)
|
||||
option(PROJECT_ENABLE_LIBEVENT "Enable libevent library" OFF)
|
||||
option(PROJECT_ENABLE_LIBJPEG_TURBO "Enable libjpeg-turbo library" OFF)
|
||||
option(PROJECT_ENABLE_LIBPNG "Enable libpng library" OFF)
|
||||
option(PROJECT_ENABLE_LIBSODIUM "Enable libsodium library" OFF)
|
||||
option(PROJECT_ENABLE_NANA "Enable nana library" OFF)
|
||||
option(PROJECT_ENABLE_NUSPELL "Enable nuspell" OFF)
|
||||
option(PROJECT_ENABLE_OGG "Enable OGG library" OFF)
|
||||
option(PROJECT_ENABLE_OPENAL "Enable OpenAL" OFF)
|
||||
option(PROJECT_ENABLE_OPENSSL "Enable OpenSSL library" OFF)
|
||||
option(PROJECT_ENABLE_PUGIXML "Enable PugiXML library" OFF)
|
||||
option(PROJECT_ENABLE_ROCKSDB "Enable RocksDB library" OFF)
|
||||
option(PROJECT_ENABLE_SAGO_PLATFORM_FOLDERS "Enable Sago platform folders" OFF)
|
||||
option(PROJECT_ENABLE_SECP256K1 "Enable secp256k1 library" OFF)
|
||||
option(PROJECT_ENABLE_SFML "Enable SFML" OFF)
|
||||
option(PROJECT_ENABLE_SPDLOG "Enable spdlog library" OFF)
|
||||
option(PROJECT_ENABLE_SQLITE "Enable SQLite" OFF)
|
||||
option(PROJECT_ENABLE_STDUUID "Enable stduuid library" OFF)
|
||||
option(PROJECT_ENABLE_TESTING "Enable building unit tests" OFF)
|
||||
option(PROJECT_ENABLE_TPL "Enable tiny process library" OFF)
|
||||
option(PROJECT_ENABLE_VLC "Enable VLC" OFF)
|
||||
option(PROJECT_ENABLE_VORBIS "Enable Vorbis library" OFF)
|
||||
option(PROJECT_ENABLE_WINFSP "Enable WinFSP" OFF)
|
||||
option(PROJECT_ENABLE_WXWIDGETS "Enable wxWidgets library" OFF)
|
||||
@@ -0,0 +1,23 @@
|
||||
if(MSVC)
|
||||
message(FATAL_ERROR "MSVC will not be supported")
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
message(FATAL_ERROR "FreeBSD is not currently supported")
|
||||
endif()
|
||||
|
||||
if(PROJECT_REQUIRE_ALPINE AND NOT PROJECT_IS_ALPINE AND PROJECT_IS_MINGW AND PROJECT_IS_MINGW_UNIX)
|
||||
message(FATAL_ERROR "Project requires Alpine Linux to build")
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN)
|
||||
if (PROJECT_IS_ARM64)
|
||||
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||
else()
|
||||
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (PROJECT_IS_DARWIN AND NOT PROJECT_MACOS_BUNDLE_ID)
|
||||
message(FATAL_ERROR "'PROJECT_MACOS_BUNDLE_ID' is not set in 'config.sh'")
|
||||
endif()
|
||||
@@ -0,0 +1,51 @@
|
||||
set(CMAKE_COLOR_MAKEFILE OFF)
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
|
||||
else()
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
set(CMAKE_BUILD_TYPE ${PROJECT_CMAKE_BUILD_TYPE})
|
||||
|
||||
file(MAKE_DIRECTORY ${PROJECT_EXTERNAL_BUILD_ROOT}/lib)
|
||||
file(CREATE_LINK ${PROJECT_EXTERNAL_BUILD_ROOT}/lib ${PROJECT_EXTERNAL_BUILD_ROOT}/lib64 SYMBOLIC)
|
||||
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/share
|
||||
)
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
list(PREPEND CMAKE_PREFIX_PATH
|
||||
/mingw64
|
||||
)
|
||||
|
||||
include_directories(BEFORE
|
||||
/mingw64/include
|
||||
)
|
||||
|
||||
link_directories(BEFORE
|
||||
/mingw64/lib
|
||||
/mingw64/lib64
|
||||
)
|
||||
endif()
|
||||
|
||||
include_directories(BEFORE SYSTEM
|
||||
${PROJECT_SUPPORT_DIR}/include
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/include
|
||||
)
|
||||
|
||||
link_directories(BEFORE
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib
|
||||
${PROJECT_EXTERNAL_BUILD_ROOT}/lib64
|
||||
)
|
||||
@@ -0,0 +1,158 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_NAME=$1
|
||||
DEST_DIR=$2
|
||||
IS_UPDATE=$3
|
||||
PROJECT_NAME_UPPER=$(echo ${PROJECT_NAME} | tr "[:lower:]" "[:upper:]")
|
||||
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
PROJECT_IS_DARWIN=1
|
||||
export SED=gsed
|
||||
else
|
||||
export SED=sed
|
||||
fi
|
||||
|
||||
function error_exit() {
|
||||
echo $1
|
||||
exit $2
|
||||
}
|
||||
|
||||
function update_file() {
|
||||
local FILE=$1
|
||||
${SED} -i "s/FIFTHGRID_/${PROJECT_NAME_UPPER}_/g" "${FILE}"
|
||||
${SED} -i "s/fifthgrid/${PROJECT_NAME}/g" "${FILE}"
|
||||
}
|
||||
|
||||
function update_util_sources() {
|
||||
for FILE in $(find ${DEST_DIR}/support/include/ -type f -name "*.hpp"); do
|
||||
update_file "${FILE}"
|
||||
done
|
||||
|
||||
for FILE in $(find ${DEST_DIR}/support/src/ -type f -name "*.cpp"); do
|
||||
update_file "${FILE}"
|
||||
done
|
||||
|
||||
for FILE in $(find ${DEST_DIR}/support/test/ -type f -name "*.hpp"); do
|
||||
update_file "${FILE}"
|
||||
done
|
||||
|
||||
for FILE in $(find ${DEST_DIR}/support/test/ -type f -name "*.cpp"); do
|
||||
update_file "${FILE}"
|
||||
done
|
||||
}
|
||||
|
||||
function process_file() {
|
||||
local FILE_NAME=$1
|
||||
local SRC_FILE_NAME=$1
|
||||
if [ "$2" != "" ]; then
|
||||
local DEST_PART=/$2
|
||||
fi
|
||||
if [ "${FILE_NAME}" == "CMakeLists.txt" ]; then
|
||||
local SRC_FILE_NAME="CMakeLists.txt_"
|
||||
fi
|
||||
if [ "${FILE_NAME}" == "main_test.cpp" ]; then
|
||||
local DEST_FILE=${DEST_DIR}${DEST_PART}/main.cpp
|
||||
else
|
||||
local DEST_FILE=${DEST_DIR}${DEST_PART}/${FILE_NAME}
|
||||
fi
|
||||
|
||||
rsync -av --progress src/${SRC_FILE_NAME} "${DEST_FILE}" ||
|
||||
error_exit "failed to copy ${FILE_NAME}" 1
|
||||
|
||||
${SED} -i s/%PROJECT_NAME%/${PROJECT_NAME}/g "${DEST_FILE}" ||
|
||||
error_exit "failed to set project name in ${DEST_FILE}" 1
|
||||
|
||||
${SED} -i s/fifthgrid/${PROJECT_NAME}/g "${DEST_FILE}" ||
|
||||
error_exit "failed to set project name in ${DEST_FILE}" 1
|
||||
|
||||
${SED} -i s/FIFTHGRID_/${PROJECT_NAME_UPPER}_/g "${DEST_FILE}" ||
|
||||
error_exit "failed to set project name in ${DEST_FILE}" 1
|
||||
}
|
||||
|
||||
function update_cmakelists() {
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
${SED} -i "/%PROJECT_ENABLE%/i \ \ \ \ \ \ -D${ENABLE_NAME}=\$\{${ENABLE_NAME}\}" "${DEST_DIR}/CMakeLists.txt" ||
|
||||
error_exit "failed to set ${ENABLE_NAME} to ${!ENABLE_NAME} in ${DEST_DIR}/CMakeLists.txt" 1
|
||||
done
|
||||
|
||||
${SED} -i "/%PROJECT_ENABLE%/d" "${DEST_DIR}/CMakeLists.txt" ||
|
||||
error_exit "failed to delete %PROJECT_ENABLE% in ${DEST_DIR}/CMakeLists.txt" 1
|
||||
}
|
||||
|
||||
function update_config() {
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
if [ "${PROJECT_LIBRARY}" == "TESTING" ]; then
|
||||
${SED} -i "/%PROJECT_ENABLE%/i ${ENABLE_NAME}=ON" "${DEST_DIR}/config.sh" ||
|
||||
error_exit "failed to set ${ENABLE_NAME} to ON in ${DEST_DIR}/config.sh" 1
|
||||
else
|
||||
${SED} -i "/%PROJECT_ENABLE%/i ${ENABLE_NAME}=OFF" "${DEST_DIR}/config.sh" ||
|
||||
error_exit "failed to set ${ENABLE_NAME} to OFF in ${DEST_DIR}/config.sh" 1
|
||||
fi
|
||||
done
|
||||
|
||||
${SED} -i "/%PROJECT_ENABLE%/d" "${DEST_DIR}/config.sh" ||
|
||||
error_exit "failed to delete %PROJECT_ENABLE% in ${DEST_DIR}/config.sh" 1
|
||||
}
|
||||
|
||||
function sync_common() {
|
||||
rsync -av --progress .clang* "${DEST_DIR}/" ||
|
||||
error_exit "failed to copy .clang*" 1
|
||||
|
||||
rsync -avh --delete --progress cmake/ "${DEST_DIR}/cmake/" ||
|
||||
error_exit "failed to copy cmake/" 1
|
||||
|
||||
rsync -avh --delete --progress docker/ "${DEST_DIR}/docker/" ||
|
||||
error_exit "failed to copy docker/" 1
|
||||
|
||||
rsync -avh --delete --progress src/scripts/ "${DEST_DIR}/scripts/" ||
|
||||
error_exit "failed to copy src/scripts/" 1
|
||||
|
||||
rsync -avh --delete --progress support/ "${DEST_DIR}/support/" ||
|
||||
error_exit "failed to copy support/" 1
|
||||
}
|
||||
|
||||
function sync_create() {
|
||||
rsync -avh --delete --progress .cspell/* "${DEST_DIR}/.cspell/" ||
|
||||
error_exit "failed to copy .cpsell/" 1
|
||||
|
||||
rsync -av --progress .gitignore "${DEST_DIR}/" ||
|
||||
error_exit "failed to copy .gitignore" 1
|
||||
}
|
||||
|
||||
function create_versions_cmake() {
|
||||
VERSION_LIST=()
|
||||
for NAME in "${!PROJECT_VERSIONS[@]}"; do
|
||||
VERSION_LIST+=("set(${NAME}_VERSION ${PROJECT_VERSIONS[${NAME}]})")
|
||||
done
|
||||
(printf "%s\n" "${VERSION_LIST[@]}" | sort) >${DEST_DIR}/cmake/versions.cmake
|
||||
}
|
||||
|
||||
if [ "${PROJECT_NAME}" == "" ]; then
|
||||
error_exit "missing project name" 2
|
||||
else
|
||||
if [ "${DEST_DIR}" == "" ]; then
|
||||
DEST_DIR=${CURRENT_DIR}
|
||||
fi
|
||||
DEST_DIR=${DEST_DIR}/${PROJECT_NAME}
|
||||
|
||||
if [ "${IS_UPDATE}" == "0" ] && [ -d "${DEST_DIR}" ]; then
|
||||
error_exit "dest directory already exists: ${DEST_DIR}" 2
|
||||
fi
|
||||
|
||||
mkdir -p "${DEST_DIR}"
|
||||
DEST_DIR=$(realpath "${DEST_DIR}")
|
||||
if [ "${IS_UPDATE}" == "1" ] && [ ! -d "${DEST_DIR}" ]; then
|
||||
error_exit "dest directory not found: ${DEST_DIR}" 2
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/${PROJECT_NAME}/include/"
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/${PROJECT_NAME}/src/"
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/${PROJECT_NAME}_test/include/"
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/${PROJECT_NAME}_test/src/"
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/lib${PROJECT_NAME}/include/"
|
||||
mkdir -p "${DEST_DIR}/${PROJECT_NAME}/lib${PROJECT_NAME}/src/"
|
||||
@@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
pushd "%~dp0%"
|
||||
call src\scripts\setup_msys2.cmd
|
||||
call mingw64 -no-start ./create_project.sh "%1" "%2"
|
||||
popd
|
||||
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR=$(realpath "$0")
|
||||
CURRENT_DIR=$(dirname "${CURRENT_DIR}")
|
||||
. "${CURRENT_DIR}/common.sh" "$1" "$2" 0
|
||||
|
||||
pushd "${DEST_DIR}"
|
||||
git init . || error_exit "failed to execute 'git init .'" 1
|
||||
popd
|
||||
|
||||
sync_common
|
||||
sync_create
|
||||
|
||||
. "${CURRENT_DIR}/src/scripts/versions.sh"
|
||||
. "${CURRENT_DIR}/src/scripts/libraries.sh"
|
||||
|
||||
create_versions_cmake
|
||||
|
||||
process_file .jenkins_builds
|
||||
process_file .jenkins_macos
|
||||
process_file .nvimrc
|
||||
process_file CMakeLists.txt
|
||||
process_file config.sh
|
||||
process_file initialize.hpp ${PROJECT_NAME}/lib${PROJECT_NAME}/include
|
||||
process_file initialize.cpp ${PROJECT_NAME}/lib${PROJECT_NAME}/src
|
||||
process_file main.cpp ${PROJECT_NAME}/${PROJECT_NAME}
|
||||
process_file main_test.cpp ${PROJECT_NAME}/${PROJECT_NAME}_test
|
||||
process_file project.cmake
|
||||
process_file version.hpp ${PROJECT_NAME}/lib${PROJECT_NAME}/include
|
||||
process_file version.cpp.in ${PROJECT_NAME}
|
||||
process_file version.rc.in ${PROJECT_NAME}
|
||||
|
||||
update_config
|
||||
update_cmakelists
|
||||
|
||||
echo "" >>"${DEST_DIR}/.cspell/words.txt"
|
||||
echo lib${PROJECT_NAME} >>"${DEST_DIR}/.cspell/words.txt"
|
||||
|
||||
update_util_sources
|
||||
|
||||
pushd "${DEST_DIR}"
|
||||
git lfs track "*.exe"
|
||||
git lfs track "*.msi"
|
||||
git lfs track "*.tar.gz"
|
||||
git lfs track "*.tar.xz"
|
||||
git lfs track "*.tgz"
|
||||
git lfs track "*.zip"
|
||||
git add .gitattributes
|
||||
git commit -m "Added .gitattributes"
|
||||
popd
|
||||
@@ -0,0 +1,84 @@
|
||||
#comment
|
||||
FROM arm64v8/alpine:3.22.2
|
||||
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
|
||||
CMD bash
|
||||
|
||||
RUN apk update
|
||||
RUN apk upgrade
|
||||
RUN apk add \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
binutils \
|
||||
binutils-dev \
|
||||
bison \
|
||||
boost-dev \
|
||||
bzip2-static \
|
||||
cmake \
|
||||
diffutils \
|
||||
elfutils-dev \
|
||||
file \
|
||||
fontconfig-dev \
|
||||
fontconfig-static \
|
||||
freetype \
|
||||
freetype-dev \
|
||||
freetype-static \
|
||||
fuse3 \
|
||||
fuse3-dev \
|
||||
fuse3-static \
|
||||
g++ \
|
||||
gcc \
|
||||
gflags \
|
||||
gflags-dev \
|
||||
git \
|
||||
git-lfs \
|
||||
libogg-dev \
|
||||
libogg-static \
|
||||
libtool \
|
||||
libudev-zero \
|
||||
libudev-zero-dev \
|
||||
libunwind \
|
||||
libunwind-dev \
|
||||
libunwind-static \
|
||||
liburing \
|
||||
liburing-dev \
|
||||
libvorbis-dev \
|
||||
libvorbis-static \
|
||||
libx11-dev \
|
||||
libx11-static \
|
||||
libxcursor \
|
||||
libxcursor-dev \
|
||||
libxrandr \
|
||||
libxrandr-dev \
|
||||
linux-headers \
|
||||
make \
|
||||
mesa \
|
||||
mesa-dev \
|
||||
meson \
|
||||
musl-dev \
|
||||
ninja \
|
||||
openal-soft-dev \
|
||||
openal-soft-libs \
|
||||
openssl \
|
||||
patch \
|
||||
perl \
|
||||
pkgconfig \
|
||||
rsync \
|
||||
tcl \
|
||||
tcl-dev \
|
||||
texinfo \
|
||||
wget \
|
||||
xz \
|
||||
xz-dev \
|
||||
xz-libs \
|
||||
zlib \
|
||||
zlib-dev \
|
||||
zlib-static \
|
||||
zstd \
|
||||
zstd-dev \
|
||||
zstd-libs \
|
||||
zstd-static \
|
||||
xz-static
|
||||
|
||||
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16
|
||||
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16
|
||||
@@ -0,0 +1,84 @@
|
||||
#comment
|
||||
FROM alpine:3.22.2
|
||||
MAINTAINER Scott E. Graves <scott.e.graves@protonmail.com>
|
||||
CMD bash
|
||||
|
||||
RUN apk update
|
||||
RUN apk upgrade
|
||||
RUN apk add \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
binutils \
|
||||
binutils-dev \
|
||||
bison \
|
||||
boost-dev \
|
||||
bzip2-static \
|
||||
cmake \
|
||||
diffutils \
|
||||
elfutils-dev \
|
||||
file \
|
||||
fontconfig-dev \
|
||||
fontconfig-static \
|
||||
freetype \
|
||||
freetype-dev \
|
||||
freetype-static \
|
||||
fuse3 \
|
||||
fuse3-dev \
|
||||
fuse3-static \
|
||||
g++ \
|
||||
gcc \
|
||||
gflags \
|
||||
gflags-dev \
|
||||
git \
|
||||
git-lfs \
|
||||
libogg-dev \
|
||||
libogg-static \
|
||||
libtool \
|
||||
libudev-zero \
|
||||
libudev-zero-dev \
|
||||
libunwind \
|
||||
libunwind-dev \
|
||||
libunwind-static \
|
||||
liburing \
|
||||
liburing-dev \
|
||||
libvorbis-dev \
|
||||
libvorbis-static \
|
||||
libx11-dev \
|
||||
libx11-static \
|
||||
libxcursor \
|
||||
libxcursor-dev \
|
||||
libxrandr \
|
||||
libxrandr-dev \
|
||||
linux-headers \
|
||||
make \
|
||||
mesa \
|
||||
mesa-dev \
|
||||
meson \
|
||||
musl-dev \
|
||||
ninja \
|
||||
openal-soft-dev \
|
||||
openal-soft-libs \
|
||||
openssl \
|
||||
patch \
|
||||
perl \
|
||||
pkgconfig \
|
||||
rsync \
|
||||
tcl \
|
||||
tcl-dev \
|
||||
texinfo \
|
||||
wget \
|
||||
xz \
|
||||
xz-dev \
|
||||
xz-libs \
|
||||
zlib \
|
||||
zlib-dev \
|
||||
zlib-static \
|
||||
zstd \
|
||||
zstd-dev \
|
||||
zstd-libs \
|
||||
zstd-static \
|
||||
xz-static
|
||||
|
||||
RUN ln -sf /usr/bin/aclocal-1.17 /usr/bin/aclocal-1.16
|
||||
RUN ln -sf /usr/bin/automake-1.17 /usr/bin/automake-1.16
|
||||
@@ -0,0 +1,47 @@
|
||||
FROM debian:latest
|
||||
|
||||
ARG UID=0
|
||||
ARG GID=0
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y \
|
||||
bash \
|
||||
curl \
|
||||
fonts-droid-fallback \
|
||||
gdb \
|
||||
git \
|
||||
lib32stdc++6 \
|
||||
libglu1-mesa \
|
||||
libstdc++6 \
|
||||
python3 \
|
||||
unzip \
|
||||
wget
|
||||
RUN apt-get clean
|
||||
|
||||
RUN git clone https://github.com/flutter/flutter.git /flutter
|
||||
RUN git config --system --add safe.directory /flutter
|
||||
|
||||
ENV PATH="/flutter/bin:/flutter/bin/cache/dart-sdk/bin:${PATH}"
|
||||
|
||||
RUN flutter doctor -v
|
||||
RUN flutter channel master
|
||||
RUN flutter upgrade
|
||||
RUN flutter --disable-analytics
|
||||
|
||||
RUN flutter config --no-analytics
|
||||
RUN flutter config --enable-web
|
||||
RUN flutter config --no-cli-animations
|
||||
|
||||
RUN mkdir /nonexistent
|
||||
RUN chown -R $UID:$GID /nonexistent
|
||||
|
||||
RUN mkdir /.config
|
||||
RUN chown -R $UID:$GID /.config
|
||||
|
||||
RUN mkdir /.dart-tool
|
||||
RUN chown -R $UID:$GID /.dart-tool
|
||||
|
||||
RUN mkdir /.pub-cache
|
||||
RUN chown -R $UID:$GID /.pub-cache
|
||||
|
||||
RUN chown -R $UID:$GID /flutter
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURRENT_DIR=$(realpath "$0")
|
||||
CURRENT_DIR=$(dirname "${CURRENT_DIR}")
|
||||
|
||||
. "${CURRENT_DIR}/src/scripts/versions.sh"
|
||||
. "${CURRENT_DIR}/src/scripts/libraries.sh"
|
||||
|
||||
function check_should_update() {
|
||||
local NAME=$1
|
||||
local ITEM_LIST=(${PROJECT_DOWNLOADS[${NAME}]//;/ })
|
||||
if [ ! -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}" ] ||
|
||||
[ ! -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}.sha256" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
function download_and_update_hash() {
|
||||
local NAME=$1
|
||||
local ITEM_LIST=(${PROJECT_DOWNLOADS[${NAME}]//;/ })
|
||||
if [ ! -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}" ] ||
|
||||
[ ! -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}.sha256" ]; then
|
||||
local CLEANUP_LIST=(${PROJECT_CLEANUP[${NAME}]//:/ })
|
||||
if [ "${NAME}" == "GTEST" ]; then
|
||||
CLEANUP_LIST=(${PROJECT_CLEANUP["TESTING"]//:/ })
|
||||
fi
|
||||
|
||||
if [ "${NAME}" != "BOOST" ] && [ "${NAME}" != "BOOST2" ] && [ "${CLEANUP_LIST[0]}" != "" ]; then
|
||||
rm -r ${CURRENT_DIR}/support/${CLEANUP_LIST[0]}
|
||||
fi
|
||||
|
||||
rm -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}"
|
||||
rm -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}.sha256"
|
||||
|
||||
if ! wget ${ITEM_LIST[0]} -O "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}"; then
|
||||
echo "failed $NAME"
|
||||
rm -f "${CURRENT_DIR}/support/${ITEM_LIST[2]}/${ITEM_LIST[1]}"
|
||||
exit 1
|
||||
fi
|
||||
pushd "${CURRENT_DIR}/support/${ITEM_LIST[2]}"
|
||||
sha256sum ${ITEM_LIST[1]} >${ITEM_LIST[1]}.sha256
|
||||
popd
|
||||
fi
|
||||
|
||||
local HASH=$(cat support/${ITEM_LIST[2]}/${ITEM_LIST[1]}.sha256 | awk '{print $1}')
|
||||
HASH_LIST+=("set(${NAME}_HASH ${HASH})")
|
||||
}
|
||||
|
||||
function create_hashes_cmake() {
|
||||
for NAME in "${!PROJECT_DOWNLOADS[@]}"; do
|
||||
if [ "${NAME}" != "BOOST" ] && [ "${NAME}" != "BOOST2" ]; then
|
||||
download_and_update_hash $NAME
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
pushd "${CURRENT_DIR}"
|
||||
HASH_LIST=()
|
||||
create_hashes_cmake
|
||||
|
||||
if check_should_update BOOST || check_should_update BOOST2; then
|
||||
rm -f support/3rd_party/boost_*
|
||||
fi
|
||||
|
||||
download_and_update_hash BOOST
|
||||
download_and_update_hash BOOST2
|
||||
|
||||
(printf "%s\n" "${HASH_LIST[@]}" | sort) >${CURRENT_DIR}/cmake/hashes.cmake
|
||||
popd
|
||||
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPTS_DIR=$(dirname "$0")
|
||||
SCRIPTS_DIR=$(realpath ${SCRIPTS_DIR})
|
||||
|
||||
SOURCE_DIR=${SCRIPTS_DIR}/..
|
||||
SOURCE_DIR=$(realpath "${SOURCE_DIR}")
|
||||
|
||||
TEST_DIR=${SOURCE_DIR}/build
|
||||
|
||||
PLATFORM=$1
|
||||
BUILD_TYPE=$2
|
||||
WITH_TYPE=$3
|
||||
BUILD_ARCH=$4
|
||||
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
export SED=gsed
|
||||
else
|
||||
export SED=sed
|
||||
fi
|
||||
|
||||
function error_exit() {
|
||||
echo $1
|
||||
exit $2
|
||||
}
|
||||
|
||||
if [ "${BUILD_TYPE}" != "shared" ] && [ "${BUILD_TYPE}" != "static" ]; then
|
||||
error_exit "must specify 'shared' or 'static'" 1
|
||||
fi
|
||||
|
||||
if [ "${TEST_DIR}" == "" ]; then
|
||||
error_exit "TEST_DIR is not set" 1
|
||||
fi
|
||||
|
||||
mkdir -p "${TEST_DIR}"
|
||||
|
||||
NAME=${PLATFORM}_${BUILD_TYPE}
|
||||
if [ "${WITH_TYPE}" == "1" ]; then
|
||||
NAME=${NAME}_crypto
|
||||
elif [ "${WITH_TYPE}" == "2" ]; then
|
||||
NAME=${NAME}_dsm
|
||||
elif [ "${WITH_TYPE}" == "3" ]; then
|
||||
NAME=${NAME}_sqlite
|
||||
elif [ "${WITH_TYPE}" == "4" ]; then
|
||||
NAME=${NAME}_errors_v1
|
||||
elif [ "${WITH_TYPE}" == "5" ]; then
|
||||
NAME=${NAME}_fmt
|
||||
elif [ "${WITH_TYPE}" == "6" ]; then
|
||||
NAME=${NAME}_libevent
|
||||
elif [ "${WITH_TYPE}" == "7" ]; then
|
||||
NAME=${NAME}_crypto_no_boost
|
||||
fi
|
||||
|
||||
if [ "${BUILD_ARCH}" != "" ]; then
|
||||
NAME=${NAME}_libevent_${BUILD_ARCH}
|
||||
fi
|
||||
|
||||
rm -rf "${TEST_DIR}/${NAME}"
|
||||
|
||||
pushd "${SOURCE_DIR}"
|
||||
./create_project.sh ${NAME} ${TEST_DIR} || error_exit "failed to create ${PLATFORM} project" 2
|
||||
popd
|
||||
|
||||
pushd "${TEST_DIR}/${NAME}"
|
||||
if [ "${WITH_TYPE}" == "1" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_LIBSODIUM=OFF/PROJECT_ENABLE_LIBSODIUM=ON/g" ./config.sh
|
||||
${SED} -i "s/PROJECT_ENABLE_BOOST=OFF/PROJECT_ENABLE_BOOST=ON/g" ./config.sh
|
||||
${SED} -i "s/PROJECT_ENABLE_JSON=OFF/PROJECT_ENABLE_JSON=ON/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "2" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_LIBDSM=OFF/PROJECT_ENABLE_LIBDSM=ON/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "3" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_SQLITE=OFF/PROJECT_ENABLE_SQLITE=ON/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "4" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_V2_ERRORS=ON/PROJECT_ENABLE_V2_ERRORS=OFF/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "5" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_FMT=OFF/PROJECT_ENABLE_FMT=ON/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "6" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_LIBEVENT=OFF/PROJECT_ENABLE_LIBEVENT=ON/g" ./config.sh
|
||||
elif [ "${WITH_TYPE}" == "7" ]; then
|
||||
${SED} -i "s/PROJECT_ENABLE_LIBSODIUM=OFF/PROJECT_ENABLE_LIBSODIUM=ON/g" ./config.sh
|
||||
fi
|
||||
|
||||
if [ "${BUILD_TYPE}" == "shared" ]; then
|
||||
${SED} -i "s/PROJECT_STATIC_LINK=ON/PROJECT_STATIC_LINK=OFF/g" ./config.sh
|
||||
fi
|
||||
|
||||
./scripts/make_${PLATFORM}.sh "${BUILD_ARCH}" || error_exit "build ${PLATFORM} ${BUILD_ARCH} failed" 3
|
||||
if [ "${PLATFORM}" == "win32" ]; then
|
||||
./scripts/run_tests.sh "${BUILD_ARCH}" "" "" 1 1 || error_exit "testing ${PLATFORM} failed" 4
|
||||
else
|
||||
./scripts/run_tests.sh "${BUILD_ARCH}" || error_exit "testing ${PLATFORM} ${BUILD_ARCH} failed" 4
|
||||
fi
|
||||
popd
|
||||
|
||||
rm -rf "${TEST_DIR}/${NAME}"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPTS_DIR=$(dirname "$0")
|
||||
SCRIPTS_DIR=$(realpath ${SCRIPTS_DIR})
|
||||
|
||||
"${SCRIPTS_DIR}/common.sh" unix "$1" "$2" "$3"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPTS_DIR=$(dirname "$0")
|
||||
SCRIPTS_DIR=$(realpath ${SCRIPTS_DIR})
|
||||
|
||||
"${SCRIPTS_DIR}/common.sh" win32 "$1" "$2"
|
||||
@@ -0,0 +1,88 @@
|
||||
#!groovy
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
environment {
|
||||
PROJECT_TEST_CONFIG_DIR = "/.ci/%PROJECT_NAME%/test"
|
||||
}
|
||||
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
skipDefaultCheckout()
|
||||
timestamps()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Build • Test • Deliver') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('linux_x86_64') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh' } } }
|
||||
}
|
||||
|
||||
stage('mingw64') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_win32.sh' } } }
|
||||
}
|
||||
|
||||
stage('linux_aarch64') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh aarch64' } } }
|
||||
}
|
||||
|
||||
stage('test') {
|
||||
steps {
|
||||
script {
|
||||
retryWithBackoff(2, 5) { sh 'scripts/test.sh' }
|
||||
retryWithBackoff(2, 5) { sh 'scripts/test.sh "" "" "" "" 1 1' }
|
||||
retryWithBackoff(2, 5) { sh 'scripts/test.sh aarch64' }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('deliver') {
|
||||
steps {
|
||||
script {
|
||||
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/%PROJECT_NAME% "" "" "" "" 1 1' }
|
||||
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/%PROJECT_NAME% "" aarch64' }
|
||||
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/%PROJECT_NAME%' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
body()
|
||||
return
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
|
||||
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
#!groovy
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
|
||||
environment {
|
||||
PROJECT_TEST_CONFIG_DIR = "${env.HOME}/.ci/%PROJECT_NAME%/test"
|
||||
}
|
||||
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
skipDefaultCheckout()
|
||||
timestamps()
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Build • Test • Deliver') {
|
||||
agent any
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
int maxAttempts = 6
|
||||
int baseDelay = 10
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
checkout scm
|
||||
break
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelay * (1 << (attempt - 1))
|
||||
echo "Checkout failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('darwin_aarch64') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh aarch64' } } }
|
||||
}
|
||||
|
||||
stage('darwin_x86_64') {
|
||||
steps { script { retryWithBackoff(2, 5) { sh 'scripts/make_unix.sh x86_64' } } }
|
||||
}
|
||||
|
||||
stage('test') {
|
||||
steps {
|
||||
script {
|
||||
retryWithBackoff(2, 5) { sh 'scripts/test.sh aarch64' }
|
||||
retryWithBackoff(2, 5) { sh 'scripts/test.sh x86_64' }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('deliver') {
|
||||
steps {
|
||||
script {
|
||||
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/%PROJECT_NAME% "" aarch64' }
|
||||
retryWithBackoff(3, 10) { sh 'scripts/deliver.sh /mnt/%PROJECT_NAME% "" x86_64' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def retryWithBackoff(int maxAttempts, int baseDelaySeconds, Closure body) {
|
||||
for (int attempt = 1; attempt <= maxAttempts; attempt++) {
|
||||
try {
|
||||
body()
|
||||
return
|
||||
} catch (err) {
|
||||
if (attempt == maxAttempts) { throw err }
|
||||
int waitSec = baseDelaySeconds * (1 << (attempt - 1))
|
||||
echo "Step failed (attempt ${attempt}/${maxAttempts}). Waiting ${waitSec}s before retry..."
|
||||
sleep time: waitSec, unit: 'SECONDS'
|
||||
}
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
if has('win32') || has('win64')
|
||||
let &makeprg=".\\scripts\\make_win32.cmd"
|
||||
let g:nmakeprg=".\\scripts\\make_win32.cmd"
|
||||
" let g:gtest#gtest_command = "cd build2 && .\\unittests"
|
||||
else
|
||||
let &makeprg="./scripts/make_unix.sh"
|
||||
let g:nmakeprg="./scripts/make_unix.sh"
|
||||
" let g:gtest#gtest_command = "cd build && ./unittests"
|
||||
endif
|
||||
set path+=.,%PROJECT_NAME%/**
|
||||
|
||||
lua << EOF
|
||||
if vim.env.NV_DARCULA_ENABLE_DAP then
|
||||
local dap = require("dap")
|
||||
local g = require("nvim-goodies")
|
||||
local gos = require("nvim-goodies.os")
|
||||
local gpath = require("nvim-goodies.path")
|
||||
|
||||
local externalConsole = gos.is_windows
|
||||
local type = "cppdbg"
|
||||
local cwd = gpath.create_path("./build")
|
||||
dap.configurations.cpp = {
|
||||
{
|
||||
name = "Main",
|
||||
type = type,
|
||||
request = "launch",
|
||||
program = function()
|
||||
return gpath.create_path(cwd, "%PROJECT_NAME%")
|
||||
end,
|
||||
cwd = cwd,
|
||||
stopAtEntry = true,
|
||||
externalConsole=externalConsole,
|
||||
},
|
||||
{
|
||||
name = "Test",
|
||||
type = type,
|
||||
request = "launch",
|
||||
program = function()
|
||||
return gpath.create_path(cwd, "%PROJECT_NAME%_tests")
|
||||
end,
|
||||
cwd = cwd,
|
||||
stopAtEntry = true,
|
||||
externalConsole=externalConsole,
|
||||
}
|
||||
}
|
||||
end
|
||||
EOF
|
||||
@@ -0,0 +1,192 @@
|
||||
cmake_minimum_required(VERSION 3.27)
|
||||
|
||||
cmake_policy(SET CMP0135 NEW)
|
||||
cmake_policy(SET CMP0144 NEW)
|
||||
|
||||
if (NOT PROJECT_INTERFACE)
|
||||
message(FATAL_ERROR "Project must be compiled via 'make_win32.cmd'/'make_win32.sh' or 'make_unix.sh' build scripts. Invoking 'cmake' directly is not supported.")
|
||||
endif()
|
||||
|
||||
project(${PROJECT_NAME}
|
||||
DESCRIPTION ${PROJECT_DESC}
|
||||
HOMEPAGE_URL ${PROJECT_URL}
|
||||
VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_REVISION_VERSION}
|
||||
)
|
||||
|
||||
include(CheckIncludeFileCXX)
|
||||
include(CheckIncludeFiles)
|
||||
include(ExternalProject)
|
||||
|
||||
check_include_files(sys/xattr.h HAS_SETXATTR)
|
||||
if(HAS_SETXATTR)
|
||||
add_definitions(-DHAS_SETXATTR)
|
||||
endif()
|
||||
|
||||
include(cmake/hashes.cmake)
|
||||
|
||||
include(cmake/versions.cmake)
|
||||
include(cmake/arch.cmake)
|
||||
include(cmake/os.cmake)
|
||||
include(cmake/options.cmake)
|
||||
|
||||
option(PROJECT_REQUIRE_ALPINE "Require Alpine Linux as build system" OFF)
|
||||
option(PROJECT_STATIC_LINK "Static link executables" OFF)
|
||||
|
||||
if(PROJECT_STATIC_LINK)
|
||||
add_definitions(-DPROJECT_STATIC_LINK)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
add_definitions(-DPROJECT_IS_MINGW)
|
||||
if(PROJECT_IS_MINGW_UNIX)
|
||||
add_definitions(-DPROJECT_IS_MINGW_UNIX)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(PROJECT_REQUIRE_ALPINE)
|
||||
add_definitions(-DPROJECT_REQUIRE_ALPINE)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_ARM64)
|
||||
add_definitions(-DPROJECT_IS_ARM64)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_DARWIN)
|
||||
add_definitions(-DPROJECT_IS_DARWIN)
|
||||
endif()
|
||||
|
||||
if(PROJECT_IS_MINGW)
|
||||
option(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES "Enable path sizes of 32767 characters on Windows" OFF)
|
||||
if(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES)
|
||||
add_definitions(-DPROJECT_ENABLE_WIN32_LONG_PATH_NAMES)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (PROJECT_ENABLE_V2_ERRORS)
|
||||
add_definitions(-DPROJECT_ENABLE_V2_ERRORS)
|
||||
endif()
|
||||
|
||||
include(cmake/settings.cmake)
|
||||
|
||||
include(cmake/flags.cmake)
|
||||
include(cmake/functions.cmake)
|
||||
|
||||
include(cmake/libraries.cmake)
|
||||
|
||||
if(PROJECT_BUILD)
|
||||
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp "")
|
||||
|
||||
if (PROJECT_IS_MINGW)
|
||||
set(PROJECT_WINDOWS_VERSION_RC ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.rc)
|
||||
file(WRITE ${PROJECT_WINDOWS_VERSION_RC} "")
|
||||
endif()
|
||||
|
||||
file(GLOB_RECURSE ADDITIONAL_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp
|
||||
${PROJECT_SUPPORT_DIR}/src/*.c
|
||||
${PROJECT_SUPPORT_DIR}/src/*.cpp
|
||||
)
|
||||
|
||||
list(APPEND PROJECT_ADDITIONAL_SOURCES
|
||||
${ADDITIONAL_SOURCES}
|
||||
)
|
||||
|
||||
include(project.cmake)
|
||||
|
||||
string(REPLACE "\\<" "<" PROJECT_COMPANY_NAME "${PROJECT_COMPANY_NAME}")
|
||||
string(REPLACE "\\<" "<" PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
||||
string(REPLACE "\\<" "<" PROJECT_DESC "${PROJECT_DESC}")
|
||||
string(REPLACE "\\>" ">" PROJECT_COMPANY_NAME "${PROJECT_COMPANY_NAME}")
|
||||
string(REPLACE "\\>" ">" PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
||||
string(REPLACE "\\>" ">" PROJECT_DESC "${PROJECT_DESC}")
|
||||
|
||||
if (PROJECT_IS_MINGW)
|
||||
if ("${PROJECT_RELEASE_ITER}" STREQUAL "release")
|
||||
set(PROJECT_PRERELEASE 0)
|
||||
else()
|
||||
set(PROJECT_PRERELEASE VS_FF_PRERELEASE)
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.rc.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.rc
|
||||
@ONLY
|
||||
)
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/version.cpp
|
||||
@ONLY
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in")
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.iss.in
|
||||
${PROJECT_DIST_DIR}/../${PROJECT_NAME}.iss
|
||||
@ONLY
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(ICU REQUIRED COMPONENTS data i18n io uc)
|
||||
else()
|
||||
message(STATUS "-=[CMake Settings]=-")
|
||||
message(STATUS " C standard: ${CMAKE_C_STANDARD}")
|
||||
message(STATUS " C++ standard: ${CMAKE_CXX_STANDARD}")
|
||||
message(STATUS " CPU architecture: ${PROJECT_MARCH}")
|
||||
if(PROJECT_ENABLE_FUSE)
|
||||
message(STATUS " FUSE version: ${PROJECT_FUSE}")
|
||||
endif()
|
||||
|
||||
string(REPLACE "<" "\\<" PROJECT_COMPANY_NAME "${PROJECT_COMPANY_NAME}")
|
||||
string(REPLACE "<" "\\<" PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
||||
string(REPLACE "<" "\\<" PROJECT_DESC "${PROJECT_DESC}")
|
||||
string(REPLACE ">" "\\>" PROJECT_COMPANY_NAME "${PROJECT_COMPANY_NAME}")
|
||||
string(REPLACE ">" "\\>" PROJECT_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
||||
string(REPLACE ">" "\\>" PROJECT_DESC "${PROJECT_DESC}")
|
||||
|
||||
add_custom_target(project ALL
|
||||
DEPENDS ${PROJECT_DEPENDENCIES}
|
||||
COMMAND cd build && cmake
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||
-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR}
|
||||
-DPROJECT_BUILD=ON
|
||||
-DPROJECT_BUILD_ARCH=${PROJECT_BUILD_ARCH}
|
||||
-DPROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}
|
||||
-DPROJECT_BUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS}
|
||||
-DPROJECT_CMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE}
|
||||
-DPROJECT_COMPANY_NAME=${PROJECT_COMPANY_NAME}
|
||||
-DPROJECT_COPYRIGHT=${PROJECT_COPYRIGHT}
|
||||
-DPROJECT_DESC=${PROJECT_DESC}
|
||||
-DPROJECT_DIST_DIR=${PROJECT_DIST_DIR}
|
||||
-DPROJECT_ENABLE_V2_ERRORS=${PROJECT_ENABLE_V2_ERRORS}
|
||||
-DPROJECT_ENABLE_WIN32_LONG_PATH_NAMES=${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}
|
||||
%PROJECT_ENABLE%
|
||||
-DPROJECT_EXTERNAL_BUILD_ROOT=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
-DPROJECT_FUSE=${PROJECT_FUSE}
|
||||
-DPROJECT_FUSE_INCLUDE_DIRS=${PROJECT_FUSE_INCLUDE_DIRS}
|
||||
-DPROJECT_GIT_REV=${PROJECT_GIT_REV}
|
||||
-DPROJECT_INTERFACE=1
|
||||
-DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE}
|
||||
-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64}
|
||||
-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN}
|
||||
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
|
||||
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
|
||||
-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION}
|
||||
-DPROJECT_MACOS_BUNDLE_ID=${PROJECT_MACOS_BUNDLE_ID}
|
||||
-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME}
|
||||
-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION}
|
||||
-DPROJECT_NAME=${PROJECT_NAME}
|
||||
-DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER}
|
||||
-DPROJECT_RELEASE_NUM=${PROJECT_RELEASE_NUM}
|
||||
-DPROJECT_REQUIRE_ALPINE=${PROJECT_REQUIRE_ALPINE}
|
||||
-DPROJECT_REVISION_VERSION=${PROJECT_REVISION_VERSION}
|
||||
-DPROJECT_STATIC_LINK=${PROJECT_STATIC_LINK}
|
||||
-DPROJECT_SUPPORT_DIR=${PROJECT_SUPPORT_DIR}
|
||||
-DPROJECT_TOOLCHAIN_FILE_CMAKE=${PROJECT_TOOLCHAIN_FILE_CMAKE}
|
||||
-DPROJECT_TOOLCHAIN_FILE_MESON=${PROJECT_TOOLCHAIN_FILE_MESON}
|
||||
-DPROJECT_URL=${PROJECT_URL}
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_NAME="%PROJECT_NAME%"
|
||||
|
||||
PROJECT_COMPANY_NAME=""
|
||||
PROJECT_COPYRIGHT=""
|
||||
PROJECT_DESC=""
|
||||
PROJECT_URL=""
|
||||
|
||||
PROJECT_MACOS_BUNDLE_ID="com.fifthgrid.${PROJECT_NAME}"
|
||||
PROJECT_MACOS_ICNS_NAME=""
|
||||
|
||||
PROJECT_MAJOR_VERSION=0
|
||||
PROJECT_MINOR_VERSION=0
|
||||
PROJECT_REVISION_VERSION=1
|
||||
PROJECT_RELEASE_NUM=0
|
||||
PROJECT_RELEASE_ITER=alpha
|
||||
|
||||
PROJECT_APP_LIST=(${PROJECT_NAME})
|
||||
|
||||
PROJECT_PRIVATE_KEY=${DEVELOPER_PRIVATE_KEY}
|
||||
PROJECT_PUBLIC_KEY=${DEVELOPER_PUBLIC_KEY}
|
||||
|
||||
PROJECT_STATIC_LINK=ON
|
||||
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=()
|
||||
PROJECT_MSYS2_PACKAGE_LIST+=()
|
||||
|
||||
PROJECT_ENABLE_V2_ERRORS=ON
|
||||
PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF
|
||||
|
||||
%PROJECT_ENABLE%
|
||||
|
||||
PROJECT_KEEP_BACKWARD_CPP=1
|
||||
|
||||
if [ "${PROJECT_ENABLE_TESTING}" == "ON" ]; then
|
||||
PROJECT_APP_LIST+=(${PROJECT_NAME}_test)
|
||||
fi
|
||||
|
||||
if [ -f "./override.sh" ]; then
|
||||
. ./override.sh
|
||||
fi
|
||||
@@ -0,0 +1,149 @@
|
||||
#if defined(PROJECT_ENABLE_CURL)
|
||||
#include "curl/curl.h"
|
||||
#endif // defined(PROJECT_ENABLE_CURL)
|
||||
|
||||
#if defined(PROJECT_ENABLE_OPENSSL)
|
||||
#include "openssl/ssl.h"
|
||||
#endif // defined(PROJECT_ENABLE_OPENSSL)
|
||||
|
||||
#if defined(PROJECT_REQUIRE_ALPINE) && !defined(PROJECT_IS_MINGW)
|
||||
#include <filesystem>
|
||||
#include <pthread.h>
|
||||
#include <stdlib.h>
|
||||
#endif // defined(PROJECT_REQUIRE_ALPINE) && !defined(PROJECT_IS_MINGW)
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
#include "sodium.h"
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SQLITE)
|
||||
#include "sqlite3.h"
|
||||
#endif // defined(PROJECT_ENABLE_SQLITE)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SPDLOG)
|
||||
#include <chrono>
|
||||
|
||||
#include "spdlog/async.h"
|
||||
#include "spdlog/sinks/stdout_color_sinks.h"
|
||||
#include "spdlog/spdlog.h"
|
||||
#endif // defined(PROJECT_ENABLE_SPDLOG)
|
||||
|
||||
#include "initialize.hpp"
|
||||
#include "utils/error.hpp"
|
||||
|
||||
#if defined(PROJECT_REQUIRE_ALPINE) && !defined(PROJECT_IS_MINGW)
|
||||
#include "utils/path.hpp"
|
||||
#endif // defined(PROJECT_REQUIRE_ALPINE) && !defined (PROJECT_IS_MINGW)
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include <csignal>
|
||||
#endif // defined(__APPLE__)
|
||||
|
||||
namespace {
|
||||
#if defined(PROJECT_ENABLE_CURL)
|
||||
bool curl_initialized{false};
|
||||
#endif // defined(PROJECT_ENABLE_CURL)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SPDLOG)
|
||||
bool spdlog_initialized{false};
|
||||
#endif // defined(PROJECT_ENABLE_SPDLOG)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SQLITE)
|
||||
bool sqlite3_initialized{false};
|
||||
#endif // defined(PROJECT_ENABLE_SQLITE)
|
||||
} // namespace
|
||||
|
||||
namespace fifthgrid {
|
||||
auto project_initialize() -> bool {
|
||||
FIFTHGRID_USES_FUNCTION_NAME();
|
||||
|
||||
#if defined(__APPLE__)
|
||||
std::signal(SIGPIPE, SIG_IGN);
|
||||
#endif // defined(__APPLE__)
|
||||
|
||||
#if defined(PROJECT_REQUIRE_ALPINE) && !defined(PROJECT_IS_MINGW)
|
||||
{
|
||||
static constexpr auto guard_size{4096U};
|
||||
static constexpr auto stack_size{8U * 1024U * 1024U};
|
||||
|
||||
pthread_attr_t attr{};
|
||||
pthread_attr_setstacksize(&attr, stack_size);
|
||||
pthread_attr_setguardsize(&attr, guard_size);
|
||||
pthread_setattr_default_np(&attr);
|
||||
}
|
||||
#endif // defined(PROJECT_REQUIRE_ALPINE) && !defined(PROJECT_IS_MINGW)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SPDLOG)
|
||||
spdlog::drop_all();
|
||||
spdlog::flush_every(std::chrono::seconds(5));
|
||||
spdlog::set_pattern("%Y-%m-%d|%T.%e|%^%l%$|%v");
|
||||
|
||||
spdlog::create_async<spdlog::sinks::stdout_color_sink_mt>("console");
|
||||
spdlog_initialized = true;
|
||||
#endif // defined(PROJECT_ENABLE_SPDLOG)
|
||||
|
||||
#if defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
if (sodium_init() == -1) {
|
||||
utils::error::handle_error(function_name, "failed to initialize sodium");
|
||||
return false;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_LIBSODIUM)
|
||||
|
||||
#if defined(PROJECT_ENABLE_OPENSSL)
|
||||
SSL_library_init();
|
||||
#endif // defined(PROJECT_ENABLE_OPENSSL)
|
||||
|
||||
#if defined(PROJECT_ENABLE_CURL)
|
||||
{
|
||||
auto res = curl_global_init(CURL_GLOBAL_ALL);
|
||||
if (res != 0) {
|
||||
utils::error::handle_error(function_name,
|
||||
"failed to initialize curl|result|" +
|
||||
std::to_string(res));
|
||||
return false;
|
||||
}
|
||||
|
||||
curl_initialized = true;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_CURL)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SQLITE)
|
||||
{
|
||||
auto res = sqlite3_initialize();
|
||||
if (res != SQLITE_OK) {
|
||||
utils::error::handle_error(function_name,
|
||||
"failed to initialize sqlite3|result|" +
|
||||
std::to_string(res));
|
||||
return false;
|
||||
}
|
||||
|
||||
sqlite3_initialized = true;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_SQLITE)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void project_cleanup() {
|
||||
#if defined(PROJECT_ENABLE_CURL)
|
||||
if (curl_initialized) {
|
||||
curl_global_cleanup();
|
||||
curl_initialized = false;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_CURL)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SQLITE)
|
||||
if (sqlite3_initialized) {
|
||||
sqlite3_shutdown();
|
||||
sqlite3_initialized = false;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_SQLITE)
|
||||
|
||||
#if defined(PROJECT_ENABLE_SPDLOG)
|
||||
if (spdlog_initialized) {
|
||||
spdlog::shutdown();
|
||||
spdlog_initialized = false;
|
||||
}
|
||||
#endif // defined(PROJECT_ENABLE_SPDLOG)
|
||||
}
|
||||
} // namespace fifthgrid
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef LIBFIFTHGRID_INCLUDE_INITIALIZE_HPP_
|
||||
#define LIBFIFTHGRID_INCLUDE_INITIALIZE_HPP_
|
||||
|
||||
namespace fifthgrid {
|
||||
void project_cleanup();
|
||||
|
||||
[[nodiscard]] auto project_initialize() -> bool;
|
||||
} // namespace fifthgrid
|
||||
|
||||
#endif // LIBFIFTHGRID_INCLUDE_INITIALIZE_HPP_
|
||||
@@ -0,0 +1,36 @@
|
||||
#if defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
#include "backward.hpp"
|
||||
#endif // defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
|
||||
#include "initialize.hpp"
|
||||
#include "utils/config.hpp"
|
||||
#include "utils/error.hpp"
|
||||
|
||||
using namespace fifthgrid;
|
||||
|
||||
auto main(int argc, char **argv) -> int {
|
||||
FIFTHGRID_USES_FUNCTION_NAME();
|
||||
|
||||
#if defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
static backward::SignalHandling sh;
|
||||
#endif // defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
|
||||
if (not fifthgrid::project_initialize()) {
|
||||
fifthgrid::project_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
int exit_code{0};
|
||||
|
||||
try {
|
||||
// TODO Main code here
|
||||
} catch (const std::exception &e) {
|
||||
utils::error::handle_exception(function_name, e);
|
||||
} catch (...) {
|
||||
utils::error::handle_exception(function_name);
|
||||
}
|
||||
|
||||
fifthgrid::project_cleanup();
|
||||
|
||||
return exit_code;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
#if defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
#include "backward.hpp"
|
||||
#endif // defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "initialize.hpp"
|
||||
#include "utils/config.hpp"
|
||||
#include "utils/error.hpp"
|
||||
|
||||
using namespace fifthgrid;
|
||||
|
||||
int PROJECT_TEST_RESULT{0};
|
||||
|
||||
auto main(int argc, char **argv) -> int {
|
||||
FIFTHGRID_USES_FUNCTION_NAME();
|
||||
|
||||
#if defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||
static backward::SignalHandling sh;
|
||||
#endif
|
||||
|
||||
if (not fifthgrid::project_initialize()) {
|
||||
fifthgrid::project_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
try {
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
PROJECT_TEST_RESULT = RUN_ALL_TESTS();
|
||||
} catch (const std::exception &e) {
|
||||
utils::error::handle_exception(function_name, e);
|
||||
} catch (...) {
|
||||
utils::error::handle_exception(function_name);
|
||||
}
|
||||
|
||||
fifthgrid::project_cleanup();
|
||||
|
||||
return PROJECT_TEST_RESULT;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
add_project_library(lib${PROJECT_NAME} "" "" "${PROJECT_ADDITIONAL_SOURCES}")
|
||||
|
||||
add_project_executable(${PROJECT_NAME} lib${PROJECT_NAME} lib${PROJECT_NAME})
|
||||
|
||||
add_project_test_executable(${PROJECT_NAME}_test lib${PROJECT_NAME} lib${PROJECT_NAME})
|
||||
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set ARG1=%~1
|
||||
set ARG2=%~2
|
||||
set ARG3=%~3
|
||||
|
||||
pushd "%~dp0%"
|
||||
call mingw64 -no-start ./cleanup.sh "%ARG1%" "%ARG2%" "%ARG3%" 1 0
|
||||
popd
|
||||
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(realpath ${PROJECT_SCRIPTS_DIR})
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" 1 1>/dev/null 2>&1
|
||||
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
PROJECT_LIBRARY_LOWER=$(echo ${PROJECT_LIBRARY} | tr "[:upper:]" "[:lower:]")
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
if [ ${!ENABLE_NAME} == "OFF" ] && [ ${!KEEP_NAME} != "1" ]; then
|
||||
CLEANUP_LIST=(${PROJECT_CLEANUP[${PROJECT_LIBRARY}]//:/ })
|
||||
for CLEANUP_ITEM in "${CLEANUP_LIST[@]}"; do
|
||||
rm -r ${PROJECT_SUPPORT_DIR}/${CLEANUP_ITEM}
|
||||
done
|
||||
|
||||
${SED} -i "/.*\/${PROJECT_LIBRARY_LOWER}\.cmake/d" "${PROJECT_SOURCE_DIR}/cmake/libraries.cmake"
|
||||
${SED} -i "/D${ENABLE_NAME}/d" "${PROJECT_SOURCE_DIR}/CMakeLists.txt"
|
||||
|
||||
${SED} -i "/${ENABLE_NAME}/d" "${PROJECT_SOURCE_DIR}/cmake/options.cmake"
|
||||
${SED} -i "/\[${PROJECT_LIBRARY}\]/d" "${PROJECT_SOURCE_DIR}/scripts/libraries.sh"
|
||||
${SED} -i "/\ \ ${PROJECT_LIBRARY}/d" "${PROJECT_SOURCE_DIR}/scripts/libraries.sh"
|
||||
|
||||
${SED} -i "/${PROJECT_LIBRARY}_HASH/d" "${PROJECT_SOURCE_DIR}/cmake/hashes.cmake"
|
||||
${SED} -i "/${PROJECT_LIBRARY}2_HASH/d" "${PROJECT_SOURCE_DIR}/cmake/hashes.cmake"
|
||||
|
||||
${SED} -i "/${PROJECT_LIBRARY}_VERSION/d" "${PROJECT_SOURCE_DIR}/cmake/versions.cmake"
|
||||
${SED} -i "/${PROJECT_LIBRARY}2_VERSION/d" "${PROJECT_SOURCE_DIR}/cmake/versions.cmake"
|
||||
${SED} -i "/\[${PROJECT_LIBRARY}\]/d" "${PROJECT_SOURCE_DIR}/scripts/versions.sh"
|
||||
${SED} -i "/\[${PROJECT_LIBRARY}2\]/d" "${PROJECT_SOURCE_DIR}/scripts/versions.sh"
|
||||
|
||||
rm -f "${PROJECT_SOURCE_DIR}/cmake/libraries/${PROJECT_LIBRARY_LOWER}.cmake"
|
||||
fi
|
||||
|
||||
if [ ${!ENABLE_NAME} == "ON" ] && [ "${PROJECT_CLEANUP[${PROJECT_LIBRARY}_ON]}" != "" ]; then
|
||||
CLEANUP_LIST=(${PROJECT_CLEANUP[${PROJECT_LIBRARY}_ON]//:/ })
|
||||
for CLEANUP_ITEM in "${CLEANUP_LIST[@]}"; do
|
||||
rm -r ${PROJECT_SUPPORT_DIR}/${CLEANUP_ITEM}
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
${SED} -i "s/\ OFF)/\ ON)/" "${PROJECT_SOURCE_DIR}/cmake/options.cmake"
|
||||
@@ -0,0 +1,207 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES=()
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" 1>/dev/null 2>&1
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_STATIC_LINK}" == "OFF" ]; then
|
||||
mkdir -p "${PROJECT_DIST_DIR}"
|
||||
rm -f ${PROJECT_DIST_DIR}/*.dll
|
||||
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libgcc_s_seh-1.dll
|
||||
/mingw64/bin/libstdc++-6.dll
|
||||
/mingw64/bin/libwinpthread-1.dll
|
||||
/mingw64/bin/libzlib1.dll
|
||||
/mingw64/bin/libzstd.dll
|
||||
/mingw64/bin/zlib1.dll
|
||||
)
|
||||
|
||||
if [ "${PROJECT_ENABLE_BACKWARD_CPP}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/msvcr90.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_BOOST}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libboost*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_CLI11}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libcli11*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libcurl*.dll
|
||||
/mingw64/bin/libnghttp2-*.dll
|
||||
)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libFLAC*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FMT}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libfmt*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FONTCONFIG}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libexpat*.dll
|
||||
/mingw64/bin/libfontconfig*.dll
|
||||
)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FREETYPE2}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libfreetype*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBDSM}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libdsm.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBEVENT}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libevent*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBICONV}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libiconv.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBJPEG_TURBO}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libjpeg*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libturbo*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBPNG}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpng*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBSODIUM}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsodium*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_NANA}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libnana*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_NUSPELL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libnuspell-*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_OGG}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libogg*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_OPENAL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libopenal*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_OPENSSL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libssl*.dll
|
||||
/mingw64/bin/libcrypt*.dll
|
||||
)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_PUGIXML}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpugi*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SDL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/SDL2*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SECP256K1}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsecp256k1*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SFML}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsfml*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SPDLOG}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libspdlog*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SQLITE}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsqlite3-*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_TASN}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtasn1.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_TESTING}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libgtest*.dll
|
||||
/mingw64/bin/libgmock*.dll
|
||||
)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_TPL}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtiny-process*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_VORBIS}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libvorbis*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libLerc.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libsharpyuv-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libdeflate.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libglib-2*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libgraphite2.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libharfbuzz-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libjbig-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libpcre2-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libtiff-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwebp-*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwxbase*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/libwxm*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/wxbase*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/bin/wxm*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/libwxbase*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/libwxm*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/wxbase*.dll)
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(/mingw64/lib/gcc_x64_dll/wxm*.dll)
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SDL}" == "ON" ] || [ "${PROJECT_ENABLE_SFML}" == "ON" ] ||
|
||||
[ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ] || [ "${PROJECT_ENABLE_NANA}" == "ON" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(
|
||||
/mingw64/bin/libOpenCL*.dll
|
||||
/mingw64/bin/libopencl*.dll
|
||||
/mingw64/bin/libgallium_wgl.dll
|
||||
/mingw64/bin/libva*.dll
|
||||
/mingw64/bin/opengl*.dll
|
||||
/mingw64/bin/vulkan*.dll
|
||||
)
|
||||
fi
|
||||
|
||||
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/bin/*.dll "${PROJECT_DIST_DIR}/"
|
||||
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/lib/*.dll "${PROJECT_DIST_DIR}/"
|
||||
if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then
|
||||
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/lib/gcc_x64_dll/*.dll "${PROJECT_DIST_DIR}/"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_WINFSP}" == "ON" ]; then
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "x86_64" ]; then
|
||||
WINFSP_DLL_PART=x64
|
||||
fi
|
||||
|
||||
if [ "${WINFSP_DLL_PART}" != "" ]; then
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES+=(${PROJECT_3RD_PARTY_DIR}/winfsp-2.1/bin/winfsp-${WINFSP_DLL_PART}.dll)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_VLC}" == "ON" ]; then
|
||||
rsync -av --progress ${PROJECT_3RD_PARTY_DIR}/vlc/ "${PROJECT_DIST_DIR}/vlc/"
|
||||
fi
|
||||
|
||||
for PROJECT_DEPENDENCY in "${PROJECT_MINGW64_COPY_DEPENDENCIES[@]}"; do
|
||||
rsync -av --progress ${PROJECT_DEPENDENCY} "${PROJECT_DIST_DIR}/"
|
||||
done
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" 1 1>/dev/null 2>&1
|
||||
|
||||
if [ -f "${PROJECT_SCRIPTS_DIR}/cleanup.sh" ]; then
|
||||
. "${PROJECT_SCRIPTS_DIR}/cleanup.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
rm ${PROJECT_SCRIPTS_DIR}/cleanup.*
|
||||
fi
|
||||
|
||||
function create_containers() {
|
||||
BUILD_TYPE=$1
|
||||
|
||||
for FILE in "${PROJECT_SOURCE_DIR}/docker/${BUILD_TYPE}/*"; do
|
||||
DOCKER_CREATE_ONLY=1
|
||||
DOCKER_NAME=$(basename ${FILE})
|
||||
DOCKER_TAG=${PROJECT_NAME}:${DOCKER_NAME}
|
||||
|
||||
. "${PROJECT_SCRIPTS_DIR}/docker_common.sh"
|
||||
done
|
||||
}
|
||||
|
||||
create_containers aarch64
|
||||
create_containers x86_64
|
||||
@@ -0,0 +1,13 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set DEST=%~1
|
||||
set DIST=%~2
|
||||
set ARG1=%~3
|
||||
set ARG2=%~4
|
||||
set ARG3=%~5
|
||||
|
||||
pushd "%~dp0%"
|
||||
call mingw64 -no-start ./deliver.sh "%DEST%" "%DIST%" "%ARG1%" "%ARG2%" "%ARG3%" 1 0 || exit 1
|
||||
popd
|
||||
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEST_DIR=$1
|
||||
DIST_DIR=$2
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$3" "$4" "$5" "$6" "$7"
|
||||
|
||||
function error_exit() {
|
||||
echo $1
|
||||
exit $2
|
||||
}
|
||||
|
||||
if [ ! -d "${PROJECT_DIST_DIR}" ]; then
|
||||
error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2
|
||||
fi
|
||||
|
||||
if [ "${DIST_DIR}" == "" ]; then
|
||||
DIST_DIR="${PROJECT_DIST_DIR}"
|
||||
fi
|
||||
DIST_DIR=$(realpath "${DIST_DIR}")
|
||||
|
||||
if [ ! -d "${DIST_DIR}" ]; then
|
||||
error_exit "dist directory not found: ${DIST_DIR}" 2
|
||||
fi
|
||||
|
||||
if [ "${DEST_DIR}" == "" ]; then
|
||||
error_exit "dest directory not set" 2
|
||||
fi
|
||||
|
||||
if [ ! -d "${DEST_DIR}" ]; then
|
||||
error_exit "dest directory not found: ${DEST_DIR}" 2
|
||||
fi
|
||||
|
||||
pushd "${PROJECT_SOURCE_DIR}"
|
||||
BRANCH=$(git branch --show-current)
|
||||
RELEASE=$(grep PROJECT_RELEASE_ITER= ./config.sh | ${SED} s/PROJECT_RELEASE_ITER=//g)
|
||||
popd
|
||||
|
||||
if [ "${BRANCH}" == "master" ] || [ "${BRANCH}" == "alpha" ] ||
|
||||
[ "${BRANCH}" == "main" ] || [ "${BRANCH}" == "release" ] ||
|
||||
[ "${BRANCH}" == "beta" ] || [ "${BRANCH}" == "rc" ]; then
|
||||
DEST_DIR=${DEST_DIR}/${RELEASE}
|
||||
elif [[ ${BRANCH} = *'-alpha-'* ]] || [[ ${BRANCH} = *'-beta-'* ]] ||
|
||||
[[ ${BRANCH} = *'-rc-'* ]] || [[ ${BRANCH} = *'-release-'* ]]; then
|
||||
DEST_DIR=${DEST_DIR}/nightly
|
||||
else
|
||||
error_exit "skipping ${PROJECT_FILE_PART}" 0
|
||||
fi
|
||||
|
||||
pushd "${DIST_DIR}"
|
||||
if [ ! -f "./${PROJECT_OUT_FILE}" ]; then
|
||||
error_exit "failed to find file: ${PROJECT_OUT_FILE}" 1
|
||||
fi
|
||||
|
||||
if [ ! -f "./${PROJECT_OUT_FILE}.sha256" ]; then
|
||||
error_exit "failed to find file: ${PROJECT_OUT_FILE}.sha256" 1
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_PRIVATE_KEY}" != "" ] && [ ! -f "./${PROJECT_OUT_FILE}.sig" ]; then
|
||||
error_exit "failed to find file: ${PROJECT_OUT_FILE}.sig" 1
|
||||
fi
|
||||
|
||||
cp -f ./${PROJECT_OUT_FILE} ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_OUT_FILE}" 1
|
||||
|
||||
cp -f ./${PROJECT_OUT_FILE}.sha256 ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_OUT_FILE}.sha256" 1
|
||||
|
||||
if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then
|
||||
cp -f ./${PROJECT_OUT_FILE}.sig ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_OUT_FILE}.sig" 1
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ -f "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe" ]; then
|
||||
cp -f "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}" 1
|
||||
|
||||
cp -f "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe.sha256" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe.sha256" 1
|
||||
|
||||
if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then
|
||||
cp -f "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe.sig" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}_setup.exe.sig" 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_DARWIN}" == "1" ] && [ -f "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg" ]; then
|
||||
cp -f -X "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg" 1
|
||||
|
||||
cp -f -X "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg.sha256" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg.sha256" 1
|
||||
|
||||
if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then
|
||||
cp -f -X "${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg.sig" ${DEST_DIR} ||
|
||||
error_exit "failed to deliver file: ${PROJECT_DIST_DIR}/${PROJECT_FILE_PART}.dmg.sig" 1
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
|
||||
error_exit "delivered ${PROJECT_FILE_PART}" 0
|
||||
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ] &&
|
||||
[ "${PROJECT_ENABLE_MULTIARCH_DOCKER}" == "1" ]; then
|
||||
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||
fi
|
||||
|
||||
if [ "${DOCKER_NAME}" == "mingw64" ]; then
|
||||
APP_VERSION_BUILD_ARGS=${PROJECT_MINGW64_DOCKER_BUILD_ARGS}
|
||||
IS_MINGW=1
|
||||
IS_UNIX=1
|
||||
else
|
||||
IS_MINGW=0
|
||||
IS_UNIX=0
|
||||
fi
|
||||
|
||||
if [ "${DOCKER_CREATE_ONLY}" != "1" ]; then
|
||||
docker stop ${DOCKER_CONTAINER}
|
||||
docker rm ${DOCKER_CONTAINER}
|
||||
fi
|
||||
|
||||
pushd "${PROJECT_SOURCE_DIR}/support"
|
||||
cp -f ${PROJECT_SOURCE_DIR}/docker/${PROJECT_BUILD_ARCH}/${DOCKER_NAME} Dockerfile
|
||||
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ]; then
|
||||
docker build ${APP_VERSION_BUILD_ARGS} \
|
||||
--platform linux/arm64 \
|
||||
--build-arg NUM_JOBS=${NUM_JOBS} \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
--build-arg USERNAME=$(id -un) \
|
||||
-t ${DOCKER_TAG} . || exit 1
|
||||
else
|
||||
docker build ${APP_VERSION_BUILD_ARGS} \
|
||||
--build-arg NUM_JOBS=${NUM_JOBS} \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
--build-arg USERNAME=$(id -un) \
|
||||
-t ${DOCKER_TAG} . || exit 1
|
||||
fi
|
||||
rm Dockerfile
|
||||
popd
|
||||
|
||||
if [ "${DOCKER_CREATE_ONLY}" != "1" ]; then
|
||||
docker run -td \
|
||||
--env DEVELOPER_PRIVATE_KEY=${DEVELOPER_PRIVATE_KEY} \
|
||||
--env DEVELOPER_PUBLIC_KEY=${DEVELOPER_PUBLIC_KEY} \
|
||||
--env MY_NUM_JOBS=${NUM_JOBS} \
|
||||
--name ${DOCKER_CONTAINER} \
|
||||
-u $(id -u):$(id -g) \
|
||||
-v /.ci/${PROJECT_NAME}:/.ci/${PROJECT_NAME}:ro \
|
||||
-v ${PROJECT_SOURCE_DIR}:${PROJECT_SOURCE_DIR}:rw,z \
|
||||
-w ${PROJECT_SOURCE_DIR} \
|
||||
${DOCKER_TAG} || exit 1
|
||||
|
||||
if [ "${DOCKER_SHELL}" == "1" ]; then
|
||||
docker exec -it ${DOCKER_CONTAINER} /bin/bash
|
||||
else
|
||||
docker exec \
|
||||
${DOCKER_CONTAINER} \
|
||||
/bin/bash -c \
|
||||
"${PROJECT_SOURCE_DIR}/scripts/make_common.sh \"${PROJECT_BUILD_ARCH}\" \"${PROJECT_CMAKE_BUILD_TYPE}\" \"${PROJECT_BUILD_CLEAN}\" ${IS_MINGW} ${IS_UNIX}" || exit 1
|
||||
fi
|
||||
|
||||
docker stop ${DOCKER_CONTAINER}
|
||||
docker rm ${DOCKER_CONTAINER}
|
||||
fi
|
||||
@@ -0,0 +1,441 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_BUILD_ARCH=$1
|
||||
PROJECT_CMAKE_BUILD_TYPE=$2
|
||||
PROJECT_BUILD_CLEAN=$3
|
||||
PROJECT_IS_MINGW=$4
|
||||
PROJECT_IS_MINGW_UNIX=$5
|
||||
DISABLE_CREATE_DIRS=$6
|
||||
|
||||
PROJECT_FLUTTER_BASE_HREF="/"
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" != "1" ]; then
|
||||
PROJECT_IS_MINGW_UNIX=0
|
||||
fi
|
||||
|
||||
PROJECT_SOURCE_DIR=${PROJECT_SCRIPTS_DIR}/..
|
||||
PROJECT_SOURCE_DIR=$(realpath "${PROJECT_SOURCE_DIR}")
|
||||
|
||||
NUM_JOBS=${MY_NUM_JOBS}
|
||||
if [[ -z "${NUM_JOBS}" ]]; then
|
||||
NUM_JOBS=$(getconf _NPROCESSORS_ONLN 2>/dev/null ||
|
||||
getconf NPROCESSORS_ONLN 2>/dev/null || echo 1)
|
||||
if [ "${NUM_JOBS}" -gt "4" ]; then
|
||||
NUM_JOBS=$(expr ${NUM_JOBS} - 2)
|
||||
elif [ "${NUM_JOBS}" -gt "1" ]; then
|
||||
NUM_JOBS=$(expr ${NUM_JOBS} - 1)
|
||||
fi
|
||||
fi
|
||||
|
||||
pushd "${PROJECT_SOURCE_DIR}"
|
||||
|
||||
PROJECT_GIT_REV=$(git rev-parse --short HEAD)
|
||||
|
||||
. "${PROJECT_SCRIPTS_DIR}/versions.sh"
|
||||
. "${PROJECT_SCRIPTS_DIR}/libraries.sh"
|
||||
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
if [ "${PROJECT_LIBRARY}" == "TESTING" ]; then
|
||||
export ${ENABLE_NAME}=ON
|
||||
else
|
||||
export ${ENABLE_NAME}=OFF
|
||||
fi
|
||||
export ${KEEP_NAME}=0
|
||||
done
|
||||
|
||||
PROJECT_APP_LIST=()
|
||||
PROJECT_CMAKE_OPTS=""
|
||||
PROJECT_ENABLE_V2_ERRORS=OFF
|
||||
PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF
|
||||
PROJECT_IS_ALPINE=0
|
||||
PROJECT_IS_ARM64=0
|
||||
PROJECT_IS_DARWIN=0
|
||||
PROJECT_MINGW64_COPY_DEPENDENCIES=()
|
||||
PROJECT_MSYS2_PACKAGE_LIST=()
|
||||
PROJECT_REQUIRE_ALPINE=OFF
|
||||
PROJECT_STATIC_LINK=OFF
|
||||
PROJECT_MACOS_BUNDLE_ID=""
|
||||
PROJECT_MACOS_ICNS_NAME=""
|
||||
|
||||
if [ "$(uname -s)" == "Darwin" ]; then
|
||||
PROJECT_IS_DARWIN=1
|
||||
export SED=gsed
|
||||
else
|
||||
export SED=sed
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "" ]; then
|
||||
if [ "$(uname -m)" == "arm64" ]; then
|
||||
PROJECT_BUILD_ARCH=aarch64
|
||||
else
|
||||
PROJECT_BUILD_ARCH=x86_64
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ]; then
|
||||
PROJECT_IS_ARM64=1
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_BUILD_ARCH}" == "x86_64" ]; then
|
||||
PROJECT_BUILD_ARCH2="x86-64"
|
||||
else
|
||||
PROJECT_BUILD_ARCH2="${PROJECT_BUILD_ARCH}"
|
||||
fi
|
||||
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
PROJECT_IS_ALPINE=1
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "" ]; then
|
||||
PROJECT_IS_MINGW=0
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW_UNIX}" == "" ]; then
|
||||
PROJECT_IS_MINGW_UNIX=0
|
||||
fi
|
||||
|
||||
. "${PROJECT_SOURCE_DIR}/config.sh"
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "0" ]; then
|
||||
PROJECT_ENABLE_WIN32_LONG_PATH_NAMES=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SFML}" == "ON" ]; then
|
||||
PROJECT_ENABLE_FLAC=ON
|
||||
PROJECT_ENABLE_FONTCONFIG=ON
|
||||
PROJECT_ENABLE_FREETYPE2=ON
|
||||
PROJECT_ENABLE_OGG=ON
|
||||
PROJECT_ENABLE_OPENAL=ON
|
||||
PROJECT_ENABLE_VORBIS=ON
|
||||
PROJECT_STATIC_LINK=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_CPP_HTTPLIB}" == "ON" ]; then
|
||||
PROJECT_ENABLE_CURL=ON
|
||||
PROJECT_ENABLE_OPENSSL=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then
|
||||
PROJECT_ENABLE_OPENSSL=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBBITCOIN_SYSTEM}" == "ON" ]; then
|
||||
PROJECT_ENABLE_BOOST=ON
|
||||
PROJECT_ENABLE_SECP256K1=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FONTCONFIG}" == "ON" ]; then
|
||||
PROJECT_ENABLE_FREETYPE2=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ]; then
|
||||
PROJECT_ENABLE_CURL=ON
|
||||
PROJECT_STATIC_LINK=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_SPDLOG}" == "ON" ]; then
|
||||
PROJECT_ENABLE_FMT=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_VORBIS}" == "ON" ]; then
|
||||
PROJECT_ENABLE_OGG=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FLAC}" == "ON" ]; then
|
||||
PROJECT_ENABLE_LIBICONV=ON
|
||||
PROJECT_ENABLE_OGG=ON
|
||||
PROJECT_ENABLE_VORBIS=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_BOOST}" == "ON" ]; then
|
||||
PROJECT_ENABLE_OPENSSL=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_FONTCONFIG}" == "ON" ] || [ "${PROJECT_ENABLE_NANA}" == "ON" ] ||
|
||||
[ "${PROJECT_ENABLE_SFML}" == "ON" ] || [ "${PROJECT_ENABLE_WXWIDGETS}" == "ON" ] ||
|
||||
[ "${PROJECT_ENABLE_SDL}" == "ON" ]; then
|
||||
PROJECT_ENABLE_LIBJPEG_TURBO=ON
|
||||
PROJECT_ENABLE_LIBPNG=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
PROJECT_ENABLE_BACKWARD_CPP=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_ENABLE_LIBDSM}" == "ON" ]; then
|
||||
PROJECT_ENABLE_LIBICONV=ON
|
||||
PROJECT_ENABLE_LIBTASN=ON
|
||||
PROJECT_ENABLE_OPENSSL=ON
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_CMAKE_BUILD_TYPE}" == "" ]; then
|
||||
PROJECT_CMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
fi
|
||||
|
||||
PROJECT_CMAKE_BUILD_TYPE_LOWER=$(echo "${PROJECT_CMAKE_BUILD_TYPE}" | tr '[:upper:]' '[:lower:]')
|
||||
if [ "${PROJECT_CMAKE_BUILD_TYPE_LOWER}" == "release" ]; then
|
||||
PROJECT_CMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
elif [ "${PROJECT_CMAKE_BUILD_TYPE_LOWER}" == "debug" ]; then
|
||||
PROJECT_CMAKE_BUILD_TYPE=Debug
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" != "1" ]; then
|
||||
PROJECT_STATIC_LINK=OFF
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_STATIC_LINK}" == "ON" ]; then
|
||||
PROJECT_BUILD_SHARED_LIBS=OFF
|
||||
PROJECT_ENABLE_BACKWARD_CPP=OFF
|
||||
PROJECT_LINK_TYPE=static
|
||||
if [ "${PROJECT_IS_DARWIN}" == "0" ]; then
|
||||
PROJECT_REQUIRE_ALPINE=ON
|
||||
else
|
||||
PROJECT_REQUIRE_ALPINE=OFF
|
||||
fi
|
||||
else
|
||||
PROJECT_BUILD_SHARED_LIBS=ON
|
||||
PROJECT_LINK_TYPE=shared
|
||||
PROJECT_REQUIRE_ALPINE=OFF
|
||||
fi
|
||||
|
||||
PROJECT_BUILD_DIR=${PROJECT_SOURCE_DIR}/build/${PROJECT_CMAKE_BUILD_TYPE_LOWER}/${PROJECT_LINK_TYPE}
|
||||
PROJECT_DIST_DIR=${PROJECT_SOURCE_DIR}/dist/${PROJECT_CMAKE_BUILD_TYPE_LOWER}/${PROJECT_LINK_TYPE}
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/win32
|
||||
PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/win32
|
||||
elif [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/darwin
|
||||
PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/darwin
|
||||
else
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/linux
|
||||
PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/linux
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_ARM64}" == "1" ]; then
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/aarch64
|
||||
PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/aarch64
|
||||
else
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/x86_64
|
||||
PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/x86_64
|
||||
fi
|
||||
|
||||
PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/${PROJECT_NAME}
|
||||
PROJECT_EXTERNAL_BUILD_ROOT=${PROJECT_BUILD_DIR}/deps
|
||||
|
||||
PROJECT_SUPPORT_DIR=${PROJECT_SOURCE_DIR}/support
|
||||
PROJECT_3RD_PARTY_DIR=${PROJECT_SUPPORT_DIR}/3rd_party
|
||||
|
||||
if [ "${PROJECT_ENABLE_OPENSSL}" == "ON" ]; then
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
OPENSSL_ROOT_DIR=/mingw64
|
||||
else
|
||||
OPENSSL_ROOT_DIR=${PROJECT_EXTERNAL_BUILD_ROOT}
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then
|
||||
PROJECT_TOOLCHAIN_FILE_CMAKE=/cmake_toolchain.cmake
|
||||
PROJECT_TOOLCHAIN_FILE_MESON=/meson_cross_file.txt
|
||||
PROJECT_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=${PROJECT_TOOLCHAIN_FILE_CMAKE} ${PROJECT_CMAKE_OPTS}"
|
||||
fi
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/cmake/versions.cmake" ]; then
|
||||
VERSIONS=($(${SED} -e s/\ /=/g -e s/set\(//g -e s/\)//g "${PROJECT_SOURCE_DIR}/cmake/versions.cmake"))
|
||||
|
||||
PROJECT_MINGW64_DOCKER_BUILD_ARGS=()
|
||||
|
||||
for VERSION in "${VERSIONS[@]}"; do
|
||||
LOOKUP_NAME=$(echo ${VERSION} | ${SED} s/_VERSION.*// | sed s/GTEST/TESTING/g)
|
||||
ENABLE_NAME=PROJECT_ENABLE_${LOOKUP_NAME}
|
||||
if [ "${!ENABLE_NAME}" != "OFF" ]; then
|
||||
PROJECT_MINGW64_DOCKER_BUILD_ARGS+=("--build-arg ${VERSION}")
|
||||
fi
|
||||
done
|
||||
|
||||
PROJECT_MINGW64_DOCKER_BUILD_ARGS=${PROJECT_MINGW64_DOCKER_BUILD_ARGS[*]}
|
||||
fi
|
||||
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_3RD_PARTY_DIR=${PROJECT_3RD_PARTY_DIR} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_BUILD_ARCH=${PROJECT_BUILD_ARCH} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_BUILD_DIR=${PROJECT_BUILD_DIR} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_BUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_CMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_DIST_DIR=${PROJECT_DIST_DIR} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_ENABLE_V2_ERRORS=${PROJECT_ENABLE_V2_ERRORS} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_ENABLE_WIN32_LONG_PATH_NAMES=${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_EXTERNAL_BUILD_ROOT=${PROJECT_EXTERNAL_BUILD_ROOT} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_GIT_REV=${PROJECT_GIT_REV} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_BUNDLE_ID=${PROJECT_MACOS_BUNDLE_ID} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_NAME=${PROJECT_NAME} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_RELEASE_NUM=${PROJECT_RELEASE_NUM} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_REQUIRE_ALPINE=${PROJECT_REQUIRE_ALPINE} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_REVISION_VERSION=${PROJECT_REVISION_VERSION} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_STATIC_LINK=${PROJECT_STATIC_LINK} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_SUPPORT_DIR=${PROJECT_SUPPORT_DIR} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_TOOLCHAIN_FILE_CMAKE=${PROJECT_TOOLCHAIN_FILE_CMAKE} ${PROJECT_CMAKE_OPTS}"
|
||||
PROJECT_CMAKE_OPTS="-DPROJECT_TOOLCHAIN_FILE_MESON=${PROJECT_TOOLCHAIN_FILE_MESON} ${PROJECT_CMAKE_OPTS}"
|
||||
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
PROJECT_CMAKE_OPTS="${PROJECT_CMAKE_OPTS} -D${ENABLE_NAME}=${!ENABLE_NAME}"
|
||||
done
|
||||
|
||||
PKG_CONFIG_PATH="${PROJECT_EXTERNAL_BUILD_ROOT}/lib/pkgconfig:${PROJECT_EXTERNAL_BUILD_ROOT}/lib64/pkgconfig:${PROJECT_EXTERNAL_BUILD_ROOT}/shared/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
|
||||
if [ "${DISABLE_CREATE_DIRS}" != "1" ]; then
|
||||
mkdir -p "${PROJECT_BUILD_DIR}"
|
||||
mkdir -p "${PROJECT_DIST_DIR}"
|
||||
fi
|
||||
|
||||
PATH="${PROJECT_EXTERNAL_BUILD_ROOT}/bin:${PATH}"
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
PROJECT_OS=windows
|
||||
elif [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
||||
PROJECT_OS=darwin
|
||||
else
|
||||
PROJECT_OS=linux
|
||||
fi
|
||||
|
||||
PROJECT_FILE_PART=${PROJECT_NAME}_${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_REVISION_VERSION}-${PROJECT_RELEASE_ITER}_${PROJECT_GIT_REV}_${PROJECT_OS}_${PROJECT_BUILD_ARCH2}
|
||||
PROJECT_OUT_FILE=${PROJECT_FILE_PART}.tar.gz
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
PROJECT_APP_BINARY_EXT=.exe
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" != "1" ]; then
|
||||
MSYS=winsymlinks:nativestrict
|
||||
fi
|
||||
|
||||
PROJECT_ENABLE_INNOSETUP=1
|
||||
|
||||
export MSYS
|
||||
export NUM_JOBS
|
||||
export OPENSSL_ROOT_DIR
|
||||
export PATH
|
||||
export PKG_CONFIG_PATH
|
||||
export PROJECT_3RD_PARTY_DIR
|
||||
export PROJECT_APP_BINARY_EXT
|
||||
export PROJECT_APP_LIST
|
||||
export PROJECT_BUILD_ARCH
|
||||
export PROJECT_BUILD_ARCH2
|
||||
export PROJECT_BUILD_CLEAN
|
||||
export PROJECT_BUILD_DIR
|
||||
export PROJECT_BUILD_SHARED_LIBS
|
||||
export PROJECT_CMAKE_BUILD_TYPE
|
||||
export PROJECT_CMAKE_BUILD_TYPE_LOWER
|
||||
export PROJECT_CMAKE_OPTS
|
||||
export PROJECT_COMPANY_NAME
|
||||
export PROJECT_COPYRIGHT
|
||||
export PROJECT_DESC
|
||||
export PROJECT_DIST_DIR
|
||||
export PROJECT_ENABLE_V2_ERRORS
|
||||
export PROJECT_ENABLE_WIN32_LONG_PATH_NAMES
|
||||
export PROJECT_FILE_PART
|
||||
export PROJECT_FLUTTER_BASE_HREF
|
||||
export PROJECT_GIT_REV
|
||||
export PROJECT_IS_ALPINE
|
||||
export PROJECT_IS_ARM64
|
||||
export PROJECT_IS_DARWIN
|
||||
export PROJECT_IS_MINGW
|
||||
export PROJECT_IS_MINGW_UNIX
|
||||
export PROJECT_LINK_TYPE
|
||||
export PROJECT_MACOS_BUNDLE_ID
|
||||
export PROJECT_MACOS_ICNS_NAME
|
||||
export PROJECT_MAJOR_VERSION
|
||||
export PROJECT_MINGW64_COPY_DEPENDENCIES
|
||||
export PROJECT_MINGW64_DOCKER_BUILD_ARGS
|
||||
export PROJECT_MINOR_VERSION
|
||||
export PROJECT_MSYS2_PACKAGE_LIST
|
||||
export PROJECT_NAME
|
||||
export PROJECT_OS
|
||||
export PROJECT_OUT_FILE
|
||||
export PROJECT_PRIVATE_KEY
|
||||
export PROJECT_PUBLIC_KEY
|
||||
export PROJECT_RELEASE_ITER
|
||||
export PROJECT_RELEASE_NUM
|
||||
export PROJECT_REQUIRE_ALPINE
|
||||
export PROJECT_REVISION_VERSION
|
||||
export PROJECT_SOURCE_DIR
|
||||
export PROJECT_STATIC_LINK
|
||||
export PROJECT_SUPPORT_DIR
|
||||
export PROJECT_TOOLCHAIN_FILE_CMAKE
|
||||
export PROJECT_TOOLCHAIN_FILE_MESON
|
||||
export PROJECT_URL
|
||||
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
export ${ENABLE_NAME}
|
||||
export ${KEEP_NAME}
|
||||
done
|
||||
|
||||
echo "-=[Settings]=-"
|
||||
echo " App binary extension: ${PROJECT_APP_BINARY_EXT}"
|
||||
echo " App list: ${PROJECT_APP_LIST[*]}"
|
||||
echo " Build arch: ${PROJECT_BUILD_ARCH}"
|
||||
echo " Build arch2: ${PROJECT_BUILD_ARCH2}"
|
||||
echo " Build clean: ${PROJECT_BUILD_CLEAN}"
|
||||
echo " Build dir: ${PROJECT_BUILD_DIR}"
|
||||
echo " Build shared libraries: ${PROJECT_BUILD_SHARED_LIBS}"
|
||||
echo " CMake options: -G\"Unix Makefiles\" -DPROJECT_COMPANY_NAME=\"${PROJECT_COMPANY_NAME}\" -DPROJECT_COPYRIGHT=\"${PROJECT_COPYRIGHT}\" -DPROJECT_DESC=\"${PROJECT_DESC}\" -DPROJECT_URL=\"${PROJECT_URL}\" ${PROJECT_CMAKE_OPTS} "
|
||||
echo " CMake toolchain file: ${PROJECT_TOOLCHAIN_FILE_CMAKE}"
|
||||
echo " Cmake Build type: ${PROJECT_CMAKE_BUILD_TYPE}"
|
||||
echo " Company name: ${PROJECT_COMPANY_NAME}"
|
||||
echo " Copyright: ${PROJECT_COPYRIGHT}"
|
||||
echo " Description: ${PROJECT_DESC}"
|
||||
echo " Dist dir: ${PROJECT_DIST_DIR}"
|
||||
echo " Enable v2 errors: ${PROJECT_ENABLE_V2_ERRORS}"
|
||||
echo " External build root: ${PROJECT_EXTERNAL_BUILD_ROOT}"
|
||||
echo " File part: ${PROJECT_FILE_PART}"
|
||||
echo " Flutter base href: ${PROJECT_FLUTTER_BASE_HREF}"
|
||||
echo " Is ARM64: ${PROJECT_IS_ARM64}"
|
||||
echo " Is Alpine: ${PROJECT_IS_ALPINE}"
|
||||
echo " Is Darwin: ${PROJECT_IS_DARWIN}"
|
||||
echo " Is MINGW on Unix: ${PROJECT_IS_MINGW_UNIX}"
|
||||
echo " Is MINGW: ${PROJECT_IS_MINGW}"
|
||||
echo " Job count: ${NUM_JOBS}"
|
||||
echo " Link type: ${PROJECT_LINK_TYPE}"
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
echo " Long path names: ${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}"
|
||||
fi
|
||||
if [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
||||
echo " macOS bundle ID: ${PROJECT_MACOS_BUNDLE_ID}"
|
||||
echo " macOS icns name: ${PROJECT_MACOS_ICNS_NAME}"
|
||||
fi
|
||||
echo " Meson toolchain file: ${PROJECT_TOOLCHAIN_FILE_MESON}"
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then
|
||||
echo " MinGW docker build args: ${PROJECT_MINGW64_DOCKER_BUILD_ARGS}"
|
||||
fi
|
||||
echo " OPENSSL_ROOT_DIR: ${OPENSSL_ROOT_DIR}"
|
||||
echo " Out file: ${PROJECT_OUT_FILE}"
|
||||
echo " PATH: ${PATH}"
|
||||
echo " PKG_CONFIG_PATH: ${PKG_CONFIG_PATH}"
|
||||
echo " Require Alpine: ${PROJECT_REQUIRE_ALPINE}"
|
||||
echo " Static link: ${PROJECT_STATIC_LINK}"
|
||||
echo " Support dir: ${PROJECT_SUPPORT_DIR}"
|
||||
echo " Third-party dir: ${PROJECT_3RD_PARTY_DIR}"
|
||||
echo " Unit testing enabled: ${PROJECT_ENABLE_TESTING}"
|
||||
echo " URL: ${PROJECT_URL}"
|
||||
echo "-=[Libraries]=-"
|
||||
for PROJECT_LIBRARY in "${PROJECT_LIBRARIES[@]}"; do
|
||||
ENABLE_NAME=PROJECT_ENABLE_${PROJECT_LIBRARY}
|
||||
KEEP_NAME=PROJECT_KEEP_${PROJECT_LIBRARY}
|
||||
if [ "${!ENABLE_NAME}" == "ON" ] || [ "${!KEEP_NAME}" == "1" ]; then
|
||||
echo " ${ENABLE_NAME}: Enable[${!ENABLE_NAME}] Keep[${!KEEP_NAME}]"
|
||||
fi
|
||||
done
|
||||
popd
|
||||
@@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set ARG1=%~1
|
||||
set ARG2=%~2
|
||||
set ARG3=%~3
|
||||
|
||||
pushd "%~dp0%"
|
||||
call mingw64 -no-start ./info.sh "%ARG1%" "%ARG2%" "%ARG3%" 1 0
|
||||
popd
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" 1
|
||||
@@ -0,0 +1,146 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_LIBRARIES=(
|
||||
BACKWARD_CPP
|
||||
BOOST
|
||||
CLI11
|
||||
CPP_HTTPLIB
|
||||
CURL
|
||||
CXXOPTS
|
||||
DTL
|
||||
FLAC
|
||||
FMT
|
||||
FONTCONFIG
|
||||
FREETYPE2
|
||||
FUSE
|
||||
FZF
|
||||
GTKMM
|
||||
JSON
|
||||
LIBBITCOIN_SYSTEM
|
||||
LIBDSM
|
||||
LIBEVENT
|
||||
LIBICONV
|
||||
LIBJPEG_TURBO
|
||||
LIBPNG
|
||||
LIBSODIUM
|
||||
LIBTASN
|
||||
NANA
|
||||
NUSPELL
|
||||
OGG
|
||||
OPENAL
|
||||
OPENSSL
|
||||
PUGIXML
|
||||
ROCKSDB
|
||||
SAGO_PLATFORM_FOLDERS
|
||||
SDL
|
||||
SECP256K1
|
||||
SFML
|
||||
SPDLOG
|
||||
SQLITE
|
||||
STDUUID
|
||||
TESTING
|
||||
TPL
|
||||
VLC
|
||||
VORBIS
|
||||
WINFSP
|
||||
WXWIDGETS
|
||||
)
|
||||
|
||||
declare -A PROJECT_CLEANUP
|
||||
PROJECT_CLEANUP[BACKWARD_CPP]="include/backward.hpp:src/backward.cpp"
|
||||
PROJECT_CLEANUP[BINUTILS]="3rd_party/mingw64/binutils-*"
|
||||
PROJECT_CLEANUP[BOOST]="3rd_party/boost_*"
|
||||
PROJECT_CLEANUP[CLI11]="3rd_party/CLI11-*"
|
||||
PROJECT_CLEANUP[CPP_HTTPLIB]="3rd_party/cpp-httplib-*"
|
||||
PROJECT_CLEANUP[CURL]="3rd_party/curl-*"
|
||||
PROJECT_CLEANUP[CXXOPTS]="3rd_party/cxxopts-*"
|
||||
PROJECT_CLEANUP[DTL]="3rd_party/dtl-*"
|
||||
PROJECT_CLEANUP[EXPAT]="3rd_party/mingw64/expat-*"
|
||||
PROJECT_CLEANUP[FLAC]="3rd_party/flac-*"
|
||||
PROJECT_CLEANUP[FMT]="3rd_party/fmt-*"
|
||||
PROJECT_CLEANUP[FONTCONFIG]="3rd_party/fontconfig-*"
|
||||
PROJECT_CLEANUP[FREETYPE2]="3rd_party/freetype-*"
|
||||
PROJECT_CLEANUP[FZF]="include/fzf.h:src/fzf.c"
|
||||
PROJECT_CLEANUP[GCC]="3rd_party/mingw64/gcc-*"
|
||||
PROJECT_CLEANUP[ICU]="3rd_party/mingw64/icu-release-*"
|
||||
PROJECT_CLEANUP[JSON]="3rd_party/json-*"
|
||||
PROJECT_CLEANUP[INNOSETUP]="3rd_party/mingw64/innosetup-*"
|
||||
PROJECT_CLEANUP[LIBBITCOIN_SYSTEM]="3rd_party/boost_${PROJECT_VERSIONS[BOOST2_MAJOR]}_${PROJECT_VERSIONS[BOOST2_MINOR]}_*:3rd_party/libbitcoin-system-*"
|
||||
PROJECT_CLEANUP[LIBBITCOIN_SYSTEM_ON]="3rd_party/boost_${PROJECT_VERSIONS[BOOST_MAJOR]}_${PROJECT_VERSIONS[BOOST_MINOR]}_*"
|
||||
PROJECT_CLEANUP[LIBDSM]="3rd_party/libdsm-*:3rd_party/libdsm*"
|
||||
PROJECT_CLEANUP[LIBEVENT]="3rd_party/libevent*"
|
||||
PROJECT_CLEANUP[LIBICONV]="3rd_party/libiconv-*"
|
||||
PROJECT_CLEANUP[LIBJPEG_TURBO]="3rd_party/libjpeg_turbo-*"
|
||||
PROJECT_CLEANUP[LIBPNG]="3rd_party/libpng-*"
|
||||
PROJECT_CLEANUP[LIBSODIUM]="3rd_party/libsodium-*:3rd_party/libsodium*"
|
||||
PROJECT_CLEANUP[LIBTASN]="3rd_party/libtasn1-*"
|
||||
PROJECT_CLEANUP[MINGW]="3rd_party/mingw64/mingw-w64-*"
|
||||
PROJECT_CLEANUP[NANA]="3rd_party/nana-*:3rd_party/nana*"
|
||||
PROJECT_CLEANUP[NUSPELL]="3rd_party/nuspell-*"
|
||||
PROJECT_CLEANUP[OGG]="3rd_party/ogg-*"
|
||||
PROJECT_CLEANUP[OPENAL]="3rd_party/openal-*"
|
||||
PROJECT_CLEANUP[OPENSSL]="3rd_party/openssl-*"
|
||||
PROJECT_CLEANUP[PKG_CONFIG]="3rd_party/mingw64/pkg-config-*"
|
||||
PROJECT_CLEANUP[PUGIXML]="3rd_party/pugixml-*"
|
||||
PROJECT_CLEANUP[ROCKSDB]="3rd_party/rocksdb-*"
|
||||
PROJECT_CLEANUP[SAGO_PLATFORM_FOLDERS]="include/platform_folders.hpp:src/platform_folders.cpp"
|
||||
PROJECT_CLEANUP[SDL]="3rd_party/sdl-*"
|
||||
PROJECT_CLEANUP[SECP256K1]="3rd_party/secp256k1-*"
|
||||
PROJECT_CLEANUP[SFML]="3rd_party/SFML-*:3rd_party/SFML*:include/RoundedRectangleShape.hpp:include/Text2.hpp:src/RoundedRectangleShape.cpp:src/Text2.cpp"
|
||||
PROJECT_CLEANUP[SPDLOG]="3rd_party/spdlog-*"
|
||||
PROJECT_CLEANUP[SQLITE]="3rd_party/sqlite*"
|
||||
PROJECT_CLEANUP[STDUUID]="3rd_party/stduuid-*"
|
||||
PROJECT_CLEANUP[TESTING]="3rd_party/googletest-*"
|
||||
PROJECT_CLEANUP[TPL]="3rd_party/tiny-process-library*"
|
||||
PROJECT_CLEANUP[VLC]="3rd_party/vlc*"
|
||||
PROJECT_CLEANUP[VORBIS]="3rd_party/vorbis-*:3rd_party/vorbis*"
|
||||
PROJECT_CLEANUP[WINFSP]="3rd_party/winfsp-*"
|
||||
PROJECT_CLEANUP[WXWIDGETS]="3rd_party/wxWidgets-*"
|
||||
PROJECT_CLEANUP[ZLIB]="3rd_party/mingw64/zlib-*"
|
||||
export PROJECT_CLEANUP
|
||||
|
||||
declare -A PROJECT_DOWNLOADS
|
||||
PROJECT_DOWNLOADS[BINUTILS]="https://ftp.gnu.org/gnu/binutils/binutils-${PROJECT_VERSIONS[BINUTILS]}.tar.xz;binutils-${PROJECT_VERSIONS[BINUTILS]}.tar.xz;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[BOOST2]="https://archives.boost.io/release/${PROJECT_VERSIONS[BOOST2_MAJOR]}.${PROJECT_VERSIONS[BOOST2_MINOR]}.${PROJECT_VERSIONS[BOOST2_PATCH]}/source/boost_${PROJECT_VERSIONS[BOOST2_MAJOR]}_${PROJECT_VERSIONS[BOOST2_MINOR]}_${PROJECT_VERSIONS[BOOST2_PATCH]}.tar.gz;boost_${PROJECT_VERSIONS[BOOST2_MAJOR]}_${PROJECT_VERSIONS[BOOST2_MINOR]}_${PROJECT_VERSIONS[BOOST2_PATCH]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[BOOST]="https://archives.boost.io/release/${PROJECT_VERSIONS[BOOST_MAJOR]}.${PROJECT_VERSIONS[BOOST_MINOR]}.${PROJECT_VERSIONS[BOOST_PATCH]}/source/boost_${PROJECT_VERSIONS[BOOST_MAJOR]}_${PROJECT_VERSIONS[BOOST_MINOR]}_${PROJECT_VERSIONS[BOOST_PATCH]}.tar.gz;boost_${PROJECT_VERSIONS[BOOST_MAJOR]}_${PROJECT_VERSIONS[BOOST_MINOR]}_${PROJECT_VERSIONS[BOOST_PATCH]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[CLI11]="https://github.com/CLIUtils/CLI11/archive/refs/tags/v${PROJECT_VERSIONS[CLI11]}.tar.gz;CLI11-${PROJECT_VERSIONS[CLI11]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[CPP_HTTPLIB]="https://github.com/yhirose/cpp-httplib/archive/refs/tags/v${PROJECT_VERSIONS[CPP_HTTPLIB]}.tar.gz;cpp-httplib-${PROJECT_VERSIONS[CPP_HTTPLIB]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[CURL]="https://github.com/curl/curl/archive/refs/tags/curl-${PROJECT_VERSIONS[CURL2]}.tar.gz;curl-${PROJECT_VERSIONS[CURL]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[CXXOPTS]="https://github.com/jarro2783/cxxopts/archive/refs/tags/v${PROJECT_VERSIONS[CXXOPTS]}.tar.gz;cxxopts-v${PROJECT_VERSIONS[CXXOPTS]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[EXPAT]="https://github.com/libexpat/libexpat/archive/refs/tags/R_${PROJECT_VERSIONS[EXPAT2]}.tar.gz;expat-${PROJECT_VERSIONS[EXPAT]}.tar.gz;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[FLAC]="https://github.com/xiph/flac/archive/refs/tags/${PROJECT_VERSIONS[FLAC]}.tar.gz;flac-${PROJECT_VERSIONS[FLAC]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[FMT]="https://github.com/fmtlib/fmt/archive/refs/tags/${PROJECT_VERSIONS[FMT]}.tar.gz;fmt-${PROJECT_VERSIONS[FMT]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[FONTCONFIG]="https://www.freedesktop.org/software/fontconfig/release/fontconfig-${PROJECT_VERSIONS[FONTCONFIG]}.tar.xz;fontconfig-${PROJECT_VERSIONS[FONTCONFIG]}.tar.xz;3rd_party"
|
||||
PROJECT_DOWNLOADS[FREETYPE2]="https://download.savannah.gnu.org/releases/freetype/freetype-${PROJECT_VERSIONS[FREETYPE2]}.tar.gz;freetype-${PROJECT_VERSIONS[FREETYPE2]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[GCC]="https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-${PROJECT_VERSIONS[GCC]}/gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;gcc-${PROJECT_VERSIONS[GCC]}.tar.gz;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[GTEST]="https://github.com/google/googletest/archive/refs/tags/v${PROJECT_VERSIONS[GTEST]}.tar.gz;googletest-${PROJECT_VERSIONS[GTEST]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[ICU]="https://github.com/unicode-org/icu/archive/refs/tags/release-${PROJECT_VERSIONS[ICU]}.tar.gz;icu-release-${PROJECT_VERSIONS[ICU]}.tar.gz;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[JSON]="https://github.com/nlohmann/json/archive/refs/tags/v${PROJECT_VERSIONS[JSON]}.tar.gz;json-${PROJECT_VERSIONS[JSON]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[INNOSETUP]="https://files.jrsoftware.org/is/6/innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;innosetup-${PROJECT_VERSIONS[INNOSETUP]}.exe;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[WINFSP]="https://github.com/winfsp/winfsp/releases/download/v${PROJECT_VERSIONS[WINFSP2]}/winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;winfsp-${PROJECT_VERSIONS[WINFSP]}.msi;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBDSM]="https://github.com/videolabs/libdsm/archive/refs/tags/v${PROJECT_VERSIONS[LIBDSM]}.tar.gz;libdsm-${PROJECT_VERSIONS[LIBDSM]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBEVENT]="https://github.com/libevent/libevent/archive/refs/tags/release-${PROJECT_VERSIONS[LIBEVENT]}-stable.tar.gz;libevent-${PROJECT_VERSIONS[LIBEVENT]}-stable.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBICONV]="https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${PROJECT_VERSIONS[LIBICONV]}.tar.gz;libiconv-${PROJECT_VERSIONS[LIBICONV]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBJPEG_TURBO]="https://github.com/libjpeg-turbo/libjpeg-turbo/archive/refs/tags/${PROJECT_VERSIONS[LIBJPEG_TURBO]}.tar.gz;libjpeg_turbo-${PROJECT_VERSIONS[LIBJPEG_TURBO]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBPNG]="https://github.com/pnggroup/libpng/archive/refs/tags/v${PROJECT_VERSIONS[LIBPNG]}.tar.gz;libpng-v${PROJECT_VERSIONS[LIBPNG]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBSODIUM]="https://github.com/jedisct1/libsodium/archive/refs/tags/${PROJECT_VERSIONS[LIBSODIUM]}-RELEASE.tar.gz;libsodium-${PROJECT_VERSIONS[LIBSODIUM]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[LIBTASN]="https://ftp.gnu.org/gnu/libtasn1/libtasn1-${PROJECT_VERSIONS[LIBTASN]}.tar.gz;libtasn1-${PROJECT_VERSIONS[LIBTASN]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[MINGW]="https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;;mingw-w64-v${PROJECT_VERSIONS[MINGW]}.tar.bz2;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[NANA]="https://github.com/cnjinhao/nana/archive/refs/tags/v${PROJECT_VERSIONS[NANA]}.tar.gz;nana-v${PROJECT_VERSIONS[NANA]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[NUSPELL]="https://github.com/nuspell/nuspell/archive/refs/tags/v${PROJECT_VERSIONS[NUSPELL]}.tar.gz;nuspell-v${PROJECT_VERSIONS[NUSPELL]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[OGG]="https://github.com/xiph/ogg/releases/download/v${PROJECT_VERSIONS[OGG]}/libogg-${PROJECT_VERSIONS[OGG]}.tar.gz;ogg-v${PROJECT_VERSIONS[OGG]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[OPENAL]="https://github.com/kcat/openal-soft/archive/refs/tags/${PROJECT_VERSIONS[OPENAL]}.tar.gz;openal-${PROJECT_VERSIONS[OPENAL]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[PKG_CONFIG]="https://pkgconfig.freedesktop.org/releases/pkg-config-${PROJECT_VERSIONS[PKG_CONFIG]}.tar.gz;pkg-config-${PROJECT_VERSIONS[PKG_CONFIG]}.tar.gz;3rd_party/mingw64"
|
||||
PROJECT_DOWNLOADS[PUGIXML]="https://github.com/zeux/pugixml/releases/download/v${PROJECT_VERSIONS[PUGIXML]}/pugixml-${PROJECT_VERSIONS[PUGIXML]}.tar.gz;pugixml-${PROJECT_VERSIONS[PUGIXML]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[ROCKSDB]="https://github.com/facebook/rocksdb/archive/refs/tags/v${PROJECT_VERSIONS[ROCKSDB]}.tar.gz;rocksdb-${PROJECT_VERSIONS[ROCKSDB]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[SDL]="https://github.com/libsdl-org/SDL/archive/refs/tags/release-${PROJECT_VERSIONS[SDL]}.tar.gz;sdl-${PROJECT_VERSIONS[SDL]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[SECP256K1]="https://github.com/libbitcoin/secp256k1/archive/refs/tags/v${PROJECT_VERSIONS[SECP256K1]}.tar.gz;secp256k1-${PROJECT_VERSIONS[SECP256K1]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[SFML]="https://github.com/SFML/SFML/archive/refs/tags/${PROJECT_VERSIONS[SFML]}.tar.gz;SFML-${PROJECT_VERSIONS[SFML]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[SPDLOG]="https://github.com/gabime/spdlog/archive/refs/tags/v${PROJECT_VERSIONS[SPDLOG]}.tar.gz;spdlog-${PROJECT_VERSIONS[SPDLOG]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[SQLITE]="https://www.sqlite.org/2025/sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;3rd_party"
|
||||
PROJECT_DOWNLOADS[STDUUID]="https://github.com/mariusbancila/stduuid/archive/refs/tags/v${PROJECT_VERSIONS[STDUUID]}.tar.gz;stduuid-${PROJECT_VERSIONS[STDUUID]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[VORBIS]="https://github.com/xiph/vorbis/archive/refs/tags/v${PROJECT_VERSIONS[VORBIS]}.tar.gz;vorbis-v${PROJECT_VERSIONS[VORBIS]}.tar.gz;3rd_party"
|
||||
PROJECT_DOWNLOADS[WXWIDGETS]="https://github.com/wxWidgets/wxWidgets/releases/download/v${PROJECT_VERSIONS[WXWIDGETS]}/wxWidgets-${PROJECT_VERSIONS[WXWIDGETS]}.tar.bz2;wxWidgets-${PROJECT_VERSIONS[WXWIDGETS]}.tar.bz2;3rd_party"
|
||||
PROJECT_DOWNLOADS[ZLIB]="https://github.com/madler/zlib/archive/refs/tags/v${PROJECT_VERSIONS[ZLIB]}.tar.gz;zlib-${PROJECT_VERSIONS[ZLIB]}.tar.gz;3rd_party/mingw64"
|
||||
export PROJECT_DOWNLOADS
|
||||
@@ -0,0 +1,121 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
|
||||
mkdir -p "${PROJECT_BUILD_DIR}/build"
|
||||
|
||||
if [ -d "${PROJECT_DIST_DIR}" ]; then
|
||||
rm -rf "${PROJECT_DIST_DIR}"
|
||||
mkdir -p "${PROJECT_DIST_DIR}"
|
||||
fi
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/pre_build.sh" ]; then
|
||||
"${PROJECT_SOURCE_DIR}/pre_build.sh"
|
||||
fi
|
||||
|
||||
ln -sf "${PROJECT_BUILD_DIR}/build/compile_commands.json" "${PROJECT_SOURCE_DIR}/compile_commands.json"
|
||||
|
||||
pushd "${PROJECT_BUILD_DIR}"
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=${NUM_JOBS}
|
||||
|
||||
cmake "${PROJECT_SOURCE_DIR}" \
|
||||
-G"Unix Makefiles" \
|
||||
-DPROJECT_COMPANY_NAME="${PROJECT_COMPANY_NAME}" \
|
||||
-DPROJECT_COPYRIGHT="${PROJECT_COPYRIGHT}" \
|
||||
-DPROJECT_DESC="${PROJECT_DESC}" \
|
||||
-DPROJECT_INTERFACE=1 \
|
||||
-DPROJECT_URL="${PROJECT_URL}" \
|
||||
${PROJECT_CMAKE_OPTS} || exit 1
|
||||
|
||||
if [ "${PROJECT_BUILD_CLEAN}" == "clean" ]; then
|
||||
make clean
|
||||
pushd build
|
||||
make clean
|
||||
popd
|
||||
fi
|
||||
|
||||
make || exit 1
|
||||
|
||||
pushd build
|
||||
make -j${CMAKE_BUILD_PARALLEL_LEVEL} || exit 1
|
||||
popd
|
||||
popd
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/LICENSE.md" ]; then
|
||||
rsync -av --progress "${PROJECT_SOURCE_DIR}/LICENSE.md" "${PROJECT_DIST_DIR}/"
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_BUILD_SHARED_LIBS}" == "ON" ] && [ "${PROJECT_IS_MINGW}" != "1" ]; then
|
||||
rsync -av --progress ${PROJECT_EXTERNAL_BUILD_ROOT}/ "${PROJECT_DIST_DIR}/"
|
||||
pushd "${PROJECT_DIST_DIR}"
|
||||
rm lib64
|
||||
ln -sf lib lib64
|
||||
popd
|
||||
fi
|
||||
|
||||
for APP in ${PROJECT_APP_LIST[@]}; do
|
||||
if [ "${PROJECT_BUILD_SHARED_LIBS}" == "ON" ]; then
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${PROJECT_APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/"
|
||||
else
|
||||
rm "${PROJECT_DIST_DIR}/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
if [ "${PROJECT_ENABLE_CURL}" == "ON" ]; then
|
||||
mv "${PROJECT_DIST_DIR}/cacert.pem" "${PROJECT_DIST_DIR}/bin/cacert.pem"
|
||||
fi
|
||||
rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${PROJECT_APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/bin/"
|
||||
if [ "${PROJECT_IS_DARWIN}" == "1" ]; then
|
||||
cat <<EOF >>"${PROJECT_DIST_DIR}/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
#!/bin/sh
|
||||
PROJECT_SCRIPTS_DIR=\$(realpath "\$0")
|
||||
PROJECT_SCRIPTS_DIR=\$(dirname "\${PROJECT_SCRIPTS_DIR}")
|
||||
|
||||
DYLD_LIBRARY_PATH="\${PROJECT_SCRIPTS_DIR}/lib:\${PROJECT_SCRIPTS_DIR}/lib64:\${DYLD_LIBRARY_PATH}"
|
||||
export DYLD_LIBRARY_PATH
|
||||
|
||||
\${PROJECT_SCRIPTS_DIR}/bin/${APP}${PROJECT_APP_BINARY_EXT} \$*
|
||||
EOF
|
||||
else
|
||||
cat <<EOF >>"${PROJECT_DIST_DIR}/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
#!/bin/sh
|
||||
PROJECT_SCRIPTS_DIR=\$(realpath "\$0")
|
||||
PROJECT_SCRIPTS_DIR=\$(dirname "\${PROJECT_SCRIPTS_DIR}")
|
||||
|
||||
export LD_LIBRARY_PATH="\${PROJECT_SCRIPTS_DIR}/lib:\${PROJECT_SCRIPTS_DIR}/lib64:\${LD_LIBRARY_PATH}"
|
||||
|
||||
\${PROJECT_SCRIPTS_DIR}/bin/${APP}${PROJECT_APP_BINARY_EXT} \$*
|
||||
EOF
|
||||
fi
|
||||
chmod +x "${PROJECT_DIST_DIR}/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
fi
|
||||
elif [ ! -d "${PROJECT_BUILD_DIR}/build/${APP}.app" ]; then
|
||||
rsync -av --progress "${PROJECT_BUILD_DIR}/build/${APP}${PROJECT_APP_BINARY_EXT}" "${PROJECT_DIST_DIR}/"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -d "${PROJECT_BUILD_DIR}/build/${PROJECT_NAME}.app" ]; then
|
||||
rsync -av --progress "${PROJECT_BUILD_DIR}/build/${PROJECT_NAME}.app/" \
|
||||
"${PROJECT_DIST_DIR}/${PROJECT_NAME}.app/"
|
||||
fi
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}/pubspec.yaml" ]; then
|
||||
if [ -d "${PROJECT_DIST_DIR}/${PROJECT_NAME}.app" ]; then
|
||||
rsync -av --progress "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}/build/web/" \
|
||||
"${PROJECT_DIST_DIR}/${PROJECT_NAME}.app/Contents/Resources/web/"
|
||||
cp "${PROJECT_DIST_DIR}/cacert.pem" "${PROJECT_DIST_DIR}/${PROJECT_NAME}.app/Contents/MacOS/cacert.pem"
|
||||
else
|
||||
rsync -av --progress "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}/build/web/" \
|
||||
"${PROJECT_DIST_DIR}/web/"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${PROJECT_IS_MINGW}" == "1" ]; then
|
||||
. "${PROJECT_SCRIPTS_DIR}/copy_mingw64_deps.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
fi
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/post_build.sh" ]; then
|
||||
"${PROJECT_SOURCE_DIR}/post_build.sh"
|
||||
fi
|
||||
|
||||
. "${PROJECT_SCRIPTS_DIR}/make_package.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
|
||||
if [ -f "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}/pubspec.yaml" ]; then
|
||||
if [[ "${PROJECT_IS_DARWIN}" == "0" && ("${PROJECT_IS_MINGW}" == "0" || "${PROJECT_IS_MINGW_UNIX}" == "1") ]]; then
|
||||
FLUTTER_CONTAINER_NAME="${PROJECT_NAME}_flutter"
|
||||
FLUTTER_TAG_NAME="${PROJECT_NAME}:flutter"
|
||||
|
||||
docker stop ${FLUTTER_CONTAINER_NAME}
|
||||
docker rm ${FLUTTER_CONTAINER_NAME}
|
||||
|
||||
docker build "${PROJECT_SOURCE_DIR}/docker/x86_64/" \
|
||||
--build-arg UID=$(id -u) \
|
||||
--build-arg GID=$(id -g) \
|
||||
-t ${FLUTTER_TAG_NAME} \
|
||||
-f "${PROJECT_SOURCE_DIR}/docker/x86_64/flutter" || exit 1
|
||||
|
||||
docker run -td \
|
||||
--name ${FLUTTER_CONTAINER_NAME} \
|
||||
-u $(id -u):$(id -g) \
|
||||
-v ${PROJECT_SOURCE_DIR}:${PROJECT_SOURCE_DIR}:rw,z \
|
||||
-w ${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME} \
|
||||
${FLUTTER_TAG_NAME} || exit 1
|
||||
|
||||
docker exec \
|
||||
${FLUTTER_CONTAINER_NAME} \
|
||||
/bin/bash -c \
|
||||
"flutter clean;flutter build web --base-href=${PROJECT_FLUTTER_BASE_HREF}" || exit 1
|
||||
|
||||
docker stop ${FLUTTER_CONTAINER_NAME}
|
||||
docker rm ${FLUTTER_CONTAINER_NAME}
|
||||
else
|
||||
pushd "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}"
|
||||
export MSYS_NO_PATHCONV=1
|
||||
flutter clean
|
||||
flutter build web --base-href=${PROJECT_FLUTTER_BASE_HREF} || exit 1
|
||||
export MSYS_NO_PATHCONV=0
|
||||
popd
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set ARG1=%~1
|
||||
set ARG2=%~2
|
||||
set ARG3=%~3
|
||||
|
||||
pushd "%~dp0%"
|
||||
call mingw64 -no-start ./make_package.sh "%ARG1%" "%ARG2%" "%ARG3%" 1 0 || exit 1
|
||||
popd
|
||||
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5"
|
||||
|
||||
function error_exit() {
|
||||
echo $1
|
||||
rm -rf ${TEMP_DIR}
|
||||
exit $2
|
||||
}
|
||||
|
||||
function cleanup_packages() {
|
||||
local SOURCE_FILE=$1
|
||||
|
||||
pushd "${PROJECT_DIST_DIR}"
|
||||
if [ -f "${SOURCE_FILE}" ]; then
|
||||
rm -f "${SOURCE_FILE}" || error_exit "failed to delete file: ${SOURCE_FILE}" 1
|
||||
fi
|
||||
|
||||
if [ -f "${SOURCE_FILE}.sha256" ]; then
|
||||
rm -f "${SOURCE_FILE}.sha256" || error_exit "failed to delete file: ${SOURCE_FILE}.sha256" 1
|
||||
fi
|
||||
|
||||
if [ -f "${SOURCE_FILE}.sig" ]; then
|
||||
rm -f "${SOURCE_FILE}.sig" || error_exit "failed to delete file: ${SOURCE_FILE}.sig" 1
|
||||
fi
|
||||
popd
|
||||
}
|
||||
|
||||
function create_file_validations() {
|
||||
local SOURCE_FILE=$1
|
||||
sha256sum ${SOURCE_FILE} >${SOURCE_FILE}.sha256 || error_exit "failed to create sha256 for file: ${SOURCE_FILE}" 1
|
||||
if [ "${PROJECT_PRIVATE_KEY}" != "" ]; then
|
||||
openssl dgst -sha256 -sign "${PROJECT_PRIVATE_KEY}" -out "${SOURCE_FILE}.sig" "${SOURCE_FILE}" || error_exit "failed to create signature for file: ${SOURCE_FILE}" 1
|
||||
openssl dgst -sha256 -verify "${PROJECT_PUBLIC_KEY}" -signature "${SOURCE_FILE}.sig" "${SOURCE_FILE}" || error_exit "failed to validate signature for file: ${SOURCE_FILE}" 1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! -d "${PROJECT_DIST_DIR}" ]; then
|
||||
error_exit "dist directory not found: ${PROJECT_DIST_DIR}" 2
|
||||
fi
|
||||
|
||||
cleanup_packages "${PROJECT_OUT_FILE}"
|
||||
cleanup_packages "${PROJECT_FILE_PART}_setup.exe"
|
||||
cleanup_packages "${PROJECT_FILE_PART}.dmg"
|
||||
|
||||
rsync -av --progress ${PROJECT_DIST_DIR}/ ${TEMP_DIR}/${PROJECT_NAME}/ || error_exit "failed to rsync" 1
|
||||
|
||||
for APP in ${PROJECT_APP_LIST[@]}; do
|
||||
if [ -d "${TEMP_DIR}/${PROJECT_NAME}/${APP}.app" ]; then
|
||||
strip "${TEMP_DIR}/${PROJECT_NAME}/${APP}.app/Contents/MacOS/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
elif [ "${PROJECT_BUILD_SHARED_LIBS}" == "ON" ] && [ "${PROJECT_IS_MINGW}" != "1" ]; then
|
||||
strip "${TEMP_DIR}/${PROJECT_NAME}/bin/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
else
|
||||
strip "${TEMP_DIR}/${PROJECT_NAME}/${APP}${PROJECT_APP_BINARY_EXT}"
|
||||
fi
|
||||
done
|
||||
|
||||
pushd "${TEMP_DIR}/${PROJECT_NAME}/"
|
||||
IFS=$'\n'
|
||||
set -f
|
||||
FILE_LIST=$(find . -type f -not -path "*/.app/*")
|
||||
for FILE in ${FILE_LIST}; do
|
||||
create_file_validations "${FILE}"
|
||||
done
|
||||
unset IFS
|
||||
set +f
|
||||
popd
|
||||
|
||||
pushd "${PROJECT_DIST_DIR}"
|
||||
tar cvzf "${PROJECT_OUT_FILE}" -C ${TEMP_DIR} . || error_exit "failed to create archive: ${PROJECT_OUT_FILE}" 1
|
||||
create_file_validations "${PROJECT_OUT_FILE}"
|
||||
popd
|
||||
|
||||
if [ -d "${TEMP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.app" ]; then
|
||||
APP_SRC="${TEMP_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.app"
|
||||
|
||||
DMG_ROOT="${TEMP_DIR}/dmgroot"
|
||||
mkdir -p "${DMG_ROOT}" || error_exit "failed to create dmgroot" 1
|
||||
|
||||
INSTALLER="${DMG_ROOT}/Install ${PROJECT_NAME}.command"
|
||||
INSTALLER_SRC="${PROJECT_SOURCE_DIR}/${PROJECT_NAME}/Install ${PROJECT_NAME}.command"
|
||||
|
||||
if [ -f "${INSTALLER_SRC}" ]; then
|
||||
HIDDEN_DIR="${DMG_ROOT}/.payload"
|
||||
mkdir -p "${HIDDEN_DIR}" || error_exit "failed to create payload dir" 1
|
||||
APP_DEST_DIR="${HIDDEN_DIR}"
|
||||
else
|
||||
APP_DEST_DIR="${DMG_ROOT}"
|
||||
fi
|
||||
|
||||
rsync -a "${APP_SRC}" "${APP_DEST_DIR}/" || error_exit "failed to stage app bundle" 1
|
||||
|
||||
if [ -f "${INSTALLER_SRC}" ]; then
|
||||
chflags hidden "${HIDDEN_DIR}" "${HIDDEN_DIR}/${PROJECT_NAME}.app" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
ln -s /Applications "${DMG_ROOT}/Applications" 2>/dev/null || true
|
||||
|
||||
if [ -f "${INSTALLER_SRC}" ]; then
|
||||
cp -f "${INSTALLER_SRC}" "${INSTALLER}" || error_exit "failed to copy install command" 1
|
||||
chmod +x "${INSTALLER}" || error_exit "failed to chmod install command" 1
|
||||
|
||||
SAFE_PREFIX="$(printf '%s' "${PROJECT_MACOS_BUNDLE_ID}" | sed -e 's/[\/&]/\\&/g')"
|
||||
/usr/bin/sed -i '' -e "s|^LABEL_PREFIX=.*$|LABEL_PREFIX=\"${SAFE_PREFIX}\"|g" "${INSTALLER}"
|
||||
|
||||
LABEL_ASSIGNED="$(/usr/bin/awk -F= '/^LABEL_PREFIX=/{sub(/^[^=]*=/,""); gsub(/^"|"$/,""); print; exit}' "${INSTALLER}")"
|
||||
if ! /usr/bin/awk -v v="${LABEL_ASSIGNED}" '
|
||||
BEGIN {
|
||||
if (length(v) == 0) exit 1;
|
||||
if (v == "__LABEL_PREFIX__") exit 1;
|
||||
if (v !~ /^[A-Za-z0-9._-]+$/) exit 1;
|
||||
if (v !~ /\./) exit 1;
|
||||
exit 0;
|
||||
}'; then
|
||||
error_exit "DMG build abort: invalid LABEL_PREFIX written to installer (value: \"${LABEL_ASSIGNED}\"). Check PROJECT_MACOS_BUNDLE_ID and sed substitution." 1
|
||||
fi
|
||||
fi
|
||||
|
||||
DMG_OUT="${PROJECT_FILE_PART}.dmg"
|
||||
hdiutil create \
|
||||
-volname "${PROJECT_NAME}" \
|
||||
-fs HFS+ \
|
||||
-srcfolder "${DMG_ROOT}" \
|
||||
-ov -format UDZO \
|
||||
"${PROJECT_DIST_DIR}/${DMG_OUT}" || error_exit "hdiutil failed" 1
|
||||
|
||||
pushd "${PROJECT_DIST_DIR}"
|
||||
create_file_validations "${DMG_OUT}"
|
||||
popd
|
||||
elif [ "${PROJECT_IS_MINGW}" == "1" ] && [ -f "${PROJECT_DIST_DIR}/../${PROJECT_NAME}.iss" ]; then
|
||||
cp -f "${PROJECT_DIST_DIR}/../${PROJECT_NAME}.iss" "${TEMP_DIR}/${PROJECT_NAME}.iss"
|
||||
rsync -av --progress --delete ${PROJECT_SOURCE_DIR}/support/3rd_party/*.msi ${TEMP_DIR}/3rd_party/
|
||||
|
||||
pushd "${TEMP_DIR}"
|
||||
if [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then
|
||||
wine64 "c:/Program Files (x86)/Inno Setup 6/iscc.exe" "${PROJECT_NAME}.iss" || exit 1
|
||||
else
|
||||
iscc "${PROJECT_NAME}.iss" || exit 1
|
||||
fi
|
||||
|
||||
pushd "Output"
|
||||
create_file_validations "${PROJECT_FILE_PART}_setup.exe"
|
||||
cp -f * "${PROJECT_DIST_DIR}/"
|
||||
popd
|
||||
|
||||
popd
|
||||
fi
|
||||
|
||||
error_exit "created package ${PROJECT_FILE_PART}" 0
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_SCRIPTS_DIR=$(realpath "$0")
|
||||
PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}")
|
||||
. "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" 0 0
|
||||
|
||||
if [ -f "${PROJECT_SCRIPTS_DIR}/cleanup.sh" ]; then
|
||||
. "${PROJECT_SCRIPTS_DIR}/cleanup.sh" "$1" "$2" "$3" 0 0
|
||||
rm ${PROJECT_SCRIPTS_DIR}/cleanup.*
|
||||
fi
|
||||
|
||||
"${PROJECT_SOURCE_DIR}/scripts/make_flutter.sh" "${PROJECT_BUILD_ARCH}" "${PROJECT_CMAKE_BUILD_TYPE}" "${PROJECT_BUILD_CLEAN}" 0 0 || exit 1
|
||||
|
||||
if [[ "${PROJECT_IS_DARWIN}" == "0" && ("${PROJECT_REQUIRE_ALPINE}" == "ON" || "${PROJECT_IS_ARM64}" == "1") ]]; then
|
||||
DOCKER_NAME=alpine
|
||||
DOCKER_CONTAINER=${PROJECT_NAME}_${DOCKER_NAME}_${PROJECT_BUILD_ARCH}
|
||||
DOCKER_TAG=${PROJECT_NAME}:${DOCKER_NAME}
|
||||
|
||||
. "${PROJECT_SCRIPTS_DIR}/docker_common.sh" || exit 1
|
||||
else
|
||||
"${PROJECT_SOURCE_DIR}/scripts/make_common.sh" "${PROJECT_BUILD_ARCH}" "${PROJECT_CMAKE_BUILD_TYPE}" "${PROJECT_BUILD_CLEAN}" 0 0 || exit 1
|
||||
fi
|
||||
@@ -0,0 +1,18 @@
|
||||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set ARG1=%~1
|
||||
set ARG2=%~2
|
||||
set ARG3=%~3
|
||||
|
||||
pushd "%~dp0%"
|
||||
call setup_msys2.cmd "%ARG1%" "%ARG2%" "%ARG3%"
|
||||
if exist "cleanup.cmd" (
|
||||
call cleanup.cmd "%ARG1%" "%ARG2%" "%ARG3%" 1 0
|
||||
del cleanup.*
|
||||
)
|
||||
|
||||
call mingw64 -no-start ./make_flutter.sh "%ARG1%" "%ARG2%" "%ARG3%" 1 0 || exit 1
|
||||
call mingw64 -no-start ./make_common.sh "%ARG1%" "%ARG2%" "%ARG3%" 1 0 || exit 1
|
||||
popd
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user