############################################################################## # Copyright 2020 Thomas E. Dickey # # Copyright 1998-2000,2006 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # # copy of this software and associated documentation files (the "Software"), # # to deal in the Software without restriction, including without limitation # # the rights to use, copy, modify, merge, publish, distribute, distribute # # with modifications, sublicense, and/or sell copies of the Software, and to # # permit persons to whom the Software is furnished to do so, subject to the # # following conditions: # # # # The above copyright notice and this permission notice shall be included in # # all copies or substantial portions of the Software. # # # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # # THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # # DEALINGS IN THE SOFTWARE. # # # # Except as contained in this notice, the name(s) of the above copyright # # holders shall not be used in advertising or otherwise to promote the sale, # # use or other dealings in this Software without prior written # # authorization. # ################################################################################ # $Id: Makefile.os2,v 1.12 2020/02/02 23:34:34 tom Exp $ # # Wrapper Makefile for ncurses library under OS/2. # Author: Juan Jose Garcia Ripoll . # Webpage: http://www.arrakis.es/~worm/ ################################################################################ # # Notes (from I Zakharevich) # ~~~~~~~~~~~~~~~~~~~~~~~~~~ # I could build the library with the following sequence of commands: # # touch Makefile # make -f Makefile.os2 config # make -f Makefile.os2 CC=gcc HOSTCC=gcc CXX=gcc # # Ignoring the following errors: # Invalid configuration `os2'... # ... ac_maketemp="make": not found # ... syntax error: `done' unexpected # No rule to make target `lib/ncurses4.dll' # # You may need to run # # rm make.defs # make -f Makefile.os2 make.defs # # if the build of misc/panel.def fails. # # If you do not have perl, the configuration will fail. Use autoconf to # generate the EMX-specific configure script (see README.emx), and run the # configure script to generate the makefiles. Then, run # # make -f Makefile.os2 make.dlls # # Notes (from J J G Ripoll) # ~~~~~~~~~~~~~~~~~~~~~~~~~ # The `make.defs' rule creates the new '.def' files and outputs a diagnostic # about symbols that disappear from one release to the other, as well as # checks about the new '.def' consistency. If there were no problems, the # maintainer is free to replace the `.ref' files with the newer ones using the # `save.defs' rule. So, the only tough work is ensuring that the symbols that # disappear are not essential. # # I first thought about killing '_nc_*' symbols, but it seems that some of # them --_nc_panel_hook, _nc_ada*, etc-- are needed outside ncurses.dll. # However, the whole size of the export table will not be larger than 1k or # so. # # [installation] # # The way things are handled in misc/Makefile is not well suited for OS/2, # where only emx.src is needed. Thus, I've written a few wrapper rules in # Makefile.os2 that handle installation/deinstallation. # # [distribution] # # There's also a new rule that configures and builds a sort of binary # distribution, much like the one I prepared for 1.9.9e. It's `os2dist'. # ################################################################################ all :: config # This is for configuring # What is a useful value for this? CONFIG_OPTS = --enable-termcap WWWGET = lynx -source MV_F = mv -f DLL_LN_OPTS = -Zcrtdll -Zdll -Zomf -Zmt config: config.cache config.cache: configure.cmd configure -$(MV_F) $@ $@.ref configure.cmd $(CONFIG_OPTS) configure.cmd: configure convert_configure.pl perl convert_configure.pl configure > $@ convert_configure.pl: $(WWWGET) ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/$@ > $@ install :: echo *** echo *** Do not use this command. Use install.os2 instead. echo *** exit 2 install.os2 : install.emxdata install.libs install.progs include ./Makefile all :: make.dlls # # DLLs and that stuff # LIBRARIES = ncurses form menu panel DLL_TAG = $(NCURSES_MAJOR) LIB_TAG = _s DLL_ROOTS = $(addsuffix $(DLL_TAG), $(LIBRARIES)) DLLS = $(addsuffix .dll, $(addprefix ./lib/, $(DLL_ROOTS))) LIB_ROOTS = $(addsuffix $(LIB_TAG), $(LIBRARIES)) LIBS = $(addsuffix .lib, $(addprefix ./lib/, $(LIB_ROOTS))) LIBS_AOUT = $(addsuffix .a, $(addprefix ./lib/, $(LIB_ROOTS))) DEFS = $(addsuffix .def, $(addprefix ./misc/, $(LIBRARIES))) DLL_SIGNATURE = NCurses-$(NCURSES_MAJOR)-$(NCURSES_MINOR)-$(NCURSES_PATCH) ./lib/%$(LIB_TAG).lib : ./misc/%.def emximp -o $@ $< ./lib/%$(LIB_TAG).a : ./misc/%.def emximp -o $@ $< ./lib/%$(DLL_TAG).dll : ./lib/%.a emxomf -o ./lib/$*$(DLL_TAG).lib $< if [ "$*" = "ncurses" ]; then \ gcc $(LDFLAGS) $(DLL_LN_OPTS) ./lib/$*$(DLL_TAG).lib \ ./misc/$*.def -o $@; \ else \ gcc $(LDFLAGS) $(DLL_LN_OPTS) ./lib/$*$(DLL_TAG).lib \ ./lib/ncurses$(LIB_TAG).lib ./misc/$*.def -o $@; \ fi -rm -f ./lib/$*$(DLL_TAG).lib make.dlls : $(DEFS) $(LIBS) $(DLLS) $(LIBS_AOUT) $(DEFS) : make.defs LIBDIR = $(DESTDIR)$(libdir) $(LIBDIR) : mkdir -p $@ install.libs :: $(LIBS) $(DLLS) $(LIBDIR) @for i in $(DLL_ROOTS); do \ echo installing ./lib/$$i.dll as $(LIBDIR)/$$i.dll; \ $(INSTALL_DATA) ./lib/$$i.dll $(LIBDIR)/$$i.dll; done @for i in $(LIB_ROOTS); do \ echo installing ./lib/$$i.lib as $(LIBDIR)/$$i.lib; \ $(INSTALL_DATA) ./lib/$$i.lib $(LIBDIR)/$$i.lib; done uninstall.libs :: -@for i in $(DLL_ROOTS); do \ echo uninstalling $(LIBDIR)/$$i.dll; \ rm -f $(LIBDIR)/$$i.dll; done -@for i in $(LIB_ROOTS); do \ echo uninstalling $(LIBDIR)/$$i.lib; \ rm -f $(LIBDIR)/$$i.lib; done make.defs : for i in $(LIBRARIES); do \ echo LIBRARY $${i}$(DLL_TAG) INITINSTANCE TERMINSTANCE > ./misc/$$i.def; \ echo DESCRIPTION \"$(DLL_SIGNATURE), module $$i\" >> ./misc/$$i.def; \ echo CODE LOADONCALL >> ./misc/$$i.def; \ echo DATA LOADONCALL NONSHARED MULTIPLE >> ./misc/$$i.def; \ echo EXPORTS >> ./misc/$$i.def; \ echo Creating $$i.def; \ (cmd /C ".\\misc\\makedef.cmd ./lib/$$i.a ./misc/$$i.ref >> ./misc/$$i.def" \ && cmd /C ".\\misc\\chkdef.cmd ./misc/$$i.def") \ || exit 1; \ done touch make.defs save.defs : for i in $(LIBRARIES); do \ test -f ./misc/$$i.def && cp ./misc/$$i.def ./misc/$$i.ref; \ done clean \ os2clean :: -rm -f $(DLLS) $(LIBS) realclean :: -rm -f $(addprefix ./misc/, $(addsuffix .def, $(LIBRARIES))) # # This is a simplified version of misc/Makefile # TICDIR = $(DESTDIR)$(datadir)/terminfo TABSETDIR = $(DESTDIR)$(datadir)/tabset $(TICDIR) : mkdir -p $@ install \ install.emxdata :: $(TICDIR) -@rm -fr $(TICDIR)/* echo Building terminfo database, please wait... set TERMINFO=$(TICDIR); ./progs/tic ./misc/emx.src echo Installing the terminfo cleaner and the sources... cp ./misc/emx.src ./misc/cleantic.cmd $(TICDIR) ./misc/cleantic.cmd $(TICDIR) uninstall \ uninstall.emxdata :: -cd $(TICDIR) && rm -rf * -cd $(TABSETDIR) && rm -rf * # # This is for preparing binary distributions # OS2NAME=ncurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-emx # # FIXME: this assumes that we can rerun the configure script, changing only # the install-prefix. That means we cannot provide "interesting" options # when building. # os2dist : $(MAKE) -f Makefile.os2 os2clean ./configure --without-debug --with-install-prefix=`pwd|sed -e 's@^.:@@'`/$(OS2NAME) $(MAKE) -f Makefile.os2 $(CF_MFLAGS) install.os2 -rm -f $(OS2NAME).zip echo NCurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-$(NCURSES_PATCH) for emx > $(OS2NAME)/FILE_ID.DIZ echo Binary release. >> $(OS2NAME)/FILE_ID.DIZ zip -r $(OS2NAME).zip ./$(OS2NAME) clean \ os2clean :: -rm -rf $(OS2NAME) -rm -f $(OS2NAME).zip