1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-13 17:49:10 +00:00
Files
.github
bin
cmake
3rdparty
scripts
AddCustomXXXTimestamp.cmake
Catch.cmake
CatchAddTests.cmake
CompileFlags.cmake
CreateGrfCommand.cmake
CreateRegression.cmake
FindAllegro.cmake
FindEditbin.cmake
FindFluidsynth.cmake
FindFontconfig.cmake
FindGrfcodec.cmake
FindHarfbuzz.cmake
FindICU.cmake
FindIconv.cmake
FindLZO.cmake
FindOgg.cmake
FindOpus.cmake
FindOpusFile.cmake
FindPandoc.cmake
FindSSE.cmake
FindXaudio2.cmake
FixVcpkgLibrary.cmake
InstallAndPackage.cmake
LinkPackage.cmake
MSVCFilters.cmake
Options.cmake
PackageBundle.cmake
PackageDeb.cmake
PackageNSIS.cmake
PackageRPM.cmake
SourceList.cmake
Static.cmake
docs
media
os
regression
src
.dorpsgek.yml
.editorconfig
.gitignore
CMakeLists.txt
CODINGSTYLE.md
COMPILING.md
CONTRIBUTING.md
COPYING.md
CPackProperties.cmake.in
CREDITS.md
Doxyfile.in
README.md
changelog.md
known-bugs.md
vcpkg.json
OpenTTD/cmake/SourceList.cmake

49 lines
1.7 KiB
CMake

function(_add_files_tgt tgt)
cmake_parse_arguments(PARAM "" "" "CONDITION" ${ARGN})
set(PARAM_FILES "${PARAM_UNPARSED_ARGUMENTS}")
if(PARAM_CONDITION)
if(NOT (${PARAM_CONDITION}))
return()
endif()
endif()
foreach(FILE IN LISTS PARAM_FILES)
# Some IDEs are not happy with duplicated filenames, so we detect that before adding the file.
get_target_property(${tgt}_FILES ${tgt} SOURCES)
if(${tgt}_FILES MATCHES "/${FILE}(;|$)")
string(REGEX REPLACE "(^|.+;)([^;]+/${FILE})(;.+|$)" "\\2" RES "${${tgt}_FILES}")
# Ignore header files duplicates in 3rdparty.
if(NOT (${FILE} MATCHES "\.h" AND (${RES} MATCHES "3rdparty" OR ${CMAKE_CURRENT_SOURCE_DIR} MATCHES "3rdparty")))
message(FATAL_ERROR "${tgt}: ${CMAKE_CURRENT_SOURCE_DIR}/${FILE} filename is a duplicate of ${RES}")
endif()
endif()
target_sources(${tgt} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
endforeach()
endfunction()
# Add a file to be compiled.
#
# add_files([file1 ...] CONDITION condition [condition ...])
#
# CONDITION is a complete statement that can be evaluated with if().
# If it evaluates true, the source files will be added; otherwise not.
# For example: ADD_IF SDL_FOUND AND Allegro_FOUND
#
function(add_files)
_add_files_tgt(openttd_lib ${ARGV})
endfunction()
# Add a test file to be compiled.
#
# add_test_files([file1 ...] CONDITION condition [condition ...])
#
# CONDITION is a complete statement that can be evaluated with if().
# If it evaluates true, the source files will be added; otherwise not.
# For example: ADD_IF SDL_FOUND AND Allegro_FOUND
#
function(add_test_files)
_add_files_tgt(openttd_test ${ARGV})
endfunction()