Skip to content

Commit f4ac045

Browse files
committed
Add boson version
1 parent 5969055 commit f4ac045

4 files changed

Lines changed: 92 additions & 4 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ private/version.hpp
66
.vs
77
.cache
88
.vscode
9+
.idea

CMakeLists.txt

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,49 @@
11
cmake_minimum_required(VERSION 3.21)
22
project(saucer-bindings LANGUAGES CXX VERSION 8.0.2)
33

4+
set(COPYRIGHT "Copyright (c) Nesmeyanov Kirill/Community")
5+
set(VENDOR "Boson")
6+
set(DESCRIPTION "Boson frontend runtime binaries")
7+
set(VERSION "0.5.0")
8+
set(OUTPUT_NAME "libboson")
9+
10+
add_compile_definitions(BOSON_COPYRIGHT=${COPYRIGHT})
11+
add_compile_definitions(BOSON_VENDOR=${VENDOR})
12+
add_compile_definitions(BOSON_DESCRIPTION=${DESCRIPTION})
13+
add_compile_definitions(BOSON_VERSION=${VERSION})
14+
15+
if(WIN32)
16+
set(OUTPUT_NAME "${OUTPUT_NAME}-windows")
17+
elseif(APPLE)
18+
set(OUTPUT_NAME "${OUTPUT_NAME}-darwin")
19+
else()
20+
set(OUTPUT_NAME "${OUTPUT_NAME}-linux")
21+
endif()
22+
23+
if(APPLE)
24+
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "Build universal binary" FORCE)
25+
endif()
26+
27+
if(APPLE)
28+
set(OUTPUT_NAME "${OUTPUT_NAME}-universal")
29+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
30+
set(OUTPUT_NAME "${OUTPUT_NAME}-x86_64")
31+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3-6]86|^x86$")
32+
set(OUTPUT_NAME "${OUTPUT_NAME}-x86")
33+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
34+
set(OUTPUT_NAME "${OUTPUT_NAME}-arm")
35+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
36+
set(OUTPUT_NAME "${OUTPUT_NAME}-aarch64")
37+
else()
38+
set(OUTPUT_NAME "${OUTPUT_NAME}-unknown")
39+
endif()
40+
441
# +-------------------------------------------------------------------------------------------------------+
542
# | Library switches |
643
# +-------------------------------------------------------------------------------------------------------+
744

845
option(saucer_desktop "Enable support for the desktop module" ON)
9-
option(saucer_pdf "Enable support for the pdf module" ON)
46+
option(saucer_pdf "Enable support for the pdf module" OFF)
1047
option(saucer_loop "Enable support for the loop module" ON)
1148

1249
# +-------------------------------------------------------------------------------------------------------+
@@ -23,7 +60,25 @@ add_library(${PROJECT_NAME} SHARED)
2360
add_library(saucer::bindings ALIAS ${PROJECT_NAME})
2461

2562
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_23)
26-
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 23 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON)
63+
set_target_properties(${PROJECT_NAME} PROPERTIES
64+
CXX_STANDARD 23
65+
CXX_EXTENSIONS OFF
66+
CXX_STANDARD_REQUIRED ON
67+
PREFIX ""
68+
OUTPUT_NAME ${OUTPUT_NAME}
69+
)
70+
71+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
72+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
73+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
74+
75+
if(WIN32)
76+
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".dll")
77+
elseif(APPLE)
78+
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".dylib")
79+
else()
80+
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".so")
81+
endif()
2782

2883
if (PROJECT_IS_TOP_LEVEL AND NOT MSVC AND NOT CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")
2984
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -Werror -pedantic -pedantic-errors -Wfatal-errors)
@@ -40,7 +95,7 @@ endif()
4095
include("cmake/hide.cmake")
4196
include("cmake/export.cmake")
4297

43-
saucer_bindings_hide_symbols(${PROJECT_NAME})
98+
#saucer_bindings_hide_symbols(${PROJECT_NAME})
4499
saucer_bindings_export(${PROJECT_NAME} "SAUCER_EXPORT")
45100

46101
# +-------------------------------------------------------------------------------------------------------+
@@ -61,6 +116,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE "include/saucer" "private")
61116
# +-------------------------------------------------------------------------------------------------------+
62117

63118
target_sources(${PROJECT_NAME} PRIVATE
119+
"src/boson.cpp"
120+
64121
"src/app.cpp"
65122
"src/window.cpp"
66123
"src/webview.cpp"
@@ -84,7 +141,7 @@ CPMFindPackage(
84141
NAME saucer
85142
VERSION 8.0.2
86143
GIT_REPOSITORY "https://github.com/saucer/saucer"
87-
OPTIONS "saucer_static OFF" "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON"
144+
OPTIONS "saucer_static ON" "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON"
88145
)
89146

90147
target_link_libraries(${PROJECT_NAME} PUBLIC saucer::saucer saucer::private)

include/saucer/boson.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
#ifdef __cplusplus
4+
extern "C"
5+
{
6+
#endif
7+
8+
#include "export.h"
9+
10+
SAUCER_EXPORT const char* boson_version();
11+
12+
#ifdef __cplusplus
13+
}
14+
#endif

src/boson.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "boson.h"
2+
3+
#define BOSON_STRING(value) #value
4+
#define BOSON_STRING_EXPAND(value) BOSON_STRING(value)
5+
6+
extern "C"
7+
{
8+
const char* boson_version()
9+
{
10+
#ifndef BOSON_VERSION
11+
#define unknown-dev
12+
#endif
13+
14+
return BOSON_STRING_EXPAND(BOSON_VERSION) "";
15+
}
16+
}

0 commit comments

Comments
 (0)