Skip to content

Commit 34db541

Browse files
authored
Merge pull request #490 from Antidote/relax-inih-requirement
Don't strictly require inih
2 parents c359e1d + b7f3735 commit 34db541

8 files changed

Lines changed: 47 additions & 12 deletions

File tree

CMakeLists.txt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ include(MiscUtils)
88

99
# Compilation options
1010
option(BUILD_SHARED_LIBS "Build shared library, disable for building the static library (default: ON)" ON)
11+
option(LIBLCF_WITH_INI "INI parsing support (inih, required when building EasyRPG Player, default: ON)" ON)
1112
option(LIBLCF_WITH_ICU "ICU encoding handling (when disabled only windows-1252 is supported, default: ON)" ON)
1213
option(LIBLCF_WITH_XML "XML reading support (expat, default: ON)" ON)
1314
option(LIBLCF_UPDATE_MIMEDB "Whether to run update-mime-database after install (default: ON)" ON)
@@ -30,7 +31,6 @@ set(LCF_SOURCES
3031
src/dbarray.cpp
3132
src/dbstring_struct.cpp
3233
src/encoder.cpp
33-
src/inireader.cpp
3434
src/ldb_equipment.cpp
3535
src/ldb_eventcommand.cpp
3636
src/ldb_parameters.cpp
@@ -202,7 +202,6 @@ set(LCF_HEADERS
202202
src/lcf/encoder.h
203203
src/lcf/enum_tags.h
204204
src/lcf/flag_set.h
205-
src/lcf/inireader.h
206205
src/lcf/ldb/reader.h
207206
src/lcf/lmt/reader.h
208207
src/lcf/lmu/reader.h
@@ -294,6 +293,17 @@ set(LCF_HEADERS
294293
src/lcf/third_party/string_view.h
295294
)
296295

296+
set(LCF_SUPPORT_INI 0)
297+
if(LIBLCF_WITH_INI)
298+
list(APPEND LCF_SOURCES
299+
src/inireader.cpp
300+
)
301+
list(APPEND LCF_HEADERS
302+
src/lcf/inireader.h
303+
)
304+
set(LCF_SUPPORT_INI 1)
305+
endif()
306+
297307
add_library(lcf ${LCF_SOURCES} ${LCF_HEADERS})
298308

299309
# IDE source grouping
@@ -344,8 +354,12 @@ set_property(TARGET lcf PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS ON)
344354
set_property(TARGET lcf PROPERTY EXPORT_NAME liblcf)
345355

346356
# inih
347-
find_package(inih REQUIRED)
348-
target_link_libraries(lcf inih::inih)
357+
if (LCF_SUPPORT_INI)
358+
find_package(inih REQUIRED)
359+
target_link_libraries(lcf inih::inih)
360+
else()
361+
message(STATUS "inih is disabled. This component is required when building EasyRPG Player.")
362+
endif ()
349363

350364
# icu
351365
set(LCF_SUPPORT_ICU 0)

Makefile.am

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ liblcf_la_SOURCES = \
4848
src/dbarray.cpp \
4949
src/dbstring_struct.cpp \
5050
src/encoder.cpp \
51-
src/inireader.cpp \
5251
src/ldb_equipment.cpp \
5352
src/ldb_eventcommand.cpp \
5453
src/ldb_parameters.cpp \
@@ -219,7 +218,6 @@ lcfinclude_HEADERS = \
219218
src/lcf/encoder.h \
220219
src/lcf/enum_tags.h \
221220
src/lcf/flag_set.h \
222-
src/lcf/inireader.h \
223221
src/lcf/log_handler.h \
224222
src/lcf/reader_lcf.h \
225223
src/lcf/reader_util.h \
@@ -231,6 +229,11 @@ lcfinclude_HEADERS = \
231229
src/lcf/writer_lcf.h \
232230
src/lcf/writer_xml.h
233231

232+
if SUPPORT_INI
233+
liblcf_la_SOURCES += src/inireader.cpp
234+
lcfinclude_HEADERS += src/lcf/inireader.h
235+
endif
236+
234237
lcfldbinclude_HEADERS = \
235238
src/lcf/ldb/reader.h \
236239
src/generated/lcf/ldb/chunks.h

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ Documentation is available at the documentation wiki: https://wiki.easyrpg.org
1414

1515
## Requirements
1616

17-
- [inih] for INI file reading. (required)
17+
- [inih] for INI file reading. (required when building EasyRPG Player)
1818
- [Expat] for XML reading support.
19-
- [ICU] for character encoding detection and conversion (recommended).
19+
- [ICU] for character encoding detection and conversion (recommended). When disabled only Windows-1252 is supported.
2020

2121

2222
## Source code

builds/cmake/liblcf-config.cmake.in

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ include(CMakeFindDependencyMacro)
55
# Required to find our installed Findinih.cmake
66
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
77

8-
find_dependency(inih REQUIRED)
8+
if(@LCF_SUPPORT_INI@)
9+
find_dependency(inih REQUIRED)
10+
endif()
911

1012
if(@LCF_SUPPORT_ICU@ EQUAL 1)
1113
find_dependency(ICU COMPONENTS i18n uc data REQUIRED)

builds/config.h.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@
55

66
/* Enable XML reading support (expat) */
77
#define LCF_SUPPORT_XML @LCF_SUPPORT_XML@
8+
9+
/* Enable INI reading support (INIH) */
10+
#define LCF_SUPPORT_INI @LCF_SUPPORT_INI@

configure.ac

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ LT_INIT([win32-dll])
2121
AM_CONDITIONAL(CROSS_COMPILING,[test "x$cross_compiling" = "xyes"])
2222

2323
# Checks for libraries.
24-
AX_PKG_CHECK_MODULES([INIH],[],[inih],[])
25-
2624
AC_SUBST([LCF_SUPPORT_ICU],[0])
2725
AC_ARG_ENABLE([icu],[AS_HELP_STRING([--disable-icu],[Disable ICU encoding handling (only windows-1252 supported) [default=no]])])
2826
AS_IF([test "x$enable_icu" != "xno"],[
@@ -36,6 +34,13 @@ AS_IF([test "x$enable_xml" != "xno"],[
3634
])
3735
AM_CONDITIONAL(SUPPORT_XML,[test $LCF_SUPPORT_XML == 1])
3836

37+
AC_SUBST([LCF_SUPPORT_INI],[0])
38+
AC_ARG_ENABLE([ini],[AS_HELP_STRING([--disable-ini],[Disable INI reading support (inih) [default=no]])])
39+
AS_IF([test "x$enable_ini" != "xno"],[
40+
AX_PKG_CHECK_MODULES([INIH],[],[inih],[LCF_SUPPORT_INI=1])
41+
])
42+
AM_CONDITIONAL(SUPPORT_INI,[test $LCF_SUPPORT_INI == 1])
43+
3944
# Tools
4045
AC_ARG_ENABLE([tools],[AS_HELP_STRING([--disable-tools],[Do not build and install the tools [default=no]])])
4146
AM_CONDITIONAL(ENABLE_TOOLS,[test "x$enable_tools" != "xno"])

src/reader_util.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,24 +207,32 @@ std::vector<std::string> ReaderUtil::DetectEncodings(StringView string) {
207207
}
208208

209209
std::string ReaderUtil::GetEncoding(StringView ini_file) {
210+
#if LCF_SUPPORT_INI
210211
INIReader ini(ToString(ini_file));
211212
if (ini.ParseError() != -1) {
212213
std::string encoding = ini.Get("EasyRPG", "Encoding", std::string());
213214
if (!encoding.empty()) {
214215
return ReaderUtil::CodepageToEncoding(atoi(encoding.c_str()));
215216
}
216217
}
218+
#else
219+
Log::Warning("Could not get encoding from ini file, disabled in this liblcf build.");
220+
#endif
217221
return {};
218222
}
219223

220224
std::string ReaderUtil::GetEncoding(std::istream& filestream) {
225+
#if LCF_SUPPORT_INI
221226
INIReader ini(filestream);
222227
if (ini.ParseError() != -1) {
223228
std::string encoding = ini.Get("EasyRPG", "Encoding", std::string());
224229
if (!encoding.empty()) {
225230
return ReaderUtil::CodepageToEncoding(atoi(encoding.c_str()));
226231
}
227232
}
233+
#else
234+
Log::Warning("Could not get encoding from ini file, disabled in this liblcf build.");
235+
#endif
228236
return {};
229237
}
230238

tools/lcf2xml.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ int main(int argc, char** argv)
6060
std::cerr << "Usage: " << argv[0] << "[--2k] [--2k3] file1 [... fileN]" << std::endl;
6161
std::cerr << "\t--2k: Treat files as RPG 2000" << std::endl;
6262
std::cerr << "\t--2k3: Treat files as RPG 2003 (default)" << std::endl;
63-
std::cerr << "\t--encoding N: Use encoding N as the file encoding" << std::endl;
63+
std::cerr << "\t--encoding N: Use encoding N as the file encoding" << std::endl;
6464

6565
return 1;
6666
}

0 commit comments

Comments
 (0)