|
| 1 | +# Visual C++ Makefile for PDCurses - SDL3 |
| 2 | +# |
| 3 | +# Usage: nmake -f [path\]Makefile.vc [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] |
| 4 | +# [target] |
| 5 | +# |
| 6 | +# where target can be any of: |
| 7 | +# [all|demos|pdcurses.lib|testcurs.exe...] |
| 8 | + |
| 9 | +O = obj |
| 10 | +E = .exe |
| 11 | +RM = del |
| 12 | + |
| 13 | +!ifndef PDCURSES_SRCDIR |
| 14 | +PDCURSES_SRCDIR = .. |
| 15 | +!endif |
| 16 | + |
| 17 | +osdir = $(PDCURSES_SRCDIR)\sdl3 |
| 18 | +common = $(PDCURSES_SRCDIR)\common |
| 19 | + |
| 20 | +!include $(common)\libobjs.mif |
| 21 | +!include $(osdir)\versions.mif |
| 22 | + |
| 23 | +SDL3_INCLUDE = -I$(SDLBASE)\include |
| 24 | +SDL3_LIB = $(SDLBASE)\lib\$(PLATFORM)\SDL3.lib |
| 25 | +SDL3_LIBMAIN = $(SDLBASE)\lib\$(PLATFORM)\SDL3main.lib |
| 26 | + |
| 27 | +PDCURSES_WIN_H = $(osdir)\pdcsdl.h |
| 28 | + |
| 29 | +CC = cl.exe -nologo |
| 30 | + |
| 31 | +!ifndef PLATFORM |
| 32 | +PLATFORM = $(VSCMD_ARG_TGT_ARCH) |
| 33 | +!endif |
| 34 | + |
| 35 | +!ifdef DEBUG |
| 36 | +CFLAGS = -Z7 -W4 -DPDCDEBUG -D_CRT_SECURE_NO_DEPRECATE |
| 37 | +LDFLAGS = -debug -pdb:none |
| 38 | +!else |
| 39 | +CFLAGS = -Ox -W4 -D_CRT_SECURE_NO_DEPRECATE |
| 40 | +LDFLAGS = |
| 41 | +!endif |
| 42 | + |
| 43 | +!ifdef WIDE |
| 44 | +WIDEOPT = -DPDC_WIDE |
| 45 | +!endif |
| 46 | + |
| 47 | +!ifdef UTF8 |
| 48 | +WIDEOPT = -DPDC_FORCE_UTF8 |
| 49 | +!endif |
| 50 | + |
| 51 | +!ifdef WIDEOPT |
| 52 | +TTF_INCLUDE = -I$(TTFBASE)\include |
| 53 | +TTF_LIB = $(TTFBASE)\lib\$(PLATFORM)\SDL3_ttf.lib |
| 54 | +!endif |
| 55 | + |
| 56 | +SHL_LD = link $(LDFLAGS) -nologo -dll -machine:$(PLATFORM) -out:pdcurses.dll |
| 57 | + |
| 58 | +LINK = link.exe -nologo -subsystem:windows |
| 59 | + |
| 60 | +LIBEXE = lib -nologo |
| 61 | + |
| 62 | +LIBCURSES = pdcurses.lib |
| 63 | +CURSESDLL = pdcurses.dll |
| 64 | + |
| 65 | +!ifdef DLL |
| 66 | +DLLOPT = -DPDC_DLL_BUILD |
| 67 | +PDCLIBS = $(CURSESDLL) |
| 68 | +LIBLIBS = $(SDL3_LIB) $(TTF_LIB) |
| 69 | +CCLIBS = $(SDL3_LIBMAIN) $(SDL3_LIB) shell32.lib |
| 70 | +!else |
| 71 | +PDCLIBS = $(LIBCURSES) |
| 72 | +CCLIBS = $(SDL3_LIBMAIN) $(SDL3_LIB) $(TTF_LIB) shell32.lib |
| 73 | +!endif |
| 74 | + |
| 75 | +BUILD = $(CC) -I$(PDCURSES_SRCDIR) \ |
| 76 | +-c $(CFLAGS) $(DLLOPT) $(WIDEOPT) $(INFOPT) |
| 77 | + |
| 78 | +all: $(PDCLIBS) |
| 79 | + |
| 80 | +clean: |
| 81 | + -$(RM) *.obj |
| 82 | + -$(RM) $(LIBCURSES) |
| 83 | + -$(RM) *.exe |
| 84 | + -$(RM) $(CURSESDLL) |
| 85 | + -$(RM) *.exp |
| 86 | + -$(RM) pdcurses.res |
| 87 | + |
| 88 | +demos: $(PDCLIBS) $(DEMOS) sdltest.exe |
| 89 | + |
| 90 | +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj sdltest.obj |
| 91 | + |
| 92 | +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) |
| 93 | +$(PDCOBJS) : $(PDCURSES_WIN_H) |
| 94 | +$(DEMOOBJS) : $(PDCURSES_CURSES_H) |
| 95 | +$(DEMOS) : $(LIBCURSES) |
| 96 | +panel.obj : $(PANEL_HEADER) |
| 97 | + |
| 98 | +!ifndef DLL |
| 99 | +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) |
| 100 | + $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS) |
| 101 | +!endif |
| 102 | + |
| 103 | +$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj |
| 104 | + $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(LIBLIBS) |
| 105 | + |
| 106 | +pdcurses.res pdcurses.obj: $(common)\pdcurses.rc |
| 107 | + rc -r -fopdcurses.res $(common)\pdcurses.rc |
| 108 | + cvtres -machine:$(PLATFORM) -nologo -out:pdcurses.obj pdcurses.res |
| 109 | + |
| 110 | +{$(srcdir)\}.c{}.obj:: |
| 111 | + $(BUILD) $< |
| 112 | + |
| 113 | +{$(osdir)\}.c{}.obj:: |
| 114 | + $(BUILD) -Dmain=SDL_main $(SDL3_INCLUDE) $(TTF_INCLUDE) $< |
| 115 | + |
| 116 | +{$(demodir)\}.c{}.obj:: |
| 117 | + $(BUILD) -Dmain=SDL_main $< |
| 118 | + |
| 119 | +.obj.exe: |
| 120 | + $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS) |
| 121 | + |
| 122 | +tuidemo.exe: tuidemo.obj tui.obj pdcurses.lib |
| 123 | + $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS) |
| 124 | + |
| 125 | +tui.obj: $(demodir)\tui.c $(demodir)\tui.h |
| 126 | + $(BUILD) -I$(demodir) $(demodir)\tui.c |
| 127 | + |
| 128 | +tuidemo.obj: $(demodir)\tuidemo.c |
| 129 | + $(BUILD) -Dmain=SDL_main -I$(demodir) $(demodir)\tuidemo.c |
| 130 | + |
| 131 | +sdltest.exe: sdltest.obj pdcurses.obj pdcurses.lib |
| 132 | + $(LINK) $(LDFLAGS) $*.obj $(LIBCURSES) $(LIBLIBS) $(CCLIBS) |
0 commit comments