Mercurial > foo_out_sdl
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/foosdk/CMakeLists.txt Mon Jan 05 02:15:46 2026 -0500 @@ -0,0 +1,113 @@ +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()
