Skip to content

Commit b357e5c

Browse files
committed
Switching the library to header-only
1 parent d0a9d52 commit b357e5c

File tree

10 files changed

+2421
-56
lines changed

10 files changed

+2421
-56
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1010
- `sys_string` can now be `normalize()`-ed to NFC and NFD.
1111
- It is now possible to use ICU instead of internal data/code for case conversion, grapheme
1212
iteration and normalization. This makes those operations a tiny bit slower but saves
13-
~100kB in a final executable.
13+
~100kB in a final executable if you use all of them.
14+
15+
### Changed
16+
17+
- This library is now header only
1418

1519
### Fixed
1620

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ if(${Python3_Interpreter_FOUND})
3636
file(GLOB UNICODE_SCRIPTS ${CMAKE_CURRENT_LIST_DIR}/unicode/scripts/*.py)
3737

3838
set(UNICODE_GENERATED_FILES
39-
${CMAKE_CURRENT_LIST_DIR}/lib/src/unicode_mappings.cpp
39+
${CMAKE_CURRENT_LIST_DIR}/lib/inc/sys_string/impl/unicode/mappings_data.h
4040
${CMAKE_CURRENT_LIST_DIR}/lib/inc/sys_string/impl/unicode/mappings.h
4141
${CMAKE_CURRENT_LIST_DIR}/test/test_grapheme_data.h
4242
${CMAKE_CURRENT_LIST_DIR}/test/test_grapheme_data_15.h

lib/CMakeLists.txt

Lines changed: 5 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,9 @@ set(UNICODE_FILES
5656
${SRCDIR}/inc/sys_string/impl/unicode/algorithms.h
5757
${SRCDIR}/inc/sys_string/impl/unicode/mappings_common.h
5858
${SRCDIR}/inc/sys_string/impl/unicode/mappings.h
59+
${SRCDIR}/inc/sys_string/impl/unicode/mappings_data.h
5960
${SRCDIR}/inc/sys_string/impl/unicode/mappings_icu.h
6061
)
61-
set(SOURCES
62-
${SRCDIR}/src/unicode_mappings.cpp
63-
)
6462
source_group("Unicode" FILES ${UNICODE_FILES} ${SOURCES})
6563

6664
set(UTIL_FILES
@@ -80,61 +78,27 @@ set(HEADERS
8078
${UTIL_FILES}
8179
)
8280

83-
add_library(${LIBNAME}_headers INTERFACE)
81+
add_library(${LIBNAME} INTERFACE)
8482

85-
target_compile_features(${LIBNAME}_headers
83+
target_compile_features(${LIBNAME}
8684
INTERFACE
8785
cxx_std_20
8886
)
8987

90-
target_include_directories(${LIBNAME}_headers
88+
target_include_directories(${LIBNAME}
9189
INTERFACE
9290
$<BUILD_INTERFACE:${SRCDIR}/inc>
9391
$<INSTALL_INTERFACE:include> # <prefix>/include
9492
)
9593

96-
target_compile_definitions(${LIBNAME}_headers
97-
INTERFACE
98-
$<$<CXX_COMPILER_ID:MSVC>:_CRT_SECURE_NO_WARNINGS>
99-
)
100-
101-
target_sources(${LIBNAME}_headers
94+
target_sources(${LIBNAME}
10295
INTERFACE
10396
FILE_SET HEADERS BASE_DIRS ${SRCDIR}/inc FILES
10497
${HEADERS}
10598
PRIVATE
10699
${HEADERS}
107100
)
108101

109-
add_library(${LIBNAME}::${LIBNAME}_headers ALIAS ${LIBNAME}_headers)
110-
111-
add_library(${LIBNAME} STATIC)
112-
113-
set_target_properties(${LIBNAME} PROPERTIES
114-
CXX_EXTENSIONS OFF
115-
CXX_VISIBILITY_PRESET hidden
116-
VISIBILITY_INLINES_HIDDEN ON
117-
)
118-
119-
target_link_libraries(${LIBNAME}
120-
PUBLIC
121-
${LIBNAME}_headers
122-
)
123-
124-
target_compile_options(${LIBNAME}
125-
PRIVATE
126-
$<$<CXX_COMPILER_ID:MSVC>:/W4;/WX>
127-
$<$<CXX_COMPILER_ID:Clang>:-Wall;-Wextra;-pedantic>
128-
$<$<CXX_COMPILER_ID:AppleClang>:-Wall;-Wextra;-pedantic>
129-
$<$<CXX_COMPILER_ID:GNU>:-Wall;-Wextra;-pedantic>
130-
)
131-
132-
133-
target_sources(${LIBNAME}
134-
PRIVATE
135-
${SOURCES}
136-
)
137-
138102
add_library(${LIBNAME}::${LIBNAME} ALIAS ${LIBNAME})
139103

140104
if (PROJECT_IS_TOP_LEVEL OR SYS_STRING_CONFIGURE_INSTALL)

lib/cmake/install.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
include(GNUInstallDirs)
1010
include(CMakePackageConfigHelpers)
1111

12-
install(TARGETS sys_string_headers sys_string EXPORT sys_string FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
12+
install(TARGETS sys_string EXPORT sys_string FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
1313
install(EXPORT sys_string NAMESPACE sys_string:: FILE sys_string-exports.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/sys_string)
1414

1515
configure_package_config_file(

lib/cmake/sys_string.pc.in

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
prefix=${pcfiledir}/@FROM_PCFILEDIR_TO_PREFIX@
22
exec_prefix=${prefix}
33
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
4-
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
54

65
Name: sys_string
76
Description: C++ string classes optimized for interoperability with external native string types.
87
Version: @PROJECT_VERSION@
98
Requires:
109
Cflags: -I${includedir}
11-
Libs: -L${libdir} -lsys_string
10+
Libs:

lib/inc/sys_string/impl/unicode/algorithms.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <sys_string/impl/unicode/mappings_icu.h>
1313
#else
1414
#include <sys_string/impl/unicode/mappings.h>
15+
#include <sys_string/impl/unicode/mappings_data.h>
1516
#endif
1617
#include <sys_string/impl/unicode/utf_util.h>
1718
#include <sys_string/impl/util/iter_util.h>

lib/inc/sys_string/impl/unicode/mappings_data.h

Lines changed: 2401 additions & 0 deletions
Large diffs are not rendered by default.

lib/src/unicode_mappings.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
// https://github.com/gershnik/sys_string/blob/master/LICENSE
99
//
1010

11-
#include <sys_string/impl/unicode/mappings.h>
12-
1311
namespace sysstr::util::unicode
1412
{
1513

test/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ endif()
124124

125125
set(LIB_TYPES " ")
126126
if (ICU_FOUND AND ICU_UC_FOUND)
127-
list(APPEND LIB_TYPES _headers)
127+
list(APPEND LIB_TYPES _icu)
128128
endif()
129129

130130
foreach(STANDARD_SUFFIX ${CXX_STANDARDS})
@@ -167,7 +167,7 @@ foreach(LIB_SUFFIX ${LIB_TYPES})
167167
${STORAGE_FLAG_${STORAGE_SUFFIX}}
168168
)
169169

170-
if ("${LIB_SUFFIX}" STREQUAL "_headers")
170+
if ("${LIB_SUFFIX}" STREQUAL "_icu")
171171
target_compile_definitions(test-${TEST_SUFFIX} PRIVATE
172172
SYS_STRING_USE_ICU=1
173173
)
@@ -198,7 +198,7 @@ foreach(LIB_SUFFIX ${LIB_TYPES})
198198

199199
target_link_libraries(test-${TEST_SUFFIX} PRIVATE
200200

201-
sys_string::sys_string${LIB_SUFFIX}
201+
sys_string::sys_string
202202

203203
"$<$<PLATFORM_ID:Darwin>:-framework CoreFoundation>"
204204
"$<$<PLATFORM_ID:Windows>:runtimeobject.lib>"

unicode/scripts/genmappings.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
parser = argparse.ArgumentParser()
1919

2020
parser.add_argument('datadir')
21-
parser.add_argument('cppfile')
21+
parser.add_argument('implfile')
2222
parser.add_argument('hfile')
2323
parser.add_argument('test_grapheme_data_h')
2424
parser.add_argument('test_grapheme_data_15_h')
@@ -27,7 +27,7 @@
2727
args = parser.parse_args()
2828

2929
datadir = Path(args.datadir)
30-
cppfile = Path(args.cppfile)
30+
implfile = Path(args.implfile)
3131
hfile = Path(args.hfile)
3232
testfiles = (
3333
Path(args.test_grapheme_data_h),
@@ -335,7 +335,7 @@ def main():
335335
''')
336336

337337

338-
write_file(cppfile, f'''//THIS FILE IS GENERATED. PLEASE DO NOT EDIT DIRECTLY
338+
write_file(implfile, f'''//THIS FILE IS GENERATED. PLEASE DO NOT EDIT DIRECTLY
339339
340340
//
341341
// Copyright 2020 Eugene Gershnik
@@ -345,8 +345,6 @@ def main():
345345
// https://github.com/gershnik/sys_string/blob/master/LICENSE
346346
//
347347
348-
#include <sys_string/impl/unicode/mappings.h>
349-
350348
namespace sysstr::util::unicode
351349
{{
352350

0 commit comments

Comments
 (0)