annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 cmake_minimum_required(VERSION 3.10)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 project(foosdk)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 if(NOT WIN32)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 message(FATAL_ERROR "This project requires WIN32 target.")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 option(FOO_PPUI "Include libPPUI (adds usage of ATL/WTL)" ON)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 option(FOO_SDK_HELPERS "Include SDK helpers (requires FOO_PPUI)" ON)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 option(FOO_STATIC_STDLIB "Use static standard libraries" OFF)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 option(FOO_SYSTEM_WTL "Use system WTL library" OFF)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 option(FOO_SAMPLE "Build foo_sample component" OFF)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4302 /wd4838 /wd4996 /d2notypeopt")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 if(FOO_STATIC_STDLIB)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 foreach(FLAGS CMAKE_CXX_FLAGS_DEBUG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 CMAKE_CXX_FLAGS_RELEASE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 CMAKE_CXX_FLAGS_MINSIZEREL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 CMAKE_CXX_FLAGS_RELWITHDEBINFO)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 string(REPLACE "/MD" "/MT" ${FLAGS} "${${FLAGS}}")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 endforeach()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 set(CMAKE_CXX_STANDARD 17)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 set(WINVER 0x0601)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 add_definitions(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 -D_UNICODE -DUNICODE -DSTRICT -DWINVER=${WINVER} -D_WIN32_WINNT=${WINVER}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 set(INCLUDE_WTL OFF)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 if(FOO_PPUI)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 if(FOO_SYSTEM_WTL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 find_package(Wtl REQUIRED)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 target_include_directories(${WTL_INCLUDE_DIRS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 else()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 set(WTL_INCLUDE_DIRS "wtl/Include")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 set(INCLUDE_WTL ON)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 function(option_dependency_check OPT1 OPT2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 if(${OPT1})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 if(NOT ${OPT2})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 message(SEND_ERROR "Option ${OPT1} requires option ${OPT2}")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 endfunction()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 option_dependency_check(FOO_SDK_HELPERS FOO_PPUI)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 option_dependency_check(FOO_SAMPLE FOO_SDK_HELPERS)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 include(FileLists)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 set(SHARED_LIBRARY sdk/foobar2000/shared/shared-x64.lib)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 else()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 set(SHARED_LIBRARY sdk/foobar2000/shared/shared-Win32.lib)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 set(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 LIB_SOURCES
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 ${PFC_SOURCES} ${PFC_HEADERS}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 ${SDK_SOURCES} ${SDK_HEADERS}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 ${COMPONENT_CLIENT_SOURCES}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 if(INCLUDE_WTL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 set(LIB_SOURCES ${LIB_SOURCES} ${WTL_HEADERS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 if(FOO_SDK_HELPERS)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 set(LIB_SOURCES ${LIB_SOURCES} ${SDK_HELPERS_SOURCES} ${SDK_HELPERS_HEADERS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 if(FOO_PPUI)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 set(LIB_SOURCES ${LIB_SOURCES} ${PPUI_SOURCES} ${PPUI_HEADERS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 add_library(foosdk STATIC ${LIB_SOURCES})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 target_include_directories(foosdk PUBLIC sdk)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 target_include_directories(foosdk PUBLIC sdk/foobar2000)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 target_include_directories(foosdk PUBLIC ${WTL_INCLUDE_DIRS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 target_link_libraries(foosdk PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/${SHARED_LIBRARY}")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 if(FOO_SAMPLE)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 add_library(foo_sample MODULE ${SAMPLE_SOURCES} ${SAMPLE_HEADERS})
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 target_link_libraries(foo_sample foosdk)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 install(TARGETS foosdk ARCHIVE DESTINATION lib)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${SHARED_LIBRARY}" DESTINATION lib)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 install(FILES ${SHARED_HEADERS} DESTINATION include/foobar2000/shared)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 install(FILES ${PFC_HEADERS} DESTINATION include/pfc)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 install(FILES ${SDK_HEADERS} DESTINATION include/foobar2000/SDK)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 if(INCLUDE_WTL)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 install(FILES ${WTL_HEADERS} DESTINATION include)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 if(FOO_SDK_HELPERS)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 install(FILES ${SDK_HELPERS_HEADERS} DESTINATION include/foobar2000/helpers)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 endif()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 if(FOO_PPUI)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 install(FILES ${PPUI_HEADERS} DESTINATION include/libPPUI)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 endif()