Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 25 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,22 @@ if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)
set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "")
endif()
]]
set(CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/cmake/find_scripts;${CMAKE_SOURCE_DIR}/cmake/modules;${CMAKE_MODULE_PATH}"
)

include(get_versions)
get_versions("include/VERSION" GRASS_VERSION_MAJOR GRASS_VERSION_MINOR
GRASS_VERSION_RELEASE GRASS_VERSION_SUFFIX GRASS_VERSION_DATE)

project(GRASS)
set(GRASS_VERSION_NUMBER
${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.${GRASS_VERSION_RELEASE}${GRASS_VERSION_SUFFIX})
set(GRASS_VERSION_STRING ${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.${GRASS_VERSION_RELEASE})
message(STATUS "GRASS_VERSION_NUMBER = '${GRASS_VERSION_NUMBER}'")
set(GRASS_VERSION_UPDATE_PKG "0.2")

project(GRASS VERSION ${GRASS_VERSION_STRING}
HOMEPAGE_URL https://grass.osgeo.org)
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)

set(BUILD_SHARED_LIBS ON)
Expand All @@ -32,10 +46,6 @@ if(MSVC)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif()

set(CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/cmake/find_scripts;${CMAKE_SOURCE_DIR}/cmake/modules;${CMAKE_MODULE_PATH}"
)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Expand Down Expand Up @@ -146,15 +156,6 @@ include(CheckDependentLibraries)
include(get_host_arch)
get_host_arch(BUILD_ARCH)

include(get_versions)
get_versions("include/VERSION" GRASS_VERSION_MAJOR GRASS_VERSION_MINOR
GRASS_VERSION_RELEASE GRASS_VERSION_DATE)

set(GRASS_VERSION_NUMBER
${GRASS_VERSION_MAJOR}.${GRASS_VERSION_MINOR}.${GRASS_VERSION_RELEASE})
message(STATUS "GRASS_VERSION_NUMBER = '${GRASS_VERSION_NUMBER}'")
set(GRASS_VERSION_UPDATE_PKG "0.2")

# Setup GRASS install directories
include(GRASSInstallDirs)

Expand Down Expand Up @@ -334,3 +335,13 @@ endif()
if(WITH_X11)
build_program_in_subdir(visualization/ximgview DEPENDS grass_gis X11::X11)
endif()

include(CMakePackageConfigHelpers)
configure_package_config_file(GRASSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/GRASSConfig.cmake
INSTALL_DESTINATION ${GRASS_INSTALL_CMAKECONFDIR}/GRASS)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/GRASSConfigVersion.cmake
VERSION ${GRASS_VERSION_STRING}
COMPATIBILITY ExactVersion)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/GRASSConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/GRASSConfigVersion.cmake
DESTINATION ${GRASS_INSTALL_CMAKECONFDIR}/GRASS)
71 changes: 71 additions & 0 deletions GRASSConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
@PACKAGE_INIT@

set(_GRASS_supported_components
arraystats
bitmap
btree
btree2
cairodriver
calc
ccmath
cdhc
cluster
datetime
dbmibase
dbmiclient
dbmidriver
dbstubs
dgl
dig2
display
driver
dspf
gis
gmath
gpde
gproj
htmldriver
imagery
interpdata
interpfl
iortho
iostream
lidar
linkm
lrs
manage
neta
nviz
ogsf
parson
pngdriver
psdriver
qtree
raster
raster3d
rli
rowio
rtree
segment
shape
sim
sqlp
stats
symb
temporal
vector
vedit)

foreach(_comp ${GRASS_FIND_COMPONENTS})
if(NOT _comp IN_LIST _GRASS_supported_components)
set(GRASS_FOUND False)
set(GRASS_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
endif()
include("${CMAKE_CURRENT_LIST_DIR}/GRASS_${_comp}Targets.cmake")
endforeach()

set(GRASS_VERSION_DATE "@GRASS_VERSION_DATE@")
set(GRASS_VERSION_GIT "@GRASS_VERSION_GIT@")
set(GRASS_VERSION_STRING "@GRASS_VERSION_NUMBER@")
set(GRASS_CMAKE_DIR "@CMAKE_INSTALL_PREFIX@/@GRASS_INSTALL_ETCDIR@/cmake")
set(GRASS_UTILS_DIR "@CMAKE_INSTALL_PREFIX@/@GRASS_INSTALL_UTILSDIR@")
3 changes: 3 additions & 0 deletions cmake/modules/GRASSInstallDirs.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ else()
set(GRASS_INSTALL_LOCALEDIR "${GISBASE_DIR}/locale")
endif()

set(GRASS_INSTALL_CMAKECONFDIR "${CMAKE_INSTALL_LIBDIR}/cmake")

message(STATUS "GISBASE_DIR ${GISBASE_DIR}")
message(STATUS "GRASS_INSTALL_BINDIR ${GRASS_INSTALL_BINDIR}")
message(STATUS "GRASS_INSTALL_LIBDIR ${GRASS_INSTALL_LIBDIR}")
Expand All @@ -76,6 +78,7 @@ message(STATUS "GRASS_INSTALL_DEMODIR ${GRASS_INSTALL_DEMODIR}")
message(STATUS "GRASS_INSTALL_MISCDIR ${GRASS_INSTALL_MISCDIR}")
message(STATUS "GRASS_INSTALL_MAKEFILEDIR ${GRASS_INSTALL_MAKEFILEDIR}")
message(STATUS "GRASS_INSTALL_LOCALEDIR ${GRASS_INSTALL_LOCALEDIR}")
message(STATUS "GRASS_INSTALL_CMAKECONFDIR ${GRASS_INSTALL_CMAKECONFDIR}")

set(OUTDIR "${CMAKE_BINARY_DIR}/output")
set(GISBASE ${CMAKE_INSTALL_PREFIX}/${GISBASE_DIR})
Expand Down
35 changes: 29 additions & 6 deletions cmake/modules/build_module.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,16 @@ function(build_module)
CACHE INTERNAL "list of modules")

else()
string(REPLACE "grass_" "" _libname ${G_NAME})
add_library(${G_NAME} ${${G_NAME}_SRCS})
set_target_properties(
${G_NAME}
PROPERTIES FOLDER lib
VERSION ${GRASS_VERSION_NUMBER}
SOVERSION ${GRASS_VERSION_MAJOR})
SOVERSION ${GRASS_VERSION_MAJOR}
EXPORT_NAME ${_libname})

add_library(GRASS::${_libname} ALIAS ${G_NAME})

# TODO: check when and where the export header files are needed
set(export_file_name
Expand Down Expand Up @@ -174,8 +178,8 @@ function(build_module)
if(${G_NAME}_INCLUDE_DIRS)
list(REMOVE_DUPLICATES ${G_NAME}_INCLUDE_DIRS)
endif()

target_include_directories(${G_NAME} PUBLIC ${${G_NAME}_INCLUDE_DIRS})
target_include_directories(
${G_NAME} PUBLIC "$<BUILD_INTERFACE:${${G_NAME}_INCLUDE_DIRS}>")
endforeach()

foreach(G_DEF ${G_DEFS})
Expand Down Expand Up @@ -251,8 +255,8 @@ function(build_module)

if(RUN_HTML_DESCR)
set(html_descr_command
${G_NAME}${PGM_EXT} --html-description < ${NULL_DEVICE} | ${SEARCH_COMMAND}
${HTML_SEARCH_STR})
${G_NAME}${PGM_EXT} --html-description < ${NULL_DEVICE} |
${SEARCH_COMMAND} ${HTML_SEARCH_STR})
else()
set(html_descr_command ${CMAKE_COMMAND} -E echo)
endif()
Expand Down Expand Up @@ -289,6 +293,25 @@ function(build_module)
message("[build_module] ADDING TEST ${G_NAME}-test")
endforeach()

install(TARGETS ${G_NAME} DESTINATION ${install_dest})
if(NOT G_EXE)
string(REPLACE "grass_" "" _libname ${G_NAME})
install(
TARGETS ${G_NAME}
EXPORT ${_libname}Targets
LIBRARY DESTINATION ${install_dest}
ARCHIVE DESTINATION ${install_dest}
RUNTIME DESTINATION ${G_RUNTIME_OUTPUT_DIR}
INCLUDES
DESTINATION ${GRASS_INSTALL_INCLUDEDIR})

install(
EXPORT ${_libname}Targets
FILE GRASS_${_libname}Targets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/GRASS
NAMESPACE GRASS::
EXPORT_LINK_INTERFACE_LIBRARIES)
else()
install(TARGETS ${G_NAME} DESTINATION ${install_dest})
endif()

endfunction()
8 changes: 7 additions & 1 deletion cmake/modules/get_versions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ COPYRIGHT: (C) 2020 by the GRASS Development Team
SPDX-License-Identifier: GPL-2.0-or-later
#]]

function(get_versions file_path var_major var_minor var_release var_date)
function(get_versions file_path var_major var_minor var_release var_suffix var_date)
set(version_major 0)
set(version_minor 0)
set(version_release 0)
set(version_suffix "")
set(version_date 00000000)
file(STRINGS "${file_path}" grass_version_strings)
list(LENGTH grass_version_strings grass_version_file_length)
Expand All @@ -23,6 +24,8 @@ function(get_versions file_path var_major var_minor var_release var_date)

if(grass_version_file_length GREATER 2)
list(GET grass_version_strings 2 version_release)
string(REGEX REPLACE "(^[0-9]+)(.*)" "\\2" version_suffix ${version_release})
string(REGEX MATCH "^[0-9]+" version_release ${version_release})
endif()

if(grass_version_file_length GREATER 3)
Expand All @@ -38,6 +41,9 @@ function(get_versions file_path var_major var_minor var_release var_date)
set(${var_release}
${version_release}
PARENT_SCOPE)
set(${var_suffix}
${version_suffix}
PARENT_SCOPE)
set(${var_date}
${version_date}
PARENT_SCOPE)
Expand Down
4 changes: 2 additions & 2 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ build_library_in_subdir(
grass_driver
grass_gis
INCLUDES
"./driver")
"${CMAKE_CURRENT_SOURCE_DIR}/driver")
add_custom_command(
TARGET grass_psdriver
POST_BUILD
Expand All @@ -102,7 +102,7 @@ build_library_in_subdir(
grass_gis
grass_driver
INCLUDES
"./driver")
"${CMAKE_CURRENT_SOURCE_DIR}/driver")

set(_grass_display_DEFS)

Expand Down
10 changes: 5 additions & 5 deletions lib/db/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
file(GLOB dbmibase_SRCS "./dbmi_base/*.c")
file(GLOB dbmibase_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/dbmi_base/*.c")
if(MSVC)
set(dbmibase_INCLUDES "./dbmi_base" "../../msvc")
list(APPEND dbmibase_SRCS "../../msvc/dirent.c")
set(dbmibase_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/dbmi_base" "${CMAKE_SOURCE_DIR}/msvc")
list(APPEND dbmibase_SRCS "${CMAKE_SOURCE_DIR}/msvc/dirent.c")
endif()

build_library_in_subdir(
Expand All @@ -25,7 +25,7 @@ build_library_in_subdir(
grass_dbmibase
grass_gis
INCLUDES
"./dbmi_base")
"${CMAKE_CURRENT_SOURCE_DIR}/dbmi_base")

build_library_in_subdir(stubs NAME grass_dbstubs DEPENDS grass_gis
grass_dbmibase)
Expand All @@ -39,6 +39,6 @@ build_library_in_subdir(
grass_dbstubs
grass_gis
INCLUDES
"./dbmi_base")
"${CMAKE_CURRENT_SOURCE_DIR}/dbmi_base")

add_subdirectory(sqlp)
3 changes: 2 additions & 1 deletion lib/gis/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ install(
DESTINATION ${GRASS_INSTALL_ETCDIR}/proj)
install(FILES colors.desc renamed_options DESTINATION ${GRASS_INSTALL_ETCDIR})

target_include_directories(grass_gis PUBLIC ${ZLIB_INCLUDE_DIR})
target_include_directories(grass_gis
INTERFACE $<TARGET_PROPERTY:ZLIB::ZLIB,INTERFACE_INCLUDE_DIRECTORIES>)

if(UNIX)
target_link_libraries(grass_gis PRIVATE ${LIBM})
Expand Down
7 changes: 5 additions & 2 deletions lib/proj/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ build_module(
SOURCES
"${grass_gproj_SOURCES}"
INCLUDES
"../driver")
"${CMAKE_CURRENT_SOURCE_DIR}/../driver")

target_include_directories(grass_gproj PUBLIC ${GDAL_INCLUDE_DIR} ${PROJ_INCLUDE_DIRS})
target_include_directories(grass_gproj
INTERFACE $<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>/gdal
$<TARGET_PROPERTY:PROJ::proj,INTERFACE_INCLUDE_DIRECTORIES>)
7 changes: 5 additions & 2 deletions lib/rst/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ build_library_in_subdir(
HEADERS
"interpf.h")

target_include_directories(grass_interpfl PUBLIC ${GDAL_INCLUDE_DIR})
target_include_directories(grass_interpfl
INTERFACE $<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>/gdal)
if(TARGET PostgreSQL::PostgreSQL)
target_include_directories(grass_interpfl PUBLIC ${PostgreSQL_INCLUDE_DIR})
target_include_directories(grass_interpfl
INTERFACE $<TARGET_PROPERTY:PostgreSQL::PostgreSQL,INTERFACE_INCLUDE_DIRECTORIES>)
endif()
8 changes: 5 additions & 3 deletions lib/vector/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ build_library_in_subdir(
OPTIONAL_DEPENDS
GEOS::geos_c)

target_include_directories(grass_vector PUBLIC ${GDAL_INCLUDE_DIR})

target_include_directories(grass_vector
INTERFACE $<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:GDAL::GDAL,INTERFACE_INCLUDE_DIRECTORIES>/gdal)
if(TARGET PostgreSQL::PostgreSQL)
target_link_libraries(grass_vector PRIVATE PostgreSQL::PostgreSQL)
target_include_directories(grass_vector PUBLIC ${PostgreSQL_INCLUDE_DIR})
target_include_directories(grass_vector
INTERFACE $<TARGET_PROPERTY:PostgreSQL::PostgreSQL,INTERFACE_INCLUDE_DIRECTORIES>)
endif()

if(TARGET LAPACKE)
Expand Down
3 changes: 2 additions & 1 deletion lib/vector/diglib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,6 @@ build_module(
${LIBM})

if(TARGET PostgreSQL::PostgreSQL)
target_include_directories(grass_dig2 PUBLIC ${PostgreSQL_INCLUDE_DIR})
target_include_directories(grass_dig2
PUBLIC $<TARGET_PROPERTY:PostgreSQL::PostgreSQL,INTERFACE_INCLUDE_DIRECTORIES>)
endif()
4 changes: 2 additions & 2 deletions raster/r.sim/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ build_program_in_subdir(
OPTIONAL_DEPENDS
OPENMP
INCLUDES
"../simlib")
"${CMAKE_CURRENT_SOURCE_DIR}/../simlib")

build_program_in_subdir(
r.sim.sediment
Expand All @@ -38,4 +38,4 @@ build_program_in_subdir(
OPTIONAL_DEPENDS
OPENMP
INCLUDES
"../simlib")
"${CMAKE_CURRENT_SOURCE_DIR}/../simlib")
Loading