build: update template for building assemblies
This commit is contained in:
+25
-53
@@ -1,4 +1,4 @@
|
|||||||
function(add_fx_module)
|
function(add_fx_assembly)
|
||||||
set(options)
|
set(options)
|
||||||
set(one_value_args NAME)
|
set(one_value_args NAME)
|
||||||
set(multi_value_args
|
set(multi_value_args
|
||||||
@@ -13,7 +13,11 @@ function(add_fx_module)
|
|||||||
"${one_value_args}"
|
"${one_value_args}"
|
||||||
"${multi_value_args}")
|
"${multi_value_args}")
|
||||||
|
|
||||||
set(module_name ${arg_NAME})
|
set(assembly_name ${arg_NAME})
|
||||||
|
string(REPLACE "." "/" assembly_path ${assembly_name})
|
||||||
|
string(REPLACE "." "-" assembly_target_name ${assembly_name})
|
||||||
|
string(REPLACE "." "_" assembly_token ${assembly_name})
|
||||||
|
string(TOUPPER ${assembly_token} assembly_token)
|
||||||
|
|
||||||
file(GLOB sources *.c *.h)
|
file(GLOB sources *.c *.h)
|
||||||
|
|
||||||
@@ -23,87 +27,55 @@ function(add_fx_module)
|
|||||||
endforeach (dir)
|
endforeach (dir)
|
||||||
|
|
||||||
file(GLOB sys_sources sys/${fx_system_name}/*.c sys/${fx_system_name}/*.h)
|
file(GLOB sys_sources sys/${fx_system_name}/*.c sys/${fx_system_name}/*.h)
|
||||||
set(root_header include/fx/${module_name}.h)
|
file(GLOB headers include/${assembly_path}/*.h)
|
||||||
file(GLOB headers include/fx/${module_name}/*.h)
|
|
||||||
|
|
||||||
string(REPLACE "-" "_" module_preproc_token ${module_name})
|
message(STATUS "Building assembly ${assembly_name}")
|
||||||
string(TOUPPER ${module_preproc_token} module_preproc_token)
|
add_library(${assembly_target_name} SHARED
|
||||||
set(module_preproc_token FX_${module_preproc_token})
|
|
||||||
|
|
||||||
message(STATUS "Building module ${module_name} (shared)")
|
|
||||||
add_library(fx-${module_name} SHARED
|
|
||||||
${sources}
|
|
||||||
${sys_sources}
|
|
||||||
${root_header}
|
|
||||||
${headers}
|
|
||||||
${arg_EXTRA_SOURCES})
|
|
||||||
message(STATUS "Building module ${module_name} (static)")
|
|
||||||
add_library(fx-${module_name}-s STATIC
|
|
||||||
${sources}
|
${sources}
|
||||||
${sys_sources}
|
${sys_sources}
|
||||||
${root_header}
|
${root_header}
|
||||||
${headers}
|
${headers}
|
||||||
${arg_EXTRA_SOURCES})
|
${arg_EXTRA_SOURCES})
|
||||||
|
|
||||||
target_include_directories(fx-${module_name} PUBLIC include/)
|
target_include_directories(${assembly_target_name} PUBLIC include/)
|
||||||
target_include_directories(fx-${module_name}-s PUBLIC include/)
|
|
||||||
|
|
||||||
target_compile_definitions(fx-${module_name} PUBLIC
|
target_compile_definitions(${assembly_target_name} PUBLIC
|
||||||
${module_preproc_token}
|
${assembly_token}
|
||||||
FX_EXPORT=1
|
FX_EXPORT=1
|
||||||
FX_ENABLE_FLOATING_POINT=${fx_enable_floating_point})
|
FX_ENABLE_FLOATING_POINT=${fx_enable_floating_point})
|
||||||
target_compile_definitions(fx-${module_name}-s PUBLIC
|
|
||||||
${module_preproc_token}
|
|
||||||
FX_EXPORT=1
|
|
||||||
FX_STATIC=1
|
|
||||||
FX_ENABLE_FLOATING_POINT=${fx_enable_floating_point})
|
|
||||||
|
|
||||||
set_target_properties(fx-${module_name}
|
set_target_properties(${assembly_target_name}
|
||||||
PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
foreach (dep ${arg_DEPENDENCIES})
|
foreach (dep ${arg_DEPENDENCIES})
|
||||||
target_link_libraries(fx-${module_name} fx-${dep})
|
string(REPLACE "." "-" dep_target_name ${dep})
|
||||||
target_link_libraries(fx-${module_name}-s fx-${dep}-s)
|
target_link_libraries(${assembly_target_name} ${dep_target_name})
|
||||||
endforeach (dep)
|
endforeach (dep)
|
||||||
|
|
||||||
foreach (lib ${arg_LIBS})
|
foreach (lib ${arg_LIBS})
|
||||||
target_link_libraries(fx-${module_name} ${lib})
|
target_link_libraries(${assembly_target_name} ${lib})
|
||||||
target_link_libraries(fx-${module_name}-s ${lib})
|
|
||||||
endforeach (lib)
|
endforeach (lib)
|
||||||
|
|
||||||
foreach (dir ${arg_INCLUDE_DIRS})
|
foreach (dir ${arg_INCLUDE_DIRS})
|
||||||
target_include_directories(fx-${module_name} PRIVATE
|
target_include_directories(${assembly_target_name} PRIVATE ${dir})
|
||||||
${dir})
|
|
||||||
target_include_directories(fx-${module_name}-s PRIVATE
|
|
||||||
${dir})
|
|
||||||
endforeach (dir)
|
endforeach (dir)
|
||||||
|
|
||||||
foreach (def ${arg_DEFINES})
|
foreach (def ${arg_DEFINES})
|
||||||
target_compile_definitions(fx-${module_name} PRIVATE
|
target_compile_definitions(${assembly_target_name} PRIVATE ${def})
|
||||||
${def})
|
|
||||||
target_compile_definitions(fx-${module_name}-s PRIVATE
|
|
||||||
${def})
|
|
||||||
endforeach (def)
|
endforeach (def)
|
||||||
|
|
||||||
set_target_properties(fx-${module_name} PROPERTIES
|
set_target_properties(${assembly_target_name} PROPERTIES
|
||||||
FOLDER "Shared/${module_name}")
|
FOLDER "${assembly_name}")
|
||||||
set_target_properties(fx-${module_name}-s PROPERTIES
|
|
||||||
FOLDER "Static/${module_name}")
|
|
||||||
|
|
||||||
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
|
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
|
||||||
if(IS_BIG_ENDIAN)
|
if(IS_BIG_ENDIAN)
|
||||||
target_compile_definitions(fx-${module_name} PRIVATE
|
target_compile_definitions(${assembly_target_name} PRIVATE
|
||||||
BIG_ENDIAN)
|
|
||||||
target_compile_definitions(fx-${module_name}-s PRIVATE
|
|
||||||
BIG_ENDIAN)
|
BIG_ENDIAN)
|
||||||
else()
|
else()
|
||||||
target_compile_definitions(fx-${module_name} PRIVATE
|
target_compile_definitions(${assembly_target_name} PRIVATE
|
||||||
LITTLE_ENDIAN)
|
|
||||||
target_compile_definitions(fx-${module_name}-s PRIVATE
|
|
||||||
LITTLE_ENDIAN)
|
LITTLE_ENDIAN)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS fx-${module_name} fx-${module_name}-s)
|
install(TARGETS ${assembly_target_name})
|
||||||
install(FILES ${root_header} DESTINATION include/fx)
|
install(FILES ${headers} DESTINATION include/${assembly_path})
|
||||||
install(FILES ${headers} DESTINATION include/fx/${module_name})
|
endfunction(add_fx_assembly)
|
||||||
endfunction(add_fx_module)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user