Browse Source

Make OS-check for install/cpack cmake targets more explicit

Previously there was an early return, trying to match the same thing.
Making this explicit allows me to more easily add a linux version.
Bart van Strien 1 year ago
parent
commit
83f1a926bf
1 changed files with 126 additions and 128 deletions
  1. 126 128
      CMakeLists.txt

+ 126 - 128
CMakeLists.txt

@@ -2042,142 +2042,140 @@ if(NOT ANDROID)
 	endif()
 endif()
 
-if (NOT MSVC OR MINGW)
-	return()
-endif()
-
-###################################
-# Version
-###################################
-
-# Extract version.h contents.
-file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/version.h LOVE_VERSION_FILE_CONTENTS)
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
+	###################################
+	# Version
+	###################################
+
+	# Extract version.h contents.
+	file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/version.h LOVE_VERSION_FILE_CONTENTS)
+
+	# Extract one of LOVE_VERSION_MAJOR/MINOR/REV.
+	function(match_version ARG_STRING OUT_VAR)
+		string(REGEX MATCH "VERSION_${ARG_STRING} = ([0-9]+);" TMP_VER "${LOVE_VERSION_FILE_CONTENTS}")
+		string(REGEX MATCH "[0-9]+" TMP_VER "${TMP_VER}")
+		set(${OUT_VAR} ${TMP_VER} PARENT_SCOPE)
+	endfunction()
 
-# Extract one of LOVE_VERSION_MAJOR/MINOR/REV.
-function(match_version ARG_STRING OUT_VAR)
-	string(REGEX MATCH "VERSION_${ARG_STRING} = ([0-9]+);" TMP_VER "${LOVE_VERSION_FILE_CONTENTS}")
-	string(REGEX MATCH "[0-9]+" TMP_VER "${TMP_VER}")
-	set(${OUT_VAR} ${TMP_VER} PARENT_SCOPE)
-endfunction()
+	match_version("MAJOR" LOVE_VERSION_MAJOR)
+	match_version("MINOR" LOVE_VERSION_MINOR)
+	match_version("REV" LOVE_VERSION_REV)
 
-match_version("MAJOR" LOVE_VERSION_MAJOR)
-match_version("MINOR" LOVE_VERSION_MINOR)
-match_version("REV" LOVE_VERSION_REV)
+	set(LOVE_VERSION_STR "${LOVE_VERSION_MAJOR}.${LOVE_VERSION_MINOR}")
 
-set(LOVE_VERSION_STR "${LOVE_VERSION_MAJOR}.${LOVE_VERSION_MINOR}")
+	message(STATUS "Version: ${LOVE_VERSION_STR}")
 
-message(STATUS "Version: ${LOVE_VERSION_STR}")
+	###################################
+	# CPack
+	###################################
+	install(TARGETS ${LOVE_EXE_NAME} ${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME} RUNTIME DESTINATION .)
 
-###################################
-# CPack
-###################################
-install(TARGETS ${LOVE_EXE_NAME} ${LOVE_CONSOLE_EXE_NAME} ${LOVE_LIB_NAME} RUNTIME DESTINATION .)
+	# Our install script (and NSIS) doesn't fully support Windows ARM64 yet.
+	if(MEGA_ARM64)
+		set(CPACK_GENERATOR ZIP)
+		set(CPACK_SYSTEM_NAME woa64)
+	else()
+		set(CPACK_GENERATOR ZIP NSIS)
+	endif()
 
-# Our install script (and NSIS) doesn't fully support Windows ARM64 yet.
-if(MEGA_ARM64)
-	set(CPACK_GENERATOR ZIP)
-	set(CPACK_SYSTEM_NAME woa64)
-else()
-	set(CPACK_GENERATOR ZIP NSIS)
-endif()
+	# Extra DLLs.
+	if(LOVE_EXTRA_DLLS)
+		foreach(DLL ${LOVE_EXTRA_DLLS})
+			get_filename_component(DLL_NAME ${DLL} NAME)
+			message(STATUS "Extra DLL: ${DLL_NAME}")
+		endforeach()
+		install(FILES ${LOVE_EXTRA_DLLS} DESTINATION .)
+	endif()
 
-# Extra DLLs.
-if(LOVE_EXTRA_DLLS)
-	foreach(DLL ${LOVE_EXTRA_DLLS})
-		get_filename_component(DLL_NAME ${DLL} NAME)
-		message(STATUS "Extra DLL: ${DLL_NAME}")
-	endforeach()
-	install(FILES ${LOVE_EXTRA_DLLS} DESTINATION .)
-endif()
+	# Dynamic runtime libs.
+	if(LOVE_MSVC_DLLS)
+		foreach(DLL ${LOVE_MSVC_DLLS})
+			get_filename_component(DLL_NAME ${DLL} NAME)
+			message(STATUS "Runtime DLL: ${DLL_NAME}")
+		endforeach()
+		install(FILES ${LOVE_MSVC_DLLS} DESTINATION .)
+	endif()
 
-# Dynamic runtime libs.
-if(LOVE_MSVC_DLLS)
-	foreach(DLL ${LOVE_MSVC_DLLS})
-		get_filename_component(DLL_NAME ${DLL} NAME)
-		message(STATUS "Runtime DLL: ${DLL_NAME}")
-	endforeach()
-	install(FILES ${LOVE_MSVC_DLLS} DESTINATION .)
-endif()
+	# Copy a text file from CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_BINARY_DIR.
+	# On Windows, this function will convert line endings to CR,LF.
+	function(copy_text_file ARG_FILE_IN ARG_FILE_OUT)
+		file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_FILE_IN} TMP_TXT_CONTENTS)
+		file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ARG_FILE_OUT} ${TMP_TXT_CONTENTS})
+	endfunction()
 
-# Copy a text file from CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_BINARY_DIR.
-# On Windows, this function will convert line endings to CR,LF.
-function(copy_text_file ARG_FILE_IN ARG_FILE_OUT)
-	file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_FILE_IN} TMP_TXT_CONTENTS)
-	file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ARG_FILE_OUT} ${TMP_TXT_CONTENTS})
-endfunction()
+	# Text files.
+	copy_text_file(readme.md readme.txt)
+	copy_text_file(license.txt license.txt)
+	copy_text_file(changes.txt changes.txt)
+
+	install(FILES
+			${CMAKE_CURRENT_BINARY_DIR}/changes.txt
+			${CMAKE_CURRENT_BINARY_DIR}/license.txt
+			${CMAKE_CURRENT_BINARY_DIR}/readme.txt
+			DESTINATION .)
+
+	# Icons
+	install(FILES
+			${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/love.ico
+			${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/game.ico
+			DESTINATION .)
+
+	set(CPACK_PACKAGE_NAME "love")
+	set(CPACK_PACKAGE_VENDOR "love2d.org")
+	set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LOVE -- It's awesome")
+	set(CPACK_PACKAGE_VERSION "${LOVE_VERSION_STR}")
+	set(CPACK_PACKAGE_VERSION_MAJOR "${LOVE_VERSION_MAJOR}")
+	set(CPACK_PACKAGE_VERSION_MINOR "${LOVE_VERSION_MINOR}")
+	set(CPACK_PACKAGE_VERSION_PATCH "${LOVE_VERSION_REV}")
+	set(CPACK_PACKAGE_INSTALL_DIRECTORY "LOVE")
+	set(CPACK_PACKAGE_EXECUTABLES "${LOVE_EXE_NAME};LOVE")
+	set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
+	set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
+
+	set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
+	set(CPACK_NSIS_PACKAGE_NAME "LOVE")
+	set(CPACK_NSIS_DISPLAY_NAME "LOVE ${LOVE_VERSION_STR}")
+	set(CPACK_NSIS_MODIFY_PATH OFF)
+
+	if(LOVE_X64)
+		set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
+	else()
+		set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
+	endif()
 
-# Text files.
-copy_text_file(readme.md readme.txt)
-copy_text_file(license.txt license.txt)
-copy_text_file(changes.txt changes.txt)
-
-install(FILES
-		${CMAKE_CURRENT_BINARY_DIR}/changes.txt
-		${CMAKE_CURRENT_BINARY_DIR}/license.txt
-		${CMAKE_CURRENT_BINARY_DIR}/readme.txt
-		DESTINATION .)
-
-# Icons
-install(FILES
-		${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/love.ico
-		${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/game.ico
-		DESTINATION .)
-
-set(CPACK_PACKAGE_NAME "love")
-set(CPACK_PACKAGE_VENDOR "love2d.org")
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LOVE -- It's awesome")
-set(CPACK_PACKAGE_VERSION "${LOVE_VERSION_STR}")
-set(CPACK_PACKAGE_VERSION_MAJOR "${LOVE_VERSION_MAJOR}")
-set(CPACK_PACKAGE_VERSION_MINOR "${LOVE_VERSION_MINOR}")
-set(CPACK_PACKAGE_VERSION_PATCH "${LOVE_VERSION_REV}")
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "LOVE")
-set(CPACK_PACKAGE_EXECUTABLES "${LOVE_EXE_NAME};LOVE")
-set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
-
-set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
-set(CPACK_NSIS_PACKAGE_NAME "LOVE")
-set(CPACK_NSIS_DISPLAY_NAME "LOVE ${LOVE_VERSION_STR}")
-set(CPACK_NSIS_MODIFY_PATH OFF)
-
-if(LOVE_X64)
-	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
-else()
-	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
+	set(CPACK_NSIS_MENU_LINKS "http://love2d.org/wiki" "Documentation")
+
+	# Some bug somewhere in NSIS requires "\\\\" somewhere in the path,
+	# according to The Internet. (And sure enough, it does not work
+	# without it).
+	set(NSIS_LEFT_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\left.bmp")
+	set(NSIS_TOP_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\top.bmp")
+	set(NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
+	set(NSIS_MUI_UNICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
+
+	set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
+		!define MUI_WELCOMEPAGE_TITLE \\\"LOVE ${LOVE_VERSION_STR} Setup\\\"
+		!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${NSIS_LEFT_BMP}\\\"
+		!define MUI_HEADERIMAGE_BITMAP \\\"${NSIS_TOP_BMP}\\\"
+		!define MUI_ICON \\\"${NSIS_MUI_ICON}\\\"
+		!define MUI_UNICON \\\"${NSIS_MUI_UNICON}\\\"
+	")
+
+	set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
+		WriteRegStr HKCR \\\".love\\\" \\\"\\\" \\\"LOVE\\\"
+		WriteRegStr HKCR \\\"LOVE\\\" \\\"\\\" \\\"LOVE Game File\\\"
+		WriteRegStr HKCR \\\"LOVE\\\\DefaultIcon\\\" \\\"\\\" \\\"$INSTDIR\\\\game.ico\\\"
+		WriteRegStr HKCR \\\"LOVE\\\\shell\\\" \\\"\\\" \\\"open\\\"
+		WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\" \\\"\\\" \\\"Open in LOVE\\\"
+		WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\\command\\\" \\\"\\\" \\\"$INSTDIR\\\\love.exe $\\\\\\\"%1$\\\\\\\"\\\"
+		System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+	")
+
+	set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
+		DeleteRegKey HKCR \\\"LOVE\\\"
+		DeleteRegKey HKCR \\\".love\\\"
+		System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+	")
+
+	include(CPack)
 endif()
-
-set(CPACK_NSIS_MENU_LINKS "http://love2d.org/wiki" "Documentation")
-
-# Some bug somewhere in NSIS requires "\\\\" somewhere in the path,
-# according to The Internet. (And sure enough, it does not work
-# without it).
-set(NSIS_LEFT_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\left.bmp")
-set(NSIS_TOP_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\top.bmp")
-set(NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
-set(NSIS_MUI_UNICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
-
-set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
-	!define MUI_WELCOMEPAGE_TITLE \\\"LOVE ${LOVE_VERSION_STR} Setup\\\"
-	!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${NSIS_LEFT_BMP}\\\"
-	!define MUI_HEADERIMAGE_BITMAP \\\"${NSIS_TOP_BMP}\\\"
-	!define MUI_ICON \\\"${NSIS_MUI_ICON}\\\"
-	!define MUI_UNICON \\\"${NSIS_MUI_UNICON}\\\"
-")
-
-set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
-	WriteRegStr HKCR \\\".love\\\" \\\"\\\" \\\"LOVE\\\"
-	WriteRegStr HKCR \\\"LOVE\\\" \\\"\\\" \\\"LOVE Game File\\\"
-	WriteRegStr HKCR \\\"LOVE\\\\DefaultIcon\\\" \\\"\\\" \\\"$INSTDIR\\\\game.ico\\\"
-	WriteRegStr HKCR \\\"LOVE\\\\shell\\\" \\\"\\\" \\\"open\\\"
-	WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\" \\\"\\\" \\\"Open in LOVE\\\"
-	WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\\command\\\" \\\"\\\" \\\"$INSTDIR\\\\love.exe $\\\\\\\"%1$\\\\\\\"\\\"
-	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
-")
-
-set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
-	DeleteRegKey HKCR \\\"LOVE\\\"
-	DeleteRegKey HKCR \\\".love\\\"
-	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
-")
-
-include(CPack)