blob: 7e88a5f273d3efd6982391abbe8a186a24544bc0 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# targets.cmake.ezt -- template for targets.cmake file
# targets.cmake -- list of CMake targets
#
[for targets]
# [if-any targets.description][targets.description][else][targets.name][end]
if ([targets.enable_condition])[is targets.type "swig"]
# TODO: Use generator expressions instead of CMAKE_CURRENT_BINARY_DIR?
swig_add_library([targets.name]
LANGUAGE [targets.swig_lang]
SOURCES[for targets.sources] [targets.sources][end][is targets.swig_lang "python"]
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/PythonPackages/libsvn"[end][is targets.swig_lang "perl"]
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/PerlLibs/TODO"[end][is targets.swig_lang "ruby"]
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/site_ruby/TODO"[end]
)
set_target_properties([targets.name] PROPERTIES
SWIG_INCLUDE_DIRECTORIES "${SWIG_INCLUDE_DIRECTORIES}"
INCLUDE_DIRECTORIES "${SWIG_INCLUDE_DIRECTORIES}"
OUTPUT_NAME [targets.output_name]
)[is targets.swig_lang "python"]
set_target_properties([targets.name] PROPERTIES
SWIG_COMPILE_OPTIONS "-nofastunpack"
)[end]
target_link_libraries([targets.name] PRIVATE[for targets.libs]
[targets.libs][end]
external-[targets.swig_lang]
)[else][is targets.type "lib"]
add_library([targets.name][if-any targets.build_type] [targets.build_type][end][for targets.sources]
[targets.sources][end]
)[if-any targets.msvc_export]
target_exports([targets.name][for targets.msvc_export]
[targets.msvc_export][end]
)[end]
set_target_properties([targets.name] PROPERTIES OUTPUT_NAME "[targets.output_name]")[if-any targets.is_apache_mod]
set_target_properties([targets.name] PROPERTIES PREFIX "" SUFFIX ".so")[else]
set_target_properties([targets.name] PROPERTIES SOVERSION "${SVN_SOVERSION}" VERSION "${SVN_SOVERSION}.0.0")[end]
target_include_directories([targets.name] PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/subversion/include"
)[if-any targets.group]
target_link_libraries([targets.group] INTERFACE [targets.name])[end]
[end][is targets.type "exe"]
add_executable([targets.name][for targets.sources]
[targets.sources][end]
)
[end][is targets.type "test"]
add_executable([targets.name][for targets.sources]
[targets.sources][end]
)
add_test(
NAME [targets.namespace].[targets.name]
COMMAND [targets.name] --srcdir ${CMAKE_SOURCE_DIR}/[targets.srcdir]
WORKING_DIRECTORY $<TARGET_FILE_DIR:[targets.name]>
)
set_tests_properties([targets.namespace].[targets.name] PROPERTIES ENVIRONMENT LD_LIBRARY_PATH=$<TARGET_FILE_DIR:[targets.name]>)
[end][if-any targets.public_libs]target_link_libraries([targets.name] PUBLIC[for targets.public_libs]
[targets.public_libs][end]
)
[end][if-any targets.private_libs]target_link_libraries([targets.name] PRIVATE[for targets.private_libs]
[targets.private_libs][end]
)[end][if-any targets.msvc_libs]
if (WIN32)
target_link_libraries([targets.name] PRIVATE[for targets.msvc_libs] [targets.msvc_libs][end])
endif()[end][if-any targets.msvc_objects]
if (MSVC)
set_target_properties([targets.name] PROPERTIES LINK_FLAGS[for targets.msvc_objects] [targets.msvc_objects][end])
endif()[end]
target_compile_definitions([targets.name] PRIVATE
"SVN_FILE_DESCRIPTION=[targets.description]"
"SVN_FILE_NAME=$<TARGET_FILE_NAME:[targets.name]>"
)
if (WIN32)
target_sources([targets.name] PRIVATE build/win32/svn.rc)
endif()[if-any targets.install_target]
install(TARGETS [targets.name])[end][end]
endif()
[end]