Skip to content

Commit a2cdcbe

Browse files
committed
Add CMake build support for Mac
1 parent 8966d7a commit a2cdcbe

4 files changed

Lines changed: 42 additions & 12 deletions

File tree

CMakeLists.txt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ add_custom_command(TARGET open-ephys POST_BUILD
8585
COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_SHARED_DIR}"
8686
COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_PLUGIN_DIR}"
8787
)
88+
elseif(APPLE)
89+
set(BIN_PLUGIN_DIR $<TARGET_FILE_DIR:open-ephys>/../PlugIns)
90+
add_custom_command(TARGET open-ephys POST_BUILD
91+
COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_PLUGIN_DIR}"
92+
)
8893
endif()
8994

9095
if(MSVC)
@@ -127,19 +132,18 @@ elseif(LINUX)
127132
)
128133

129134
elseif(APPLE)
130-
set_property(TARGET open-ephys PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BASE_BUILD_DIRECTORY}/XCode)
131135
set_target_properties(open-ephys PROPERTIES
132136
MACOSX_BUNDLE_NAME open-ephys
133137
MACOSX_BUNDLE_VERSION ${GUI_VERSION}
134138
MACOSX_BUNDLE_GUI_IDENTIFIER "org.open-ephys.gui"
135-
MACOSX_BUNDLE_ICON_FILE "${RESOURCES_DIRECTORY}/Build-files/Icon.icns"
139+
MACOSX_BUNDLE_ICON_FILE "Icon.icns"
136140
MACOSX_BUNDLE_INFO_PLIST "${RESOURCES_DIRECTORY}/Build-files/Info.plist.in"
137141
MACOSX_BUNDLE TRUE
138142
)
139143
target_compile_options(open-ephys PRIVATE -fPIC -Wpartial-availability -Wno-inconsistent-missing-override -rdynamic)
140144
set_property(TARGET open-ephys APPEND_STRING PROPERTY LINK_FLAGS "-fPIC -rdynamic")
141145
target_link_libraries(open-ephys dl)
142-
target_link_libraries(open-ephys
146+
target_link_libraries(open-ephys
143147
"-framework Accelerate"
144148
"-framework AudioToolbox"
145149
"-framework Carbon"
@@ -168,6 +172,17 @@ elseif(APPLE)
168172
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
169173
)
170174

175+
set(MAC_RESOURCE_FILES
176+
${RESOURCES_DIRECTORY}/Build-files/Icon.icns
177+
${RESOURCES_DIRECTORY}/Build-files/RecentFilesMenuTemplate.nib
178+
${RESOURCES_DIRECTORY}/DLLs/Mac/libokFrontPanel.dylib
179+
${RESOURCES_DIRECTORY}/Bitfiles/rhd2000.bit
180+
${RESOURCES_DIRECTORY}/Bitfiles/rhd2000_usb3.bit
181+
${RESOURCES_DIRECTORY}/Fonts/unibody-8.otf
182+
)
183+
set_source_files_properties(${MAC_RESOURCE_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
184+
target_sources(open-ephys PRIVATE ${MAC_RESOURCE_FILES})
185+
171186
else()
172187
message( FATAL_ERROR "Unsupported OS")
173188
endif()
@@ -186,4 +201,4 @@ foreach( src_file IN ITEMS ${SRC_FILES})
186201
endforeach()
187202

188203
#Add plugin build files
189-
#add_subdirectory(Plugins)
204+
add_subdirectory(Plugins)

Plugins/PluginRules.cmake

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,34 @@ elseif(LINUX)
2525
target_compile_options(${PLUGIN_NAME} PRIVATE -fPIC -rdynamic)
2626
target_compile_options(${PLUGIN_NAME} PRIVATE -O3) #enable optimization for linux debug
2727
elseif(APPLE)
28-
set_target_properties(${PLUGIN_NAME} PROPERTIES BUNDLE TRUE)
28+
set_target_properties(${PLUGIN_NAME} PROPERTIES
29+
BUNDLE TRUE
30+
MACOSX_BUNDLE_GUI_IDENTIFIER "org.open-ephys.plugin.${PLUGIN_NAME}"
31+
)
32+
2933
set_property(TARGET ${PLUGIN_NAME} APPEND_STRING PROPERTY LINK_FLAGS "-fPIC -rdynamic -undefined dynamic_lookup")
3034
target_link_libraries(${PLUGIN_NAME} dl)
31-
endif()
3235

33-
#copy files after build.
34-
if (MSVC OR LINUX)
35-
set_property(TARGET ${PLUGIN_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BIN_PLUGIN_DIR})
36-
set_property(TARGET ${PLUGIN_NAME} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${BIN_PLUGIN_DIR})
37-
elseif(APPLE)
38-
36+
set_target_properties(${PLUGIN_NAME} PROPERTIES
37+
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf
38+
XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES
39+
XCODE_ATTRIBUTE_GCC_WARN_ABOUT_RETURN_TYPE YES
40+
XCODE_ATTRIBUTE_GCC_WARN_CHECK_SWITCH_STATEMENTS YES
41+
XCODE_ATTRIBUTE_GCC_WARN_MISSING_PARENTHESES YES
42+
XCODE_ATTRIBUTE_GCC_WARN_NON_VIRTUAL_DESTRUCTOR YES
43+
XCODE_ATTRIBUTE_GCC_WARN_TYPECHECK_CALLS_TO_PRINTF YES
44+
XCODE_ATTRIBUTE_GCC_WARN_UNUSED_VARIABLE YES
45+
XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x"
46+
XCODE_ATTRIBUTE_GCC_C_LANGUAGE_STANDARD c99
47+
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
48+
)
3949
endif()
4050

51+
#output folders
52+
set_property(TARGET ${PLUGIN_NAME} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BIN_PLUGIN_DIR})
53+
set_property(TARGET ${PLUGIN_NAME} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${BIN_PLUGIN_DIR})
54+
55+
4156
#This function is to be called to organize filters in VisualStudio and XCode in plugins with subfilders
4257
function(plugin_create_filters)
4358
get_target_property(PLUGIN_SRC_FILES ${PLUGIN_NAME} SOURCES)
2.78 KB
Binary file not shown.

0 commit comments

Comments
 (0)