144 lines
5.0 KiB
Makefile
144 lines
5.0 KiB
Makefile
# -*- tab-width: 4 -*-
|
|
#
|
|
# Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
# This Makefile builds a .jar file and accompanying JNI support library
|
|
# containing the DNSSD implementation for Java and support classes.
|
|
#
|
|
# Prior to building Java support, you must build DNSSD.dll.
|
|
#
|
|
# nmake with no arguments builds all production targets.
|
|
# 'nmake DEBUG=1' to build debugging targets.
|
|
# 'nmake clean' or 'nmake clean DEBUG=1' to delete prod/debug objects & targets
|
|
#
|
|
# To run nmake, you may need to set up your PATH correctly, using a script
|
|
# such as: "\Program Files\Microsoft Visual Studio .NET\Vc7\bin\vcvars32.bat"
|
|
#
|
|
# The default location of the JDK is \javasdk. You can override this on the
|
|
# command line (e.g. 'nmake JDK=\j2dk1.4.2_03').
|
|
|
|
############################################################################
|
|
|
|
COREDIR = ..\..\mDNSCore
|
|
SHAREDDIR = ..\..\mDNSShared
|
|
|
|
JDK = $(JAVA_HOME)
|
|
|
|
CC = cl
|
|
RC = rc
|
|
LD = ld
|
|
CP = copy
|
|
RM = del /Q
|
|
RMDIR = rmdir /S /Q
|
|
JAVAC = $(JDK)\bin\javac
|
|
JAVAH = $(JDK)\bin\javah
|
|
JAR = $(JDK)\bin\jar
|
|
CFLAGS_COMMON = -LD -DAUTO_CALLBACKS=0 -I. -I..\.. \
|
|
-I$(COREDIR) -I$(SHAREDDIR) -I$(JDK)\include -I$(JDK)\include\win32
|
|
|
|
# Set up diverging paths for debug vs. prod builds
|
|
DEBUG=0
|
|
!if $(DEBUG) == 1
|
|
CFLAGS_DEBUG = -Zi -DMDNS_DEBUGMSGS=2
|
|
OBJDIR = objects\debug
|
|
BUILDDIR = build\debug
|
|
INSTALLDIR = root\"Program Files"\Bonjour
|
|
LIBDIR = ..\DLL\Win32\Debug
|
|
!else
|
|
CFLAGS_DEBUG = -Os -DMDNS_DEBUGMSGS=0
|
|
OBJDIR = objects\prod
|
|
BUILDDIR = build\prod
|
|
INSTALLDIR = root\"Program Files"\Bonjour
|
|
LIBDIR = ..\DLL\Win32\Release
|
|
!endif
|
|
|
|
CFLAGS = $(CFLAGS_COMMON) $(CFLAGS_DEBUG)
|
|
JAVACFLAGS = $(CFLAGS) $(JAVACFLAGS_OS)
|
|
|
|
#############################################################################
|
|
|
|
all: setup Java postbuild
|
|
|
|
# 'setup' sets up the build directory structure the way we want
|
|
setup:
|
|
@if not exist objects mkdir objects
|
|
@if not exist build mkdir build
|
|
@if not exist $(OBJDIR) mkdir $(OBJDIR)
|
|
@if not exist $(BUILDDIR) mkdir $(BUILDDIR)
|
|
|
|
postbuild:
|
|
@if not "%RC_XBS%"=="YES" GOTO CONT
|
|
@if not exist "$(DSTROOT)\WINDOWS\system32\Win32" mkdir "$(DSTROOT)\WINDOWS\system32\Win32"
|
|
@if not exist "$(DSTROOT)\Program Files\Bonjour\Win32" mkdir "$(DSTROOT)\Program Files\Bonjour\Win32"
|
|
@copy $(BUILDDIR)\jdns_sd.dll "$(DSTROOT)\WINDOWS\system32\Win32"
|
|
@copy $(BUILDDIR)\dns_sd.jar "$(DSTROOT)\Program Files\Bonjour\Win32"
|
|
@:CONT
|
|
@if not exist root mkdir root
|
|
@if not exist root\"Program Files" mkdir root\"Program Files"
|
|
@if not exist $(INSTALLDIR) mkdir $(INSTALLDIR)
|
|
copy $(BUILDDIR)\dns_sd.jar $(INSTALLDIR)
|
|
copy $(BUILDDIR)\jdns_sd.dll $(INSTALLDIR)
|
|
|
|
# clean removes targets and objects
|
|
clean:
|
|
@if exist $(OBJDIR) $(RMDIR) $(OBJDIR)
|
|
@if exist $(BUILDDIR) $(RMDIR) $(BUILDDIR)
|
|
|
|
#############################################################################
|
|
|
|
# The following targets build Java wrappers for the dns-sd.h API.
|
|
|
|
Java: setup $(BUILDDIR)\dns_sd.jar $(BUILDDIR)\jdns_sd.dll postbuild
|
|
@echo "Java wrappers done"
|
|
|
|
JAVASRC = $(SHAREDDIR)\Java
|
|
JARCONTENTS = $(OBJDIR)\com\apple\dnssd\DNSSDService.class \
|
|
$(OBJDIR)\com\apple\dnssd\DNSSDException.class \
|
|
$(OBJDIR)\com\apple\dnssd\DNSRecord.class \
|
|
$(OBJDIR)\com\apple\dnssd\TXTRecord.class \
|
|
$(OBJDIR)\com\apple\dnssd\DNSSDRegistration.class \
|
|
$(OBJDIR)\com\apple\dnssd\DNSSDRecordRegistrar.class \
|
|
$(OBJDIR)\com\apple\dnssd\BaseListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\BrowseListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\ResolveListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\RegisterListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\RegisterRecordListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\QueryListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\DomainListener.class \
|
|
$(OBJDIR)\com\apple\dnssd\DNSSD.class
|
|
|
|
$(BUILDDIR)\dns_sd.jar: $(JARCONTENTS)
|
|
$(JAR) -cf $@ -C $(OBJDIR) com
|
|
|
|
$(BUILDDIR)\jdns_sd.dll: $(JAVASRC)\JNISupport.c $(OBJDIR)\DNSSD.java.h $(OBJDIR)\jdns_sd.RES
|
|
$(CC) -Fe$@ $(JAVASRC)\JNISupport.c $(CFLAGS) -I$(OBJDIR) \
|
|
$(LIBDIR)\DNSSD.lib $(JDK)\lib\jvm.lib ws2_32.lib iphlpapi.lib $(OBJDIR)\jdns_sd.RES /link /NXCOMPAT /DYNAMICBASE /SAFESEH
|
|
|
|
.SUFFIXES : .java
|
|
{$(JAVASRC)}.java{$(OBJDIR)\com\apple\dnssd}.class:
|
|
$(JAVAC) -d $(OBJDIR) -classpath $(OBJDIR) $<
|
|
|
|
$(OBJDIR)\DNSSD.java.h: $(OBJDIR)\com\apple\dnssd\DNSSD.class
|
|
$(JAVAH) -classpath $(OBJDIR) -o $@ \
|
|
com.apple.dnssd.AppleBrowser \
|
|
com.apple.dnssd.AppleResolver \
|
|
com.apple.dnssd.AppleRegistration \
|
|
com.apple.dnssd.AppleQuery \
|
|
com.apple.dnssd.AppleService
|
|
|
|
$(OBJDIR)\jdns_sd.RES: jdns_sd.rc
|
|
$(RC) /fo $@ $?
|
|
|