cmake_minimum_required(VERSION 3.25)
project(fx C)

include (TestBigEndian)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_EXTENSIONS OFF)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(fx_all_assemblies
	fx.runtime
	fx.collections)

if (NOT DEFINED fx_assemblies)
	set(fx_assemblies ${fx_all_assemblies})
endif ()

if (NOT DEFINED fx_enable_floating_point)
	set(fx_enable_floating_point 1)
endif ()

if (NOT DEFINED fx_enable_tests)
	set(fx_enable_tests 1)
endif ()

message(STATUS "Floating point support: ${fx_enable_floating_point}")

set(fx_system_name ${CMAKE_SYSTEM_NAME})
string(TOLOWER ${fx_system_name} fx_system_name)

message(STATUS "System name: ${fx_system_name}")

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates.cmake)

if ("fx.runtime" IN_LIST fx_assemblies)
	add_fx_assembly(
		NAME fx.runtime
		NAMESPACES fx fx.reflection)
endif ()

if ("fx.collections" IN_LIST fx_assemblies)
	add_fx_assembly(
		NAME fx.collections
		NAMESPACES fx.collections
		DEPENDENCIES fx.runtime)
endif ()

add_executable(dynamic-test test/dynamic-test.c)
