aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_bsplugins/src/ParseTES.cmake
blob: 9a6f4c513e119d459400bad4bf78578070a8148a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
cmake_minimum_required(VERSION 3.27)

include(FetchContent)

FetchContent_Declare(
	esp_json
	GIT_REPOSITORY https://github.com/matortheeternal/esp.json.git
	GIT_TAG master
)

FetchContent_MakeAvailable(esp_json)

set(Python_FIND_VIRTUALENV STANDARD)

# find Python before include mo2-cmake, otherwise this will trigger a bunch of CMP0111
# due to the imported configuration mapping variables defined in mo2.cmake
find_package(Python ${MO2_PYTHON_VERSION} COMPONENTS Interpreter Development REQUIRED)
get_filename_component(Python_HOME ${Python_EXECUTABLE} PATH)
set(Python_DLL_DIR "${Python_HOME}/DLLs")
set(Python_LIB_DIR "${Python_HOME}/Lib")

find_program(CLANG_FORMAT clang-format)

set(CODEGEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/MakeFormParser.py)

foreach(GAME SSE)
	set(INPUT_FILE ${esp_json_SOURCE_DIR}/data/${GAME}.json)
	set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/include/FormParser.${GAME}.inl)
	add_custom_command(
		OUTPUT ${OUTPUT_FILE}
	    COMMAND
			${Python_EXECUTABLE}
			${CODEGEN_SCRIPT}
			${INPUT_FILE}
			${OUTPUT_FILE}
		DEPENDS
			${CODEGEN_SCRIPT}
			${INPUT_FILE}
	)

	if(CLANG_FORMAT AND EXISTS ${PROJECT_SOURCE_DIR}/.clang-format)
		add_custom_command(
			OUTPUT ${OUTPUT_FILE}
			COMMAND
				${CLANG_FORMAT} -i
				--style=file:${PROJECT_SOURCE_DIR}/.clang-format
				${OUTPUT_FILE}
			APPEND
		)
	endif()
endforeach()

list(APPEND TES_INCLUDE_FILES ${OUTPUT_FILE})