mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	cmake build files. I wrote these but then decided to keep the cleanup
(getopt/HAVE_*) changes but add a manual configure script and clean up the makefiles instead. Can always be resurrected if necessary.
This commit is contained in:
		
							
								
								
									
										161
									
								
								util/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								util/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,161 @@
 | 
			
		||||
# $Id: CMakeLists.txt,v 1.1 2009-05-13 23:32:21 nicm Exp $
 | 
			
		||||
 | 
			
		||||
cmake_minimum_required(VERSION 2.4)
 | 
			
		||||
 | 
			
		||||
# Project name and version.
 | 
			
		||||
project(TMUX)
 | 
			
		||||
set(VERSION 0.9)
 | 
			
		||||
set(DEBUG 1)
 | 
			
		||||
 | 
			
		||||
# Compiler flags. Mostly disabled unless a debug build.
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBUILD=\\\"${VERSION}\\\"")
 | 
			
		||||
if(DEFINED DEBUG)
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W -Wno-long-long")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wnested-externs -Wformat=2")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes -Wstrict-prototypes")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wwrite-strings")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wshadow -Wpointer-arith -Wcast-qual")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsign-compare -Wmissing-prototypes")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wstrict-prototypes -Wmissing-declarations")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wwrite-strings -Wundef -Winline")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast -Wcast-align")
 | 
			
		||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDEBUG -g -ggdb")
 | 
			
		||||
endif(DEFINED DEBUG)
 | 
			
		||||
 | 
			
		||||
# glibc follows the principle of most surprise, so feed it some extra flags. 
 | 
			
		||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
 | 
			
		||||
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -D_POSIX_SOURCE")
 | 
			
		||||
endif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
 | 
			
		||||
 | 
			
		||||
# Add source directory as include path.
 | 
			
		||||
include_directories(${TMUX_SOURCE_DIR})
 | 
			
		||||
 | 
			
		||||
# Initialise libraries with ncurses.
 | 
			
		||||
set(NEEDED_LIBRARIES ncurses)
 | 
			
		||||
 | 
			
		||||
# Platform in lowercase. Used later on for some filenames.
 | 
			
		||||
string(TOLOWER ${CMAKE_SYSTEM_NAME} LOWER_NAME)
 | 
			
		||||
 | 
			
		||||
# Build list of source files and sort out the osdep-* file choice. This is
 | 
			
		||||
# a bit if a hack and needs to be changed...
 | 
			
		||||
file(GLOB SOURCE_FILES "*.c")
 | 
			
		||||
string(REGEX REPLACE 
 | 
			
		||||
	"${TMUX_SOURCE_DIR}/osdep-[a-z]*.c;" "" SOURCE_FILES "${SOURCE_FILES}")
 | 
			
		||||
if(EXISTS "osdep-${LOWER_NAME}.c")
 | 
			
		||||
	set(SOURCE_FILES "${SOURCE_FILES};osdep-${LOWER_NAME}.c")
 | 
			
		||||
else(EXISTS "osdep-${LOWER_NAME}.c")
 | 
			
		||||
	set(SOURCE_FILES "${SOURCE_FILES};osdep-unknown.c")
 | 
			
		||||
endif(EXISTS "osdep-${LOWER_NAME}.c")
 | 
			
		||||
 | 
			
		||||
# This crap is needed for checks done later...
 | 
			
		||||
include(CheckFunctionExists)
 | 
			
		||||
include(CheckVariableExists)
 | 
			
		||||
include(CheckIncludeFiles)
 | 
			
		||||
include(CheckSymbolExists) 
 | 
			
		||||
include(CheckLibraryExists)
 | 
			
		||||
 | 
			
		||||
# Deal with some further glibc stupidity and figure out if -lcrypt is needed.
 | 
			
		||||
check_function_exists(crypt HAVE_CRYPT)
 | 
			
		||||
if(NOT HAVE_CRYPT)
 | 
			
		||||
	set(NEEDED_LIBRARIES "${NEEDED_LIBRARIES};crypt")
 | 
			
		||||
endif(NOT HAVE_CRYPT)
 | 
			
		||||
 | 
			
		||||
# See if forkpty exists and which header it is in.
 | 
			
		||||
check_library_exists(util forkpty "" HAVE_FORKPTY) 
 | 
			
		||||
if(HAVE_FORKPTY)
 | 
			
		||||
	set(NEEDED_LIBRARIES "${NEEDED_LIBRARIES};util")
 | 
			
		||||
 | 
			
		||||
	check_include_files(util.h HAVE_UTIL_H)
 | 
			
		||||
	if(NOT HAVE_UTIL_H)
 | 
			
		||||
		check_include_files(libutil.h HAVE_LIBUTIL_H)
 | 
			
		||||
		if(NOT HAVE_LIBUTIL_H)
 | 
			
		||||
			check_include_files(pty.h HAVE_PTY_H)
 | 
			
		||||
		endif(NOT HAVE_LIBUTIL_H)
 | 
			
		||||
	endif(NOT HAVE_UTIL_H)
 | 
			
		||||
else(HAVE_FORKPTY)
 | 
			
		||||
	# No forkpty. Try and get a compat/forkpty-* file.
 | 
			
		||||
	set(SOURCE_FILES "${SOURCE_FILES};compat/forkpty-${LOWER_NAME}.c")	
 | 
			
		||||
endif(HAVE_FORKPTY)
 | 
			
		||||
 | 
			
		||||
# Look for __progname.
 | 
			
		||||
check_variable_exists(__progname HAVE_PROGNAME)
 | 
			
		||||
 | 
			
		||||
# Check for paths.h.
 | 
			
		||||
check_include_files(paths.h HAVE_PATHS_H)
 | 
			
		||||
 | 
			
		||||
# Check for sys/{tree,queue}.h.
 | 
			
		||||
check_include_files(sys/tree.h HAVE_TREE_H)
 | 
			
		||||
check_include_files(sys/queue.h HAVE_QUEUE_H)
 | 
			
		||||
 | 
			
		||||
# queue.h without TAILQ_REPLACE is no use at all.
 | 
			
		||||
check_symbol_exists(TAILQ_REPLACE sys/queue.h HAVE_TAILQ_REPLACE)
 | 
			
		||||
if(NOT HAVE_TAILQ_REPLACE)
 | 
			
		||||
	set(HAVE_QUEUE_H 0)
 | 
			
		||||
endif(NOT HAVE_TAILQ_REPLACE)
 | 
			
		||||
 | 
			
		||||
# Check for setproctitle.
 | 
			
		||||
check_function_exists(setproctitle HAVE_SETPROCTITLE)
 | 
			
		||||
 | 
			
		||||
# Check for vsyslog.
 | 
			
		||||
check_function_exists(vsyslog HAVE_VSYSLOG)
 | 
			
		||||
 | 
			
		||||
# Check for asprintf.
 | 
			
		||||
check_function_exists(asprintf HAVE_ASPRINTF)
 | 
			
		||||
if(NOT HAVE_ASPRINTF)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/asprintf.c")
 | 
			
		||||
endif(NOT HAVE_ASPRINTF)
 | 
			
		||||
 | 
			
		||||
# Check for daemon.
 | 
			
		||||
check_function_exists(daemon HAVE_DAEMON)
 | 
			
		||||
if(NOT HAVE_DAEMON)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/daemon.c")
 | 
			
		||||
endif(NOT HAVE_DAEMON)
 | 
			
		||||
 | 
			
		||||
# Check for a getopt with optreset.
 | 
			
		||||
check_symbol_exists(getopt getopt.h HAVE_GETOPT)
 | 
			
		||||
if(HAVE_GETOPT)
 | 
			
		||||
	check_symbol_exists(optreset getopt.h HAVE_OPTRESET)
 | 
			
		||||
	if(NOT HAVE_OPTRESET)
 | 
			
		||||
	       # This does double duty on Linux - glibc getopt is broken (not
 | 
			
		||||
	       # POSIX-compliant, and no sane way to make it so at build time),
 | 
			
		||||
	       # but happily it also lacks BSD optreset, so this check will
 | 
			
		||||
	       # catch it.
 | 
			
		||||
	       set(HAVE_GETOPT 0)
 | 
			
		||||
	endif(NOT HAVE_OPTRESET)
 | 
			
		||||
endif(HAVE_GETOPT)
 | 
			
		||||
if(NOT HAVE_GETOPT)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/getopt.c")
 | 
			
		||||
endif(NOT HAVE_GETOPT)
 | 
			
		||||
 | 
			
		||||
# Check for fgetln.
 | 
			
		||||
check_function_exists(fgetln HAVE_FGETLN)
 | 
			
		||||
if(NOT HAVE_FGETLN)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/fgetln.c")
 | 
			
		||||
endif(NOT HAVE_FGETLN)
 | 
			
		||||
 | 
			
		||||
# Check for strlcat.
 | 
			
		||||
check_function_exists(strlcat HAVE_STRLCAT)
 | 
			
		||||
if(NOT HAVE_STRLCAT)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/strlcat.c")
 | 
			
		||||
endif(NOT HAVE_STRLCAT)
 | 
			
		||||
 | 
			
		||||
# Check for strlcpy.
 | 
			
		||||
check_function_exists(strlcpy HAVE_STRLCPY)
 | 
			
		||||
if(NOT HAVE_STRLCPY)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/strlcpy.c")
 | 
			
		||||
endif(NOT HAVE_STRLCPY)
 | 
			
		||||
 | 
			
		||||
# Check for strtonum.
 | 
			
		||||
check_function_exists(strtonum HAVE_STRTONUM)
 | 
			
		||||
if(NOT HAVE_STRTONUM)
 | 
			
		||||
       set(SOURCE_FILES "${SOURCE_FILES};compat/strtonum.c")
 | 
			
		||||
endif(NOT HAVE_STRTONUM)
 | 
			
		||||
 | 
			
		||||
# Point install locations.
 | 
			
		||||
INSTALL(PROGRAMS tmux DESTINATION bin)
 | 
			
		||||
INSTALL(FILES tmux.1 DESTINATION man/man1)
 | 
			
		||||
 | 
			
		||||
# Sort out the config.h file and finish everything off.
 | 
			
		||||
configure_file(config.h.in config.h)
 | 
			
		||||
add_executable(tmux ${SOURCE_FILES})
 | 
			
		||||
target_link_libraries(tmux ${NEEDED_LIBRARIES})
 | 
			
		||||
							
								
								
									
										22
									
								
								util/config.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								util/config.h.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
/* $Id: config.h.in,v 1.1 2009-05-13 23:32:21 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_LIBUTIL_H
 | 
			
		||||
#cmakedefine HAVE_PTY_H
 | 
			
		||||
#cmakedefine HAVE_UTIL_H
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_PATHS_H
 | 
			
		||||
#cmakedefine HAVE_QUEUE_H
 | 
			
		||||
#cmakedefine HAVE_TREE_H
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_ASPRINTF
 | 
			
		||||
#cmakedefine HAVE_DAEMON
 | 
			
		||||
#cmakedefine HAVE_FGETLN
 | 
			
		||||
#cmakedefine HAVE_FORKPTY
 | 
			
		||||
#cmakedefine HAVE_GETOPT
 | 
			
		||||
#cmakedefine HAVE_SETPROCTITLE
 | 
			
		||||
#cmakedefine HAVE_STRLCAT
 | 
			
		||||
#cmakedefine HAVE_STRLCPY
 | 
			
		||||
#cmakedefine HAVE_STRTONUM
 | 
			
		||||
#cmakedefine HAVE_VSYSLOG
 | 
			
		||||
 | 
			
		||||
#cmakedefine HAVE_PROGNAME
 | 
			
		||||
		Reference in New Issue
	
	Block a user