77 lines
2.8 KiB
CMake
77 lines
2.8 KiB
CMake
cmake_minimum_required (VERSION 3.0)
|
|
project (wdmtg VERSION 0.1.0 LANGUAGES C)
|
|
|
|
# Vala really sucks at producing good C code
|
|
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
|
|
set (CMAKE_C_FLAGS_RELEASE
|
|
"${CMAKE_C_FLAGS_RELEASE} -Wno-ignored-qualifiers -Wno-incompatible-pointer-types")
|
|
endif ()
|
|
|
|
# Options
|
|
option (OPTION_NOINSTALL "Only for developers; work without installing" OFF)
|
|
|
|
# Set some variables
|
|
if (OPTION_NOINSTALL)
|
|
set (project_SHARE_DIR ${PROJECT_SOURCE_DIR}/share)
|
|
elseif (WIN32)
|
|
set (project_SHARE_DIR ../share)
|
|
set (project_INSTALL_SHARE_DIR share)
|
|
else ()
|
|
set (project_SHARE_DIR ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME})
|
|
set (project_INSTALL_SHARE_DIR share/${PROJECT_NAME})
|
|
endif ()
|
|
|
|
# Gather package information
|
|
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
|
find_package (Vala 0.12 REQUIRED)
|
|
find_package (PkgConfig REQUIRED)
|
|
pkg_check_modules (dependencies REQUIRED gtk+-3.0 sqlite3 xcb xcb-sync)
|
|
|
|
# Precompile Vala sources
|
|
include (ValaPrecompile)
|
|
|
|
set (config_path "${PROJECT_BINARY_DIR}/config.h")
|
|
configure_file (${PROJECT_SOURCE_DIR}/config.h.in "${config_path}")
|
|
include_directories ("${PROJECT_BINARY_DIR}")
|
|
|
|
# I'm not sure what this was about, look at slovnik-gui for more comments;
|
|
# seems to be so that symbols are exported for GModule to see
|
|
set (symbols_path "${PROJECT_BINARY_DIR}/gui.def")
|
|
|
|
set (project_VALA_SOURCES gui.vala config.vapi)
|
|
vala_precompile (${project_VALA_SOURCES}
|
|
OUTPUTS project_VALA_C
|
|
HEADER gui.h
|
|
SYMBOLS ${symbols_path}
|
|
PACKAGES gmodule-2.0 gtk+-3.0 gee-0.8 sqlite3)
|
|
|
|
# Include Vala sources as header files, so they appear in the IDE
|
|
# but CMake doesn't try to compile them directly
|
|
set_source_files_properties (${project_VALA_SOURCES}
|
|
PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
set (project_SOURCES ${project_VALA_SOURCES} ${project_VALA_C} ${symbols_path})
|
|
|
|
# Build the executable and install it
|
|
include_directories (${dependencies_INCLUDE_DIRS})
|
|
link_directories (${dependencies_LIBRARY_DIRS})
|
|
add_executable (${PROJECT_NAME}
|
|
${PROJECT_NAME}.c compound-text.c ${project_SOURCES})
|
|
target_link_libraries (${PROJECT_NAME} ${dependencies_LIBRARIES})
|
|
|
|
install (TARGETS ${PROJECT_NAME} DESTINATION bin)
|
|
|
|
# CPack
|
|
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Activity tracker")
|
|
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
|
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
|
set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
|
set (CPACK_GENERATOR "TGZ;ZIP")
|
|
set (CPACK_PACKAGE_FILE_NAME
|
|
"${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}-${PROJECT_VERSION}")
|
|
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
|
set (CPACK_SOURCE_IGNORE_FILES "/build;/\\\\.git")
|
|
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
|
|
|
|
include (CPack)
|