Mercurial > vim
view src/osdef1.h.in @ 33566:e1e3805fcd96 v9.0.2028
patch 9.0.2028: confusing build dependencies
Commit: https://github.com/vim/vim/commit/5d03525cdef5db1b1cedfa26c6f8a21aaa207ec0
Author: Yee Cheng Chin <ychin.git@gmail.com>
Date: Sun Oct 15 09:50:53 2023 +0200
patch 9.0.2028: confusing build dependencies
Problem: confusing build dependencies
Solution: clean them up, make them parallelizable
Separate vim binary and unittest dependencies, make them parallelizable
Clean up make dependencies so Vim and unit test binaries only depend on
the object files they need. This fixes an existing issue where after
running unit tests, the Vim binary would be invalidated, which results
in it having to be linked again when running script tests, even though
Vim was already previously built.
Make link.sh (script we use to link those binaries) generate namespaced
temporary files for each app to avoid them colliding with each other.
This allows `unittesttargets` to be built in parallel.
These fixes are useful when using link-time-optimization as the link
phase could now take minutes rather than a few seconds.
closes: #13344
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 15 Oct 2023 10:00:03 +0200 |
parents | 9781c150eddd |
children |
line wrap: on
line source
/* autoconf cannot fiddle out declarations. Use our homebrewn tools. (jw) */ /* * Declarations that may cause conflicts belong here so that osdef.sh * can clean out the forest. Everything else belongs in os_unix.h * * How this works: * - This file contains all unix prototypes that Vim might need. * - The shell script osdef.sh is executed at compile time to remove all the * prototypes that are in an include file. This results in osdef.h. * - osdef.h is included in vim.h. * * sed cannot always handle so many commands, this is file 1 of 2 */ extern int printf(char *, ...); extern int fprintf(FILE *, char *, ...); extern int sprintf(char *, char *, ...); extern int sscanf(char *, char *, ...); #ifndef fopen /* could be redefined to fopen64() */ extern FILE *fopen(const char *, const char *); #endif extern int fclose(FILE *); extern int fseek(FILE *, long, int); #ifdef HAVE_FSEEKO extern int fseeko(FILE *, off_t, int); #endif extern long ftell(FILE *); #ifdef HAVE_FSEEKO extern off_t ftello(FILE *); #endif extern void rewind(FILE *); extern int fread(char *, int, int, FILE *); extern int fwrite(char *, int, int, FILE *); extern int fputs(char *, FILE *); #ifndef ferror /* let me say it again: "macros should never have prototypes" */ extern int ferror(FILE *); #endif extern int fflush(FILE *); #if defined(sun) || defined(_SEQUENT_) /* used inside of stdio macros getc(), puts(), putchar()... */ extern int _flsbuf(int, FILE *); extern int _filbuf(FILE *); #endif #if !defined(HAVE_SELECT) struct pollfd; /* for poll() */ extern int poll(struct pollfd *, long, int); #endif #ifdef HAVE_MEMSET extern void *memset(void *, int, size_t); #endif extern int memcmp(const void *, const void *, size_t); #ifdef HAVE_STRPBRK extern char *strpbrk(const char *, const char *); #endif #ifdef USEBCOPY extern void bcopy(char *, char *, int); #else # ifdef USEMEMCPY extern void memcpy(char *, char *, int); # else # ifdef USEMEMMOVE extern void memmove(char *, char *, int); # endif # endif #endif #if !defined(__BIONIC__) && !defined(__HAIKU__) // Android's libc #defines bzero to memset. // used inside of FD_ZERO macro extern void bzero(void *, size_t); #endif #ifdef HAVE_SETSID extern pid_t setsid(void); #endif #ifdef HAVE_SETPGID extern int setpgid(pid_t, pid_t); #endif #ifdef HAVE_STRTOL extern int strtol(char *, char **, int); #endif #ifdef HAVE_STRFTIME extern size_t strftime(char *, size_t, char *, struct tm *); #endif #ifdef HAVE_STRCASECMP extern int strcasecmp(char *, char *); #endif #ifdef HAVE_STRNCASECMP extern int strncasecmp(char *, char *, size_t); #endif #ifndef strdup extern char *strdup(const char *); #endif extern int atoi(char *); extern int atol(char *); #ifndef USE_SYSTEM extern int fork(void); # ifndef __TANDEM extern int execvp(const char *, const char **); # endif extern int wait(int *); /* will this break things ...? */ extern int waitpid(pid_t, int *, int); #endif extern int toupper(int); extern int tolower(int); extern void (*signal(int, void (*func) SIGPROTOARG)) SIGPROTOARG; #ifdef HAVE_SIGSET extern void (*sigset(int, void (*func) SIGPROTOARG)) SIGPROTOARG; #endif #if defined(HAVE_SETJMP_H) # ifdef HAVE_SIGSETJMP extern int sigsetjmp(sigjmp_buf, int); extern void siglongjmp(sigjmp_buf, int); # else extern int setjmp(jmp_buf); extern void longjmp(jmp_buf, int); # endif #endif extern int kill(int, int); #ifndef __TANDEM extern int access(char *, int); #endif extern int fsync(int); extern int fchown(int, int, int); #if defined(HAVE_GETCWD) && !defined(sun) && !defined(__TANDEM) extern char *getcwd(char *, int); #else extern char *getwd(char *); #endif #ifndef __alpha /* suggested by Campbell */ extern int ioctl(int, int, ...); #endif extern int chmod(const char *, mode_t);