@@ -2,44 +2,66 @@ cmake_minimum_required(VERSION 3.10)
22
33project (foosdk)
44
5- if (NOT WIN32 )
6- message (FATAL_ERROR "This project requires WIN32 target." )
5+ set (CMAKE_CXX_STANDARD 17)
6+
7+ list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR } /cmake" )
8+
9+ set (OS_WINDOWS OFF )
10+ set (OS_MAC OFF )
11+
12+ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
13+ set (OS_WINDOWS ON )
14+ include (SourcesWindows )
15+ elseif (CMAKE_SYSTEM_NAME STREQUAL Darwin)
16+ set (OS_MAC ON )
17+ include (SourcesMacOs )
18+ enable_language (OBJC )
19+ else ()
20+ message (FATAL_ERROR "Target OS is not Windows or Mac" )
721endif ()
822
9- option (FOO_PPUI "Include libPPUI (adds usage of ATL/WTL)" ON )
10- option (FOO_SDK_HELPERS "Include SDK helpers (requires FOO_PPUI)" ON )
11- option (FOO_STATIC_STDLIB "Use static standard libraries" OFF )
12- option (FOO_SYSTEM_WTL "Use system WTL library" OFF )
13- option (FOO_SAMPLE "Build foo_sample component" OFF )
23+ option (FOO_SAMPLE "Build foo_sample component" OFF )
24+ option (FOO_SDK_HELPERS "Include SDK helpers (requires FOO_PPUI on Windows)" ON )
25+
26+ if (OS_WINDOWS)
27+ option (FOO_PPUI "Include libPPUI (adds usage of ATL/WTL)" ON )
28+ option (FOO_SYSTEM_WTL "Use system WTL library" OFF )
29+ else ()
30+ set (FOO_PPUI OFF )
31+ endif ()
1432
15- set ( CMAKE_MODULE_PATH " ${ CMAKE_CURRENT_SOURCE_DIR } /cmake; ${ CMAKE_MODULE_PATH } " )
16- set ( CMAKE_CXX_FLAGS " ${ CMAKE_CXX_FLAGS } /MP /wd4302 /wd4838 /wd4996 /d2notypeopt" )
33+ if ( MSVC )
34+ option ( FOO_STATIC_STDLIB "Use static standard libraries" OFF )
1735
18- if (FOO_STATIC_STDLIB)
19- foreach (FLAGS CMAKE_CXX_FLAGS_DEBUG
36+ if (FOO_STATIC_STDLIB)
37+ foreach (FLAGS CMAKE_CXX_FLAGS_DEBUG
2038 CMAKE_CXX_FLAGS_RELEASE
2139 CMAKE_CXX_FLAGS_MINSIZEREL
2240 CMAKE_CXX_FLAGS_RELWITHDEBINFO )
2341 string (REPLACE "/MD" "/MT" ${FLAGS} "${${FLAGS} }" )
24- endforeach ()
42+ endforeach ()
43+ endif ()
44+
45+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } /MP /wd4302 /wd4838 /wd4996 /d2notypeopt" )
2546endif ()
2647
27- set (CMAKE_CXX_STANDARD 17)
28- set (WINVER 0x0601)
48+ set (INCLUDE_WTL OFF ) # WTL not WTF
2949
30- add_definitions (
31- -D_UNICODE -DUNICODE -DSTRICT -DWINVER=${WINVER} -D_WIN32_WINNT=${WINVER}
32- )
50+ if (OS_WINDOWS)
51+ set (WINVER 0x0601)
3352
34- set (INCLUDE_WTL OFF )
53+ add_definitions (
54+ -D_UNICODE -DUNICODE -DSTRICT -DWINVER=${WINVER} -D_WIN32_WINNT=${WINVER}
55+ )
3556
36- if (FOO_PPUI)
37- if (FOO_SYSTEM_WTL)
38- find_package (Wtl REQUIRED )
39- include_directories (${WTL_INCLUDE_DIRS} )
40- else ()
41- include_directories (wtl/Include )
42- set (INCLUDE_WTL ON )
57+ if (FOO_PPUI)
58+ if (FOO_SYSTEM_WTL)
59+ find_package (Wtl REQUIRED )
60+ include_directories (${WTL_INCLUDE_DIRS} )
61+ else ()
62+ include_directories (wtl/Include )
63+ set (INCLUDE_WTL ON )
64+ endif ()
4365 endif ()
4466endif ()
4567
@@ -51,22 +73,28 @@ function(option_dependency_check OPT1 OPT2)
5173 endif ()
5274endfunction ()
5375
54- option_dependency_check (FOO_SDK_HELPERS FOO_PPUI )
55- option_dependency_check (FOO_SAMPLE FOO_SDK_HELPERS )
76+ if (OS_WINDOWS)
77+ option_dependency_check (FOO_SDK_HELPERS FOO_PPUI )
78+ endif ()
5679
57- include ( FileLists )
80+ option_dependency_check ( FOO_SAMPLE FOO_SDK_HELPERS )
5881
59- if ("${CMAKE_SIZEOF_VOID_P } " STREQUAL "8" )
60- set (SHARED_LIBRARY sdk/foobar2000/shared/shared-x64.lib)
61- else ()
62- set (SHARED_LIBRARY sdk/foobar2000/shared/shared-Win32 .lib)
82+ set (SHARED_LIBRARY "" )
83+
84+ if (OS_WINDOWS)
85+ if ("${CMAKE_SIZEOF_VOID_P } " STREQUAL "8" )
86+ set (SHARED_LIBRARY sdk/foobar2000/shared/shared-x64.lib)
87+ else ()
88+ set (SHARED_LIBRARY sdk/foobar2000/shared/shared-Win32 .lib)
89+ endif ()
6390endif ()
6491
6592set (
6693 LIB_SOURCES
6794 ${PFC_SOURCES} ${PFC_HEADERS}
95+ ${SHARED_SOURCES} ${SHARED_HEADERS}
6896 ${SDK_SOURCES} ${SDK_HEADERS}
69- ${COMPONENT_CLIENT_SOURCES}
97+ ${COMPONENT_CLIENT_SOURCES} ${COMPONENT_CLIENT_HEADERS}
7098)
7199
72100if (INCLUDE_WTL)
@@ -88,11 +116,35 @@ add_library(foosdk STATIC ${LIB_SOURCES})
88116
89117if (FOO_SAMPLE)
90118 add_library (foo_sample MODULE ${SAMPLE_SOURCES} ${SAMPLE_HEADERS} )
91- target_link_libraries (foo_sample foosdk "${CMAKE_CURRENT_SOURCE_DIR } /${SHARED_LIBRARY} " )
119+
120+ target_include_directories (
121+ foo_sample PRIVATE
122+ sdk/foobar2000/foo_sample
123+ sdk/foobar2000/helpers-mac
124+ )
125+
126+ target_link_libraries (foo_sample foosdk )
127+
128+ if (SHARED_LIBRARY)
129+ target_link_libraries (foo_sample "${CMAKE_CURRENT_SOURCE_DIR } /${SHARED_LIBRARY} " )
130+ endif ()
131+
132+ if (OS_MAC)
133+ set_target_properties (
134+ foo_sample PROPERTIES
135+ BUNDLE ON
136+ BUNDLE_EXTENSION component
137+ )
138+
139+ target_link_libraries (foo_sample "-framework Cocoa" )
140+ endif ()
92141endif ()
93142
94143install (TARGETS foosdk ARCHIVE DESTINATION lib)
95- install (FILES "${CMAKE_CURRENT_SOURCE_DIR } /${SHARED_LIBRARY} " DESTINATION lib)
144+
145+ if (SHARED_LIBRARY)
146+ install (FILES "${CMAKE_CURRENT_SOURCE_DIR } /${SHARED_LIBRARY} " DESTINATION lib)
147+ endif ()
96148
97149install (FILES ${SHARED_HEADERS} DESTINATION include/foobar2000/shared)
98150install (FILES ${PFC_HEADERS} DESTINATION include/pfc)
0 commit comments