11cmake_minimum_required (VERSION 3.21 )
22project (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
845option (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 )
1047option (saucer_loop "Enable support for the loop module" ON )
1148
1249# +-------------------------------------------------------------------------------------------------------+
@@ -23,7 +60,25 @@ add_library(${PROJECT_NAME} SHARED)
2360add_library (saucer::bindings ALIAS ${PROJECT_NAME} )
2461
2562target_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
2883if (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()
4095include ("cmake/hide.cmake" )
4196include ("cmake/export.cmake" )
4297
43- saucer_bindings_hide_symbols (${PROJECT_NAME} )
98+ # saucer_bindings_hide_symbols(${PROJECT_NAME})
4499saucer_bindings_export (${PROJECT_NAME} "SAUCER_EXPORT" )
45100
46101# +-------------------------------------------------------------------------------------------------------+
@@ -61,6 +116,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE "include/saucer" "private")
61116# +-------------------------------------------------------------------------------------------------------+
62117
63118target_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
90147target_link_libraries (${PROJECT_NAME} PUBLIC saucer::saucer saucer::private )
0 commit comments