mirror of
https://github.com/tmux/tmux.git
synced 2025-01-09 01:28:49 +00:00
37b27d2eef
If `getenv("SHELL")` is `NULL`, use the function `win32_setenv_shell()` added to `osdep-win32-cpp.cpp` to set it using the command line of the parent process, which is retrieved using WMI WIN32 API. This is a C++ file because the OLE/WMI API is only available for C++. Adjust the autotools code to add this file and link the necessary Windows DLLs. Include some fixed/missing MINGW headers necessary to compile this file. This will be fixed in the relevant places and they will be removed. Add a new macro WIN32_PLATFORM for Windows specific functionality, currently Cygwin and MSYS2, in the future for the native port as well. When spawning commands using the shell, check for cmd.exe on Windows and use the `/c` switch, otherwise use `-c` which works for PowerShell, MSYS2, Cygwin and Git Bash etc.. Adjust code that uses `/tmp/` to use `$env:USERPROFILE/AppData/Local/Temp/` outside of a Cygwin virtual filesystem when `/tmp/` is not available, add the function `win32_get_tmpdir()` and related functions to `osdep-win32.c` for this. Use `getenv("USERPROFILE")` when `getenv("HOME")` is `NULL`. When outside of a Cygwin virtual filesystem, use `C:\ProgramData\tmux\tmux.conf:$USERPROFILE\.tmux.conf:$LOCALAPPDATA\tmux\tmux.conf` as the config search order. Use the ncurses term-driver with `TERM="#win32con"` when a terminfo database is not available. This will require patches to ncurses as well as MSYS2 and Cygwin to work. Signed-off-by: Rafael Kitover <rkitover@gmail.com>
259 lines
5.3 KiB
Makefile
259 lines
5.3 KiB
Makefile
# Obvious program stuff.
|
|
bin_PROGRAMS = tmux
|
|
CLEANFILES = tmux.1.mdoc tmux.1.man cmd-parse.c
|
|
|
|
# Distribution tarball options.
|
|
EXTRA_DIST = \
|
|
CHANGES README README.ja COPYING example_tmux.conf \
|
|
osdep-*.c mdoc2man.awk tmux.1
|
|
dist_EXTRA_tmux_SOURCES = compat/*.[ch]
|
|
|
|
# Preprocessor flags.
|
|
AM_CPPFLAGS += @XOPEN_DEFINES@ \
|
|
-DTMUX_VERSION='"@VERSION@"' \
|
|
-DTMUX_LOCK_CMD='"@DEFAULT_LOCK_CMD@"' \
|
|
-DTMUX_TERM='"@DEFAULT_TERM@"'
|
|
|
|
AM_CPPFLAGS += -DTMUX_CONF='"$(sysconfdir)/tmux.conf:~/.tmux.conf:$$XDG_CONFIG_HOME/tmux/tmux.conf:~/.config/tmux/tmux.conf"'
|
|
|
|
if TARGET_WIN32
|
|
AM_CPPFLAGS += -DTMUX_CONF_WIN32='"/c/ProgramData/tmux/tmux.conf:~/.tmux.conf:$$LOCALAPPDATA/tmux/tmux.conf"'
|
|
endif
|
|
|
|
# Additional object files.
|
|
LDADD = $(LIBOBJS)
|
|
|
|
# Set flags for gcc.
|
|
if IS_GCC
|
|
AM_CFLAGS += -std=gnu99 -O2
|
|
if IS_DEBUG
|
|
AM_CFLAGS += -g
|
|
AM_CFLAGS += -Wno-long-long -Wall -W -Wformat=2
|
|
AM_CFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations
|
|
AM_CFLAGS += -Wwrite-strings -Wshadow -Wpointer-arith -Wsign-compare
|
|
AM_CFLAGS += -Wundef -Wbad-function-cast -Winline -Wcast-align
|
|
AM_CFLAGS += -Wdeclaration-after-statement -Wno-pointer-sign -Wno-attributes
|
|
AM_CFLAGS += -Wno-unused-result -Wno-format-y2k
|
|
if IS_DARWIN
|
|
AM_CFLAGS += -Wno-deprecated-declarations -Wno-cast-align
|
|
endif
|
|
AM_CPPFLAGS += -DDEBUG
|
|
endif
|
|
AM_CPPFLAGS += -iquote.
|
|
endif
|
|
|
|
# Set flags for Solaris.
|
|
if IS_SUNOS
|
|
if IS_GCC
|
|
AM_CPPFLAGS += -D_XPG6
|
|
else
|
|
AM_CPPFLAGS += -D_XPG4_2
|
|
endif
|
|
endif
|
|
|
|
# Set flags for Sun CC.
|
|
if IS_SUNCC
|
|
AM_CFLAGS += -erroff=E_EMPTY_DECLARATION
|
|
endif
|
|
|
|
# Set _LINUX_SOURCE_COMPAT for AIX for malloc(0).
|
|
if IS_AIX
|
|
AM_CPPFLAGS += -D_LINUX_SOURCE_COMPAT=1
|
|
endif
|
|
|
|
# Set flags for NetBSD.
|
|
if IS_NETBSD
|
|
AM_CPPFLAGS += -D_OPENBSD_SOURCE
|
|
endif
|
|
|
|
# Set flags for Haiku.
|
|
if IS_HAIKU
|
|
AM_CPPFLAGS += -D_BSD_SOURCE
|
|
endif
|
|
|
|
# Set flags for Cygwin.
|
|
if TARGET_WIN32
|
|
AM_CPPFLAGS += -DTMUX_SOCK_PERM=0
|
|
endif
|
|
|
|
# List of sources.
|
|
dist_tmux_SOURCES = \
|
|
alerts.c \
|
|
arguments.c \
|
|
attributes.c \
|
|
cfg.c \
|
|
client.c \
|
|
cmd-attach-session.c \
|
|
cmd-bind-key.c \
|
|
cmd-break-pane.c \
|
|
cmd-capture-pane.c \
|
|
cmd-choose-tree.c \
|
|
cmd-command-prompt.c \
|
|
cmd-confirm-before.c \
|
|
cmd-copy-mode.c \
|
|
cmd-detach-client.c \
|
|
cmd-display-menu.c \
|
|
cmd-display-message.c \
|
|
cmd-display-panes.c \
|
|
cmd-find-window.c \
|
|
cmd-find.c \
|
|
cmd-if-shell.c \
|
|
cmd-join-pane.c \
|
|
cmd-kill-pane.c \
|
|
cmd-kill-server.c \
|
|
cmd-kill-session.c \
|
|
cmd-kill-window.c \
|
|
cmd-list-buffers.c \
|
|
cmd-list-clients.c \
|
|
cmd-list-keys.c \
|
|
cmd-list-panes.c \
|
|
cmd-list-sessions.c \
|
|
cmd-list-windows.c \
|
|
cmd-load-buffer.c \
|
|
cmd-lock-server.c \
|
|
cmd-move-window.c \
|
|
cmd-new-session.c \
|
|
cmd-new-window.c \
|
|
cmd-parse.y \
|
|
cmd-paste-buffer.c \
|
|
cmd-pipe-pane.c \
|
|
cmd-queue.c \
|
|
cmd-refresh-client.c \
|
|
cmd-rename-session.c \
|
|
cmd-rename-window.c \
|
|
cmd-resize-pane.c \
|
|
cmd-resize-window.c \
|
|
cmd-respawn-pane.c \
|
|
cmd-respawn-window.c \
|
|
cmd-rotate-window.c \
|
|
cmd-run-shell.c \
|
|
cmd-save-buffer.c \
|
|
cmd-select-layout.c \
|
|
cmd-select-pane.c \
|
|
cmd-select-window.c \
|
|
cmd-send-keys.c \
|
|
cmd-server-access.c \
|
|
cmd-set-buffer.c \
|
|
cmd-set-environment.c \
|
|
cmd-set-option.c \
|
|
cmd-show-environment.c \
|
|
cmd-show-messages.c \
|
|
cmd-show-options.c \
|
|
cmd-show-prompt-history.c \
|
|
cmd-source-file.c \
|
|
cmd-split-window.c \
|
|
cmd-swap-pane.c \
|
|
cmd-swap-window.c \
|
|
cmd-switch-client.c \
|
|
cmd-unbind-key.c \
|
|
cmd-wait-for.c \
|
|
cmd.c \
|
|
colour.c \
|
|
compat.h \
|
|
control-notify.c \
|
|
control.c \
|
|
environ.c \
|
|
file.c \
|
|
format.c \
|
|
format-draw.c \
|
|
grid-reader.c \
|
|
grid-view.c \
|
|
grid.c \
|
|
hyperlinks.c \
|
|
input-keys.c \
|
|
input.c \
|
|
job.c \
|
|
key-bindings.c \
|
|
key-string.c \
|
|
layout-custom.c \
|
|
layout-set.c \
|
|
layout.c \
|
|
log.c \
|
|
menu.c \
|
|
mode-tree.c \
|
|
names.c \
|
|
notify.c \
|
|
options-table.c \
|
|
options.c \
|
|
paste.c \
|
|
popup.c \
|
|
proc.c \
|
|
regsub.c \
|
|
resize.c \
|
|
screen-redraw.c \
|
|
screen-write.c \
|
|
screen.c \
|
|
server-acl.c \
|
|
server-client.c \
|
|
server-fn.c \
|
|
server.c \
|
|
session.c \
|
|
spawn.c \
|
|
status.c \
|
|
style.c \
|
|
tmux.c \
|
|
tmux.h \
|
|
tmux-protocol.h \
|
|
tty-acs.c \
|
|
tty-features.c \
|
|
tty-keys.c \
|
|
tty-term.c \
|
|
tty.c \
|
|
utf8-combined.c \
|
|
utf8.c \
|
|
window-buffer.c \
|
|
window-client.c \
|
|
window-clock.c \
|
|
window-copy.c \
|
|
window-customize.c \
|
|
window-tree.c \
|
|
window.c \
|
|
xmalloc.c \
|
|
xmalloc.h
|
|
nodist_tmux_SOURCES = osdep-@PLATFORM@.c
|
|
|
|
# Add compat file for forkpty.
|
|
if NEED_FORKPTY
|
|
nodist_tmux_SOURCES += compat/forkpty-@PLATFORM@.c
|
|
endif
|
|
|
|
# Add compat file for systemd.
|
|
if HAVE_SYSTEMD
|
|
nodist_tmux_SOURCES += compat/systemd.c
|
|
endif
|
|
|
|
# Add compat file for utf8proc.
|
|
if HAVE_UTF8PROC
|
|
nodist_tmux_SOURCES += compat/utf8proc.c
|
|
endif
|
|
|
|
# Enable sixel support.
|
|
if ENABLE_SIXEL
|
|
dist_tmux_SOURCES += image.c image-sixel.c
|
|
endif
|
|
|
|
# Windows-specific support.
|
|
if TARGET_WIN32
|
|
dist_tmux_SOURCES += osdep-win32.c osdep-win32-cpp.cpp
|
|
LDADD += -lole32 -loleaut32 -lwbemuuid
|
|
endif
|
|
|
|
if NEED_FUZZING
|
|
check_PROGRAMS = fuzz/input-fuzzer
|
|
fuzz_input_fuzzer_LDFLAGS = $(FUZZING_LIBS)
|
|
fuzz_input_fuzzer_LDADD = $(LDADD) $(tmux_OBJECTS)
|
|
endif
|
|
|
|
# Install tmux.1 in the right format.
|
|
install-exec-hook:
|
|
if test x@MANFORMAT@ = xmdoc; then \
|
|
sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" $(srcdir)/tmux.1 \
|
|
>$(srcdir)/tmux.1.mdoc; \
|
|
else \
|
|
sed -e "s|@SYSCONFDIR@|$(sysconfdir)|g" $(srcdir)/tmux.1| \
|
|
$(AWK) -f $(srcdir)/mdoc2man.awk >$(srcdir)/tmux.1.man; \
|
|
fi
|
|
$(mkdir_p) $(DESTDIR)$(mandir)/man1
|
|
$(INSTALL_DATA) $(srcdir)/tmux.1.@MANFORMAT@ \
|
|
$(DESTDIR)$(mandir)/man1/tmux.1
|