Makefile for Visual C++




#############################################################
# Makefile for Visual C++ 6.0 #
# #
# To compile "http.exe", use the following command line: #
# #
# nmake /f makefile_win all #
#############################################################


TARGET = NT
EXTRA_DEFINES = /UDEBUG

LOCAL_INCLUDES = .\includes
LOCAL_SRC = .\src
LOCAL_OBJS = .\objs
WINSOCK_LIB = Ws2_32.lib

CC = cl.exe
LINKER = link.exe
CFLAGS = /DNT /GX /I$(LOCAL_INCLUDES) /D$(TARGET) $(EXTRA_DEFINES)

#############################################################
# Single thread #
#############################################################

MULTI_THREAD_FLAG = /MT

$(LOCAL_OBJS)\m_sockets.obj: $(LOCAL_SRC)\sockets.cpp $(LOCAL_INCLUDES)\sockets.h Makefile_win
        $(CC) $(CFLAGS) $(MULTI_THREAD_FLAG) /c $(LOCAL_SRC)\sockets.cpp /Fo$(LOCAL_OBJS)\m_sockets.obj
        
$(LOCAL_OBJS)\m_http.obj: $(LOCAL_SRC)\http.cpp $(LOCAL_INCLUDES)\http.hpp Makefile_win
        $(CC) $(CFLAGS) $(MULTI_THREAD_FLAG) /c $(LOCAL_SRC)\http.cpp /Fo$(LOCAL_OBJS)\m_http.obj

http_multi.exe: multi_thread_win.cpp $(LOCAL_OBJS)\m_sockets.obj $(LOCAL_OBJS)\m_http.obj
        $(CC) $(CFLAGS) $(MULTI_THREAD_FLAG) multi_thread_win.cpp /Fehttp_multi.exe /link $(WINSOCK_LIB) $(LOCAL_OBJS)\m_sockets.obj $(LOCAL_OBJS)\m_http.obj

#############################################################
# Multi thread #
#############################################################

$(LOCAL_OBJS)\s_sockets.obj: $(LOCAL_SRC)\sockets.cpp $(LOCAL_INCLUDES)\sockets.h Makefile_win
        $(CC) $(CFLAGS) /c $(LOCAL_SRC)\sockets.cpp /Fo$(LOCAL_OBJS)\s_sockets.obj
        
$(LOCAL_OBJS)\s_http.obj: $(LOCAL_SRC)\http.cpp $(LOCAL_INCLUDES)\http.hpp Makefile_win
        $(CC) $(CFLAGS) /c $(LOCAL_SRC)\http.cpp /Fo$(LOCAL_OBJS)\s_http.obj

http_single.exe: single_thread.cpp $(LOCAL_OBJS)\s_sockets.obj $(LOCAL_OBJS)\s_http.obj
        $(CC) $(CFLAGS) single_thread.cpp /Fehttp_single.exe /link $(WINSOCK_LIB) $(LOCAL_OBJS)\s_sockets.obj $(LOCAL_OBJS)\s_http.obj


all: http_multi.exe http_single.exe

single_thread: http_single.exe
multi_thread: http_multi.exe

clean:
        del "$(LOCAL_OBJS)\*.obj"
        del http_single.exe
        del http_multi.exe
        del *.obj