@@ -12,6 +12,9 @@ foreach(_v ${VERSION_LIST})
1212endforeach ()
1313string (REPLACE "." "," GUI_VERSION_COMMA ${GUI_VERSION} )
1414
15+ set (CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
16+ set (CMAKE_OSX_SYSROOT "" )
17+
1518project (open-ephys-GUI)
1619if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" )
1720 set (LINUX 1)
@@ -38,42 +41,47 @@ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS
3841 JUCE_APP_VERSION=${GUI_VERSION}
3942 JUCE_APP_VERSION_HEX=${GUI_VERSION_HEX}
4043 )
41-
44+
45+ if (APPLE )
46+ set (JUCE_FILES_EXTENSION mm)
47+ else ()
48+ set (JUCE_FILES_EXTENSION cpp)
49+ endif ()
4250
4351
4452#create executable and add JUCE components
45- add_executable (open-ephys
53+ add_executable (open-ephys
4654 ${JUCE_DIRECTORY} /AppConfig.h
4755 ${JUCE_DIRECTORY} /JuceHeader.h
4856 ${JUCE_DIRECTORY} /BinaryData.h
4957 ${JUCE_DIRECTORY} /BinaryData.cpp
50- ${JUCE_DIRECTORY} /juce_audio_basics.cpp
51- ${JUCE_DIRECTORY} /juce_audio_devices.cpp
52- ${JUCE_DIRECTORY} /juce_audio_formats.cpp
53- ${JUCE_DIRECTORY} /juce_audio_processors.cpp
54- ${JUCE_DIRECTORY} /juce_audio_utils.cpp
55- ${JUCE_DIRECTORY} /juce_core.cpp
56- ${JUCE_DIRECTORY} /juce_cryptography.cpp
57- ${JUCE_DIRECTORY} /juce_data_structures.cpp
58- ${JUCE_DIRECTORY} /juce_events.cpp
59- ${JUCE_DIRECTORY} /juce_graphics.cpp
60- ${JUCE_DIRECTORY} /juce_gui_basics.cpp
61- ${JUCE_DIRECTORY} /juce_gui_extra.cpp
62- ${JUCE_DIRECTORY} /juce_opengl.cpp
63- ${JUCE_DIRECTORY} /juce_video.cpp
58+ ${JUCE_DIRECTORY} /juce_audio_basics.${JUCE_FILES_EXTENSION}
59+ ${JUCE_DIRECTORY} /juce_audio_devices.${JUCE_FILES_EXTENSION}
60+ ${JUCE_DIRECTORY} /juce_audio_formats.${JUCE_FILES_EXTENSION}
61+ ${JUCE_DIRECTORY} /juce_audio_processors.${JUCE_FILES_EXTENSION}
62+ ${JUCE_DIRECTORY} /juce_audio_utils.${JUCE_FILES_EXTENSION}
63+ ${JUCE_DIRECTORY} /juce_core.${JUCE_FILES_EXTENSION}
64+ ${JUCE_DIRECTORY} /juce_cryptography.${JUCE_FILES_EXTENSION}
65+ ${JUCE_DIRECTORY} /juce_data_structures.${JUCE_FILES_EXTENSION}
66+ ${JUCE_DIRECTORY} /juce_events.${JUCE_FILES_EXTENSION}
67+ ${JUCE_DIRECTORY} /juce_graphics.${JUCE_FILES_EXTENSION}
68+ ${JUCE_DIRECTORY} /juce_gui_basics.${JUCE_FILES_EXTENSION}
69+ ${JUCE_DIRECTORY} /juce_gui_extra.${JUCE_FILES_EXTENSION}
70+ ${JUCE_DIRECTORY} /juce_opengl.${JUCE_FILES_EXTENSION}
71+ ${JUCE_DIRECTORY} /juce_video.${JUCE_FILES_EXTENSION}
6472 ${RESOURCES_DIRECTORY} /Build-files/resources.rc
6573 )
6674
6775
6876
6977target_include_directories (open-ephys PRIVATE ${JUCE_DIRECTORY} ${JUCE_DIRECTORY} /modules )
7078target_compile_features (open-ephys PUBLIC cxx_auto_type cxx_generalized_initializers )
71-
79+
7280#output folders and specific options
7381if (MSVC OR LINUX )
7482set (BIN_PLUGIN_DIR $<TARGET_FILE_DIR :open -ephys >/plugins)
7583set (BIN_SHARED_DIR $<TARGET_FILE_DIR :open -ephys >/shared)
76- add_custom_command (TARGET open-ephys POST_BUILD
84+ add_custom_command (TARGET open-ephys POST_BUILD
7785 COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_SHARED_DIR} "
7886 COMMAND ${CMAKE_COMMAND} -E make_directory "${BIN_PLUGIN_DIR} "
7987 )
@@ -91,12 +99,12 @@ if(MSVC)
9199 endif ()
92100 set (_copysrc "${RESOURCES_DIRECTORY} /DLLs/${DLLDIR} /*.dll" )
93101 file (GLOB _dllfiles ${_copysrc} )
94- add_custom_command (TARGET open-ephys POST_BUILD
102+ add_custom_command (TARGET open-ephys POST_BUILD
95103 COMMAND ${CMAKE_COMMAND} -E copy ${_dllfiles} ${BIN_SHARED_DIR}
96104 )
97105elseif (LINUX )
98106 if (${CMAKE_BUILD_TYPE} STREQUAL "Debug" )
99-
107+
100108 elseif (${CMAKE_BUILD_TYPE} STREQUAL "Release" )
101109 else ()
102110 message (FATAL_ERROR "Invalid build type" )
@@ -111,13 +119,13 @@ elseif(LINUX)
111119 target_compile_options (open-ephys PRIVATE -fPIC -rdynamic -fvisibility=hidden )
112120 target_compile_options (open-ephys PRIVATE -O3 ) #enable optimization for linux debug
113121 set_property (TARGET open-ephys PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BASE_BUILD_DIRECTORY} /${CMAKE_BUILD_TYPE} )
114-
122+
115123 set (_copysrc "${RESOURCES_DIRECTORY} /DLLs/Linux/*.so" )
116124 file (GLOB _dllfiles ${_copysrc} )
117- add_custom_command (TARGET open-ephys POST_BUILD
125+ add_custom_command (TARGET open-ephys POST_BUILD
118126 COMMAND ${CMAKE_COMMAND} -E copy ${_dllfiles} ${BIN_SHARED_DIR}
119127 )
120-
128+
121129elseif (APPLE )
122130 set_property (TARGET open-ephys PROPERTY RUNTIME_OUTPUT_DIRECTORY ${BASE_BUILD_DIRECTORY} /XCode )
123131 set_target_properties (open-ephys PROPERTIES
@@ -131,11 +139,35 @@ elseif(APPLE)
131139 target_compile_options (open-ephys PRIVATE -fPIC -Wpartial-availability -Wno-inconsistent-missing-override -rdynamic )
132140 set_property (TARGET open-ephys APPEND_STRING PROPERTY LINK_FLAGS "-fPIC -rdynamic" )
133141 target_link_libraries (open-ephys dl )
134-
142+ target_link_libraries (open-ephys
143+ "-framework Accelerate"
144+ "-framework AudioToolbox"
145+ "-framework Carbon"
146+ "-framework Cocoa"
147+ "-framework CoreAudio"
148+ "-framework CoreMIDI"
149+ "-framework DiscRecording"
150+ "-framework IOKit"
151+ "-framework OpenGL"
152+ "-framework QTKit"
153+ "-framework QuartzCore"
154+ "-framework WebKit"
155+ )
156+
135157 set_target_properties (open-ephys PROPERTIES
136158 XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf
159+ XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES
160+ XCODE_ATTRIBUTE_GCC_WARN_ABOUT_RETURN_TYPE YES
161+ XCODE_ATTRIBUTE_GCC_WARN_CHECK_SWITCH_STATEMENTS YES
162+ XCODE_ATTRIBUTE_GCC_WARN_MISSING_PARENTHESES YES
163+ XCODE_ATTRIBUTE_GCC_WARN_NON_VIRTUAL_DESTRUCTOR YES
164+ XCODE_ATTRIBUTE_GCC_WARN_TYPECHECK_CALLS_TO_PRINTF YES
165+ XCODE_ATTRIBUTE_GCC_WARN_UNUSED_VARIABLE YES
166+ XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x"
167+ XCODE_ATTRIBUTE_GCC_C_LANGUAGE_STANDARD c99
168+ XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
137169 )
138-
170+
139171else ()
140172 message ( FATAL_ERROR "Unsupported OS" )
141173endif ()
@@ -154,4 +186,4 @@ foreach( src_file IN ITEMS ${SRC_FILES})
154186endforeach ()
155187
156188#Add plugin build files
157- add_subdirectory (Plugins )
189+ # add_subdirectory(Plugins)
0 commit comments