set(GENERATED_PO_DIR "${CMAKE_CURRENT_BINARY_DIR}/po" PARENT_SCOPE)
set(GENERATED_FILES ${GENERATED_PO_DIR} ${CMAKE_CURRENT_BINARY_DIR}/cities.compiled)

add_executable(mkdb
    geonames-mkdb.c
)

target_link_libraries(mkdb
    ${GIO_LIBRARIES}
)

target_include_directories(mkdb PUBLIC
    ${GIO_INCLUDE_DIRS}
)

add_custom_command(
    OUTPUT ${GENERATED_FILES}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMAND mkdb
    ARGS ${CMAKE_SOURCE_DIR}/data
    VERBATIM
    DEPENDS mkdb
)

add_custom_target(
    generated-files
    DEPENDS ${GENERATED_FILES}
)

find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)

set(GRESOURCE_C   geonames-resources.c)
set(GRESOURCE_XML geonames.gresources.xml)

add_custom_command(
    OUTPUT ${GRESOURCE_C}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMAND ${GLIB_COMPILE_RESOURCES}
    ARGS
        --target ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
        --generate-source ${CMAKE_CURRENT_SOURCE_DIR}/${GRESOURCE_XML}
    VERBATIM
    DEPENDS ${GENERATED_FILES}
)

add_custom_target(
    geonames-resource
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)

add_definitions(-DPACKAGE="${PROJECT_NAME}")

add_library(${PROJECT_NAME} SHARED
    geonames.c
    geonames-query.c

    ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
)

target_include_directories(${PROJECT_NAME} PUBLIC
    ${GIO_INCLUDE_DIRS}
    ${GLIB_INCLUDE_DIRS}
)

target_link_libraries(${PROJECT_NAME}
    ${GIO_LIBRARIES}
    ${GLIB_LIBRARIES}
)

add_custom_command(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/locales-gen
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generate-locales.sh
    ARGS ${PROJECT_NAME} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/locales-gen
    VERBATIM
    DEPENDS generated-files
)

add_custom_target(
    localesgen
    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/locales-gen
)

add_dependencies(geonames
    localesgen
)

set_target_properties(${PROJECT_NAME} PROPERTIES
    VERSION ${PROJECT_VERSION}
    SOVERSION ${PROJECT_VERSION_MAJOR}
)

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/locales-gen/locale/ DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/)
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${PROJECT_NAME}.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
configure_file(${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
