cellar/cmake/Modules/LavaTargets.cmake

95 lines
3.7 KiB
CMake
Raw Permalink Normal View History

2018-03-13 20:30:47 -07:00
link_directories(${CMAKE_CURRENT_BINARY_DIR})
function(lava_create_library)
set(multiValueArgs SUBDIRS DEPENDS LIBRARIES)
set(oneValueArgs TARGET)
cmake_parse_arguments(lava_create_library "" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
set(target ${lava_create_library_TARGET})
set(targetsources)
foreach(subdir ${lava_create_library_SUBDIRS})
cog_sources("src/${subdir}/*.cpp" subdirsources)
foreach(source ${subdirsources})
set(targetsources ${targetsources} ${source})
endforeach(source)
endforeach(subdir)
add_library(${target} SHARED ${targetsources})
if(MINGW)
# MinGW (or CMake?) does a stupid, redundant thing where it names all output DLLs
# "libblah.dll" and it's kinda stupid and redundant
# this removes the "lib" prefix because removing ".dll" causes things to break
set_target_properties(${target} PROPERTIES PREFIX "")
endif()
if(lava_create_library_LIBRARIES)
foreach(library ${lava_create_library_LIBRARIES})
target_link_libraries(${target} "${library}")
endforeach()
endif()
if(lava_create_library_DEPENDS)
add_dependencies(${target} ${lava_create_library_DEPENDS})
endif()
endfunction(lava_create_library)
function(lava_create_gutlib)
set(multiValueArgs SUBDIRS DEPENDS LIBRARIES LIBRARYVARS)
cmake_parse_arguments(lava_create_gutlib "" ""
"${multiValueArgs}" ${ARGN})
foreach(subdir ${lava_create_gutlib_SUBDIRS})
cog_sources("src/${subdir}/*.cpp" subdirsources)
foreach(source ${subdirsources})
set(targetsources ${targetsources} ${source})
endforeach(source)
endforeach(subdir)
add_library(gutlib SHARED ${targetsources})
set_target_properties(gutlib PROPERTIES OUTPUT_NAME ${CMAKE_PROJECT_NAME})
if(MINGW)
# MinGW (or CMake?) does a stupid, redundant thing where it names all output DLLs
# "libblah.dll" and it's kinda stupid and redundant
# this removes the "lib" prefix because removing ".dll" causes things to break
set_target_properties(gutlib PROPERTIES PREFIX "")
endif()
if(lava_create_gutlib_LIBRARIES)
foreach(library ${lava_create_gutlib_LIBRARIES})
target_link_libraries(gutlib "${library}")
endforeach()
endif()
if(lava_create_gutlib_DEPENDS)
add_dependencies(gutlib ${lava_create_gutlib_DEPENDS})
endif()
endfunction(lava_create_gutlib)
function(lava_create_executable)
set(multiValueArgs SUBDIRS LIBRARIES DEPENDS)
set(oneValueArgs TARGET)
cmake_parse_arguments(lava_create_executable "" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
set(target ${lava_create_executable_TARGET})
set(targetsources)
foreach(subdir ${lava_create_executable_SUBDIRS})
cog_sources("src/${subdir}/*.cpp" subdirsources)
foreach(source ${subdirsources})
set(targetsources ${targetsources} ${source})
endforeach(source)
endforeach(subdir)
add_executable(${target} ${targetsources})
if(lava_create_executable_LIBRARIES)
foreach(library ${lava_create_executable_LIBRARIES})
target_link_libraries(${target} "${library}")
endforeach()
endif()
if(lava_create_executable_DEPENDS)
add_dependencies(${target} ${lava_create_executable_DEPENDS})
endif()
endfunction(lava_create_executable)