view Makefile.in @ 1955:91541efcea10

Mac: Complete refactoring of the Mac code using a handful of macros. This allows using the old mutex system for thread safety pre-mojave. On Mojave and later instead we create two functions, an entrypoint and an actual code function which will get called on the main thread. This avoids Apples new artifical checks that the code is running on the main thread, since it actually is running on the main thread even though the actual caller might not be.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 24 Jul 2019 17:22:19 +0000
parents 6923871d0048
children 10ca3e9d199f
line wrap: on
line source

srcdir=@srcdir@
mandir=@mandir@
CC	=	@CC@
PLATCCFLAGS = @PLATCCFLAGS@
MLFLAGS	=	-L.
include $(srcdir)/Version
CCFLAGS = @CFLAGS@ $(PLATCCFLAGS) @ARCH@ -D@DW_DEFINE@ -DBUILD_DLL -DDW_RESOURCES -DVER_REV=$(VER_REV)
LFLAGS	=	@LIBS@ @ARCH@
ARFLAGS = @ARFLAGS@
INSTALL =	@INSTALL@
DW_SRC  =	@DW_SRC@
DW_DIR  =	@DW_DIR@
INCPATH	=	-I.. -I. -I$(srcdir)
TARGET	=	@TARGET@
SRCS	=	$(srcdir)/$(DW_DIR)/$(DW_SRC)
BROWSER_OBJECT=@BROWSER_OBJECT@
COMPAT_OBJECT=@COMPAT_OBJECT@
INSTALL_COMPAT=@INSTALL_COMPAT@
OBJECTS	=	dw.o $(BROWSER_OBJECT)
SRCS2	=	$(srcdir)dwcompat.c
OBJECTS2=	$(COMPAT_OBJECT)
TARGET2=	@TARGET2@
TARGETS = @TARGETS@
VER_MAJ	=	$(DW_MAJOR_VERSION)
VER_MIN	=	$(DW_MINOR_VERSION)
VER_REV =	@SVNVERSION@
SOSUFFIX=	@SOSUFFIX@
SONAME=	@SONAME@
LIBPREFIX = @LIBPREFIX@
LIBSUFFIX = @LIBSUFFIX@
prefix	=	$(DESTDIR)@prefix@
SRCDIR=dwindows-$(VER_MAJ).$(VER_MIN)

#.SUFFIXES:	.c .h

#.c.o:
#	$(CC) -c $(CCFLAGS) $(INCPATH) -o $@ $<


# Link flags shared objects
SYSCONF_LFLAGS_SHOBJ	= @SHAREDFLAG@

# Linking shared libraries
#   - Build the $(TARGET) library, eg. lib$(TARGET).so.0.0
#   - Usually needs to incorporate $(VER_MAJ) and $(VER_MIN)
#
SYSCONF_LINK_SHLIB	= gcc
SYSCONF_LINK_TARGET_SHARED = @SYSCONF_LINK_TARGET_SHARED@
SYSCONF_LINK_LIB_SHARED	=  $(SYSCONF_LINK_SHLIB) $(SYSCONF_LFLAGS_SHOBJ) \
				     -o $(SYSCONF_LINK_TARGET_SHARED) \
				     $(OBJECTS) $(LFLAGS) $(SONAME); \
				 rm -f lib$(TARGET).$(SOSUFFIX) lib$(TARGET).$(SOSUFFIX).$(VER_MAJ); \
				 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).$(SOSUFFIX); \
				 ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).$(SOSUFFIX).$(VER_MAJ)

SYSCONF_LINK_TARGET_SHARED2 = @SYSCONF_LINK_TARGET_SHARED2@
SYSCONF_LINK_LIB_SHARED2 =  $(SYSCONF_LINK_SHLIB) $(SYSCONF_LFLAGS_SHOBJ) \
				     -o $(SYSCONF_LINK_TARGET_SHARED2) \
				     $(OBJECTS2) $(LFLAGS); \
				 rm -f lib$(TARGET2).$(SOSUFFIX) lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ); \
				 ln -s $(SYSCONF_LINK_TARGET_SHARED2) lib$(TARGET2).$(SOSUFFIX); \
				 ln -s $(SYSCONF_LINK_TARGET_SHARED2) lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ)


# Linking static libraries
#   - Build the $(TARGET) library, eg. lib$(TARGET).a
#
SYSCONF_AR		= ar $(ARFLAGS)
SYSCONF_LINK_TARGET_STATIC = @SYSCONF_LINK_TARGET_STATIC@
SYSCONF_LINK_LIB_STATIC	= rm -f $(SYSCONF_LINK_TARGET_STATIC) ; \
				 $(SYSCONF_AR) $(SYSCONF_LINK_TARGET_STATIC) $(OBJECTS)



####### Build rules

SYSCONF_LINK_TARGET = $(SYSCONF_LINK_TARGET_SHARED)
SYSCONF_LINK_LIB = $(SYSCONF_LINK_LIB_SHARED)

SYSCONF_LINK_TARGET2 = $(SYSCONF_LINK_TARGET_SHARED2)
SYSCONF_LINK_LIB2 = $(SYSCONF_LINK_LIB_SHARED2)

all: $(TARGETS) dwtest

install: installbase $(INSTALL_COMPAT)

installbase: $(SYSCONF_LINK_TARGET)
	$(INSTALL) -d $(prefix)/include; \
	$(INSTALL) -d $(prefix)/lib; \
	$(INSTALL) -d $(prefix)/bin; \
	$(INSTALL) -d $(prefix)/share/man/man1; \
	$(INSTALL) -d $(prefix)/lib/pkgconfig; \
	$(INSTALL) $(srcdir)/dw.h $(prefix)/include; \
	sed -e 's/@DW_MAJOR_VERSION@/'$(VER_MAJ)'/' -e 's/@DW_MINOR_VERSION@/'$(VER_MIN)'/' -e 's/@DW_SUB_VERSION@/'$(VER_REV)'/' < dwindows-config1 > dwindows-config
	$(INSTALL) dwindows-config $(prefix)/bin; \
	sed -e 's/@VERSION@/'$(VER_MAJ).$(VER_MIN).$(VER_REV)'/' < dwindows1.pc > dwindows.pc
	$(INSTALL) dwindows.pc $(prefix)/lib/pkgconfig; \
	$(INSTALL) $(srcdir)/dwindows-config.1 $(prefix)/share/man/man1; \
	cd $(prefix)/share/man/man1; gzip -f -9 dwindows-config.1
	$(INSTALL) $(SYSCONF_LINK_TARGET)  $(prefix)/lib; \
	cd $(prefix)/lib; \
	rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ); \
	ln -sf $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).$(SOSUFFIX); \
	ln -sf $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).$(SOSUFFIX).$(VER_MAJ)

installdwcompat: $(SYSCONF_LINK_TARGET2)
	$(INSTALL) -d $(prefix)/lib; \
	$(INSTALL) $(SYSCONF_LINK_TARGET2) $(prefix)/lib; \
	$(INSTALL) $(srcdir)/dwcompat.h $(prefix)/include; \
	cd $(prefix)/lib; \
	rm -f lib$(TARGET2).$(SOSUFFIX) lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ); \
	ln -sf $(SYSCONF_LINK_TARGET_SHARED2) lib$(TARGET2).$(SOSUFFIX); \
	ln -sf $(SYSCONF_LINK_TARGET_SHARED2) lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ)

uninstall:
	rm -f $(prefix)/lib/lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ)
	rm -f $(prefix)/lib/lib$(TARGET2).$(SOSUFFIX)
	rm -f $(prefix)/lib/lib$(TARGET2).$(SOSUFFIX).$(VER_MAJ).$(VER_MIN)
	rm -f $(prefix)/lib/lib$(TARGET).$(SOSUFFIX).$(VER_MAJ)
	rm -f $(prefix)/lib/lib$(TARGET).$(SOSUFFIX)
	rm -f $(prefix)/lib/lib$(TARGET).$(SOSUFFIX).$(VER_MAJ).$(VER_MIN)
	rm -f $(prefix)/bin/dwindows-config
	rm -f $(prefix)/include/dwcompat.h
	rm -f $(prefix)/include/dw.h
	rm -f $(prefix)/share/man/man1/dwindows-config.1.gz

deb: dist
	-rm -fr tmp
	-mkdir tmp
	(cd tmp;tar zxvf ../../$(srcdir)/$(SRCDIR).tar.gz;cd $(SRCDIR);dpkg-buildpackage -rfakeroot;cd ..;ls -l)

distclean: clean
	rm -f config.status
	rm -f dwindows-config dwindows-config1

clean:
	rm -f *.$(SOSUFFIX)
	rm -f *.$(SOSUFFIX).*
	rm -f *.o
	rm -f *~
	rm -f *.a
	rm -f $(DW_DIR)/*.o
	rm -f dwtest

$(SYSCONF_LINK_TARGET2): $(OBJECTS2)
	$(SYSCONF_LINK_LIB2)

$(SYSCONF_LINK_TARGET): $(OBJECTS)
	$(SYSCONF_LINK_LIB)

$(SYSCONF_LINK_TARGET_STATIC): $(OBJECTS)
	$(SYSCONF_LINK_LIB_STATIC)

dw.o: $(srcdir)/$(DW_DIR)/$(DW_SRC) $(srcdir)/dw.h
	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/$(DW_DIR)/$(DW_SRC)

browser.o: $(srcdir)/$(DW_DIR)/browser.cpp $(srcdir)/dw.h
	$(CXX) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/$(DW_DIR)/browser.cpp

dwcompat.o: $(srcdir)/dwcompat.c
	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/dwcompat.c

dwtest.o: $(srcdir)/dwtest.c $(srcdir)/dw.h
	$(CC) -c $(INCPATH) $(CCFLAGS) -o $@ $(srcdir)/dwtest.c

dwtest: dwtest.o
	$(CC) -o dwtest dwtest.o $(MLFLAGS) -l$(TARGET) $(LFLAGS)
	-chmod +x $(srcdir)/mac/finishup.sh
	-$(srcdir)/mac/finishup.sh $(srcdir)

zip:
	zip dwindows$(VER_MAJ)$(VER_MIN).zip $(srcdir)/license.txt $(srcdir)/makefile.* $(srcdir)/readme.txt $(srcdir)/*.c $(srcdir)/dw.h  $(srcdir)/dwcompat.h \
	$(srcdir)/win/*.def $(srcdir)/os2/*.def $(srcdir)/install.sh $(srcdir)/*.in $(srcdir)/configure \
	$(srcdir)/ac*.m4 $(srcdir)/dwindows-config.1 $(srcdir)/Version \
	$(srcdir)/gtk/*.c $(srcdir)/gtk/*.cpp $(srcdir)/win/*.c $(srcdir)/os2/*.c $(srcdir)/win/*.txt $(srcdir)/os2/*.txt \
	$(srcdir)/gtk/*.xpm $(srcdir)/win/*.ico $(srcdir)/os2/*.ico $(srcdir)/mac/*.png \
	$(srcdir)/mac/Info.plist $(srcdir)/mac/PkgInfo $(srcdir)/mac/*.m $(srcdir)/mac/finishup.sh \
	$(srcdir)/platform/*.h \
	$(srcdir)/debian/control $(srcdir)/debian/rules $(srcdir)/debian/copyright $(srcdir)/debian/compat $(srcdir)/debian/changelog

dist:
	(cd $(srcdir)/..;ln -sf dwindows $(SRCDIR))
	(cd $(srcdir)/..;tar -cvf - $(SRCDIR)/license.txt $(SRCDIR)/makefile.* $(SRCDIR)/readme.txt $(SRCDIR)/*.c $(SRCDIR)/dw.h $(SRCDIR)/dwcompat.h \
	$(SRCDIR)/install.sh $(SRCDIR)/*.in $(SRCDIR)/configure $(SRCDIR)/Version \
	$(SRCDIR)/ac*.m4 $(SRCDIR)/dwindows-config.1 $(SRCDIR)/config.sub $(SRCDIR)/config.guess \
	$(SRCDIR)/gtk/*.c $(SRCDIR)/gtk/*.cpp $(SRCDIR)/win/*.c $(SRCDIR)/win/*.cpp $(SRCDIR)/os2/*.c  $(SRCDIR)/win/*.txt $(SRCDIR)/os2/*.txt \
	$(SRCDIR)/gtk/*.xpm $(SRCDIR)/gtk3/*.c $(SRCDIR)/win/*.def $(SRCDIR)/os2/*.def $(SRCDIR)/image/test.* $(SRCDIR)/win/*.ico $(SRCDIR)/os2/*.ico \
	$(SRCDIR)/mac/Info.plist $(SRCDIR)/mac/PkgInfo $(SRCDIR)/mac/*.m $(SRCDIR)/mac/finishup.sh $(SRCDIR)/mac/*.png \
	$(SRCDIR)/debian/control $(SRCDIR)/debian/rules $(SRCDIR)/debian/copyright $(SRCDIR)/debian/compat $(SRCDIR)/debian/changelog \
	$(SRCDIR)/platform/*.h | gzip > $(SRCDIR).tar.gz )
	(cd $(srcdir)/..;rm -f $(SRCDIR))