Blame Makefile.msc.in

Packit 4a5d52
## -*- mode: makefile -*-
Packit 4a5d52
## Makefile for building the libIDL dll with Microsoft C
Packit 4a5d52
## Use: nmake -f Makefile.msc
Packit 4a5d52

Packit 4a5d52
# As far as I can see a MSVC-built libIDL DLL is binary compatible
Packit 4a5d52
# with a gcc-built one, except for the IDL_tree_to_IDL() function
Packit 4a5d52
# which has a FILE* parameter. (FILE structs are meaningless in a
Packit 4a5d52
# module that uses a different C runtime.) That function is not used
Packit 4a5d52
# by ORBit2 at least, though. Thus use the same name for the DLL. Keep
Packit 4a5d52
# this in sync with current and age in LT_VERSION (@LT_VERSION@).
Packit 4a5d52
CURRENT_MINUS_AGE = 0
Packit 4a5d52

Packit 4a5d52
IDL_DLL = libIDL-2-$(CURRENT_MINUS_AGE).dll
Packit 4a5d52

Packit 4a5d52
all: __glib_cflags.mk $(IDL_DLL) tstidl.exe
Packit 4a5d52

Packit 4a5d52
LDOPT = -debug
Packit 4a5d52
CCOPT = 
Packit 4a5d52

Packit 4a5d52
CC = cl -GF $(CCOPT) -MD -W3 -nologo
Packit 4a5d52

Packit 4a5d52
MT = mt
Packit 4a5d52

Packit 4a5d52
LDFLAGS = -link -incremental:no -libpath:c:/opt/proxy-libintl/lib $(LDOPT)
Packit 4a5d52

Packit 4a5d52
# Indirect file with GLib cflags
Packit 4a5d52
__glib_cflags.mk:
Packit 4a5d52
	pkg-config --msvc-syntax --cflags glib-2.0 >$@
Packit 4a5d52

Packit 4a5d52
# And libs
Packit 4a5d52
__glib_libs.mk:
Packit 4a5d52
	for /F "delims==" %i in ('pkg-config --msvc-syntax --libs glib-2.0') \
Packit 4a5d52
		do echo $(LDFLAGS) %i >$@
Packit 4a5d52

Packit 4a5d52
CFLAGS = -Iinclude -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS @__glib_cflags.mk
Packit 4a5d52

Packit 4a5d52
# All .c files go into the DLL except tstidl.c, so we can use _DLIBIDL_COMPILATION
Packit 4a5d52
# in general, correspondingly then build tstidl.exe directly from tstidl.c
Packit 4a5d52
DEFS = -DLIBIDL_VERSION=\"@LIBIDL_VERSION@\" \
Packit 4a5d52
       -DCPP_PROGRAM="\"cl.exe /E /nologo\"" \
Packit 4a5d52
       -DSTDC_HEADERS -DHAVE_POPEN -DHAVE_STDDEF_H -DHAVE_WCHAR_H \
Packit 4a5d52
       -DYYTEXT_POINTER -DYYDEBUG \
Packit 4a5d52
       -DG_LOG_DOMAIN=\"libIDL\" \
Packit 4a5d52
       -DLIBIDL_COMPILATION
Packit 4a5d52

Packit 4a5d52
libIDL_OBJECTS =	\
Packit 4a5d52
	parser.obj	\
Packit 4a5d52
	lexer.obj	\
Packit 4a5d52
	ns.obj		\
Packit 4a5d52
	util.obj
Packit 4a5d52

Packit 4a5d52
$(IDL_DLL): $(libIDL_OBJECTS) libIDL.def __glib_libs.mk
Packit 4a5d52
        $(CC) $(CFLAGS) -LD -Fe$@ $(libIDL_OBJECTS) libIDL.def @__glib_libs.mk -link -implib:libIDL-2.lib
Packit 4a5d52
	$(MT) -manifest $@.manifest -outputresource:$@;2
Packit 4a5d52

Packit 4a5d52
.c.obj:
Packit 4a5d52
        $(CC) $(CFLAGS) $(DEFS) -c $<
Packit 4a5d52

Packit 4a5d52
tstidl.exe: $(IDL_DLL) tstidl.c
Packit 4a5d52
        $(CC) $(CFLAGS) -Fe$@ tstidl.c libIDL-2.lib @__glib_libs.mk
Packit 4a5d52
	$(MT) -manifest $@.manifest -outputresource:$@;1
Packit 4a5d52

Packit 4a5d52
clean:
Packit 4a5d52
	del *.exe
Packit 4a5d52
	del *.obj
Packit 4a5d52
	del *.dll
Packit 4a5d52
	del *.lib
Packit 4a5d52
	del *.err
Packit 4a5d52
	del *.map
Packit 4a5d52
	del *.exp
Packit 4a5d52
	del *.pdb
Packit 4a5d52
	del *.manifest
Packit 4a5d52
	del __*.mk