Commit Graph

161 Commits

Author SHA1 Message Date
Corinna Vinschen 88c0276358 Cygwin: Allow using CFLAGS also for C++ files
This was used before switching to automake to allow easy tweaking
of optimization and debugging settings from the command line during
testing.  Reenable.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-08-26 22:21:53 +02:00
Corinna Vinschen 8169e39abf Cygwin: C++17: register keyword is deprecated
The register keyword was already deprecated with C++11, but
with C++17 it has been entirely removed.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-08-26 22:14:11 +02:00
Corinna Vinschen a26779fae0 Cygwin: drop all generated autotools files
- add autotool files generated under winsup to .gitignore

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-04-29 11:16:38 +02:00
Jon Turney 247ce0ca3a
Cygwin: Use automake (v5)
v2:
* Include tzmap.h in BUILT_SOURCES
* Make per-file flags appear after user-supplied CXXFLAGS, so they can
override optimization level.
* Correct .o files used to define symbols exported by libm.a
* Drop gcrt0.o mistakenly included in libgmon.a
* Add missing line continuations in GMON_FILES value

v3:
* use per-file flags for .c compilation
* override C{XX,}FLAGS, as they are set on the command line by top-level make

v4:
* Drop -Wno-error=write-strings from path_testsuite CXXFLAGS

v5:
* Update for changes in master
- Add -fno-threadsafe-statics to CXX flags
- Add hypotl.cc
- Remove fenv.cc (in favour of newlib), add fenv.c stub
- Add proc.5 manpage rules
2021-04-27 16:49:56 +01:00
Jon Turney dc93f7ef2d
Cygwin: Remove recursive configure
There's doesn't seem to be much use in independently distributing these
subdirectories, so allowing them to be independently configured seems
pointless and overcomplicated.

The order in which the subdirectories are built is still a little odd,
as cygwin is linked with libcygserver, and cygserver is then linked with
cygwin. So, we build the cygwin directory first, which invokes a build
of libcygserver in the cygserver directory, and then build in the
cygserver directory to build the cygserver executable.

Drop AC_CONFIGURE_ARGS, since we don't need to recursively call
configure with the same arguments anymore.

Slightly refine when we build utils: Previously we didn't build any
utils if MinGW compiler use was avoided, now we just avoid building
those utils which require that compiler.

Greatly simplify how winsup_srcdir and target_builddir are set, since
we're only configuring from one directory.  (These are still kept
absolute, since we don't adjust them where used for being used in a
subdirectory).

Remove configure.cygwin and put it's (greatly reduced) contents inline
in the one place it's used now.

Remove generated configure and aclocal.m4 in subdirectories.
2020-11-20 15:56:11 +00:00
Jon Turney f4bfaddb3c
Cygwin: Drop autoconf variable all_host
The autoconf variable all_host is used to make building of the stub
library used by the testsuite conditional on not cross-compiling.

Make it unconditional, so we will notice if it's broken when
cross-compiling.
2020-11-02 16:49:00 +00:00
Jon Turney 7fa743ca94
Cygwin: Restore setting CC and CXX Makefile variables
b55e3f19 was a bit too aggressive in dropping, rather than just
un-exporting these Makefile variables.  We need to set these to the
configured host compiler if we are cross-compiling, otherwise they
default to the build compiler.

Also export CC to the mkvers.sh script (which requires it since
4eca5e6a).  It's unclear why we can't just cause windres to use the
build 'cpp' as the pre-processor there.
2020-10-28 15:23:56 +00:00
Jon Turney c50e0d8ba4
Cygwin: Drop do-nothing install_host target
Drop do-nothing install_host target, which is only used when not
cross-compiling.
2020-10-21 17:11:09 +01:00
Jon Turney b5bc608b32
Cygwin: Drop cygwin version.o from cygserver
The data it contains isn't referenced since 9e9bc3a4.
2020-10-21 17:10:50 +01:00
Jon Turney 3662877f31
Cygwin: Use aclocal option --system-acdir rather than --acdir
In autogen.sh, use 'aclocal --system-acdir' rather than 'aclocal --acdir'.

'--acdir' was deprecated in automake 1.11 and removed in automake 1.13.
2020-10-18 14:55:15 +01:00
Jon Turney 78bfd7dbb9
Cygwin: Remove --with-windows-{libs,headers} 2020-10-18 14:55:14 +01:00
Jon Turney b55e3f1916
Cygwin: Remove ccwrap
ccwrap massages the compiler's standard include directories to remove
'/usr/include/w32api', with the intent of allowing it to be overriden by
'--with-windows-headers' (See 4c36016b).

I'm not 100% convinced that this is always working as desired, since in
some places w32api includes are done using <w32api/something.h>, which
will find them via the path /usr/include.

If this does turn out to be needed, this could also be implemented by
constructing the appropriate compiler flags once, rather than on every
compiler invocation.
2020-10-18 14:55:13 +01:00
Jon Turney b21158bc4e
Cygwin: Remove AC_PROG_MAKE_SET
This is only needed if we are using an ancient make which doesn't set
${MAKE}, but we say "This makefile requires GNU make." everywhere.

It only has an effect if @SET_MAKE@ is used, which we aren't doing
consistently.
2020-10-14 15:04:19 +01:00
Jon Turney 08e7ee1912
Cygwin: Drop looking for w32api in winsup/w32api
Stop looking for w32api headers in the (no longer existent)
winsup/w32api directory (removed in commit 61746d6ae8).
2020-10-14 15:04:17 +01:00
Ken Brown 225d376b70 Cygwin: cygserver: build with -Wimplicit-fallthrough=5
Define the pseudo keyword 'fallthrough' in woutsup.h to support this.
2020-08-07 13:40:13 -04:00
Corinna Vinschen c8dc3fa0ba Cygwin: cygserver: build with -Wimplicit-fallthrough=4 -Werror
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-07 15:09:56 +02:00
Ken Brown 3a956a9bc3 Cygwin: fix GCC 8.3 'local external declaration' errors
Move external declarations out of function definition.
2019-07-17 11:08:20 -04:00
Corinna Vinschen 6497fdfaf4 Cygwin: fix bumptious GCC 7 warnings
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2018-06-26 17:20:48 +02:00
Corinna Vinschen 3913811454 cygserver: remove all asserts on "this"
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-11-28 19:08:04 +01:00
Corinna Vinschen c5ca43f359 Revert "cygserver: Revamp thread sleep handling"
This reverts commit b80b2c0119.
2017-06-20 13:09:07 +02:00
Corinna Vinschen 663b4ab824 cygserver: Speed up non-debug scenario
_log/_vlog were always called so we always had a function call hit even
if we're not debugging.  Expand on the debugging macros so the decision
to call _log/_vlog is done in the caller already.  Also, make a log level
difference between syscall_printf and system_printf.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 17:55:36 +01:00
Corinna Vinschen 4dbcfeb7d0 cygserver: Small code cleanup
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 17:53:40 +01:00
Corinna Vinschen b80b2c0119 cygserver: Revamp thread sleep handling
The current implementation is a very simple approach to implement
a statically sized sleep queue.  The problem is that this code requires
a certain amount of synchronization because the slots in the queue are
used dynamically.  To top it off, the Event objects used for sync'ing
are created and destroyed on demand.  This is complicated, slow, and
error prone.

There's also a blatant bug here: The number of slots in the queue was
wrongly computed in size.  It was too small if XSI IPC was used a lot.

Make the code more robust.  Let the queue have the right size.  Every
slot is now used for a specific IPC object.  All sync objects (switched
to Semaphores) are only created when first required, but never destroyed.
This reduces the usage of a critical section to the creation of a new
sync object.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 17:53:34 +01:00
Corinna Vinschen 0b73dba4de cygserver: raise number of worker threads on demand
The number of threads in the worker pool is fixed so far.  This is a
problem in XSI IPC scenarions with an unknown number of consumers.
It doesn't make sense to make the pool very big for a start, but when
the need arises, we need to make sure we can serve the request even if
all other worker threads are in a wait state.

This patch changes threaded_queue to just add another worker thread
if all current workers are busy.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 16:18:26 +01:00
Corinna Vinschen 838eaf6674 cygserver: Only print basename of source in debug output to raise readability
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 16:12:52 +01:00
Corinna Vinschen 8d6a522877 cygserver: Seralize debug output to stdout to raise readability
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2017-03-24 16:12:00 +01:00
Corinna Vinschen 6e623e9320 Switching the Cygwin DLL to LGPLv3+, dropping commercial buyout option
Bump GPLv2+ to GPLv3+ for some files, clarify BSD 2-clause.

Everything else stays under GPLv3+.

New Linking Exception exempts resulting executables from LGPLv3 section 4.

Add CONTRIBUTORS file to keep track of licensing.

Remove 'Copyright Red Hat Inc' comments.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-06-23 10:09:17 +02:00
Peter Foley e7e6119241 Rename without-mingw-progs to with-cross-bootstrap
Rename without-mingw-progs to with-cross-bootstrap, since it now
disables additional checks that are problematic for cross-compilers.

When cross-compiling a toolchain targeting cygwin, building cygwin1.dll
requires libgcc.
However, building libgcc requires the cygwin headers to be
installed.
Configuring cygwin requries the mingw-crt libraries, which require the
cygwin headers to be installed.
Work around this circular dependency by making the
--with-cross-bootstrap configure option skip cygwin's configure checks
for valid mingw-crt libraries. Cygwin will still properly link against
these libraries if they exist, but this allows configure to succeed even
if the libraries have not been built yet.
Since the mingw-crt libraries only require the cygwin headers to be
installed, this allows us to successfully configure cygwin so that we
can only install the headers without trying to build any
libraries.

winsup/ChangeLog
configure.ac: rename without-mingw-progs option to with-cross-bootstrap
configure: regenerate
winsup/cygserver/ChangeLog
configure.ac: don't check AC_WINDOWS_LIBS when using with-cross-bootstrap
configure: regenerate
winsup/cygwin/ChangeLog
configure.ac: don't check AC_WINDOWS_LIBS when using with-cross-bootstrap
configure: regenerate

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-04-04 16:39:41 +02:00
Corinna Vinschen 6436024c4c Replace AC_CANONICAL_SYSTEM with AC_CANONICAL_TARGET, fix AC_INIT usage
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-03-30 14:09:19 +02:00
Peter Foley 6699e21ffb Remove misleading indentation
GCC 6.0+ warns on misleading indentation, so fix it.

winsup/cygserver/ChangeLog
* sysv_msg.cc (msgsnd): Fix misleading indentation.
* sysv_msg.cc (msgrcv): Ditto.
* sysv_sem.cc (semop): Ditto.

Signed-off-by: Peter Foley <pefoley2@pefoley.com>
2016-03-21 20:16:01 +01:00
Corinna Vinschen 3df400dc83 winsup: Move all old CVS Changelogs into CVSChangeLogs.old dir 2016-03-19 13:59:52 +01:00
Corinna Vinschen 9ee2624240 Deprecate all winsup ChangeLog files
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-01-07 21:16:01 +01:00
Corinna Vinschen c9baa8a65b * pwdgrp.cc: Handle default fetch_user_arg_type_t in switches
throughout to silence compiler.
2015-02-23 21:00:31 +00:00
Corinna Vinschen 4c8daae24d * Makefile.in: Simplify rule to build dependencies from cygwin dir. 2015-01-28 11:46:25 +00:00
Corinna Vinschen 8d8f40361f * bsd_helper.h: Throughout, convert "struct thread" to "class thread".
* bsd_mutex.cc (_msleep): Fetch signal_arrived handle from thread's
	ipcblk.
	* process.h (class process): Drop _signal_arrived and align methods.
	(process_cache::process): Drop signal_arrived parameter.
	* process.cc (process::process): Ditto.  Drop related code.
	(process::~process): Drop closing signal_arrived handle.
	(process_cache::process): Drop signal_arrived parameter in call to
	process::process.
	(thread::dup_signal_arrived): New method duplicating thread's
	signal_arrived handle.
	(thread::close_signal_arrived): New method closing thread's
	signal_arrived handle.
	* msg.cc (client_request_msg::serve): Drop signal_arrived parameter from
	call to process_cache::process. Use thread constructor to initialize td.
	* sem.cc (client_request_sem::serve): Ditto.
	* shm.cc (client_request_shm::serve): Ditto.
2015-01-19 17:42:38 +00:00
Corinna Vinschen 0f3cacfaa5 * cygserver-config: Add -N option to allow different service name. 2014-11-06 16:36:42 +00:00
Corinna Vinschen 7e46c0af62 * configure.ac: Convert to new AC_INIT style.
* configure: Regenerate.
2014-08-15 21:24:35 +00:00
Corinna Vinschen feab3623c0 Fix typo 2014-07-16 08:30:20 +00:00
Corinna Vinschen cf06a0b18c * bsd_helper.cc (ipcexit_creat_hookthread): Delete shs in another error
case to make Coverity really happy (CID 59993).
2014-06-23 15:13:12 +00:00
Corinna Vinschen efaf85c5e6 * client.cc: Throughout, fix debug output of signed byte count value. 2014-06-23 09:17:24 +00:00
Corinna Vinschen 111727904f * bsd_mutex.cc (msleep_sync_array::~msleep_sync_array): New destructor
to make Coverity happy (CID 59838).
2014-05-19 09:52:43 +00:00
Corinna Vinschen ca6183c344 * bsd_helper.cc (ipcexit_creat_hookthread): Delete shs to make
Coverity happy (CID 59993).
	* transport_pipes.cc (transport_layer_pipes::listen): Make listen_pipe
	and connect_pipe statics to make Coverity happy (CID 60010/60011).
2014-05-19 09:49:15 +00:00
Corinna Vinschen d98d7f3973 * pwdgrp.cc (client_request_pwdgrp::pwd_serve): Add 1 to the message
length to account for the trailing NUL.
2014-04-16 09:26:41 +00:00
Corinna Vinschen b5a7cb02cd * cygserver-config: Use numeric id 18 instead of "system" in chown. 2014-04-16 08:44:58 +00:00
Corinna Vinschen d2ee481248 * process.cc (process::process): Only notice that signal_arrived is
NULL in debug output.
2014-04-07 11:19:29 +00:00
Corinna Vinschen 600afd99ab * Makefile.in (OBJS): Add pwdgrp.o.
* client.cc (client_request::handle_request): Handle
	CYGSERVER_REQUEST_PWDGRP message.
	* pwdgrp.cc: New file implementing CYGSERVER_REQUEST_PWDGRP.
2014-03-12 17:37:04 +00:00
Corinna Vinschen 681bb2f78a * Throughout, fix format specifiers in debug statements to accommodate
x86_64.
2014-03-12 16:00:48 +00:00
Corinna Vinschen 722c840b35 * setpwd.cc (client_request_setpwd::serve): Use RtlSecureZeroMemory to
delete password from memory.
2014-03-06 17:02:18 +00:00
Christopher Faylor 2a6d6db8e2 winsup/ChangeLog:
2013-11-06  Christopher Faylor  <me.cygwin2013@cgf.cx>

	* configure.ac: Detect windows headers/libs after we've figured out the
	C compiler.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.
	* configure.cygwin: Default to '.' if can't find a winsup directory.

winsup/cygserver/ChangeLog:
2013-11-06  Christopher Faylor  <me.cygwin2013@cgf.cx>

	* configure.ac: Detect windows headers/libs after we've figured out the
	C compiler.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.

winsup/cygwin/ChangeLog:
2013-11-06  Christopher Faylor  <me.cygwin2013@cgf.cx>

	* configure.ac: Detect windows headers/libs after we've figured out the
	C compiler.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.

winsup/utils/ChangeLog:
2013-11-06  Christopher Faylor  <me.cygwin2013@cgf.cx>

	* configure.ac: Detect windows headers/libs after we've figured out the
	C compiler.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.
2013-11-07 00:19:52 +00:00
Corinna Vinschen 61522196c7 * Merge in cygwin-64bit-branch. 2013-04-23 09:44:36 +00:00