| 1 | set(WSLC_SUBDIRS arguments commands core services tasks) |
| 2 | list(TRANSFORM WSLC_SUBDIRS PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/ OUTPUT_VARIABLE WSLC_SUBDIR_PATHS) |
| 3 | |
| 4 | list(TRANSFORM WSLC_SUBDIR_PATHS APPEND /*.h OUTPUT_VARIABLE HEADER_PATTERNS) |
| 5 | list(TRANSFORM WSLC_SUBDIR_PATHS APPEND /*.cpp OUTPUT_VARIABLE SOURCE_PATTERNS) |
| 6 | file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS ${HEADER_PATTERNS}) |
| 7 | file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${SOURCE_PATTERNS}) |
| 8 | |
| 9 | # Object library for WSLC components. |
| 10 | # Used to build the executable and also unit testing components. |
| 11 | add_library(wslclib OBJECT ${SOURCES} ${HEADERS}) |
| 12 | |
| 13 | target_include_directories(wslclib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${WSLC_SUBDIR_PATHS}) |
| 14 | |
| 15 | target_link_libraries(wslclib |
| 16 | ${COMMON_LINK_LIBRARIES} |
| 17 | yaml-cpp |
| 18 | common |
| 19 | advapi32 |
| 20 | crypt32) |
| 21 | |
| 22 | |
| 23 | target_precompile_headers(wslclib REUSE_FROM common) |
| 24 | set_target_properties(wslclib PROPERTIES FOLDER windows) |
| 25 | |
| 26 | # Create wslc.exe |
| 27 | # N.B. Linking wslclib (OBJECT library) brings both object files and |
| 28 | # transitive dependencies. Do not also use $<TARGET_OBJECTS:wslclib>. |
| 29 | add_executable(wslc main.rc resource.h) |
| 30 | |
| 31 | target_link_libraries(wslc wslclib delayimp.lib) |
| 32 | |
| 33 | set_target_properties(wslc PROPERTIES LINK_FLAGS "/DELAYLOAD:msi.dll /DELAYLOAD:WINTRUST.dll") |
| 34 | set_target_properties(wslc PROPERTIES FOLDER windows) |
| 35 | |
| 36 | # For prettier source tree browsing |
| 37 | source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SOURCES} ${HEADERS}) |