filetypes.cpp filetypes.h
filters.cpp filters.h
findtexturedialog.cpp findtexturedialog.h
- glwidget.cpp glwidget.h
grid.cpp grid.h
groupdialog.cpp groupdialog.h
gtkdlgs.cpp gtkdlgs.h
xmlstuff.cpp xmlstuff.h
xywindow.cpp xywindow.h
)
+
if (WIN32)
list(APPEND RADIANTLIST multimon.cpp multimon.h)
-endif()
+endif ()
-add_executable(radiant WIN32 radiant.rc ${RADIANTLIST})
-target_link_libraries(radiant
+radiant_tool(${RADIANT_BASENAME} WIN32 radiant.rc ${RADIANTLIST})
+add_dependencies(${RADIANT_BASENAME} modules)
+target_link_libraries(${RADIANT_BASENAME}
${CMAKE_DL_LIBS}
${LIBXML2_LIBRARIES}
${OPENGL_gl_LIBRARY}
- ${${GTK_NS}_LIBRARIES}
+ ${GTK${GTK_TARGET}_LIBRARIES}
${GTKGL_LIBRARIES}
includes
cmdlib
uilib
xmllib
)
+
if (X11_LIBRARIES)
- target_link_libraries(radiant ${X11_LIBRARIES})
+ target_link_libraries(${RADIANT_BASENAME} ${X11_LIBRARIES})
endif ()
-copy_dlls(radiant)
+# PIE executables were wrongly recognized as shared libraries on Linux
+# because of a mistake in the mime-type library.
+# Because of that it was not possible to launch such executables from
+# the file browser.
+#
+# While the problem is fixed upstream, most distributions still ship
+# with a faulty mime-type library and may do for a long time.
+#
+# See: https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/11
+#
+# It may produce such warning though at strip time:
+# warning: allocated section `.dynstr' not in segment
+# and produce an unusable binary, better not strip when using this hack.
+#
+# This hack is only wanted for release build and
+# when NetRadiant is not installed system-wide.
+if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux"
+ AND "${CMAKE_BUILD_TYPE}" STREQUAL "Release"
+ AND NOT FHS_INSTALL)
+ target_link_libraries(${RADIANT_BASENAME} -no-pie)
+endif()
+
+copy_dlls(${RADIANT_BASENAME})