@@ -2,7 +2,7 @@ ifneq ($(V),1)
22.SILENT :
33endif
44
5- .PHONY : all clean realclean wipeclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ear compiler prepbinaries epj2make libec2 bgen ide documentor eda prepcodeguard codeguard fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs ecereaudio
5+ .PHONY : all clean realclean wipeclean distclean emptyoutput prepinstall actualinstall install copyonlyinstall uninstall troubleshoot outputdirs bootstrap deps ecere ecerecom ecerevanilla ecerestatic ear compiler prepbinaries epj2make libec2 bgen ide documentor eda prepcodeguard codeguard fixprecompile cleantarget pots installer regenbootstrap updatebootstrap update_ecere update_libec update_ecp update_ecc update_ecs ecereaudio
66
77ROOT_ABSPATH := $(dir $(realpath $(firstword $(MAKEFILE_LIST ) ) ) )
88_CF_DIR = $(ROOT_ABSPATH )
@@ -45,6 +45,15 @@ ifndef DISABLE_EDA_dBASE
4545 EDAdBASE := defined
4646endif
4747
48+ ifndef DISABLE_EDA_STATIC
49+ EDA_STATIC := defined
50+ endif
51+
52+ ifndef DISABLE_ECERE_STATIC
53+ ECERE_STATIC := defined
54+ endif
55+
56+
4857ifdef WINDOWS_HOST
4958HOST_SOV := $(HOST_SO )
5059else
@@ -259,6 +268,10 @@ ecerevanilla: bootstrap
259268 @$(call echo,Building Vanilla Ecere...)
260269 +cd ecere && $(_MAKE ) -f Makefile.vanilla
261270
271+ ecerestatic : bootstrap
272+ @$(call echo,Building Static Ecere...)
273+ +cd ecere && $(_MAKE ) -f Makefile.static
274+
262275ear : ecere ecerevanilla
263276 @$(call echo,Building ear...)
264277 +cd ear && cd cmd && $(_MAKE ) cleantarget
@@ -275,7 +288,7 @@ endif
275288 @$(call echo,Building 2nd stage compiler)
276289 +cd compiler && $(_MAKE)
277290
278- prepbinaries : compiler libec2 ecerecom
291+ prepbinaries : compiler libec2 ecerecom ecerestatic
279292 @$(call echo,Enabling 2nd stage binaries...)
280293ifdef WINDOWS_TARGET
281294 $(call cp,ecere/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ecere$(SOV),$(OBJBINDIR))
@@ -412,15 +425,24 @@ endif
412425
413426emptyoutput : outputdirs
414427 $(call rm,$(OBJLIBDIR ) libecereVanilla$(A ) )
428+ ifdef ECERE_STATIC
429+ $(call rm,$(OBJLIBDIR)libecereStatic$(A))
430+ endif
415431 $(call rm,$(SODESTDIR)$(LP)ecere$(SO))
416432 $(call rm,$(SODESTDIR)$(LP)ecereCOM$(SO))
417433 $(call rm,$(SODESTDIR)$(LP)ec$(SO))
418434 $(call rm,$(SODESTDIR)$(LP)EDA$(SO))
435+ ifdef EDA_STATIC
436+ $(call rm,$(OBJLIBDIR)libEDAStatic$(A))
437+ endif
419438ifdef EDAdBASE
420439 $(call rm,$(SODESTDIR)$(LP)EDAdBASE$(SO))
421440endif
422441ifdef EDASQLite
423442 $(call rm,$(SODESTDIR)$(LP)EDASQLite$(SO))
443+ ifdef EDA_STATIC
444+ $(call rm,$(OBJLIBDIR)libEDASQLiteStatic$(A))
445+ endif
424446endif
425447ifdef EDASQLiteCipher
426448 $(call rm,$(SODESTDIR)$(LP)EDASQLiteCipher$(SO))
@@ -586,12 +608,25 @@ BINARIES = \
586608 bgen/obj/release.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /bgen$(B32_SFX )$(E ) \
587609 eda/libeda/obj/release.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /$(LP ) EDA$(SOV )
588610
611+ ifdef ECERE_STATIC
612+ BINARIES += \
613+ ecere/obj/static.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /libecereStatic$(A )
614+ endif
615+
616+ ifdef EDA_STATIC
617+ BINARIES += \
618+ eda/libeda/obj/static.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /libEDAStatic$(A )
619+ endif
589620ifdef EDAdBASE
590621BINARIES += eda/drivers/dbase/obj/release.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /$(LP ) EDAdBASE$(SOV )
591622endif
592623ifdef EDASQLite
593624BINARIES += \
594625 eda/drivers/sqlite/obj/release.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /$(LP ) EDASQLite$(SOV )
626+ ifdef EDA_STATIC
627+ BINARIES += \
628+ eda/drivers/sqlite/obj/static.$(PLATFORM )$(COMPILER_SUFFIX )$(DEBUG_SUFFIX ) /libEDASQLiteStatic$(A )
629+ endif
595630endif
596631
597632ifndef ECERE_PYTHON_PACKAGE
@@ -713,11 +748,17 @@ ifndef LINUX_TARGET
713748 $(call cp,compiler/libec/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec$(SO),$(OBJLIBDIR))
714749 $(call cp,compiler/libec2/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ec2$(SO),$(OBJLIBDIR))
715750 $(call cp,eda/libeda/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDA$(SO),$(OBJLIBDIR))
751+ ifdef EDA_STATIC
752+ $(call cp,eda/libeda/obj/static.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libEDAStatic$(A),$(OBJLIBDIR))
753+ endif
716754ifdef EDAdBASE
717755 $(call cp,eda/drivers/dbase/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDAdBASE$(SO),$(OBJLIBDIR))
718756endif
719757ifdef EDASQLite
720758 $(call cp,eda/drivers/sqlite/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EDASQLite$(SO),$(OBJLIBDIR))
759+ ifdef EDA_STATIC
760+ $(call cp,eda/drivers/sqlite/obj/static.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libEDASQLiteStatic$(A),$(OBJLIBDIR))
761+ endif
721762endif
722763ifneq ($(ECERE_AUDIO ) ,n)
723764 $(call cp,audio/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)EcereAudio$(SO),$(OBJLIBDIR))
@@ -742,6 +783,9 @@ ifdef CodeGuard
742783 $(call cp,codeGuard/obj/release.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/CodeGuard$(E),$(OBJBINDIR))
743784endif
744785 $(call cp,ecere/obj/vanilla.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereVanilla$(A),$(OBJLIBDIR))
786+ ifdef ECERE_STATIC
787+ $(call cp,ecere/obj/static.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/libecereStatic$(A),$(OBJLIBDIR))
788+ endif
745789
746790.PHONY : prepinstall32
747791prepinstall32 :
@@ -776,11 +820,17 @@ ifdef WINDOWS_TARGET
776820 $(call cp,$(OBJBINDIR)$(LP)ec$(SO),"$(DESTLIBDIR)/")
777821 $(call cp,$(OBJBINDIR)$(LP)ec2$(SO),"$(DESTLIBDIR)/")
778822 $(call cp,$(OBJBINDIR)$(LP)EDA$(SO),"$(DESTLIBDIR)/")
823+ ifdef EDA_STATIC
824+ $(call cp,$(OBJLIBDIR)libEDAStatic$(A),"$(DESTSLIBDIR)/")
825+ endif
779826ifdef EDAdBASE
780827 $(call cp,$(OBJBINDIR)$(LP)EDAdBASE$(SO),"$(DESTLIBDIR)/")
781828endif
782829ifdef EDASQLite
783830 $(call cp,$(OBJBINDIR)$(LP)EDASQLite$(SO),"$(DESTLIBDIR)/")
831+ ifdef EDA_STATIC
832+ $(call cp,$(OBJLIBDIR)libEDASQLiteStatic$(A),"$(DESTSLIBDIR)/")
833+ endif
784834endif
785835ifdef EDASQLiteCipher
786836 $(call cp,$(OBJBINDIR)$(LP)EDASQLiteCipher$(SO),"$(DESTLIBDIR)/")
@@ -801,6 +851,9 @@ ifdef CodeGuard
801851 $(call cp,$(OBJBINDIR)CodeGuard$(E),"$(BINDIR)/")
802852endif
803853 $(call cp,$(OBJLIBDIR)libecereVanilla$(A),"$(DESTSLIBDIR)/")
854+ ifdef ECERE_STATIC
855+ $(call cp,$(OBJLIBDIR)libecereStatic$(A),"$(DESTSLIBDIR)/")
856+ endif
804857 $(call cp,doc/tao.pdf,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf") || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
805858 $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
806859 $(call cpr,$(DOC)/ecere,"$(DOCDIR)/ecere")
@@ -813,11 +866,17 @@ ifdef OSX_TARGET
813866 install $(OBJLIBDIR)$(LP)ec$(SO) $(DESTLIBDIR)/
814867 install $(OBJLIBDIR)$(LP)ec2$(SO) $(DESTLIBDIR)/
815868 install $(OBJLIBDIR)$(LP)EDA$(SO) $(DESTLIBDIR)/
869+ ifdef EDA_STATIC
870+ install $(OBJLIBDIR)libEDAStatic$(A) $(DESTSLIBDIR)/
871+ endif
816872ifdef EDAdBASE
817873 install $(OBJLIBDIR)$(LP)EDAdBASE$(SO) $(DESTLIBDIR)/
818874endif
819875ifdef EDASQLite
820876 install $(OBJLIBDIR)$(LP)EDASQLite$(SO) $(DESTLIBDIR)/
877+ ifdef EDA_STATIC
878+ install $(OBJLIBDIR)libEDASQLiteStatic$(A) $(DESTSLIBDIR)/
879+ endif
821880endif
822881ifdef EDASQLiteCipher
823882 install $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SO) $(DESTLIBDIR)/
@@ -837,6 +896,9 @@ ifdef CodeGuard
837896 install $(OBJBINDIR)CodeGuard$(E) $(BINDIR)/
838897endif
839898 install $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/
899+ ifdef ECERE_STATIC
900+ install $(OBJLIBDIR)libecereStatic$(A) $(DESTSLIBDIR)/
901+ endif
840902 install -d $(DOCDIR)/
841903 install doc/tao.pdf $(DOCDIR)/"Ecere Tao of Programming [work in progress].pdf" >/dev/null 2>&1 || echo "The Ecere Tao of Programming is available at http://ecere.com/tao.pdf"
842904 $(call cpr,$(DOC)/ecereCOM,"$(DOCDIR)/ecereCOM")
@@ -862,11 +924,17 @@ ifdef LINUX_TARGET
862924 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec$(SOV) $(DESTLIBDIR)/ec/$(LP)ec$(SOV)
863925 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)ec2$(SOV) $(DESTLIBDIR)/ec/$(LP)ec2$(SOV)
864926 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDA$(SOV) $(DESTLIBDIR)/ec/$(LP)EDA$(SOV)
927+ ifdef EDA_STATIC
928+ install $(INSTALL_FLAGS) $(OBJLIBDIR)libEDAStatic$(A) $(DESTSLIBDIR)/ec/libEDAStatic$(A)
929+ endif
865930ifdef EDAdBASE
866931 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDAdBASE$(SOV) $(DESTLIBDIR)/ec/$(LP)EDAdBASE$(SOV)
867932endif
868933ifdef EDASQLite
869934 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLite$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLite$(SOV)
935+ ifdef EDA_STATIC
936+ install $(INSTALL_FLAGS) $(OBJLIBDIR)libEDASQLiteStatic$(A) $(DESTSLIBDIR)/ec/libEDASQLiteStatic$(A)
937+ endif
870938endif
871939ifdef EDASQLiteCipher
872940 install $(INSTALL_FLAGS) $(OBJLIBDIR)$(LP)EDASQLiteCipher$(SOV) $(DESTLIBDIR)/ec/$(LP)EDASQLiteCipher$(SOV)
@@ -933,13 +1001,15 @@ endif
9331001 install $(INSTALL_FLAGS) $(OBJBINDIR)bgen$(B32_SFX)$(E) $(BINDIR)/bgen$(B32_SFX)$(E)
9341002 install $(INSTALL_FLAGS) $(OBJBINDIR)documentor$(B32_SFX)$(E) $(BINDIR)/documentor$(B32_SFX)$(E)
9351003 install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
1004+ ifdef ECERE_STATIC
1005+ install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereStatic$(A) $(DESTSLIBDIR)/libecereStatic$(A)
1006+ endif
9361007ifndef SKIP_ADDITIONAL_FILES
9371008ifndef BSD_HOST
9381009 install $(INSTALL_FLAGS) -m 644 share/pixmaps/ecere.png $(DESTDIR)$(prefix)/share/pixmaps/ecere.png
9391010 install $(INSTALL_FLAGS) -m 644 share/applications/ecere.desktop $(DESTDIR)$(prefix)/share/applications/ecere.desktop
9401011endif
9411012endif
942- install $(INSTALL_FLAGS) $(OBJLIBDIR)libecereVanilla$(A) $(DESTSLIBDIR)/libecereVanilla$(A)
9431013ifdef BSD_HOST
9441014 install $(INSTALL_FLAGS) -d $(DOCDIR)
9451015endif
@@ -991,6 +1061,9 @@ uninstall:
9911061 $(call rm,"$(DESTLIBDIR ) /$(LP ) ec$(SO ) ")
9921062 $(call rm,"$(DESTLIBDIR ) /$(LP ) ec2$(SO ) ")
9931063 $(call rm,"$(DESTLIBDIR ) /$(LP ) EDA$(SO ) ")
1064+ ifdef EDA_STATIC
1065+ $(call rm,"$(DESTSLIBDIR)/libEDAStatic$(A)")
1066+ endif
9941067ifdef LINUX_TARGET
9951068ifdef EDAdBASE
9961069 $(call rm,"$(DESTLIBDIR)/ec/$(LP)EDAdBASE$(SO)")
@@ -1010,6 +1083,9 @@ ifdef EDAdBASE
10101083endif
10111084ifdef EDASQLite
10121085 $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLite$(SO)")
1086+ ifdef EDA_STATIC
1087+ $(call rm,"$(DESTSLIBDIR)/libEDASQLiteStatic$(A)")
1088+ endif
10131089endif
10141090ifdef EDASQLiteCipher
10151091 $(call rm,"$(DESTLIBDIR)/$(LP)EDASQLiteCipher$(SO)")
@@ -1028,6 +1104,9 @@ endif
10281104 $(call rm,"$(BINDIR)/documentor$(B32_SFX)$(E)")
10291105ifdef CodeGuard
10301106 $(call rm,"$(BINDIR)/CodeGuard$(E)")
1107+ endif
1108+ ifdef ECERE_STATIC
1109+ $(call rm,"$(DESTSLIBDIR)/libecereStatic$(A)")
10311110endif
10321111 $(call rm,"$(DESTSLIBDIR)/libecereVanilla$(A)")
10331112 $(call rm,"$(DOCDIR)/Ecere Tao of Programming [work in progress].pdf")
0 commit comments