MACRO( COMM_CREATE_LIBRARY NAME )
    SET( COMM_LIBRARY_NAME ${NAME} )
    SET( COMM_LIBRARY_SOURCES "" )
    SET( COMM_LIBRARY_HEADERS "" )
ENDMACRO( COMM_CREATE_LIBRARY )

# Macro for adding source file to library build
MACRO( COMM_ADD_LIBRARY_SOURCE )
  SET( COMM_LIBRARY_SOURCES ${COMM_LIBRARY_SOURCES} ${ARGV} )
ENDMACRO( COMM_ADD_LIBRARY_SOURCE )

# Macro for adding header file to library
MACRO( COMM_ADD_LIBRARY_HEADER )
  SET( COMM_LIBRARY_HEADERS ${COMM_LIBRARY_HEADERS} ${ARGV} )
ENDMACRO( COMM_ADD_LIBRARY_HEADER )

# Macro for adding all header files in a specified directory to library
MACRO( COMM_ADD_LIBRARY_INCLUDE_DIR _DIR )
  #FILE( GLOB_RECURSE COMM_LIBRARY_HEADERS ${_DIR}/*.h ${_DIR}/*.hxx ${_DIR}/*.hpp )
  FILE( GLOB_RECURSE COMM_LIBRARY_HEADER_FILES ${_DIR}/*.h ${_DIR}/*.hxx ${_DIR}/*.hpp )
  LIST( APPEND COMM_LIBRARY_HEADERS ${COMM_LIBRARY_HEADER_FILES} )
ENDMACRO( COMM_ADD_LIBRARY_INCLUDE_DIR )

# Macro for adding all header files in a specified directory to library
MACRO( COMM_ADD_LIBRARY_SRC_DIR _DIR )
  #FILE( GLOB_RECURSE COMM_LIBRARY_SOURCE ${_DIR}/*.c ${_DIR}/*.cc ${_DIR}/*.cpp )
  FILE( GLOB_RECURSE COMM_LIBRARY_SOURCE_FILES ${_DIR}/*.c ${_DIR}/*.cc ${_DIR}/*.cpp )
  LIST( APPEND COMM_LIBRARY_SOURCE ${COMM_LIBRARY_SOURCE_FILES} )
ENDMACRO( COMM_ADD_LIBRARY_SRC_DIR )

# Final building macro
MACRO( COMM_LIBRARY_BUILD )
  ADD_LIBRARY( ${COMM_LIBRARY_NAME} STATIC
               ${COMM_LIBRARY_SOURCES}
               ${COMM_LIBRARY_HEADERS} )
  SET_TARGET_PROPERTIES( ${COMM_LIBRARY_NAME} PROPERTIES
                         PROJECT_LABEL lib${COMM_LIBRARY_NAME}
                         DEBUG_POSTFIX Dbg
                         )
ENDMACRO( COMM_LIBRARY_BUILD )

# Install macro
MACRO( COMM_LIBRARY_INSTALL )
  INSTALL( TARGETS ${COMM_LIBRARY_NAME}
           RUNTIME DESTINATION bin
           LIBRARY DESTINATION lib
           ARCHIVE DESTINATION lib )
  FOREACH( HEADER ${COMM_LIBRARY_HEADERS} )
    FILE( RELATIVE_PATH FILE ${COMM_SOURCE_DIR}/include ${HEADER} )
    GET_FILENAME_COMPONENT( DIR ${FILE} PATH )
    INSTALL( FILES ${HEADER} DESTINATION include/${DIR} )
  ENDFOREACH( HEADER )
ENDMACRO( COMM_LIBRARY_INSTALL )

ADD_SUBDIRECTORY( comm )
ADD_SUBDIRECTORY( curlTools )
ADD_SUBDIRECTORY( stringTools )