mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 bf0d7ed1f6
			
		
	
	bf0d7ed1f6
	
	
	
		
			
			This removes cmake policy warning for CMP0053 on windows and ensures the build works correctly for newer cmake policies.
		
			
				
	
	
		
			98 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| cmake_minimum_required(VERSION 3.10)
 | |
| project(libiconv C)
 | |
| 
 | |
| include_directories(
 | |
|   ${CMAKE_CURRENT_SOURCE_DIR}
 | |
|   ${CMAKE_CURRENT_SOURCE_DIR}/srclib
 | |
|   ${CMAKE_CURRENT_BINARY_DIR}
 | |
|   ${CMAKE_CURRENT_BINARY_DIR}/srclib
 | |
|   ${CMAKE_CURRENT_SOURCE_DIR}/build-aux/snippet)
 | |
| 
 | |
| configure_file(config.h.in config.h)
 | |
| file(READ "${CMAKE_CURRENT_BINARY_DIR}/config.h" CONFIG_CONTENT)
 | |
| string(REPLACE "#undef EILSEQ" "" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_MBRTOWC" "#define HAVE_MBRTOWC 1" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_MBSINIT" "#define HAVE_MBSINIT 1" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_WCRTOMB" "#define HAVE_WCRTOMB 1" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_DECL___ARGV" "#define HAVE_DECL___ARGV 1" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_WORKING_O_NOFOLLOW" "#define HAVE_WORKING_O_NOFOLLOW 0" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef ICONV_CONST" "#define ICONV_CONST const" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef WORDS_LITTLEENDIAN" "#define WORDS_LITTLEENDIAN 1" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef HAVE_DECL_STRERROR_R" "#define HAVE_DECL_STRERROR_R 0" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef mode_t" "#define mode_t int" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| string(REPLACE "#undef ssize_t" "#include <BaseTsd.h>\n#define ssize_t SSIZE_T" CONFIG_CONTENT "${CONFIG_CONTENT}")
 | |
| file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h" "${CONFIG_CONTENT}")
 | |
| 
 | |
| set(BROKEN_WCHAR_H 0)
 | |
| set(HAVE_VISIBILITY 0)
 | |
| set(HAVE_WCHAR_T 1)
 | |
| set(ICONV_CONST "const")
 | |
| set(USE_MBSTATE_T 0)
 | |
| configure_file(libcharset/include/localcharset.h.build.in localcharset.h)
 | |
| configure_file(include/iconv.h.build.in iconv.h)
 | |
| 
 | |
| add_definitions(-DLIBDIR -D_CRT_SECURE_NO_WARNINGS)
 | |
| 
 | |
| add_library(libcharset libcharset/lib/localcharset.c)
 | |
| 
 | |
| add_library(libiconv lib/iconv.c)
 | |
| target_link_libraries(libiconv libcharset)
 | |
| 
 | |
| add_executable(iconv src/iconv.c srclib/progname.c srclib/getprogname.c
 | |
|   srclib/safe-read.c srclib/uniwidth/width.c srclib/error.c srclib/xmalloc.c
 | |
|   srclib/basename-lgpl.c)
 | |
| target_link_libraries(iconv libiconv)
 | |
| 
 | |
| set(HEADER_TEMPLATES_PATH "srclib")
 | |
| set(HEADER_TEMPLATES_ABS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER_TEMPLATES_PATH}")
 | |
| file(GLOB_RECURSE HEADER_TEMPLATES "${HEADER_TEMPLATES_ABS_PATH}/*.in.h")
 | |
| list(REMOVE_ITEM HEADER_TEMPLATES  "${HEADER_TEMPLATES_ABS_PATH}/stdint.in.h")
 | |
| list(REMOVE_ITEM HEADER_TEMPLATES  "${HEADER_TEMPLATES_ABS_PATH}/wchar.in.h")
 | |
| foreach(HEADER_TEMPLATE ${HEADER_TEMPLATES})
 | |
|   file(READ ${HEADER_TEMPLATE} HEADER_CONTENT)
 | |
|   string(REPLACE "/* The definition of _GL_ARG_NONNULL is copied here.  */" "#include \"arg-nonnull.h\"" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "/* The definition of _GL_WARN_ON_USE is copied here.  */" "#include \"warn-on-use.h\"" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */" "#include \"c++defs.h\"" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@GNULIB_LSTAT@" "1" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@GNULIB_SIGACTION@" "1" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@GNULIB_SIGPROCMASK@" "1" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@HAVE_ISWCNTRL@" "1" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@HAVE_WCTYPE_T@" "1" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   string(REPLACE "@PRAGMA_COLUMNS@" "" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
| 
 | |
|   string(REGEX REPLACE "^${HEADER_TEMPLATES_ABS_PATH}/" "" HEADER_PATH "${HEADER_TEMPLATE}")
 | |
|   string(REPLACE ".in" "" HEADER_PATH ${HEADER_PATH})
 | |
|   string(REPLACE "_" "/" HEADER_PATH ${HEADER_PATH})
 | |
|   # find_file will create a cache entry for the variable
 | |
|   # SYSTEM_HEADER, so reset it before each call
 | |
|   set(SYSTEM_HEADER "SYSTEM_HEADER-NOTFOUND")
 | |
|   find_file(SYSTEM_HEADER ${HEADER_PATH} PATHS "${LIBICONV_INCLUDE_DIRS}")
 | |
|   if(SYSTEM_HEADER)
 | |
|     # Gnulib uses #include_next to extend system header files,
 | |
|     # but MSVC doesn't support it, so a regular include directive
 | |
|     # with a relative path is used instead
 | |
|     string(REGEX REPLACE ".*/(.*/${HEADER_PATH})" "../\\1"
 | |
|       INCLUDE_PATH "${SYSTEM_HEADER}")
 | |
|     string(REGEX REPLACE "@INCLUDE_NEXT[^@]*@ @NEXT_[^@\n]+@"
 | |
|       "include <${INCLUDE_PATH}>" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
|   endif()
 | |
| 
 | |
|   # Default any remaining template variables to 0
 | |
|   string(REGEX REPLACE "@[^@\n]+@" "0" HEADER_CONTENT "${HEADER_CONTENT}")
 | |
| 
 | |
|   file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${HEADER_TEMPLATES_PATH}/${HEADER_PATH}" "${HEADER_CONTENT}")
 | |
| endforeach()
 | |
| 
 | |
| include(GNUInstallDirs)
 | |
| 
 | |
| install(FILES
 | |
|   ${CMAKE_CURRENT_BINARY_DIR}/iconv.h
 | |
|   ${CMAKE_CURRENT_BINARY_DIR}/localcharset.h
 | |
|   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
 | |
| 
 | |
| install(TARGETS libcharset libiconv iconv
 | |
|   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 | |
|   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
 | |
|   PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
 | |
|   RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 |