From a69280a86628c419dadbc749bde75b0de2961d47 Mon Sep 17 00:00:00 2001 From: Yibo Lin Date: Fri, 13 Jan 2017 22:43:08 -0600 Subject: [PATCH] rearrange all top makefiles --- Include.mk | 2 +- Makefile | 99 ++++-------------------- Readme.md | 17 ++-- limbo/Makefile | 28 +++++++ limbo/parsers/Makefile | 50 ++++++++++++ limbo/thirdparty/Makefile | 39 ++++++---- limbo/thirdparty/OpenBLAS/Makefile.limbo | 2 +- test/Makefile | 39 ++++++++++ test/algorithms/Makefile | 4 + test/geometry/Makefile | 1 + test/parsers/Makefile | 53 +++++++++++++ test/parsers/def/Makefile | 2 +- test/parsers/ebeam/Makefile | 2 +- test/parsers/lef/Makefile | 2 +- test/programoptions/Makefile | 2 +- test/solvers/Makefile | 13 ++++ test/solvers/lpmcf/Makefile | 3 + test/string/Makefile | 4 + 18 files changed, 247 insertions(+), 115 deletions(-) create mode 100644 limbo/Makefile create mode 100644 limbo/parsers/Makefile create mode 100644 test/Makefile create mode 100644 test/parsers/Makefile create mode 100644 test/solvers/Makefile diff --git a/Include.mk b/Include.mk index f4d2032b..429b6e42 100644 --- a/Include.mk +++ b/Include.mk @@ -10,7 +10,7 @@ # determine linking flags UNAME_S = $(shell uname -s) ifeq ($(UNAME_S), Linux) - LINK_FLAG = -static # overall linking flag, maybe changed later + LINK_FLAG = # overall linking flag, maybe changed later STATIC_LINK_FLAG = -Wl,-Bstatic # ld under Linux has fine control DYNAMIC_LINK_FLAG = -Wl,-Bdynamic # ld under Linux has fine control endif diff --git a/Makefile b/Makefile index 1d97a87c..8d4ec30f 100644 --- a/Makefile +++ b/Makefile @@ -1,94 +1,23 @@ # top makefile MAKE = make -TEST_DIR = test -# list of components -PARSERS = limbo/parsers -SOLVERS = limbo/solvers -PROGRAMOPTIONS = limbo/programoptions -THIRDPARTY = limbo/thirdparty +all: limbo -RESRCS = \ - $(PARSERS)/def/bison \ - $(PARSERS)/lef/bison \ - $(PARSERS)/ebeam/bison \ - $(PARSERS)/lp/bison \ - $(PARSERS)/verilog/bison \ - $(PARSERS)/gdf/bison \ - $(PARSERS)/gdsii/stream \ - $(PARSERS)/bookshelf/bison \ - $(SOLVERS)/lpmcf \ - $(PROGRAMOPTIONS) - -.PHONY: build - -build: - mkdir -p lib - mkdir -p bin - $(MAKE) -C $(PARSERS)/def/bison - $(MAKE) all -C $(PARSERS)/lef/bison - $(MAKE) -C $(PARSERS)/ebeam/bison - $(MAKE) -C $(PARSERS)/lp/bison - $(MAKE) -C $(PARSERS)/verilog/bison - $(MAKE) -C $(PARSERS)/gdf/bison - $(MAKE) -C $(PARSERS)/gdsii/stream - $(MAKE) -C $(PARSERS)/bookshelf/bison - $(MAKE) -C $(PROGRAMOPTIONS) - $(MAKE) -C $(THIRDPARTY) - -install: - mkdir -p lib - mkdir -p bin - $(MAKE) install -C $(PARSERS)/def/bison - $(MAKE) install -C $(PARSERS)/lef/bison - $(MAKE) install -C $(PARSERS)/ebeam/bison - $(MAKE) install -C $(PARSERS)/lp/bison - $(MAKE) install -C $(PARSERS)/verilog/bison - $(MAKE) install -C $(PARSERS)/gdf/bison - $(MAKE) install -C $(PARSERS)/gdsii/stream - $(MAKE) install -C $(PARSERS)/bookshelf/bison - $(MAKE) install -C $(PROGRAMOPTIONS) - $(MAKE) install -C $(THIRDPARTY) +.PHONY: limbo +limbo: + $(MAKE) -C limbo +.PHONY: test test: - $(MAKE) -C $(TEST_DIR)/algorithms - $(MAKE) -C $(TEST_DIR)/geometry - $(MAKE) -C $(TEST_DIR)/parsers/def - $(MAKE) -C $(TEST_DIR)/parsers/lef - $(MAKE) -C $(TEST_DIR)/parsers/ebeam - $(MAKE) -C $(TEST_DIR)/parsers/lp - $(MAKE) -C $(TEST_DIR)/parsers/tf - $(MAKE) -C $(TEST_DIR)/parsers/verilog - $(MAKE) -C $(TEST_DIR)/parsers/gdf - $(MAKE) -C $(TEST_DIR)/parsers/gdsii - $(MAKE) -C $(TEST_DIR)/parsers/bookshelf - $(MAKE) -C $(TEST_DIR)/programoptions - $(MAKE) -C $(TEST_DIR)/solvers/lpmcf - $(MAKE) -C $(TEST_DIR)/string + $(MAKE) -C test +.PHONY: clean clean: - $(MAKE) extraclean -C $(PARSERS)/def/bison - $(MAKE) extraclean -C $(PARSERS)/lef/bison - $(MAKE) extraclean -C $(PARSERS)/ebeam/bison - $(MAKE) extraclean -C $(PARSERS)/lp/bison - $(MAKE) extraclean -C $(PARSERS)/verilog/bison - $(MAKE) extraclean -C $(PARSERS)/gdf/bison - $(MAKE) extraclean -C $(PARSERS)/gdsii/stream - $(MAKE) extraclean -C $(PARSERS)/bookshelf/bison - $(MAKE) extraclean -C $(PROGRAMOPTIONS) - $(MAKE) extraclean -C $(THIRDPARTY) - $(MAKE) extraclean -C $(TEST_DIR)/algorithms - $(MAKE) extraclean -C $(TEST_DIR)/geometry - $(MAKE) extraclean -C $(TEST_DIR)/parsers/def - $(MAKE) extraclean -C $(TEST_DIR)/parsers/lef - $(MAKE) extraclean -C $(TEST_DIR)/parsers/ebeam - $(MAKE) extraclean -C $(TEST_DIR)/parsers/lp - $(MAKE) extraclean -C $(TEST_DIR)/parsers/tf - $(MAKE) extraclean -C $(TEST_DIR)/parsers/verilog - $(MAKE) extraclean -C $(TEST_DIR)/parsers/gdf - $(MAKE) extraclean -C $(TEST_DIR)/parsers/gdsii - $(MAKE) extraclean -C $(TEST_DIR)/parsers/bookshelf - $(MAKE) extraclean -C $(TEST_DIR)/programoptions - $(MAKE) extraclean -C $(TEST_DIR)/solvers/lpmcf - $(MAKE) extraclean -C $(TEST_DIR)/string + $(MAKE) clean -C limbo + $(MAKE) clean -C test + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C limbo + $(MAKE) extraclean -C test diff --git a/Readme.md b/Readme.md index b6508521..01878d8b 100644 --- a/Readme.md +++ b/Readme.md @@ -109,7 +109,8 @@ Users need to make sure they are properly installed and the corresponding settin * In the directory of limbo library, run ``` -make install +make +make test (optional) ``` After installation, it is strongly recommended to export LIMBO_DIR to the path where Limbo library is installed as an environment variable. @@ -118,8 +119,8 @@ After installation, it is strongly recommended to export LIMBO_DIR to the path w * CXX sets the compiler for C++ and CC sets the compiler for C. FC sets the fortran compiler which is only needed by some third party packages like OpenBLAS. Some examples are as follows, ``` -make install CXX=g++ CC=gcc FC=gfortran (default for Linux) -make install CXX=clang++ CC=clang FC=gfortran (default for Mac/Darwin) +make CXX=g++ CC=gcc FC=gfortran (default for Linux) +make CXX=clang++ CC=clang FC=gfortran (default for Mac/Darwin) ``` ### 3. Customize CXXSTDLIB and CXXSTD options @@ -128,15 +129,15 @@ make install CXX=clang++ CC=clang FC=gfortran (default for Mac/Darwin) Under clang, following combinations are valid, ``` -make install CXXSTDLIB="-stdlib=libstdc++" CXXSTD="-std=c++98" (default) -make install CXXSTDLIB="-stdlib=libc++" CXXSTD="-std=c++98" -make install CXXSTDLIB="-stdlib=libc++" CXXSTD="-std=c++11" +make CXXSTDLIB="-stdlib=libstdc++" CXXSTD="-std=c++98" (default) +make CXXSTDLIB="-stdlib=libc++" CXXSTD="-std=c++98" +make CXXSTDLIB="-stdlib=libc++" CXXSTD="-std=c++11" ``` Under gcc, there is no -stdlib option, so following combinations are valid, ``` -make install CXXSTD="-std=c++98" (default) -make install CXXSTD="-std=c++11" +make CXXSTD="-std=c++98" (default) +make CXXSTD="-std=c++11" ``` Users must make sure the setting is consistent to dependent libraries during compilation, such as Boost, Lemon, etc. diff --git a/limbo/Makefile b/limbo/Makefile new file mode 100644 index 00000000..f5b61f3b --- /dev/null +++ b/limbo/Makefile @@ -0,0 +1,28 @@ +all: geometry parsers programoptions thirdparty +.PHONY: geometry parsers programoptions thirdparty + +geometry: + $(MAKE) -C geometry + +parsers: + $(MAKE) -C parsers + +programoptions: + $(MAKE) -C programoptions + +thirdparty: + $(MAKE) -C thirdparty + +.PHONY: clean +clean: + $(MAKE) clean -C geometry + $(MAKE) clean -C parsers + $(MAKE) clean -C programoptions + $(MAKE) clean -C thirdparty + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C geometry + $(MAKE) extraclean -C parsers + $(MAKE) extraclean -C programoptions + $(MAKE) extraclean -C thirdparty diff --git a/limbo/parsers/Makefile b/limbo/parsers/Makefile new file mode 100644 index 00000000..104e1548 --- /dev/null +++ b/limbo/parsers/Makefile @@ -0,0 +1,50 @@ +all: bookshelf def ebeam gdf gdsii lef lp tf verilog +.PHONY: bookshelf def ebeam gdf gdsii lef lp tf verilog + +bookshelf: + $(MAKE) -C bookshelf/bison + +def: + $(MAKE) -C def/bison + +ebeam: + $(MAKE) -C ebeam/bison + +gdf: + $(MAKE) -C gdf/bison + +gdsii: + $(MAKE) -C gdsii/stream + +lef: + $(MAKE) -C lef/bison + +lp: + $(MAKE) -C lp/bison + +tf: + +verilog: + $(MAKE) -C verilog/bison + +.PHONY: clean +clean: + $(MAKE) clean -C bookshelf/bison + $(MAKE) clean -C def/bison + $(MAKE) clean -C ebeam/bison + $(MAKE) clean -C gdf/bison + $(MAKE) clean -C gdsii/stream + $(MAKE) clean -C lef/bison + $(MAKE) clean -C lp/bison + $(MAKE) clean -C verilog/bison + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C bookshelf/bison + $(MAKE) extraclean -C def/bison + $(MAKE) extraclean -C ebeam/bison + $(MAKE) extraclean -C gdf/bison + $(MAKE) extraclean -C gdsii/stream + $(MAKE) extraclean -C lef/bison + $(MAKE) extraclean -C lp/bison + $(MAKE) extraclean -C verilog/bison diff --git a/limbo/thirdparty/Makefile b/limbo/thirdparty/Makefile index bbab731c..128fefae 100644 --- a/limbo/thirdparty/Makefile +++ b/limbo/thirdparty/Makefile @@ -8,10 +8,13 @@ CSDP_SRCS = Csdp OPENBLAS_SRCS = OpenBLAS LIBLINEAR_SRCS = liblinear CTHREADPOOL_SRCS = CThreadPool +DLX_SRCS = dlx + CSDP_LIB = $(LIMBO_ROOT_DIR)/lib/libsdp.a OPENBLAS_LIB = $(LIMBO_ROOT_DIR)/lib/libopenblas-st.a LIBLINEAR_LIB = $(LIMBO_ROOT_DIR)/lib/liblinear.a CTHREADPOOL_LIB = $(LIMBO_ROOT_DIR)/lib/libthpool.a +DLX_LIB = $(LIMBO_ROOT_DIR)/lib/libdlx.a #========================================================================== # Compilation Flags @@ -36,55 +39,59 @@ endif # ========================================================================== ifeq ($(OPENBLAS), 1) -all: $(CSDP_LIB) $(OPENBLAS_LIB) $(LIBLINEAR_LIB) $(CTHREADPOOL_LIB) +all: $(CSDP_LIB) $(OPENBLAS_LIB) $(LIBLINEAR_LIB) $(CTHREADPOOL_LIB) $(DLX_LIB) @echo ">> building default with OPENBLAS on" else -all: $(CTHREADPOOL_LIB) +all: $(CTHREADPOOL_LIB) $(DLX_LIB) @echo ">> building default with OPENBLAS off" endif +.PHONY: $(OPENBLAS_LIB) $(CSDP_LIB) $(LIBLINEAR_LIB) $(CTHREADPOOL_LIB) $(DLX_LIB) + $(OPENBLAS_LIB): @echo ">> building OpenBLAS" - @make -C $(OPENBLAS_SRCS) -f Makefile.limbo + $(MAKE) -C $(OPENBLAS_SRCS) -f Makefile.limbo mv $(OPENBLAS_SRCS)/OpenBLAS/libopenblas_*.a $(OPENBLAS_LIB) # the name may vary from architectures $(CSDP_LIB): $(OPENBLAS_LIB) @echo ">> building Csdp" - @make -C $(CSDP_SRCS) + $(MAKE) -C $(CSDP_SRCS) mv $(CSDP_SRCS)/lib/libsdp.a $(CSDP_LIB) mv $(CSDP_SRCS)/solver/csdp $(LIMBO_ROOT_DIR)/bin $(LIBLINEAR_LIB): $(OPENBLAS_LIB) @echo ">> building liblinear" - @make -C $(LIBLINEAR_SRCS) + $(MAKE) -C $(LIBLINEAR_SRCS) mv $(LIBLINEAR_SRCS)/liblinear.a $(LIBLINEAR_LIB) mv $(LIBLINEAR_SRCS)/train $(LIMBO_ROOT_DIR)/bin/liblinear-train mv $(LIBLINEAR_SRCS)/predict $(LIMBO_ROOT_DIR)/bin/liblinear-predict $(CTHREADPOOL_LIB): @echo ">> build CThreadPool" - @make -C $(CTHREADPOOL_SRCS) + $(MAKE) -C $(CTHREADPOOL_SRCS) + +$(DLX_LIB): + @echo ">> build dlx" + $(MAKE) -C $(DLX_SRCS) -install: $(OPENBLAS_LIB) $(CSDP_LIB) $(LIBLINEAR_LIB) $(CTHREADPOOL_LIB) clean +install: $(OPENBLAS_LIB) $(CSDP_LIB) $(LIBLINEAR_LIB) $(CTHREADPOOL_LIB) $(DLX_LIB) clean @echo ">> building install" .PHONY: clean clean: - make -C $(OPENBLAS_SRCS) clean - make -C $(CSDP_SRCS) clean - make -C $(LIBLINEAR_SRCS) clean - make -C $(CTHREADPOOL_SRCS) clean + $(MAKE) -C $(OPENBLAS_SRCS) clean -f Makefile.limbo + $(MAKE) -C $(CSDP_SRCS) clean + $(MAKE) -C $(LIBLINEAR_SRCS) clean + $(MAKE) -C $(CTHREADPOOL_SRCS) clean + $(MAKE) -C $(DLX_SRCS) clean .PHONY: extraclean -extraclean: - make -C $(OPENBLAS_SRCS) clean -f Makefile.limbo +extraclean: clean rm -f $(OPENBLAS_LIB) - make -C $(CSDP_SRCS) clean rm -f $(CSDP_LIB) rm -f $(LIMBO_ROOT_DIR)/bin/csdp - make -C $(LIBLINEAR_SRCS) clean rm -f $(LIBLINEAR_LIB) rm -f $(LIMBO_ROOT_DIR)/bin/liblinear-train rm -f $(LIMBO_ROOT_DIR)/bin/liblinear-predict - make -C $(CTHREADPOOL_SRCS) clean rm -f $(CTHREADPOOL_LIB) + rm -f $(DLX_LIB) diff --git a/limbo/thirdparty/OpenBLAS/Makefile.limbo b/limbo/thirdparty/OpenBLAS/Makefile.limbo index 1b5234fb..b4ac3d1d 100644 --- a/limbo/thirdparty/OpenBLAS/Makefile.limbo +++ b/limbo/thirdparty/OpenBLAS/Makefile.limbo @@ -33,4 +33,4 @@ endif .PHONY: clean clean: - @make -f Makefile clean + $(MAKE) -C OpenBLAS -f Makefile clean diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..e59a9bc1 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,39 @@ +all: algorithms geometry parsers programoptions solvers string + +.PHONY: algorithms geometry parsers programoptions solvers string + +algorithms: + $(MAKE) -C algorithms + +geometry: + $(MAKE) -C geometry + +parsers: + $(MAKE) -C parsers + +programoptions: + $(MAKE) -C programoptions + +solvers: + $(MAKE) -C solvers + +string: + $(MAKE) -C string + +.PHONY: clean +clean: + $(MAKE) clean -C algorithms + $(MAKE) clean -C geometry + $(MAKE) clean -C parsers + $(MAKE) clean -C programoptions + $(MAKE) clean -C solvers + $(MAKE) clean -C string + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C algorithms + $(MAKE) extraclean -C geometry + $(MAKE) extraclean -C parsers + $(MAKE) extraclean -C programoptions + $(MAKE) extraclean -C solvers + $(MAKE) extraclean -C string diff --git a/test/algorithms/Makefile b/test/algorithms/Makefile index ca6cfbbf..82a42883 100644 --- a/test/algorithms/Makefile +++ b/test/algorithms/Makefile @@ -111,3 +111,7 @@ clean: cleandep .PHONY: cleandep cleandep: rm -f $(DEPS) + +.PHONY: extraclean +extraclean: clean + rm -rf $(OBJDIR) diff --git a/test/geometry/Makefile b/test/geometry/Makefile index cb794fab..0cab1153 100644 --- a/test/geometry/Makefile +++ b/test/geometry/Makefile @@ -81,3 +81,4 @@ cleandep: .PHONY: extraclean extraclean: clean + rm -rf $(OBJDIR) diff --git a/test/parsers/Makefile b/test/parsers/Makefile new file mode 100644 index 00000000..948d0ea7 --- /dev/null +++ b/test/parsers/Makefile @@ -0,0 +1,53 @@ +all: bookshelf def ebeam gdf gdsii lef lp tf verilog +.PHONY: bookshelf def ebeam gdf gdsii lef lp tf verilog + +bookshelf: + $(MAKE) -C bookshelf + +def: + $(MAKE) -C def + +ebeam: + $(MAKE) -C ebeam + +gdf: + $(MAKE) -C gdf + +gdsii: + $(MAKE) -C gdsii + +lef: + $(MAKE) -C lef + +lp: + $(MAKE) -C lp + +tf: + $(MAKE) -C tf + +verilog: + $(MAKE) -C verilog + +.PHONY: clean +clean: + $(MAKE) clean -C bookshelf + $(MAKE) clean -C def + $(MAKE) clean -C ebeam + $(MAKE) clean -C gdf + $(MAKE) clean -C gdsii + $(MAKE) clean -C lef + $(MAKE) clean -C lp + $(MAKE) clean -C tf + $(MAKE) clean -C verilog + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C bookshelf + $(MAKE) extraclean -C def + $(MAKE) extraclean -C ebeam + $(MAKE) extraclean -C gdf + $(MAKE) extraclean -C gdsii + $(MAKE) extraclean -C lef + $(MAKE) extraclean -C lp + $(MAKE) extraclean -C tf + $(MAKE) extraclean -C verilog diff --git a/test/parsers/def/Makefile b/test/parsers/def/Makefile index d25044b0..6cb56f6b 100644 --- a/test/parsers/def/Makefile +++ b/test/parsers/def/Makefile @@ -44,7 +44,7 @@ SRCS = $(wildcard *.cpp) OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o) DEPS = $(OBJS:%.o=%.d) # one dependency file for each source -all: test_bison test_spirit +all: test_bison #test_spirit # Compile dependency diff --git a/test/parsers/ebeam/Makefile b/test/parsers/ebeam/Makefile index 7d934a1a..734dfb4a 100644 --- a/test/parsers/ebeam/Makefile +++ b/test/parsers/ebeam/Makefile @@ -44,7 +44,7 @@ SRCS = $(wildcard *.cpp) OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o) DEPS = $(OBJS:%.o=%.d) # one dependency file for each source -all: test_bison test_spirit +all: test_bison #test_spirit # Compile dependency diff --git a/test/parsers/lef/Makefile b/test/parsers/lef/Makefile index 4b9e0042..67480179 100644 --- a/test/parsers/lef/Makefile +++ b/test/parsers/lef/Makefile @@ -44,7 +44,7 @@ SRCS = $(wildcard *.cpp) OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o) DEPS = $(OBJS:%.o=%.d) # one dependency file for each source -all: test_bison test_spirit +all: test_bison #test_spirit # Compile dependency diff --git a/test/programoptions/Makefile b/test/programoptions/Makefile index 611289a0..1bb341a9 100644 --- a/test/programoptions/Makefile +++ b/test/programoptions/Makefile @@ -48,7 +48,6 @@ $(OBJDIR)/%.d: %.cpp $(CXX) $(CXXFLAGS) $< -MM -MT $(@:%.d=%.o) >$@ $(INCLUDE) -include $(DEPS) --include $(DEPS_TEST) # Implicit rule to compile c++ files @@ -75,3 +74,4 @@ cleandep: .PHONY: extraclean extraclean: clean + rm -rf $(OBJDIR) diff --git a/test/solvers/Makefile b/test/solvers/Makefile new file mode 100644 index 00000000..f4546282 --- /dev/null +++ b/test/solvers/Makefile @@ -0,0 +1,13 @@ +all: lpmcf +.PHONY: lpmcf + +lpmcf: + $(MAKE) -C lpmcf + +.PHONY: clean +clean: + $(MAKE) clean -C lpmcf + +.PHONY: extraclean +extraclean: + $(MAKE) extraclean -C lpmcf diff --git a/test/solvers/lpmcf/Makefile b/test/solvers/lpmcf/Makefile index 60d240a0..0d2844be 100644 --- a/test/solvers/lpmcf/Makefile +++ b/test/solvers/lpmcf/Makefile @@ -74,3 +74,6 @@ clean: cleandep cleandep: rm -f $(DEPS) +.PHONY: extraclean +extraclean: clean + rm -rf $(OBJDIR) diff --git a/test/string/Makefile b/test/string/Makefile index de1eeace..22ef94de 100644 --- a/test/string/Makefile +++ b/test/string/Makefile @@ -70,3 +70,7 @@ clean: cleandep .PHONY: cleandep cleandep: rm -f $(DEPS) + +.PHONY: extraclean +extraclean: clean + rm -rf $(OBJDIR)