Skip to content
Snippets Groups Projects
Commit af1faa26 authored by Pascal Palenda's avatar Pascal Palenda
Browse files

Prepare for internals testing - WIP

parent e582916f
No related branches found
No related tags found
No related merge requests found
...@@ -23,25 +23,44 @@ include_guard () ...@@ -23,25 +23,44 @@ include_guard ()
#]=======================================================================] #]=======================================================================]
macro (ihta_add_library) macro (ihta_add_library)
set (options) set (options TEST_INPLACE TEST_INTERNALS)
set (oneValueArgs NAMESPACE NAME LIBRARY_TYPE INCLUDE_DIR INSTALL_INCLUDE_DIR IDE_FOLDER) set (
set (multiValueArgs SOURCES) oneValueArgs
NAMESPACE
NAME
LIBRARY_TYPE
INCLUDE_DIR
INSTALL_INCLUDE_DIR
IDE_FOLDER
OBJECT_LIB_POSTFIX
OUT_VAR
)
set (multiValueArgs SOURCES TEST_SOURCES)
cmake_parse_arguments (IHTA_ADD_LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments (IHTA_ADD_LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (DEFINED IHTA_ADD_LIB_LIBRARY_TYPE) if (DEFINED IHTA_ADD_LIB_LIBRARY_TYPE)
set (IHTA_ADD_LIB_TYPES "STATIC" "SHARED" "INTERFACE" "OBJECT") set (IHTA_ADD_LIB_TYPES "STATIC" "SHARED")
if (NOT (${IHTA_ADD_LIB_LIBRARY_TYPE} IN_LIST IHTA_ADD_LIB_TYPES)) if (NOT (${IHTA_ADD_LIB_LIBRARY_TYPE} IN_LIST IHTA_ADD_LIB_TYPES))
message ( message (
FATAL_ERROR FATAL_ERROR
"ihta_add_library only supports the following LIBRARY_TYPE's: STATIC, SHARED, INTERFACE or OBJECT" "ihta_add_library only supports the following LIBRARY_TYPE's: STATIC, SHARED, INTERFACE or OBJECT"
) )
endif () endif ()
else ()
set (IHTA_ADD_LIB_TYPES STATIC)
if (BUILD_SHARED_LIBS)
set (IHTA_ADD_LIB_TYPES SHARED)
endif ()
endif () endif ()
if (NOT DEFINED IHTA_ADD_LIB_INCLUDE_DIR) if (NOT DEFINED IHTA_ADD_LIB_INCLUDE_DIR)
set (IHTA_ADD_LIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set (IHTA_ADD_LIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
endif () endif ()
if (NOT DEFINED IHTA_ADD_LIB_OBJECT_LIB_POSTFIX)
set (IHTA_ADD_LIB_OBJECT_LIB_POSTFIX _object)
endif ()
if (DEFINED IHTA_ADD_LIB_NAMESPACE AND NOT DEFINED IHTA_ADD_LIB_IDE_FOLDER) if (DEFINED IHTA_ADD_LIB_NAMESPACE AND NOT DEFINED IHTA_ADD_LIB_IDE_FOLDER)
set (IHTA_ADD_LIB_IDE_FOLDER ${IHTA_ADD_LIB_NAMESPACE}) set (IHTA_ADD_LIB_IDE_FOLDER ${IHTA_ADD_LIB_NAMESPACE})
elseif (NOT DEFINED IHTA_ADD_LIB_NAMESPACE AND DEFINED IHTA_ADD_LIB_IDE_FOLDER) elseif (NOT DEFINED IHTA_ADD_LIB_NAMESPACE AND DEFINED IHTA_ADD_LIB_IDE_FOLDER)
...@@ -50,25 +69,36 @@ macro (ihta_add_library) ...@@ -50,25 +69,36 @@ macro (ihta_add_library)
message (FATAL_ERROR "ihta_add_library requires to set either a NAMESPACE or an IDE_FOLDER") message (FATAL_ERROR "ihta_add_library requires to set either a NAMESPACE or an IDE_FOLDER")
endif () endif ()
add_library (${IHTA_ADD_LIB_NAME} ${IHTA_ADD_LIB_LIBRARY_TYPE} "") if (IHTA_ADD_LIB_TEST_INPLACE OR IHTA_ADD_LIB_TEST_INTERNALS)
add_library (${IHTA_ADD_LIB_NAMESPACE}::${IHTA_ADD_LIB_NAME} ALIAS ${IHTA_ADD_LIB_NAME}) # todo
else ()
set (IHTA_ADD_LIB_TARGET ${IHTA_ADD_LIB_NAME})
target_sources (${IHTA_ADD_LIB_NAME} PRIVATE ${IHTA_ADD_LIB_SOURCES}) add_library (${IHTA_ADD_LIB_NAME} ${IHTA_ADD_LIB_LIBRARY_TYPE} "")
add_library (${IHTA_ADD_LIB_NAMESPACE}::${IHTA_ADD_LIB_NAME} ALIAS ${IHTA_ADD_LIB_NAME})
target_sources (${IHTA_ADD_LIB_NAME} PRIVATE ${IHTA_ADD_LIB_SOURCES})
endif ()
# Include Directory # Include Directory
target_include_directories ( target_include_directories (
${IHTA_ADD_LIB_NAME} PUBLIC $<BUILD_INTERFACE:${IHTA_ADD_LIB_INCLUDE_DIR}> ${IHTA_ADD_LIB_TARGET}
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${IHTA_ADD_LIB_INSTALL_INCLUDE_DIR}> PUBLIC $<BUILD_INTERFACE:${IHTA_ADD_LIB_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${IHTA_ADD_LIB_INSTALL_INCLUDE_DIR}>
) )
# Required compiler features # Required compiler features
target_compile_features (${IHTA_ADD_LIB_NAME} PUBLIC cxx_std_17) target_compile_features (${IHTA_ADD_LIB_TARGET} PUBLIC cxx_std_17)
# If build out of parent project, add parent folder library to parent project folder # If build out of parent project, add parent folder library to parent project folder
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set_property (TARGET ${IHTA_ADD_LIB_NAME} PROPERTY FOLDER ${IHTA_ADD_LIB_IDE_FOLDER}) set_property (TARGET ${IHTA_ADD_LIB_TARGET} PROPERTY FOLDER ${IHTA_ADD_LIB_IDE_FOLDER})
endif () endif ()
# Organize sources in folders # Organize sources in folders
GroupSourcesByFolder (${IHTA_ADD_LIB_NAME}) GroupSourcesByFolder (${IHTA_ADD_LIB_TARGET})
if (IHTA_ADD_LIB_OUT_VAR)
set (${IHTA_ADD_LIB_OUT_VAR} ${IHTA_ADD_LIB_TARGET})
endif ()
endmacro () endmacro ()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment