diff --git a/.gitignore b/.gitignore index af5439d5..669f5c11 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,65 @@ CMakeSettings.json sphinx-venv **/__pycache__ *-env +3rdparty/CMakeFiles +3rdparty/cmake_install.cmake +3rdparty/Makefile +docs/docs +light/CMakeFiles +light/cmake_install.cmake +light/Makefile +light/light +light/lib* +vis/CMakeFiles +vis/cmake_install.cmake +vis/Makefile +vis/vis +vis/lib* +qbsp/Makefile +qbsp/CMakeFiles +qbsp/cmake_install.cmake +qbsp/qbsp +qbsp/lib* +bspinfo/Makefile +bspinfo/CMakeFiles +bspinfo/cmake_install.cmake +bspinfo/bspinfo +bspinfo/lib* +bsputil/Makefile +bsputil/CMakeFiles +bsputil/cmake_install.cmake +bsputil/bsputil +bsputil/lib* +maputil/Makefile +maputil/CMakeFiles +maputil/cmake_install.cmake +maputil/maputil +maputil/lib* +common/lib* +lightpreview/Makefile +lightpreview/CMakeFiles +lightpreview/cmake_install.cmake +lightpreview/lightpreview +lightpreview/lightpreview_autogen +lightpreview/lib* +tests/Makefile +tests/CMakeFiles +tests/cmake_install.cmake +tests/tests +tests/lib* +testmaps.hh +cmake_install.cmake +Makefile +CMakeCache.txt +CPackConfig.cmake +CPackSourceConfig.cmake +CTestTestConfig.cmake +CTestTestfile.cmake +docs/CTestTestConfig.cmake +docs/CTestTestfile.cmake +docs/cmake_install.cmake +docs/CMakeFiles/ +docs/CMakeCache.txt +lib/lib* +install_manifest.txt +_deps/ diff --git a/CMakeLists.txt b/CMakeLists.txt index e6cfeb5c..7b5bf758 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ cmake_policy(SET CMP0028 NEW) project (ericw-tools) +include(GNUInstallDirs) + list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/3rdparty/Catch2/extras") @@ -159,6 +161,8 @@ set(TEST_QUAKE2_MAP_EXPORT_DIR "" CACHE PATH "When running unit tests, export Qu set(TEST_HEXEN2_MAP_EXPORT_DIR "" CACHE PATH "When running unit tests, export Hexen 2 maps to this directory (useful for testing in game)") set(TEST_HALFLIFE_MAP_EXPORT_DIR "" CACHE PATH "When running unit tests, export Half-Life maps to this directory (useful for testing in game)") +option(ENABLE_PREFIX_INSTALL "Enable Prefix install" OFF) + add_subdirectory(3rdparty) add_subdirectory(common) add_subdirectory(bspinfo) @@ -191,7 +195,11 @@ if(NOT DISABLE_DOCS) add_subdirectory(docs) endif () +if(ENABLE_PREFIX_INSTALL) +install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) +else() install(FILES README.md DESTINATION .) +endif () #CPack configuration diff --git a/bspinfo/CMakeLists.txt b/bspinfo/CMakeLists.txt index c87320c9..4e20401c 100644 --- a/bspinfo/CMakeLists.txt +++ b/bspinfo/CMakeLists.txt @@ -9,4 +9,8 @@ add_custom_command(TARGET bspinfo POST_BUILD copy_mingw_dlls(bspinfo) add_loader_path_to_rpath(bspinfo) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS bspinfo RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS bspinfo RUNTIME DESTINATION .) +endif() diff --git a/bsputil/CMakeLists.txt b/bsputil/CMakeLists.txt index b4be5acd..7ed88d3d 100644 --- a/bsputil/CMakeLists.txt +++ b/bsputil/CMakeLists.txt @@ -17,4 +17,8 @@ add_custom_command(TARGET bsputil POST_BUILD copy_mingw_dlls(bsputil) add_loader_path_to_rpath(bsputil) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS bsputil RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS bsputil RUNTIME DESTINATION .) +endif() diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index a2556a66..ffb49905 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -14,5 +14,10 @@ if (Sphinx_FOUND) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating documentation with Sphinx") +if(ENABLE_PREFIX_INSTALL) + install(DIRECTORY ${SPHINX_BUILD}/ DESTINATION ${CMAKE_INSTALL_DOCDIR}) +else() install(DIRECTORY ${SPHINX_BUILD}/ DESTINATION doc) endif() + +endif() diff --git a/light/CMakeLists.txt b/light/CMakeLists.txt index 030bde65..f727d2e3 100644 --- a/light/CMakeLists.txt +++ b/light/CMakeLists.txt @@ -1,5 +1,5 @@ -option(SKIP_TBB_INSTALL "Skip TBB Library Installation" OFF) -option(SKIP_EMBREE_INSTALL "Skip Embree Library Installation" OFF) +option(SKIP_TBB_INSTALL "Skip TBB Library Installation" ON) +option(SKIP_EMBREE_INSTALL "Skip Embree Library Installation" ON) set(LIGHT_INCLUDES ../include/light/entities.hh @@ -97,7 +97,11 @@ if (embree_FOUND) endif() if(NOT SKIP_EMBREE_INSTALL) - install(FILES $ DESTINATION .) + if(ENABLE_PREFIX_INSTALL) + install(FILES $ DESTINATION ${CMAKE_INSTALL_LIBDIR}) + else() + install(FILES $ DESTINATION .) + endif() endif() # install TBB @@ -145,5 +149,10 @@ endif(embree_FOUND) copy_mingw_dlls(light) add_loader_path_to_rpath(light) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS light RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(FILES ../gpl_v3.txt DESTINATION ${CMAKE_INSTALL_DOCDIR}) +else() install(TARGETS light RUNTIME DESTINATION .) install(FILES ../gpl_v3.txt DESTINATION .) +endif() diff --git a/lightpreview/CMakeLists.txt b/lightpreview/CMakeLists.txt index 933eda65..997620f2 100644 --- a/lightpreview/CMakeLists.txt +++ b/lightpreview/CMakeLists.txt @@ -130,4 +130,8 @@ if (APPLE) apple_install_lib(Qt6::DBus "$/QtDBus.framework/Versions/A") endif () +if(ENABLE_PREFIX_INSTALL) +install(TARGETS lightpreview RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS lightpreview RUNTIME DESTINATION . BUNDLE DESTINATION .) +endif() diff --git a/maputil/CMakeLists.txt b/maputil/CMakeLists.txt index e92af350..a22a6bb0 100644 --- a/maputil/CMakeLists.txt +++ b/maputil/CMakeLists.txt @@ -30,4 +30,8 @@ add_custom_command(TARGET maputil POST_BUILD copy_mingw_dlls(maputil) add_loader_path_to_rpath(maputil) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS maputil RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS maputil RUNTIME DESTINATION .) +endif() diff --git a/qbsp/CMakeLists.txt b/qbsp/CMakeLists.txt index a67c74e0..156f3fe9 100644 --- a/qbsp/CMakeLists.txt +++ b/qbsp/CMakeLists.txt @@ -39,7 +39,11 @@ target_link_libraries(libqbsp common ${CMAKE_THREAD_LIBS_INIT} TBB::tbb TBB::tbb add_executable(qbsp main.cc) target_link_libraries(qbsp libqbsp) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS qbsp RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS qbsp RUNTIME DESTINATION .) +endif() # HACK: copy .dll dependencies add_custom_command(TARGET qbsp POST_BUILD diff --git a/vis/CMakeLists.txt b/vis/CMakeLists.txt index 3a51e09b..20ea3a00 100644 --- a/vis/CMakeLists.txt +++ b/vis/CMakeLists.txt @@ -29,4 +29,8 @@ add_custom_command(TARGET vis POST_BUILD copy_mingw_dlls(vis) add_loader_path_to_rpath(vis) +if(ENABLE_PREFIX_INSTALL) +install(TARGETS vis RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() install(TARGETS vis RUNTIME DESTINATION .) +endif()