• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NMake Makefile portion for compilation rules
2# Items in here should not need to be edited unless
3# one is maintaining the NMake build files.  The format
4# of NMake Makefiles here are different from the GNU
5# Makefiles.  Please see the comments about these formats.
6
7# Inference rules for compiling the .obj files.
8# Used for libs and programs with more than a single source file.
9# Format is as follows
10# (all dirs must have a trailing '\'):
11#
12# {$(srcdir)}.$(srcext){$(destdir)}.obj::
13# 	$(CC)|$(CXX) $(cflags) /Fo$(destdir) /c @<<
14# $<
15# <<
16{..\src\}.cc{$(CFG)\$(PLAT)\harfbuzz\}.obj::
17	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz\ /c @<<
18$<
19<<
20
21{..\src\hb-ucdn\}.c{$(CFG)\$(PLAT)\harfbuzz\}.obj::
22	$(CC) $(CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz\ /c @<<
23$<
24<<
25
26{..\src\}.cc{$(CFG)\$(PLAT)\harfbuzz-icu\}.obj::
27	$(CXX) $(CFLAGS) $(HB_LIB_CFLAGS) $(HB_ICU_CFLAGS) /Fo$(CFG)\$(PLAT)\harfbuzz-icu\ /c @<<
28$<
29<<
30
31{..\util\}.cc{$(CFG)\$(PLAT)\util\}.obj::
32	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) /Fo$(CFG)\$(PLAT)\util\ /c @<<
33$<
34<<
35
36# Inference rules for building the test programs
37# Used for programs with a single source file.
38# Format is as follows
39# (all dirs must have a trailing '\'):
40#
41# {$(srcdir)}.$(srcext){$(destdir)}.exe::
42# 	$(CC)|$(CXX) $(cflags) $< /Fo$*.obj  /Fe$@ [/link $(linker_flags) $(dep_libs)]
43{..\src\}.cc{$(CFG)\$(PLAT)\}.exe:
44	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) $< /Fo$*.obj  /Fe$@ /link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_TESTS_DEP_LIBS)
45
46{..\test\api\}.c{$(CFG)\$(PLAT)\}.exe:
47	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_CFLAGS) /DSRCDIR="\"../../../test/api\"" $< /Fo$*.obj /Fe$@ /link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_TESTS_DEP_LIBS)
48
49# Rules for building .lib files
50$(CFG)\$(PLAT)\harfbuzz.lib: $(HARFBUZZ_DLL_FILENAME).dll
51$(CFG)\$(PLAT)\harfbuzz-icu.lib: $(HARFBUZZ_ICU_DLL_FILENAME).dll
52$(CFG)\$(PLAT)\harfbuzz-gobject.lib: $(HARFBUZZ_GOBJECT_DLL_FILENAME).dll
53
54# Rules for linking DLLs
55# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
56# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
57#	link /DLL [$(linker_flags)] [$(dependent_libs)] [/def:$(def_file_if_used)] [/implib:$(lib_name_if_needed)] -out:$@ @<<
58# $(dependent_objects)
59# <<
60# 	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
61$(HARFBUZZ_DLL_FILENAME).dll: config.h $(harfbuzz_dll_OBJS) $(CFG)\$(PLAT)\harfbuzz
62	link /DLL $(LDFLAGS) $(HB_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz.lib -out:$@ @<<
63$(harfbuzz_dll_OBJS)
64<<
65	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
66
67$(HARFBUZZ_ICU_DLL_FILENAME).dll: $(CFG)\$(PLAT)\harfbuzz.lib $(harfbuzz_icu_OBJS) $(CFG)\$(PLAT)\harfbuzz-icu
68	link /DLL $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_ICU_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz-icu.lib -out:$@ @<<
69$(harfbuzz_icu_OBJS)
70<<
71	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
72
73$(HARFBUZZ_GOBJECT_DLL_FILENAME).dll: $(CFG)\$(PLAT)\harfbuzz.lib $(harfbuzz_gobject_OBJS) $(CFG)\$(PLAT)\harfbuzz-gobject
74	link /DLL $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_GOBJECT_DEP_LIBS) /implib:$(CFG)\$(PLAT)\harfbuzz-gobject.lib -out:$@ @<<
75$(harfbuzz_gobject_OBJS)
76<<
77	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;2
78
79# Rules for linking Executables
80# Format is as follows (the mt command is needed for MSVC 2005/2008 builds):
81# $(dll_name_with_path): $(dependent_libs_files_objects_and_items)
82#	link [$(linker_flags)] [$(dependent_libs)] -out:$@ @<<
83# $(dependent_objects)
84# <<
85# 	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
86$(CFG)\$(PLAT)\hb-view.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_view_OBJS)
87	link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
88$(hb_view_OBJS)
89<<
90	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
91
92$(CFG)\$(PLAT)\hb-shape.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_shape_OBJS)
93	link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
94$(hb_shape_OBJS)
95<<
96	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
97
98$(CFG)\$(PLAT)\hb-ot-shape-closure.exe: $(CFG)\$(PLAT)\harfbuzz.lib $(CFG)\$(PLAT)\util $(hb_ot_shape_closure_OBJS)
99	link $(LDFLAGS) $(CFG)\$(PLAT)\harfbuzz.lib $(HB_UTILS_DEP_LIBS) -out:$@ @<<
100$(hb_ot_shape_closure_OBJS)
101<<
102	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
103
104# Other .obj files requiring individual attention, that could not be covered by the inference rules.
105# Format is as follows (all dirs must have a trailing '\'):
106#
107# $(obj_file):
108# 	$(CC)|$(CXX) $(cflags) /Fo$(obj_destdir) /c @<<
109# $(srcfile)
110# <<
111$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-structs.obj:	$(CFG)\$(PLAT)\harfbuzz-gobject $(HB_GOBJECT_ENUM_GENERATED_SOURCES)
112	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /I$(CFG)\$(PLAT)\harfbuzz-gobject /Fo$(CFG)\$(PLAT)\harfbuzz-gobject\ /c @<<
113..\src\hb-gobject-structs.cc
114<<
115
116$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.obj: $(CFG)\$(PLAT)\harfbuzz-gobject $(HB_GOBJECT_ENUM_GENERATED_SOURCES)
117	$(CXX) $(CFLAGS) $(HB_DEFINES) $(HB_LIB_CFLAGS) /I$(CFG)\$(PLAT)\harfbuzz-gobject /Fo$(CFG)\$(PLAT)\harfbuzz-gobject\ /c @<<
118$(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
119<<
120
121clean:
122	@-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib del /f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.typelib
123	@-if exist $(CFG)\$(PLAT)\HarfBuzz-0.0.gir del /f /q $(CFG)\$(PLAT)\HarfBuzz-0.0.gir
124	@-if exist $(CFG)\$(PLAT)\hb_list del /f /q $(CFG)\$(PLAT)\hb_list
125	@-del /f /q $(CFG)\$(PLAT)\*.pdb
126	@-if exist $(CFG)\$(PLAT)\.exe.manifest del /f /q $(CFG)\$(PLAT)\*.exe.manifest
127	@-if exist $(CFG)\$(PLAT)\.exe del /f /q $(CFG)\$(PLAT)\*.exe
128	@-del /f /q $(CFG)\$(PLAT)\*.dll.manifest
129	@-del /f /q $(CFG)\$(PLAT)\*.dll
130	@-del /f /q $(CFG)\$(PLAT)\*.ilk
131	@-del /f /q $(CFG)\$(PLAT)\*.obj
132	@-if exist $(CFG)\$(PLAT)\util del /f /q $(CFG)\$(PLAT)\util\*.obj
133	@-if exist $(CFG)\$(PLAT)\harfbuzz-gobject del /f /q $(CFG)\$(PLAT)\harfbuzz-gobject\*.obj
134	@-if exist $(CFG)\$(PLAT)\harfbuzz-icu del /f /q $(CFG)\$(PLAT)\harfbuzz-icu\*.obj
135	@-del /f /q $(CFG)\$(PLAT)\harfbuzz\*.obj
136	@-rmdir /s /q $(CFG)\$(PLAT)
137	@-if exist $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h del $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.h
138	@-if exist $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc del $(CFG)\$(PLAT)\harfbuzz-gobject\hb-gobject-enums.cc
139	@-del vc$(VSVER)0.pdb
140	@-del config.h
141