diff --git a/CMakeLists.txt b/CMakeLists.txt index 7431938e..ec616b0c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ add_subdirectory(package) add_subdirectory(tools) add_subdirectory(libs) -add_library(psemek EXCLUDE_FROM_ALL todo.md) +psemek_add_library(psemek EXCLUDE_FROM_ALL todo.md) target_link_libraries(psemek INTERFACE ${PSEMEK_LIBRARIES}) set_target_properties(psemek PROPERTIES LINKER_LANGUAGE CXX) diff --git a/libs/app/CMakeLists.txt b/libs/app/CMakeLists.txt index 51e5ea78..12bce64a 100644 --- a/libs/app/CMakeLists.txt +++ b/libs/app/CMakeLists.txt @@ -1,6 +1,6 @@ file(GLOB_RECURSE PSEMEK_APP_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_APP_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-app ${PSEMEK_APP_HEADERS} ${PSEMEK_APP_SOURCES}) +psemek_add_library(psemek-app ${PSEMEK_APP_HEADERS} ${PSEMEK_APP_SOURCES}) target_include_directories(psemek-app PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-app PUBLIC psemek-log psemek-util psemek-gfx psemek-sdl2) diff --git a/libs/async/CMakeLists.txt b/libs/async/CMakeLists.txt index 2e510c4d..d911e5fc 100644 --- a/libs/async/CMakeLists.txt +++ b/libs/async/CMakeLists.txt @@ -1,6 +1,6 @@ file(GLOB_RECURSE PSEMEK_ASYNC_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_ASYNC_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-async ${PSEMEK_ASYNC_HEADERS} ${PSEMEK_ASYNC_SOURCES}) +psemek_add_library(psemek-async ${PSEMEK_ASYNC_HEADERS} ${PSEMEK_ASYNC_SOURCES}) target_include_directories(psemek-async PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-async PUBLIC psemek-log psemek-util) diff --git a/libs/audio/CMakeLists.txt b/libs/audio/CMakeLists.txt index 88a7ef10..77dca757 100644 --- a/libs/audio/CMakeLists.txt +++ b/libs/audio/CMakeLists.txt @@ -3,6 +3,6 @@ find_package(SDL2_mixer REQUIRED) file(GLOB_RECURSE PSEMEK_AUDIO_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_AUDIO_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-audio ${PSEMEK_AUDIO_HEADERS} ${PSEMEK_AUDIO_SOURCES}) +psemek_add_library(psemek-audio ${PSEMEK_AUDIO_HEADERS} ${PSEMEK_AUDIO_SOURCES}) target_include_directories(psemek-audio PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-audio PUBLIC psemek-sdl2 psemek-util psemek-log SDL2_mixer) diff --git a/libs/cg/CMakeLists.txt b/libs/cg/CMakeLists.txt index 56ab6740..0afd48df 100644 --- a/libs/cg/CMakeLists.txt +++ b/libs/cg/CMakeLists.txt @@ -1,6 +1,6 @@ file(GLOB_RECURSE PSEMEK_CG_HEADERS "include/*.hpp") -add_library(psemek-cg ${PSEMEK_CG_HEADERS}) +psemek_add_library(psemek-cg ${PSEMEK_CG_HEADERS}) target_include_directories(psemek-cg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-cg PUBLIC psemek-geom psemek-util) set_target_properties(psemek-cg PROPERTIES LINKER_LANGUAGE CXX) diff --git a/libs/geom/CMakeLists.txt b/libs/geom/CMakeLists.txt index eb6413d8..39105516 100644 --- a/libs/geom/CMakeLists.txt +++ b/libs/geom/CMakeLists.txt @@ -8,7 +8,7 @@ endif() file(GLOB_RECURSE PSEMEK_GEOM_HEADERS "include/*.hpp") file(GLOB_RECURSE PSEMEK_GEOM_SOURCES "source/*.cpp") -add_library(psemek-geom ${PSEMEK_GEOM_HEADERS} ${PSEMEK_GEOM_SOURCES}) +psemek_add_library(psemek-geom ${PSEMEK_GEOM_HEADERS} ${PSEMEK_GEOM_SOURCES}) target_include_directories(psemek-geom PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-geom PUBLIC psemek-util) if(PSEMEK_GEOM_ROBUST_PREDICATES) diff --git a/libs/gfx/CMakeLists.txt b/libs/gfx/CMakeLists.txt index c75b3bc7..b1e9a3b0 100644 --- a/libs/gfx/CMakeLists.txt +++ b/libs/gfx/CMakeLists.txt @@ -4,7 +4,7 @@ find_package(OpenGL REQUIRED) file(GLOB_RECURSE PSEMEK_GFX_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_GFX_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-gfx ${PSEMEK_GFX_HEADERS} ${PSEMEK_GFX_SOURCES}) +psemek_add_library(psemek-gfx ${PSEMEK_GFX_HEADERS} ${PSEMEK_GFX_SOURCES}) target_include_directories(psemek-gfx PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-gfx PUBLIC psemek-util psemek-geom psemek-cg psemek-random OpenGL::GL) diff --git a/libs/log/CMakeLists.txt b/libs/log/CMakeLists.txt index 049f16f1..cd269906 100644 --- a/libs/log/CMakeLists.txt +++ b/libs/log/CMakeLists.txt @@ -3,6 +3,6 @@ find_package(Threads REQUIRED) file(GLOB_RECURSE PSEMEK_LOG_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_LOG_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-log ${PSEMEK_LOG_HEADERS} ${PSEMEK_LOG_SOURCES}) +psemek_add_library(psemek-log ${PSEMEK_LOG_HEADERS} ${PSEMEK_LOG_SOURCES}) target_include_directories(psemek-log PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-log PUBLIC ${CMAKE_THREAD_LIBS_INIT}) diff --git a/libs/parser/CMakeLists.txt b/libs/parser/CMakeLists.txt index 55e9e814..dafe0012 100644 --- a/libs/parser/CMakeLists.txt +++ b/libs/parser/CMakeLists.txt @@ -1,6 +1,6 @@ file(GLOB_RECURSE PSEMEK_PARSER_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_PARSER_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-parser ${PSEMEK_PARSER_HEADERS} ${PSEMEK_PARSER_SOURCES}) +psemek_add_library(psemek-parser ${PSEMEK_PARSER_HEADERS} ${PSEMEK_PARSER_SOURCES}) target_include_directories(psemek-parser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-parser PUBLIC psemek-util) diff --git a/libs/pcg/CMakeLists.txt b/libs/pcg/CMakeLists.txt index 3eab3a97..e2da20e8 100644 --- a/libs/pcg/CMakeLists.txt +++ b/libs/pcg/CMakeLists.txt @@ -3,6 +3,6 @@ find_package(Boost COMPONENTS random REQUIRED) file(GLOB_RECURSE PSEMEK_PCG_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_PCG_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-pcg ${PSEMEK_PCG_HEADERS} ${PSEMEK_PCG_SOURCES}) +psemek_add_library(psemek-pcg ${PSEMEK_PCG_HEADERS} ${PSEMEK_PCG_SOURCES}) target_include_directories(psemek-pcg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-pcg PUBLIC psemek-util psemek-geom psemek-gfx psemek-random Boost::random) diff --git a/libs/phys/CMakeLists.txt b/libs/phys/CMakeLists.txt index 14097384..db5c6437 100644 --- a/libs/phys/CMakeLists.txt +++ b/libs/phys/CMakeLists.txt @@ -1,6 +1,6 @@ file(GLOB_RECURSE PSEMEK_PHYS_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_PHYS_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-phys ${PSEMEK_PHYS_HEADERS} ${PSEMEK_PHYS_SOURCES}) +psemek_add_library(psemek-phys ${PSEMEK_PHYS_HEADERS} ${PSEMEK_PHYS_SOURCES}) target_include_directories(psemek-phys PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-phys PUBLIC psemek-util psemek-geom psemek-cg) diff --git a/libs/random/CMakeLists.txt b/libs/random/CMakeLists.txt index c20b7783..7eae7e9b 100644 --- a/libs/random/CMakeLists.txt +++ b/libs/random/CMakeLists.txt @@ -3,6 +3,6 @@ find_package(Boost COMPONENTS random REQUIRED) file(GLOB_RECURSE PSEMEK_RANDOM_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_RANDOM_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-random ${PSEMEK_RANDOM_HEADERS} ${PSEMEK_RANDOM_SOURCES}) +psemek_add_library(psemek-random ${PSEMEK_RANDOM_HEADERS} ${PSEMEK_RANDOM_SOURCES}) target_include_directories(psemek-random PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-random PUBLIC psemek-util psemek-geom Boost::random) diff --git a/libs/sdl2/CMakeLists.txt b/libs/sdl2/CMakeLists.txt index f1f01f4c..5f639ad1 100644 --- a/libs/sdl2/CMakeLists.txt +++ b/libs/sdl2/CMakeLists.txt @@ -3,6 +3,6 @@ find_package(SDL2 REQUIRED) file(GLOB_RECURSE PSEMEK_SDL2_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_SDL2_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-sdl2 ${PSEMEK_SDL2_HEADERS} ${PSEMEK_SDL2_SOURCES}) +psemek_add_library(psemek-sdl2 ${PSEMEK_SDL2_HEADERS} ${PSEMEK_SDL2_SOURCES}) target_include_directories(psemek-sdl2 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-sdl2 PUBLIC psemek-log SDL2) diff --git a/libs/util/CMakeLists.txt b/libs/util/CMakeLists.txt index 5c2a34ef..5364e931 100644 --- a/libs/util/CMakeLists.txt +++ b/libs/util/CMakeLists.txt @@ -3,7 +3,7 @@ find_package(Threads REQUIRED) file(GLOB_RECURSE PSEMEK_UTIL_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "include/*.hpp") file(GLOB_RECURSE PSEMEK_UTIL_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "source/*.cpp") -add_library(psemek-util ${PSEMEK_UTIL_HEADERS} ${PSEMEK_UTIL_SOURCES}) +psemek_add_library(psemek-util ${PSEMEK_UTIL_HEADERS} ${PSEMEK_UTIL_SOURCES}) target_include_directories(psemek-util PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_link_libraries(psemek-util PUBLIC psemek-log ${CMAKE_THREAD_LIBS_INIT}) diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt index 6d7986cd..e8390e14 100644 --- a/package/CMakeLists.txt +++ b/package/CMakeLists.txt @@ -74,3 +74,13 @@ function(psemek_add_build_tool target link_psemek) set_target_properties(${target} PROPERTIES IMPORTED_LOCATION ${_LOCATION}) endif() endfunction() + +function(psemek_add_library target) + add_library(${target} ${ARGN}) + + set(_GUARD_SOURCE_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/nosource_library_guard.cpp") + target_sources(${target} PRIVATE ${_GUARD_SOURCE_LOCATION}) + if(NOT (EXISTS "${_GUARD_SOURCE_LOCATION}")) + file(TOUCH "${_GUARD_SOURCE_LOCATION}") + endif() +endfunction()