project('sol2', 'cpp')

# Find lua dependency
if get_option('lua_cpp')
	lua_cpp = 'true'
else
	lua_cpp = 'false'
endif

lua_dep = dependency('lua', fallback: [ 'lua', 'lua_dep' ], default_options: [ 'lua_cpp=' + lua_cpp ])

# Set compiler flags if we're compiling lua as C++.
compile_args = []

if get_option('lua_cpp')
	compile_args = [ '-DSOL_USING_CXX_LUA=1' ]
endif

# Expose standard dependency.
sol2_dep = declare_dependency(
	include_directories: include_directories('./include'),
	compile_args: compile_args,
	dependencies: [ lua_dep ],
)

# Single header targets requested.
if get_option('single')

	# Check if we have python installed (required for creating single).
	python = find_program('python3', required: false)

	if not python.found()
		python = find_program('python', required: false)
	endif

	if not python.found() 
		error('Could not locate Python. Python is required when building a single header.')
	endif

	# List all headers that the single header comprises of.
	cmd = run_command(python, 'list_headers.py')

	if cmd.returncode() != 0
		error('Could not list sol2 header files.')
	endif

	# Create our custom target to generate the single header file.
	sol2_single = custom_target('sol2_single',
		input: cmd.stdout().strip().split('\n'),
		output: 'sol.hpp',
		command: [ python, files('single/single.py'), '--input', './include', '--output', '@OUTPUT@' ]
	)

	# Expose the dependency.
	sol2_dep = declare_dependency(
		sources: [ sol2_single ],
		compile_args: compile_args,
		dependencies: [ lua_dep ],
	)
endif
