Mercurial > foo_out_sdl
view foosdk/CMakeLists.txt @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line source
cmake_minimum_required(VERSION 3.10) project(foosdk) if(NOT WIN32) message(FATAL_ERROR "This project requires WIN32 target.") endif() option(FOO_PPUI "Include libPPUI (adds usage of ATL/WTL)" ON) option(FOO_SDK_HELPERS "Include SDK helpers (requires FOO_PPUI)" ON) option(FOO_STATIC_STDLIB "Use static standard libraries" OFF) option(FOO_SYSTEM_WTL "Use system WTL library" OFF) option(FOO_SAMPLE "Build foo_sample component" OFF) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4302 /wd4838 /wd4996 /d2notypeopt") if(FOO_STATIC_STDLIB) foreach(FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) string(REPLACE "/MD" "/MT" ${FLAGS} "${${FLAGS}}") endforeach() endif() set(CMAKE_CXX_STANDARD 17) set(WINVER 0x0601) add_definitions( -D_UNICODE -DUNICODE -DSTRICT -DWINVER=${WINVER} -D_WIN32_WINNT=${WINVER} ) set(INCLUDE_WTL OFF) if(FOO_PPUI) if(FOO_SYSTEM_WTL) find_package(Wtl REQUIRED) target_include_directories(${WTL_INCLUDE_DIRS}) else() set(WTL_INCLUDE_DIRS "wtl/Include") set(INCLUDE_WTL ON) endif() endif() function(option_dependency_check OPT1 OPT2) if(${OPT1}) if(NOT ${OPT2}) message(SEND_ERROR "Option ${OPT1} requires option ${OPT2}") endif() endif() endfunction() option_dependency_check(FOO_SDK_HELPERS FOO_PPUI) option_dependency_check(FOO_SAMPLE FOO_SDK_HELPERS) include(FileLists) if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") set(SHARED_LIBRARY sdk/foobar2000/shared/shared-x64.lib) else() set(SHARED_LIBRARY sdk/foobar2000/shared/shared-Win32.lib) endif() set( LIB_SOURCES ${PFC_SOURCES} ${PFC_HEADERS} ${SDK_SOURCES} ${SDK_HEADERS} ${COMPONENT_CLIENT_SOURCES} ) if(INCLUDE_WTL) set(LIB_SOURCES ${LIB_SOURCES} ${WTL_HEADERS}) endif() if(FOO_SDK_HELPERS) set(LIB_SOURCES ${LIB_SOURCES} ${SDK_HELPERS_SOURCES} ${SDK_HELPERS_HEADERS}) endif() if(FOO_PPUI) set(LIB_SOURCES ${LIB_SOURCES} ${PPUI_SOURCES} ${PPUI_HEADERS}) endif() add_library(foosdk STATIC ${LIB_SOURCES}) target_include_directories(foosdk PUBLIC sdk) target_include_directories(foosdk PUBLIC sdk/foobar2000) target_include_directories(foosdk PUBLIC ${WTL_INCLUDE_DIRS}) target_link_libraries(foosdk PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${SHARED_LIBRARY}") if(FOO_SAMPLE) add_library(foo_sample MODULE ${SAMPLE_SOURCES} ${SAMPLE_HEADERS}) target_link_libraries(foo_sample foosdk) endif() install(TARGETS foosdk ARCHIVE DESTINATION lib) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${SHARED_LIBRARY}" DESTINATION lib) install(FILES ${SHARED_HEADERS} DESTINATION include/foobar2000/shared) install(FILES ${PFC_HEADERS} DESTINATION include/pfc) install(FILES ${SDK_HEADERS} DESTINATION include/foobar2000/SDK) if(INCLUDE_WTL) install(FILES ${WTL_HEADERS} DESTINATION include) endif() if(FOO_SDK_HELPERS) install(FILES ${SDK_HELPERS_HEADERS} DESTINATION include/foobar2000/helpers) endif() if(FOO_PPUI) install(FILES ${PPUI_HEADERS} DESTINATION include/libPPUI) endif()
