Skip to content

Commit 64553d1

Browse files
committed
Add support for generating transmap in build script
1 parent 2b30eab commit 64553d1

File tree

2 files changed

+91
-72
lines changed

2 files changed

+91
-72
lines changed

build.bash

+14
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ REBUILD=1
1515
SKIP_TESTS=0
1616
CREATE_ZIP=0
1717
CMAKE_BUILD_TYPE=Release
18+
GENERATE_TRANSMAP=0
1819

1920
while [[ $# -gt 0 ]]; do
2021
case $1 in
@@ -34,6 +35,10 @@ while [[ $# -gt 0 ]]; do
3435
CREATE_ZIP=1
3536
shift
3637
;;
38+
--generate-transmap)
39+
GENERATE_TRANSMAP=1
40+
shift
41+
;;
3742
-*|--*)
3843
echo "Unknown option $1"
3944
exit 1
@@ -44,6 +49,11 @@ while [[ $# -gt 0 ]]; do
4449
esac
4550
done
4651

52+
TARGETS=ALL
53+
if [ "${GENERATE_TRANSMAP}" -eq 1 ]; then
54+
TARGETS=generate_transmap
55+
fi
56+
4757
for arch in i686; do
4858
destdir="${PWD}/${CMAKE_BUILD_TYPE}/${arch}"
4959
if [ "${REBUILD}" -eq 1 ]; then
@@ -54,6 +64,10 @@ for arch in i686; do
5464
-DCMAKE_TOOLCHAIN_FILE="src/c/3rd/ovbase/cmake/llvm-mingw.cmake" \
5565
-DCMAKE_C_COMPILER="${arch}-w64-mingw32-clang"
5666
fi
67+
if [ "${GENERATE_TRANSMAP}" -eq 1 ]; then
68+
cmake --build "${destdir}" --target "${TARGETS}"
69+
exit
70+
fi
5771
cmake --build "${destdir}"
5872
if [ "${SKIP_TESTS}" -eq 0 ]; then
5973
ctest --test-dir "${destdir}/src/c" --output-on-failure --output-junit testlog.xml

src/c/CMakeLists.txt

+77-72
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,80 @@ add_custom_target(generate_rc DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/i18n.rc")
8686

8787
add_custom_target(copy_related_files
8888
COMMAND ${CMAKE_COMMAND} -E copy_directory "${PROJECT_SOURCE_DIR}/src/lua/" "${CMAKE_BINARY_DIR}/bin/GCMZDrops/"
89+
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/util/_transmap1.lua" "${CMAKE_BINARY_DIR}/bin/GCMZDrops/_transmap1.lua"
90+
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/util/_transmap2.lua" "${CMAKE_BINARY_DIR}/bin/GCMZDrops/_transmap2.lua"
8991
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/README.md" "${CMAKE_BINARY_DIR}/bin/GCMZDrops.txt"
9092
)
9193

94+
set(is_clang "$<C_COMPILER_ID:Clang>")
95+
set(v16_or_later "$<VERSION_GREATER_EQUAL:$<C_COMPILER_VERSION>,16>")
96+
97+
add_library(gcmzdrops_intf INTERFACE)
98+
target_include_directories(gcmzdrops_intf INTERFACE
99+
"${CMAKE_CURRENT_BINARY_DIR}" # for version.h
100+
"${jansson_BINARY_DIR}/include"
101+
"${LUA51_INCLUDE}"
102+
)
103+
target_compile_definitions(gcmzdrops_intf INTERFACE
104+
_WIN32_WINNT=0x0501
105+
_WINDOWS
106+
$<$<CONFIG:Release>:NDEBUG>
107+
)
108+
target_compile_options(gcmzdrops_intf INTERFACE
109+
$<$<AND:$<BOOL:${WIN32}>,$<BOOL:${USE_COMPILER_RT}>>:--rtlib=compiler-rt>
110+
-mstackrealign
111+
-Wall
112+
-Wextra
113+
-Werror
114+
-Weverything
115+
-Wshadow
116+
-Werror=return-type
117+
-pedantic-errors
118+
-Wno-declaration-after-statement
119+
-Wno-padded
120+
$<$<AND:${is_clang},${v16_or_later}>:-Wno-unsafe-buffer-usage>
121+
-ffunction-sections
122+
-fdata-sections
123+
$<$<CONFIG:Debug>:-O0>
124+
$<$<CONFIG:Release>:-O2>
125+
-flto
126+
)
127+
target_link_options(gcmzdrops_intf INTERFACE
128+
-fuse-ld=lld
129+
-Wl,--gc-sections
130+
# -Wl,--print-gc-sections
131+
--rtlib=compiler-rt
132+
-no-pthread
133+
-static
134+
-Wl,--kill-at
135+
$<$<CONFIG:Release>:-s>
136+
)
137+
target_link_libraries(gcmzdrops_intf INTERFACE
138+
comctl32
139+
shlwapi
140+
ovbase
141+
ovutil
142+
jansson
143+
"${LUA51_DLL}"
144+
)
145+
146+
add_library(gcmzdrops_test_intf INTERFACE)
147+
target_compile_definitions(gcmzdrops_test_intf INTERFACE
148+
TEST_IMAGE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
149+
)
150+
92151
add_library(crc64 STATIC 3rd/crc64/crc64.c)
93-
list(APPEND targets crc64)
152+
target_link_libraries(crc64 PRIVATE gcmzdrops_intf)
94153
add_library(detect STATIC 3rd/detect/detect.c)
95-
list(APPEND targets detect)
154+
target_link_libraries(detect PRIVATE gcmzdrops_intf)
96155

97-
add_executable(gentransmap error_gcmz.c task.c luafuncs_convertencoding.c luautil.c util/gentransmap.c)
156+
add_executable(gentransmap EXCLUDE_FROM_ALL error_gcmz.c task.c luafuncs_convertencoding.c luautil.c util/gentransmap.c)
157+
target_link_libraries(gentransmap PRIVATE gcmzdrops_intf)
98158
set_target_properties(gentransmap PROPERTIES
99159
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/util"
100160
)
101-
list(APPEND targets gentransmap)
102161
add_dependencies(gentransmap generate_version_h)
162+
103163
add_custom_target(generate_transmap
104164
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/src/lua/_iniobj.lua" "_iniobj.lua"
105165
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/util/gentransmap.lua" "gentransmap.lua"
@@ -108,15 +168,15 @@ add_custom_target(generate_transmap
108168
"gentransmap"
109169
"${CMAKE_CURRENT_SOURCE_DIR}/util/0.exo" 932
110170
"${CMAKE_CURRENT_SOURCE_DIR}/util/1.exo" 932
111-
"${CMAKE_BINARY_DIR}/bin/GCMZDrops/_transmap1.lua"
171+
"${CMAKE_CURRENT_SOURCE_DIR}/util/_transmap1.lua"
112172
COMMAND
113173
"gentransmap"
114174
"${CMAKE_CURRENT_SOURCE_DIR}/util/0.exo" 932
115175
"${CMAKE_CURRENT_SOURCE_DIR}/util/2.exo" 936
116-
"${CMAKE_BINARY_DIR}/bin/GCMZDrops/_transmap2.lua"
176+
"${CMAKE_CURRENT_SOURCE_DIR}/util/_transmap2.lua"
117177
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/util"
118178
)
119-
add_dependencies(generate_transmap gentransmap copy_related_files)
179+
add_dependencies(generate_transmap gentransmap)
120180

121181
add_library(gcmzdrops_auf SHARED
122182
api.c
@@ -146,78 +206,23 @@ set_target_properties(gcmzdrops_auf PROPERTIES
146206
SUFFIX ""
147207
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
148208
)
149-
add_dependencies(gcmzdrops_auf generate_version_h generate_rc copy_related_files generate_transmap)
150-
list(APPEND targets gcmzdrops_auf)
209+
add_dependencies(gcmzdrops_auf generate_version_h generate_rc copy_related_files)
151210
target_link_options(gcmzdrops_auf PRIVATE
211+
gcmzdrops_intf
152212
-Wl,-delayload,lua51.dll
153213
)
154214

155215
add_executable(datauri_test error_gcmz.c task.c sniffer.c datauri_test.c)
216+
target_link_libraries(gentransmap PRIVATE gcmzdrops_intf gcmzdrops_test_intf)
156217
add_dependencies(datauri_test generate_version_h)
157-
list(APPEND targets datauri_test)
218+
add_test(NAME datauri_test COMMAND datauri_test)
219+
158220
add_executable(gcmzfuncs_test error_gcmz.c task.c gcmzfuncs_test.c)
221+
target_link_libraries(gcmzfuncs_test PRIVATE gcmzdrops_intf gcmzdrops_test_intf)
159222
add_dependencies(gcmzfuncs_test generate_version_h)
160-
list(APPEND targets gcmzfuncs_test)
223+
add_test(NAME gcmzfuncs_test COMMAND gcmzfuncs_test)
224+
161225
add_executable(luafuncs_test error_gcmz.c task.c files.c luautil.c luafuncs_test.c)
226+
target_link_libraries(luafuncs_test PRIVATE gcmzdrops_intf gcmzdrops_test_intf)
162227
add_dependencies(luafuncs_test generate_version_h)
163-
list(APPEND targets luafuncs_test)
164-
165-
set(is_clang "$<C_COMPILER_ID:Clang>")
166-
set(v16_or_later "$<VERSION_GREATER_EQUAL:$<C_COMPILER_VERSION>,16>")
167-
foreach(target ${targets})
168-
if(target MATCHES "_test$")
169-
add_test(NAME ${target} COMMAND ${target})
170-
target_compile_definitions(${target} PRIVATE
171-
TEST_IMAGE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
172-
)
173-
endif()
174-
target_include_directories(${target} PRIVATE
175-
"${CMAKE_CURRENT_BINARY_DIR}" # for version.h
176-
"${jansson_BINARY_DIR}/include"
177-
"${LUA51_INCLUDE}"
178-
)
179-
target_compile_definitions(${target} PRIVATE
180-
_WIN32_WINNT=0x0501
181-
_WINDOWS
182-
$<$<CONFIG:Release>:NDEBUG>
183-
)
184-
target_compile_options(${target} PRIVATE
185-
$<$<AND:$<BOOL:${WIN32}>,$<BOOL:${USE_COMPILER_RT}>>:--rtlib=compiler-rt>
186-
-mstackrealign
187-
-Wall
188-
-Wextra
189-
-Werror
190-
-Weverything
191-
-Wshadow
192-
-Werror=return-type
193-
-pedantic-errors
194-
-Wno-declaration-after-statement
195-
-Wno-padded
196-
$<$<AND:${is_clang},${v16_or_later}>:-Wno-unsafe-buffer-usage>
197-
-ffunction-sections
198-
-fdata-sections
199-
$<$<CONFIG:Debug>:-O0>
200-
$<$<CONFIG:Release>:-O2>
201-
-flto
202-
)
203-
target_link_options(${target} PRIVATE
204-
-fuse-ld=lld
205-
-Wl,--gc-sections
206-
# -Wl,--print-gc-sections
207-
--rtlib=compiler-rt
208-
-no-pthread
209-
-static
210-
-Wl,--kill-at
211-
$<$<CONFIG:Release>:-s>
212-
)
213-
target_link_libraries(${target} PRIVATE
214-
comctl32
215-
$<$<NOT:$<STREQUAL:${target},crc64>>:crc64>
216-
$<$<NOT:$<STREQUAL:${target},detect>>:detect>
217-
jansson
218-
"${LUA51_DLL}"
219-
ovbase
220-
ovutil
221-
shlwapi
222-
)
223-
endforeach(target)
228+
add_test(NAME luafuncs_test COMMAND luafuncs_test)

0 commit comments

Comments
 (0)