- # -*- cmake -*-
- #
- # Compared to other libraries, compiling this one is a mess. The
- # reason is that we have several source files that have two different
- # sets of behaviour, depending on whether they're intended to be part
- # of the viewer or the map server.
- #
- # Unfortunately, the affected code is a rat's nest of #ifdefs, so it's
- # easier to play compilation tricks than to actually fix the problem.
- project(llwindow)
- include(00-Common)
- include(DirectX)
- include(DragDrop)
- include(LLCommon)
- include(LLImage)
- include(LLMath)
- include(LLRender)
- include(LLVFS)
- include(LLWindow)
- include(LLXML)
- include(UI)
- include_directories(
- ${LLCOMMON_INCLUDE_DIRS}
- ${LLIMAGE_INCLUDE_DIRS}
- ${LLMATH_INCLUDE_DIRS}
- ${LLRENDER_INCLUDE_DIRS}
- ${LLVFS_INCLUDE_DIRS}
- ${LLWINDOW_INCLUDE_DIRS}
- ${LLXML_INCLUDE_DIRS}
- )
- set(llwindow_SOURCE_FILES
- llkeyboard.cpp
- llwindowheadless.cpp
- llwindowcallbacks.cpp
- )
- set(llwindow_HEADER_FILES
- CMakeLists.txt
- llkeyboard.h
- llwindowheadless.h
- llwindowcallbacks.h
- )
- set(viewer_SOURCE_FILES
- llwindow.cpp
- llmousehandler.cpp
- )
- set(viewer_HEADER_FILES
- llwindow.h
- llpreeditor.h
- llmousehandler.h
- )
- # Libraries on which this library depends, needed for Linux builds
- # Sort by high-level to low-level
- if (NOT LINUX OR VIEWER)
- set(llwindow_LINK_LIBRARIES
- ${UI_LIBRARIES} # for GTK
- ${SDL_LIBRARY}
- )
- endif (NOT LINUX OR VIEWER)
- if (DARWIN)
- list(APPEND llwindow_SOURCE_FILES
- llkeyboardmacosx.cpp
- llwindowmacosx.cpp
- llwindowmacosx-objc.mm
- )
- list(APPEND llwindow_HEADER_FILES
- llkeyboardmacosx.h
- llwindowmacosx.h
- llwindowmacosx-objc.h
- )
- # We use a bunch of deprecated system APIs.
- set_source_files_properties(
- llkeyboardmacosx.cpp
- llwindowmacosx.cpp
- PROPERTIES
- COMPILE_FLAGS "-Wno-deprecated-declarations -fpascal-strings"
- )
- endif (DARWIN)
- if (LINUX AND VIEWER)
- list(APPEND viewer_SOURCE_FILES
- llkeyboardsdl.cpp
- llwindowsdl.cpp
- )
- list(APPEND viewer_HEADER_FILES
- llkeyboardsdl.h
- llwindowsdl.h
- )
- endif (LINUX AND VIEWER)
- if (WINDOWS)
- list(APPEND llwindow_SOURCE_FILES
- llwindowwin32.cpp
- lldxhardware.cpp
- llkeyboardwin32.cpp
- lldragdropwin32.cpp
- )
- list(APPEND llwindow_HEADER_FILES
- llwindowwin32.h
- lldxhardware.h
- llkeyboardwin32.h
- lldragdropwin32.h
- )
- list(APPEND llwindow_LINK_LIBRARIES
- comdlg32 # Common Dialogs for ChooseColor
- ole32
- )
- endif (WINDOWS)
- if (SOLARIS)
- list(APPEND llwindow_SOURCE_FILES
- llwindowsolaris.cpp
- )
- list(APPEND llwindow_HEADER_FILES
- llwindowsolaris.h
- )
- endif (SOLARIS)
- set_source_files_properties(${llwindow_HEADER_FILES}
- PROPERTIES HEADER_FILE_ONLY TRUE)
- if (SERVER AND NOT WINDOWS AND NOT DARWIN)
- set(server_SOURCE_FILES
- llwindowmesaheadless.cpp
- )
- set(server_HEADER_FILES
- llwindowmesaheadless.h
- )
- copy_server_sources(
- llwindow
- )
- set_source_files_properties(
- ${server_SOURCE_FILES}
- PROPERTIES
- COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1"
- )
- add_library (llwindowheadless
- ${llwindow_SOURCE_FILES}
- ${server_SOURCE_FILES}
- )
- target_link_libraries (llwindowheadless ${llwindow_LINK_LIBRARIES})
- endif (SERVER AND NOT WINDOWS AND NOT DARWIN)
- if (llwindow_HEADER_FILES)
- list(APPEND llwindow_SOURCE_FILES ${llwindow_HEADER_FILES})
- endif (llwindow_HEADER_FILES)
- list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES})
- if (VIEWER)
- add_library (llwindow
- ${llwindow_SOURCE_FILES}
- ${viewer_SOURCE_FILES}
- )
- target_link_libraries (llwindow ${llwindow_LINK_LIBRARIES})
- endif (VIEWER)