

set( AWALIDYN_SOURCES "dyn/awalidyn.cc" )


add_subdirectory(dyn)
add_subdirectory(extras)




add_library (awalidyn SHARED "${AWALIDYN_SOURCES}")

target_link_libraries(awalidyn dl)
target_link_libraries(awalidyn "-rdynamic")








###############################################################################
##                           INSTALLATION COMMANDS                           ##
###############################################################################

# install( CODE "execute_process( COMMAND \"${CMAKE_COMMAND} -E compare_files dyn/config.hh dyn/config-install.hh\"  RESULT_VARIABLE AWALI_IS_INST )"
#               "MESSAGE(\"install message: ${AWALI_IS_INST}.\")" )



## Library. ###################################################################
install( TARGETS "awalidyn" DESTINATION "${AWALI_INST_DYNLIB_PATH}" )


# Headers. ####################################################################
install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sttc"
                   "${CMAKE_CURRENT_SOURCE_DIR}/dyn"
                   "${CMAKE_CURRENT_SOURCE_DIR}/common"
                   "${CMAKE_CURRENT_SOURCE_DIR}/utils"
            DESTINATION "${AWALI_INST_INCLUDE_PATH}/awali"
            FILES_MATCHING
                PATTERN "*.hh"
                PATTERN "*.hxx" )
install( FILES "${CMAKE_CURRENT_SOURCE_DIR}/dyn.hh" 
         DESTINATION "${AWALI_INST_INCLUDE_PATH}/awali")



# Source code. ################################################################
install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sttc"
                   "${CMAKE_CURRENT_SOURCE_DIR}/dyn"
                   "${CMAKE_CURRENT_SOURCE_DIR}/common"
                   "${CMAKE_CURRENT_SOURCE_DIR}/utils"
            DESTINATION "${AWALI_INST_SHARE_PATH}/awali"
            FILES_MATCHING PATTERN "*.cc" )

# Example automata. ###########################################################
install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/automata"
            DESTINATION "${AWALI_INST_SHARE_PATH}/awali" )

## Executing ldconfig in order for awalidyn to be found by the c++ linker ######
install( CODE "execute_process(COMMAND \"ldconfig\")" )

## OTF libraries. #############################################################

install( DIRECTORY "${AWALI_OTF_LIB_PATH}/"   # Trailing "/" is significant
         DESTINATION "${AWALI_INST_OTF_LIB_PATH}"
         OPTIONAL )

###############################################################################
##                          UNINSTALLATION COMMANDS                          ##
###############################################################################

# Note (VM): uninstallation is centralised here since sttc and dyn do not
# know how to remove themselves.
#
# Note (VM): This will leave out several directories and subdirectories.

if(TARGET uninstall)
else()
  add_custom_target (uninstall
    COMMAND "${CMAKE_COMMAND}"
        -D "DATA_TO_REMOVE=${CMAKE_BINARY_DIR}/install_manifest.txt"
        -P "${CMAKE_CURRENT_SOURCE_DIR}/../CMakeScripts/remove_data.cmake"
    COMMAND "${CMAKE_COMMAND}" -E remove_directory "${AWALI_INST_OTF_LIB_PATH}"
  )
endif()

add_dependencies(uninstall cleanlib)
