ifeq (0,${MAKELEVEL})
  uname_m:=$(shell uname -m)
  uname_s:=$(shell uname -s)
endif

ifeq ($(findstring CYGWIN,$(uname_s)),CYGWIN)
  ifeq ($(findstring x86_64,$(uname_m)),x86_64)
    NATIVE=x86_64-w64-mingw32-
  else
    ifeq ($(findstring i686,$(uname_m)),i686)
      NATIVE=i686-w64-mingw32-
    endif
  endif
endif

NATIVECC=$(NATIVE)gcc
NATIVECXX=$(NATIVE)g++
NATIVEAR=$(NATIVE)ar

LDFLAGS=-static-libgcc
CXXLDFLAGS=-static-libgcc -static-libstdc++

INCLUDES=
LIBS=
NTDLL=-lntdll
EXEEXT=.exe
O=o

PROGRAMS = getAccountName$(EXEEXT) winProductName$(EXEEXT)

NATIVE_LIB = libnative.a
NATIVE_LIB_SRC=lookupAccountName.cpp getopt1.c getopt.c
NATIVE_LIB_HDR=lookupAccountName.h getopt.h
NATIVE_LIB_OBJ=$(filter %.$(O),$(NATIVE_LIB_SRC:.cpp=.$(O))) \
	       $(filter %.$(O),$(NATIVE_LIB_SRC:.c=.$(O)))

%.$(O) : %.c
	$(NATIVECC) $(CPPFLAGS) $(CFLAGS) -c $^ -o $@

%.$(O) : %.cpp
	$(NATIVECXX) $(CPPFLAGS) $(CFLAGS) -c $^ -o $@

all : $(PROGRAMS)

getAccountName$(EXEEXT): getAccountName.$(O) $(NATIVE_LIB) Win32Error.h
	$(NATIVECXX) $(CFLAGS) $(CXXLDFLAGS) -o $@ $< $(LIBS) $(NATIVE_LIB)

winProductName$(EXEEXT): winProductName.$(O) $(NATIVE_LIB)
	$(NATIVECC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(NTDLL)

$(NATIVE_LIB): $(NATIVE_LIB_OBJ) $(NATIVE_LIB_HDR)
	$(NATIVEAR) -cr $@ $(NATIVE_LIB_OBJ)

clean:
	rm -f *.$(O) $(NATIVE_LIB) $(PROGRAMS)

