1 |
# for oniguruma |
2 |
# cmake -DCMAKE_GENERATOR="Visual Studio 17 2022" -DARCHITECTURE=64 -P buildoniguruma.cmake |
3 |
# cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=32 -P buildoniguruma.cmake |
4 |
# cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -DARCHITECTURE=32 -P buildoniguruma.cmake |
5 |
# cmake -DCMAKE_GENERATOR="Visual Studio 8 2005" -P buildoniguruma.cmake |
6 |
|
7 |
include(script_support.cmake) |
8 |
|
9 |
set(EXTRACT_DIR "${CMAKE_CURRENT_LIST_DIR}/build/oniguruma/src") |
10 |
set(SRC_DIR "${EXTRACT_DIR}/oniguruma") |
11 |
set(INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/oniguruma_${TOOLSET}") |
12 |
set(BUILD_DIR "${CMAKE_CURRENT_LIST_DIR}/build/oniguruma/build_${TOOLSET}") |
13 |
if(${ARCHITECTURE} EQUAL 64) |
14 |
set(INSTALL_DIR "${INSTALL_DIR}_x64") |
15 |
set(BUILD_DIR "${BUILD_DIR}_x64") |
16 |
endif() |
17 |
|
18 |
#message("BUILD_DIR=${BUILD_DIR}") |
19 |
#message("INSTALL_DIR=${INSTALL_DIR}") |
20 |
|
21 |
######################################## |
22 |
|
23 |
# Configure + Generate |
24 |
function(cmake_generate GENERATOR SRC_DIR WORKING_DIR OPTIONS) |
25 |
execute_process( |
26 |
COMMAND ${CMAKE_COMMAND} ${SRC_DIR} -G "${GENERATOR}" ${OPTIONS} |
27 |
WORKING_DIRECTORY "${BUILD_DIR}" |
28 |
ENCODING AUTO |
29 |
RESULT_VARIABLE rv |
30 |
) |
31 |
if(NOT rv STREQUAL "0") |
32 |
message(FATAL_ERROR "cmake build fail ${rv}") |
33 |
endif() |
34 |
endfunction() |
35 |
|
36 |
# build + install |
37 |
function(cmake_build WORKING_DIR OPTIONS BUILD_TOOL_OPTIONS) |
38 |
execute_process( |
39 |
COMMAND ${CMAKE_COMMAND} --build . ${OPTIONS} --target install -- ${BUILD_TOOL_OPTIONS} |
40 |
WORKING_DIRECTORY "${BUILD_DIR}" |
41 |
ENCODING AUTO |
42 |
RESULT_VARIABLE rv |
43 |
) |
44 |
if(NOT rv STREQUAL "0") |
45 |
message(FATAL_ERROR "cmake build fail ${rv}") |
46 |
endif() |
47 |
endfunction() |
48 |
|
49 |
######################################## |
50 |
|
51 |
file(MAKE_DIRECTORY ${SRC_DIR}) |
52 |
|
53 |
execute_process( |
54 |
COMMAND ${CMAKE_COMMAND} -DTARGET=oniguruma -DEXT_DIR=${EXTRACT_DIR} -P download.cmake |
55 |
) |
56 |
|
57 |
if(${SRC_DIR}/COPYING IS_NEWER_THAN ${CMAKE_CURRENT_LIST_DIR}/doc_help/Oniguruma-LICENSE.txt) |
58 |
file(COPY |
59 |
${SRC_DIR}/COPYING |
60 |
DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help) |
61 |
file(RENAME |
62 |
${CMAKE_CURRENT_LIST_DIR}/doc_help/COPYING |
63 |
${CMAKE_CURRENT_LIST_DIR}/doc_help/Oniguruma-LICENSE.txt) |
64 |
file(COPY |
65 |
${SRC_DIR}/doc/RE |
66 |
DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help/en) |
67 |
file(COPY |
68 |
${SRC_DIR}/doc/RE.ja |
69 |
DESTINATION ${CMAKE_CURRENT_LIST_DIR}/doc_help/ja) |
70 |
file(RENAME |
71 |
${CMAKE_CURRENT_LIST_DIR}/doc_help/ja/RE.ja |
72 |
${CMAKE_CURRENT_LIST_DIR}/doc_help/ja/RE) |
73 |
endif() |
74 |
|
75 |
######################################## |
76 |
|
77 |
file(MAKE_DIRECTORY "${BUILD_DIR}") |
78 |
|
79 |
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") |
80 |
# multi-configuration |
81 |
unset(GENERATE_OPTIONS) |
82 |
if(${ARCHITECTURE} EQUAL 64) |
83 |
list(APPEND GENERATE_OPTIONS "-A" "x64") |
84 |
else() |
85 |
list(APPEND GENERATE_OPTIONS "-A" "Win32") |
86 |
endif() |
87 |
list(APPEND GENERATE_OPTIONS "-DCMAKE_DEBUG_POSTFIX=d") |
88 |
list(APPEND GENERATE_OPTIONS "-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}") |
89 |
list(APPEND GENERATE_OPTIONS "-DBUILD_SHARED_LIBS=OFF") |
90 |
list(APPEND GENERATE_OPTIONS "-DMSVC_STATIC_RUNTIME=ON") |
91 |
|
92 |
cmake_generate("${CMAKE_GENERATOR}" "${SRC_DIR}" "${BUILD_DIR}" "${GENERATE_OPTIONS}") |
93 |
|
94 |
unset(BUILD_OPTIONS) |
95 |
list(APPEND BUILD_OPTIONS --config Debug) |
96 |
cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "") |
97 |
|
98 |
unset(BUILD_OPTIONS) |
99 |
list(APPEND BUILD_OPTIONS --config Release) |
100 |
cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "") |
101 |
else() |
102 |
# single-configuration |
103 |
unset(GENERATE_OPTIONS) |
104 |
if(${ARCHITECTURE} EQUAL 64) |
105 |
list(APPEND GENERATE_OPTIONS "-DUSE_GCC_64=ON") |
106 |
else() |
107 |
list(APPEND GENERATE_OPTIONS "-DUSE_GCC_32=ON") |
108 |
endif() |
109 |
if(CMAKE_HOST_UNIX) |
110 |
list(APPEND GENERATE_OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_LIST_DIR}/../mingw.toolchain.cmake") |
111 |
endif(CMAKE_HOST_UNIX) |
112 |
if(("${CMAKE_GENERATOR}" MATCHES "Visual Studio") OR ("${CMAKE_GENERATOR}" MATCHES "NMake Makefiles")) |
113 |
list(APPEND GENERATE_OPTIONS "-DMSVC_STATIC_RUNTIME=ON") |
114 |
endif() |
115 |
list(APPEND GENERATE_OPTIONS "-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}") |
116 |
list(APPEND GENERATE_OPTIONS "-DCMAKE_BUILD_TYPE=Release") |
117 |
list(APPEND GENERATE_OPTIONS "-DBUILD_SHARED_LIBS=OFF") |
118 |
|
119 |
cmake_generate("${CMAKE_GENERATOR}" "${SRC_DIR}" "${BUILD_DIR}" "${GENERATE_OPTIONS}") |
120 |
|
121 |
if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles") |
122 |
list(APPEND BUILD_TOOL_OPTIONS "-j") |
123 |
endif() |
124 |
|
125 |
unset(BUILD_OPTIONS) |
126 |
cmake_build("${BUILD_DIR}" "${BUILD_OPTIONS}" "${BUILD_TOOL_OPTIONS}") |
127 |
|
128 |
endif() |