# Makefile.common - common definitions for the winsup directory # # Copyright 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc. # # This file is part of Cygwin. # # This software is a copyrighted work licensed under the terms of the # Cygwin license. Please consult the file "CYGWIN_LICENSE" for # details. # This makefile requires GNU make. CFLAGS_COMMON:=-Wall -Wstrict-aliasing -Wwrite-strings -fno-common -pipe -fbuiltin -fmessage-length=0# -finline-functions MALLOC_DEBUG:=#-DMALLOC_DEBUG -I/cygnus/src/uberbaum/winsup/cygwin/dlmalloc MALLOC_OBJ:=#/cygnus/src/uberbaum/winsup/cygwin/dlmalloc/malloc.o override srcdir:=${shell cd $(srcdir); pwd} ifneq (,${filter-out /%,$(srcdir)}) updir:=$(srcdir)/.. updir1:=$(updir)/.. else updir:=${patsubst %:::,%,${patsubst %/:::,%,$(dir $(srcdir)):::}} ifneq (,${findstring /,$(updir)}) updir1:=${patsubst %:::,%,${patsubst %/:::,%,$(dir $(updir)):::}} else updir1:=$(updir)/.. endif endif pwd:=${shell pwd} ifneq "${filter winsup%,${notdir $(pwd)}}" "" here:=${pwd}/cygwin else here:=${dir $(pwd)}cygwin endif bupdir:=${shell cd $(here)/..; pwd} ifneq (,${filter-out /%,$(bupdir)}) bupdir1:=../.. bupdir2:=../../.. else ifneq (,${findstring /,$(bupdir)}) bupdir1:=${patsubst %:::,%,${patsubst %/:::,%,$(dir $(bupdir)):::}} else bupdir1:=$(bupdir)/.. endif ifneq (,${findstring /,$(bupdir1)}) bupdir2:=${patsubst %:::,%,${patsubst %/:::,%,$(dir $(bupdir1)):::}} else bupdir2:=$(bupdir1)/.. endif endif zlib_source:=$(updir)/zlib zlib_build:=$(bupdir)/zlib bz2lib_source:=$(updir)/bz2lib bz2lib_build:=$(bupdir)/bz2lib w32api_source:=$(updir)/w32api w32api_build:=$(bupdir)/w32api w32api_lib:=$(w32api_build)/lib newlib_source:=$(updir1)/newlib newlib_build:=$(bupdir1)/newlib cygwin_build:=$(bupdir)/cygwin cygwin_source:=$(updir)/cygwin mingw_build:=$(bupdir)/mingw mingw_source:=$(updir)/mingw utils_build:=$(bupdir)/utils utils_source:=$(updir)/utils ifeq (,${findstring $(newlib_source)/libc/include,$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) newlib_include:=-I$(newlib_source)/libc/include endif ifeq (,${findstring $(cygwin_source)/include,$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) cygwin_include:=-I$(cygwin_source)/include endif # Try to determine what directories are available in winsup. # Attempt to properly detect missing mingw or w32api and adjust command # line parameters appropriately # nostdinc:=${shell [ -d "$(updir)/w32api" ] && echo "-nostdinc"} # ifneq (,$(nostdinc)) nostdincxx:=-nostdinc++ # ifeq (,${findstring $(w32api_source),$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) w32api_include:=-I$(w32api_source)/include # endif # endif mingw_include:=${shell [ -d "$(mingw_source)/include" ] && echo "-I$(mingw_source)/include"} ifneq (,$(mingw_include)) nostdlib:=-nostdlib else nostdlib:= endif ifeq (,${nostdlib}) nostdinc:= endif INCLUDES:=-I. $(cygwin_include) -I$(cygwin_source) $(newlib_include) $(w32api_include) ifdef CONFIG_DIR INCLUDES+=-I$(CONFIG_DIR) endif MINGW_INCLUDES:=${mingw_include} $(w32api_include) MINGW_CFLAGS:=-mno-cygwin $(MINGW_INCLUDES) MINGW_CXXFLAGS:=${filter-out $(newlib_source)/%,$(CXXFLAGS)} -mno-cygwin $(MINGW_INCLUDES) MINGW_LDFLAGS:=-B${mingw_build} -B${mingw_build}/mingwex GCC_DEFAULT_OPTIONS:=$(CFLAGS_COMMON) $(CFLAGS_CONFIG) $(INCLUDES) # Link in libc and libm from newlib LIBC:=$(newlib_build)/libc/libc.a LIBM:=$(newlib_build)/libm/libm.a CRT0:=$(cygwin_build)/crt0.o ALL_CFLAGS:=$(DEFS) $(MALLOC_DEBUG) $(CFLAGS) $(GCC_DEFAULT_OPTIONS) ALL_CXXFLAGS=$(DEFS) $(MALLOC_DEBUG) $(CXXFLAGS) $(GCC_DEFAULT_OPTIONS) ifndef PREPROCESS c=-c o=.o else c=-E -dD o=.E endif libgcc:=${subst \,/,${shell $(CC_FOR_TARGET) -print-libgcc-file-name}} gcc_libdir:=${word 1,${dir $(libgcc)}} ifeq (,${findstring $(gcc_libdir),$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)}) GCC_INCLUDE:=${subst //,/,-I$(gcc_libdir)/include} endif COMPILE_CXX=$(CXX) $c $(nostdincxx) $(nostdinc) $(ALL_CXXFLAGS) $(GCC_INCLUDE) \ -fno-rtti -fno-exceptions COMPILE_CC=$(CC) $c $(nostdinc) $(ALL_CFLAGS) $(GCC_INCLUDE) vpath %.a $(cygwin_build):$(w32api_lib):$(newlib_build)/libc:$(newlib_build)/libm MAKEOVERRIDES_WORKAROUND=${wordlist 2,1,a b c} ifneq ($(MAKEOVERRIDES_WORKAROUND),) override MAKE:=$(MAKE) $(MAKEOVERRIDES) MAKEOVERRIDES:= export MAKEOVERRIDES endif ifdef RPATH_ENVVAR VERBOSE=1 endif ifneq "${findstring -B,$(COMPILE_CXX) $(COMPILE_CC)}" "" VERBOSE=1 endif .PRECIOUS: %.o %.o: %.cc ifdef VERBOSE $(COMPILE_CXX) -o $(@D)/$(*F)$o $< else @echo $(CXX) $c $(CXXFLAGS) ... $(*F).cc @$(COMPILE_CXX) -o $(@D)/$(*F)$o $< endif %.o: %.c ifdef VERBOSE $(COMPILE_CC) -o $(@D)/$(*F)$o $< else @echo $(CC) $c $(CFLAGS) ... $(*F).c @$(COMPILE_CC) -o $(@D)/$(*F)$o $< endif $(bupdir1)/libiberty/%.o: $(updir1)/libiberty/%.c @$(MAKE) -C $(@D) $(@F) $(w32api_lib)/%.a: $(w32api_lib)/Makefile @$(MAKE) --no-print-dir -C $(@D) $(@F) $(bz2lib)/%.a: $(bz2lib)/Makefile @$(MAKE) --no-print-dir -C $(@D) $(@F) $(zlib)/%.a: $(zlib)/Makefile @$(MAKE) --no-print-dir -C $(@D) $(@F) all: # For auto-rebuilding the Makefile .PRECIOUS: Makefile Makefile: Makefile.in $(srcdir)/configure.in config.status $(SHELL) config.status config.status: configure $(SHELL) config.status --recheck