@ -20,24 +20,33 @@ include_guard(GLOBAL)
# \ a r g : L I N K _ S T A T I C _ $ { C O N F I G U R A T I O N }
# \ a r g : L I N K _ N O N _ S T A T I C
# \ a r g : L I N K _ N O N _ S T A T I C _ $ { C O N F I G U R A T I O N }
# \ a r g : L I N K _ E X E C U T A B L E
# \ a r g : L I N K _ E X E C U T A B L E _ $ { C O N F I G U R A T I O N }
# \ a r g : L I N K _ E X E
# \ a r g : L I N K _ E X E _ $ { C O N F I G U R A T I O N }
# \ a r g : L I N K _ M O D U L E
# \ a r g : L I N K _ M O D U L E _ $ { C O N F I G U R A T I O N }
# \ a r g : L I N K _ S H A R E D
# \ a r g : L I N K _ S H A R E D _ $ { C O N F I G U R A T I O N }
#
function ( ly_append_configurations_options )
set ( options )
set ( oneValueArgs )
set ( multi Value Args
set ( multi Args
D E F I N E S
C O M P I L A T I O N
L I N K
L I N K _ S T A T I C
L I N K _ N O N _ S T A T I C
L I N K _ E X E C U T A B L E
L I N K _ E X E
L I N K _ M O D U L E
L I N K _ S H A R E D
)
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
set ( multiValueArgs ${ multiValueArgs } DEFINES_ ${ UCONF } COMPILATION_ ${ UCONF } LINK_ ${ UCONF } LINK_STATIC_ ${ UCONF } LINK_NON_STATIC_ ${ UCONF } LINK_EXECUTABLE_ ${ UCONF } )
foreach ( arg IN LISTS multiArgs )
list ( APPEND multiValueArgs ${ arg } )
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
string ( TOUPPER ${ conf } UCONF )
list ( APPEND multiValueArgs ${ arg } _ ${ UCONF } )
endforeach ( )
endforeach ( )
cmake_parse_arguments ( ly_append_configurations_options "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ ARGN } )
@ -45,48 +54,46 @@ function(ly_append_configurations_options)
if ( ly_append_configurations_options_DEFINES )
add_compile_definitions ( ${ ly_append_configurations_options_DEFINES } )
endif ( )
if ( ly_append_configurations_options_COMPILATION )
string ( REPLACE ";" " " COMPILATION_STR "${ly_append_configurations_options_COMPILATION}" )
string ( APPEND CMAKE_C_FLAGS " " ${ COMPILATION_STR } )
string ( APPEND CMAKE_CXX_FLAGS " " ${ COMPILATION_STR } )
set ( CMAKE_C_FLAGS ${ CMAKE_C_FLAGS } PARENT_SCOPE )
set ( CMAKE_CXX_FLAGS ${ CMAKE_CXX_FLAGS } PARENT_SCOPE )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMPILATION_STR}" PARENT_SCOPE )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILATION_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK}" )
string ( APPEND LINK_OPTIONS " " ${ LINK_STR } )
set ( LINK_OPTIONS ${ LINK_OPTIONS } PARENT_SCOPE )
# N o t d e f i n i n g t h e s e i s s u e w a r n i n g s , T O D O : i n v e s t i g a t e
set ( CMAKE_STATIC_LINKER_FLAGS ${ LINK_OPTIONS } PARENT_SCOPE )
set ( CMAKE_MODULE_LINKER_FLAGS ${ LINK_OPTIONS } PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS ${ LINK_OPTIONS } PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS ${ LINK_OPTIONS } PARENT_SCOPE )
set ( CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_OPTIONS}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_STATIC )
string ( REPLACE ";" " " LINK_STATIC_STR "${ly_append_configurations_options_LINK_STATIC}" )
string ( APPEND LINK_STATIC_OPTIONS " " ${ LINK_STATIC_STR } )
set ( LINK_STATIC_OPTIONS ${ LINK_STATIC_OPTIONS } PARENT_SCOPE )
set ( CMAKE_STATIC_LINKER_FLAGS ${ LINK_STATIC_OPTIONS } PARENT_SCOPE )
if ( ly_append_configurations_options_LINK_STATIC )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_STATIC}" )
set ( CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_NON_STATIC )
string ( REPLACE ";" " " LINK_NON_STATIC_STR "${ly_append_configurations_options_LINK_NON_STATIC}" )
string ( APPEND LINK_NON_STATIC_OPTIONS " " ${ LINK_NON_STATIC_STR } )
set ( LINK_NON_STATIC_OPTIONS ${ LINK_NON_STATIC_OPTIONS } PARENT_SCOPE )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_NON_STATIC}" )
set ( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
endif ( )
set ( CMAKE_MODULE_LINKER_FLAGS ${ LINK_NON_STATIC_OPTIONS } PARENT_SCOPE )
s et( CMAKE_SHARED_LINKER_FLAGS ${ LINK_NON_STATIC_OPTIONS } PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS ${ LINK_NON_STATIC_OPTIONS } PARENT_SCOPE )
if ( ly_append_configurations_options_LINK_EX E)
s tring( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_EXE}" )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_ EXECUTAB LE)
string ( REPLACE ";" " " LINK_ EXECUTABLE_ STR "${ly_append_configurations_options_LINK_ EXECUTAB LE}")
s tring( APPEND LINK_EXECUTABLE_OPTIONS " " ${ LINK_EXECUTABLE_STR } )
set ( LINK_EXECUTABLE_OPTIONS ${ LINK_EXECUTABLE_OPTIONS } PARENT_SCOPE )
if ( ly_append_configurations_options_LINK_ MODU LE)
string ( REPLACE ";" " " LINK_ STR "${ly_append_configurations_options_LINK_ MODU LE}")
s et( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
endif ( )
set ( CMAKE_EXE_LINKER_FLAGS ${ LINK_EXECUTABLE_OPTIONS } PARENT_SCOPE )
if ( ly_append_configurations_options_LINK_SHARED )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_SHARED}" )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE )
endif ( )
foreach ( conf IN LISTS CMAKE_CONFIGURATION_TYPES )
@ -100,43 +107,33 @@ function(ly_append_configurations_options)
endif ( )
if ( ly_append_configurations_options_COMPILATION_ ${ UCONF } )
string ( REPLACE ";" " " COMPILATION_STR "${ly_append_configurations_options_COMPILATION_${UCONF}}" )
string ( APPEND CMAKE_C_FLAGS_ ${ UCONF } " " ${ COMPILATION_STR } )
string ( APPEND CMAKE_CXX_FLAGS_ ${ UCONF } " " ${ COMPILATION_STR } )
set ( CMAKE_C_FLAGS_ ${ UCONF } ${ CMAKE_C_FLAGS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_CXX_FLAGS_ ${ UCONF } ${ CMAKE_CXX_FLAGS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_C_FLAGS_ ${ UCONF } "${CMAKE_C_FLAGS_${UCONF}} ${COMPILATION_STR}" PARENT_SCOPE )
set ( CMAKE_CXX_FLAGS_ ${ UCONF } "${CMAKE_CXX_FLAGS_${UCONF}} ${COMPILATION_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_ ${ UCONF } )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_${UCONF}}" )
string ( APPEND LINK_OPTIONS_ ${ UCONF } " " ${ LINK_STR } )
set ( LINK_OPTIONS_ ${ UCONF } ${ LINK_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_STATIC_LINKER_FLAGS_ ${ UCONF } ${ LINK_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_MODULE_LINKER_FLAGS_ ${ UCONF } ${ LINK_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS_ ${ UCONF } ${ LINK_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } ${ LINK_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_STATIC_LINKER_FLAGS_ ${ UCONF } "${CMAKE_STATIC_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_MODULE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS_ ${ UCONF } "${CMAKE_SHARED_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_STATIC_ ${ UCONF } )
string ( REPLACE ";" " " LINK_STATIC_STR "${ly_append_configurations_options_LINK_STATIC_${UCONF}}" )
string ( APPEND LINK_STATIC_OPTIONS_ ${ UCONF } " " ${ LINK_STATIC_STR } )
set ( LINK_STATIC_OPTIONS_ ${ UCONF } ${ LINK_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_STATIC_LINKER_FLAGS_ ${ UCONF } ${ LINK_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_STATIC_${UCONF}}" )
set ( CMAKE_STATIC_LINKER_FLAGS_ ${ UCONF } "${CMAKE_STATIC_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_NON_STATIC_ ${ UCONF } )
string ( REPLACE ";" " " LINK_NON_STATIC_STR "${ly_append_configurations_options_LINK_NON_STATIC_${UCONF}}" )
string ( APPEND LINK_NON_STATIC_OPTIONS_ ${ UCONF } " " ${ LINK_NON_STATIC_STR } )
set ( LINK_NON_STATIC_OPTIONS_ ${ UCONF } ${ LINK_NON_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_MODULE_LINKER_FLAGS_ ${ UCONF } ${ LINK_NON_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS_ ${ UCONF } ${ LINK_NON_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } ${ LINK_NON_STATIC_OPTIONS_${UCONF } } PARENT_SCOPE )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_NON_STATIC_${UCONF}}" )
set ( CMAKE_MODULE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_SHARED_LINKER_FLAGS_ ${ UCONF } "${CMAKE_SHARED_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_EXECUTABLE_ ${ UCONF } )
string ( REPLACE ";" " " LINK_EXECUTABLE_STR "${ly_append_configurations_options_LINK_EXECUTABLE_${UCONF}}" )
string ( APPEND LINK_EXECUTABLE_OPTIONS_ ${ UCONF } " " ${ LINK_EXECUTABLE_STR } )
set ( LINK_EXECUTABLE_OPTIONS_ ${ UCONF } ${ LINK_EXECUTABLE_OPTIONS_${UCONF } } PARENT_SCOPE )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } ${ LINK_EXECUTABLE_OPTIONS_${UCONF } } PARENT_SCOPE )
if ( ly_append_configurations_options_LINK_EXE_ ${ UCONF } )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_EXE_${UCONF}}" )
set ( CMAKE_EXE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_EXE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
endif ( )
if ( ly_append_configurations_options_LINK_MODULE_ ${ UCONF } )
string ( REPLACE ";" " " LINK_STR "${ly_append_configurations_options_LINK_MODULE_${UCONF}}" )
set ( CMAKE_MODULE_LINKER_FLAGS_ ${ UCONF } "${CMAKE_MODULE_LINKER_FLAGS_${UCONF}} ${LINK_STR}" PARENT_SCOPE )
endif ( )
endforeach ( )