@@ -47,19 +47,26 @@ IF(APPLE)
4747 )
4848 ENDIF ()
4949
50- LIST (APPEND SCIRunMain_SOURCES "${APPLICATION_OSX_ICON_FULL_PATH} " )
51- SET_SOURCE_FILES_PROPERTIES (${APPLICATION_OSX_ICON_FULL_PATH}
52- PROPERTIES
53- MACOSX_PACKAGE_LOCATION Resources)
54- SET (MACOSX_BUNDLE_ICON_FILE "${APPLICATION_OSX_ICON} " )
50+ IF (BUILD_HEADLESS)
51+ ADD_EXECUTABLE (${APPLICATION_NAME} ${SCIRunMain_SOURCES} )
52+ ELSE ()
53+ LIST (APPEND SCIRunMain_SOURCES "${APPLICATION_OSX_ICON_FULL_PATH} " )
54+ SET_SOURCE_FILES_PROPERTIES (${APPLICATION_OSX_ICON_FULL_PATH}
55+ PROPERTIES
56+ MACOSX_PACKAGE_LOCATION Resources)
57+ SET (MACOSX_BUNDLE_ICON_FILE "${APPLICATION_OSX_ICON} " )
5558
56- ADD_EXECUTABLE (${APPLICATION_NAME} MACOSX_BUNDLE ${SCIRunMain_SOURCES} )
59+ ADD_EXECUTABLE (${APPLICATION_NAME} MACOSX_BUNDLE ${SCIRunMain_SOURCES} )
60+ ENDIF ()
5761
5862ELSEIF (WIN32 )
63+ # TODO: windows headless mode?
64+
5965 SET (SCIRunMain_SOURCES ${SCIRunMain_SOURCES} "${APPLICATION_WINDOWS_RC} " )
6066 IF (SCIRUN_SHOW_CONSOLE)
6167 ADD_DEFINITIONS (-DSCIRUN_SHOW_CONSOLE=1)
6268 ENDIF ()
69+
6370 ADD_EXECUTABLE (${APPLICATION_NAME} WIN32 ${SCIRunMain_SOURCES} )
6471
6572 # TODO: probably need this for Xcode
@@ -72,6 +79,13 @@ ELSEIF(WIN32)
7279 ARGS -E copy_directory
7380 ${SCIRun_BINARY_DIR} /Shaders
7481 ${SCIRun_BINARY_DIR} /$<CONFIGURATION >/Shaders
82+ )
83+ ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
84+ POST_BUILD
85+ COMMAND ${CMAKE_COMMAND}
86+ ARGS -E copy_directory
87+ ${SCIRun_BINARY_DIR} /Fonts
88+ ${SCIRun_BINARY_DIR} /$<CONFIGURATION >/Fonts
7589 )
7690 ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
7791 POST_BUILD
@@ -90,7 +104,11 @@ TARGET_LINK_LIBRARIES(${APPLICATION_NAME}
90104 Core_Util_Legacy
91105)
92106
93- IF (NOT BUILD_HEADLESS)
107+ IF (BUILD_HEADLESS)
108+ TARGET_LINK_LIBRARIES (${APPLICATION_NAME}
109+ Core_ConsoleApplication
110+ )
111+ ELSE ()
94112 TARGET_LINK_LIBRARIES (${APPLICATION_NAME}
95113 Interface_Application
96114 )
@@ -102,11 +120,16 @@ IF(BUILD_WITH_PYTHON)
102120 )
103121ENDIF ()
104122
105- OPTION (DISABLE_MAC_BUNDLE "Disable Mac bundle" OFF )
106- MARK_AS_ADVANCED (DISABLE_MAC_BUNDLE )
123+ OPTION (BUILD_BUNDLE "Build Mac bundle" ON )
124+ MARK_AS_ADVANCED (BUILD_BUNDLE )
107125
108- IF (APPLE )
109- SET (BUILD_BUNDLE NOT ${DISABLE_MAC_BUNDLE} )
126+ IF (BUILD_HEADLESS)
127+ SET (BUILD_BUNDLE OFF )
128+ ENDIF ()
129+
130+ MESSAGE (STATUS "Build Mac bundle: ${BUILD_BUNDLE} " )
131+
132+ IF (APPLE AND BUILD_BUNDLE)
110133
111134 IF (${MACDEPLOYQT} MATCHES "NOTFOUND" OR ${SED} MATCHES "NOTFOUND" OR ${AWK} MATCHES "NOTFOUND" )
112135 SET (BUILD_BUNDLE FALSE )
@@ -131,6 +154,7 @@ IF(APPLE AND BUILD_BUNDLE)
131154 COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${SCIRUN_LIB_DIR} ${APP_PATH} /Frameworks
132155 WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
133156 )
157+
134158 IF (BUILD_WITH_PYTHON)
135159 SET (VERSION_PATH Versions/${SCI_PYTHON_VERSION_SHORT} )
136160 SET (FRAMEWORK_PATH Frameworks/Python.framework )
@@ -149,19 +173,19 @@ IF(APPLE AND BUILD_BUNDLE)
149173 @executable_path/../${FRAMEWORK_PATH} /${VERSION_PATH} /Python
150174 ${APP_PATH} /MacOS/${APPLICATION_NAME}
151175 WORKING_DIRECTORY ${SCIRun_BINARY_DIR} )
176+
152177 SET (SCIRUN_LIBS "Core_Application"
153178 "Core_Python"
154179 "SCIRunPythonAPI"
180+ "Interface_Application"
155181 "Engine_Network"
182+ "Interface_Modules_Factory"
183+ "Interface_Modules_Render"
184+ "Interface_Modules_Python"
156185 "Core_ConsoleApplication"
186+ "Modules_Factory"
187+ "Modules_Python"
157188 )
158- IF (BUILD_HEADLESS)
159- LIST (APPEND SCIRUN_LIBS
160- "Interface_Application"
161- "Interface_Modules_Factory"
162- "Interface_Modules_Render"
163- )
164- ENDIF ()
165189
166190 FOREACH (lib ${SCIRUN_LIBS} )
167191 ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
@@ -171,22 +195,72 @@ IF(APPLE AND BUILD_BUNDLE)
171195 ${APP_PATH} /Frameworks/${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX}
172196 WORKING_DIRECTORY ${SCIRun_BINARY_DIR} )
173197 ENDFOREACH ()
198+ ENDIF ()
174199
200+ ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
201+ POST_BUILD
202+ # configure Qt libs
203+ # Note: macdeployqt also processes SCIRun dynamically linked libraries under the lib directory
204+ COMMAND ${MACDEPLOYQT} ${APPLICATION_NAME} .app -verbose=${MACDEPLOYQT_OUTPUT_LEVEL}
205+ COMMAND ${CMAKE_COMMAND} ARGS -E copy ${SCIRun_SOURCE_DIR} /CMake/qt.conf ${APPLICATION_NAME} .app/Contents/Resources
206+ COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
207+ ${SCIRun_BINARY_DIR} /Shaders ${APP_PATH} /MacOS/Shaders
208+ COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
209+ ${SCIRun_BINARY_DIR} /Assets ${APP_PATH} /MacOS/Assets
210+ COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
211+ ${SCIRun_BINARY_DIR} /Fonts ${APP_PATH} /MacOS/Fonts
212+ WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
213+ )
214+
215+ INSTALL (TARGETS ${APPLICATION_NAME} RUNTIME DESTINATION . BUNDLE DESTINATION . )
216+
217+ ELSEIF (APPLE )
218+
219+ MESSAGE (STATUS "Building Mac OS X headless app" )
220+ MESSAGE (STATUS "CMAKE_CFG_INTDIR=${CMAKE_CFG_INTDIR} " )
221+ SET (APP_PATH ${CMAKE_CFG_INTDIR} )
222+
223+ IF (${CMAKE_GENERATOR} MATCHES "Xcode" )
224+ SET (SCIRUN_LIB_DIR ${SCIRun_BINARY_DIR} /lib/$<CONFIGURATION >)
225+ ELSE ()
226+ SET (SCIRUN_LIB_DIR ${SCIRun_BINARY_DIR} /lib)
227+ ENDIF ()
228+
229+ IF (BUILD_WITH_PYTHON)
230+ SET (VERSION_PATH Versions/${SCI_PYTHON_VERSION_SHORT} )
231+ SET (FRAMEWORK_PATH Python.framework )
232+ SET (PYTHON_PATH ${APP_PATH} /${FRAMEWORK_PATH} /${VERSION_PATH} )
175233 ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
176234 POST_BUILD
177- # configure Qt libs
178- # Note: macdeployqt also processes SCIRun dynamically linked libraries under the lib directory
179- COMMAND ${MACDEPLOYQT} ${APPLICATION_NAME} .app -verbose=${MACDEPLOYQT_OUTPUT_LEVEL}
180- COMMAND ${CMAKE_COMMAND} ARGS -E copy ${SCIRun_SOURCE_DIR} /CMake/qt.conf ${APPLICATION_NAME} .app/Contents/Resources
181- COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
182- ${SCIRun_BINARY_DIR} /Shaders ${APP_PATH} /MacOS/Shaders
183- COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
184- ${SCIRun_BINARY_DIR} /Assets ${APP_PATH} /MacOS/Assets
185- WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
235+ # TODO: when CMake 2.8 support is dropped, and CMP0042 new is enabled, change to @rpath
236+ COMMAND ${CMAKE_COMMAND} ARGS -E chdir ${APP_PATH} tar xf ${SCI_PYTHON_FRAMEWORK_ARCHIVE}
237+ COMMAND chmod u+w ${PYTHON_PATH} /Python
238+ COMMAND install_name_tool -id Python ${PYTHON_PATH} /Python
239+ COMMAND install_name_tool -change ${SCI_PYTHON_FRAMEWORK} /${VERSION_PATH} /Python
240+ @executable_path/../${FRAMEWORK_PATH} /${VERSION_PATH} /Python
241+ ${APP_PATH} /${APPLICATION_NAME}
242+ COMMAND install_name_tool -change ${SCI_PYTHON_FRAMEWORK} /${VERSION_PATH} /Python
243+ @executable_path/../${FRAMEWORK_PATH} /${VERSION_PATH} /Python
244+ ${APP_PATH} /${APPLICATION_NAME}
245+ WORKING_DIRECTORY ${SCIRun_BINARY_DIR} )
246+
247+ SET (SCIRUN_LIBS "Core_Application"
248+ "Core_Python"
249+ "SCIRunPythonAPI"
250+ "Engine_Network"
251+ "Core_ConsoleApplication"
252+ "Modules_Factory"
253+ "Modules_Python"
186254 )
187- ENDIF ()
188255
189- INSTALL (TARGETS ${APPLICATION_NAME} RUNTIME DESTINATION . BUNDLE DESTINATION . )
256+ FOREACH (lib ${SCIRUN_LIBS} )
257+ ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
258+ POST_BUILD
259+ COMMAND echo "install_name_tool -change ${SCI_PYTHON_FRAMEWORK} /${VERSION_PATH} /Python @executable_path/../${FRAMEWORK_PATH} /${VERSION_PATH} /Python ${SCIRUN_LIB_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX} "
260+ COMMAND install_name_tool -change ${SCI_PYTHON_FRAMEWORK} /${VERSION_PATH} /Python @executable_path/../${FRAMEWORK_PATH} /${VERSION_PATH} /Python ${SCIRUN_LIB_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}${lib}${CMAKE_SHARED_LIBRARY_SUFFIX}
261+ WORKING_DIRECTORY ${SCIRun_BINARY_DIR} )
262+ ENDFOREACH ()
263+ ENDIF ()
190264
191265ELSE ()
192266
@@ -215,8 +289,16 @@ ELSE()
215289 ${QT_BINARY_DIR} /${QTNETWORKNAME} .dll
216290 DESTINATION bin)
217291
292+ IF (BUILD_WITH_PYTHON)
293+ INSTALL (PROGRAMS
294+ ${SCI_PYTHON_DLL_PATH}
295+ DESTINATION bin)
296+ INSTALL (DIRECTORY "${SCI_PYTHON_MODULE_LIBRARY_PATH} /" DESTINATION bin/${PYTHON_MODULE_SEARCH_PATH} )
297+ ENDIF ()
298+
218299 INSTALL (DIRECTORY "${SCIRun_BINARY_DIR} /Shaders" DESTINATION bin USE_SOURCE_PERMISSIONS)
219300 INSTALL (DIRECTORY "${SCIRun_BINARY_DIR} /Assets" DESTINATION bin USE_SOURCE_PERMISSIONS)
301+ INSTALL (DIRECTORY "${SCIRun_BINARY_DIR} /Assets" DESTINATION bin USE_SOURCE_PERMISSIONS)
220302 ELSE ()
221303 IF (BUILD_WITH_PYTHON)
222304 ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
@@ -227,7 +309,6 @@ ELSE()
227309 IF (SCI_PYTHON_64BIT_MODULE_LIBRARY_PATH AND EXISTS ${SCI_PYTHON_64BIT_MODULE_LIBRARY_PATH} )
228310 ADD_CUSTOM_COMMAND (TARGET ${APPLICATION_NAME}
229311 POST_BUILD
230- COMMAND echo "${CMAKE_COMMAND} ARGS -E copy_directory ${SCI_PYTHON_64BIT_MODULE_LIBRARY_PATH} ${PYTHON_MODULE_SEARCH_PATH} "
231312 COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${SCI_PYTHON_64BIT_MODULE_LIBRARY_PATH} ${PYTHON_MODULE_SEARCH_PATH}
232313 WORKING_DIRECTORY ${SCIRun_BINARY_DIR} )
233314 ENDIF ()
0 commit comments