New experimental build system using CMake

Kevin Zheng <[email protected]>
Newsgroups gmane.comp.gnu.gnucap.devel
Message-ID <[email protected]>
Hi there,

While I was working on updating the version of Gnucap in the FreeBSD
Ports Collection, I realized that I didn't really like the existing
build system, for multiple reasons. Feeling adventurous, I cloned the
repository and tried to set up a build system using CMake.

Attached is a patch with my work in progress. Although it is still far
from finished, I think it's a good start towards a cleaner build system.
You can apply the patch by using `git am <patch>`.

A major limitation is that CMake refuses to create output files with the
"same" name. Since there is already a "gnucap" library, it is not able
to produce a "gnucap" executable. I've temporarily renamed the
executable to "gcap", which can successfully run on my machine.

I know that build systems bring big changes (and dependencies), but I
would like the project to consider the prospect of moving to a simpler,
more elegant build system.

Thanks,
Kevin Zheng

_______________________________________________
Gnucap-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnucap-devel
patch-cmake-build.diff (text/plain, 3.2 KB)
From 5ac3753c98c6ba3d406f34c017e60f0050b6af44 Mon Sep 17 00:00:00 2001
From: Kevin Zheng <[email protected]>
Date: Fri, 10 May 2013 17:44:09 -0500
Subject: [PATCH] Add new experimental build system using CMake.

Because CMake does not allow the same name to be used with multiple
output files, the 'gnucap' binary has been TEMPORARILY renamed to 'gcap'
to avoid having to change the name of libgnucap.so.
---
 CMakeLists.txt | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
 create mode 100644 CMakeLists.txt

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..813c227
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 2.6)
+project(gnucap)
+
+# Tell the compiler where to find the header files.
+include_directories(include/)
+
+# Build shared library.
+add_library(gnucap SHARED lib/ap_construct.cc lib/ap_convert.cc lib/ap_error.cc lib/ap_get.cc lib/ap_match.cc lib/ap_skip.cc lib/bm.cc lib/bm_cond.cc lib/bm_value.cc lib/c__cmd.cc lib/c_attach.cc lib/c_file.cc lib/d_logic.cc lib/d_logicmod.cc lib/d_subckt.cc lib/e_base.cc lib/e_card.cc lib/e_cardlist.cc lib/e_ccsrc.cc lib/e_compon.cc lib/e_elemnt.cc lib/e_model.cc lib/e_node.cc lib/e_storag.cc lib/findbr.cc lib/globals.cc lib/io.cc lib/io_contr.cc lib/io_error.cc lib/io_findf.cc lib/io_out.cc lib/io_xopen.cc lib/l_ftos.cc lib/l_pmatch.cc lib/l_timer.cc lib/l_trim.cc lib/l_wmatch.cc lib/m_base_in.cc lib/m_base_math.cc lib/m_expression_dump.cc lib/m_expression_in.cc lib/m_expression_reduce.cc lib/m_fft.cc lib/m_spline.cc lib/plot.cc lib/u_function.cc lib/u_lang.cc lib/u_nodemap.cc lib/u_opt1.cc lib/u_opt2.cc lib/u_parameter.cc lib/u_prblst.cc lib/u_probe.cc lib/u_sim_data.cc lib/u_xprobe.cc)
+
+add_library(gnucap-modelgen modelgen/mg_error.cc modelgen/mg_in.cc modelgen/mg_main.cc modelgen/mg_out_common.cc modelgen/mg_out_dev.cc modelgen/mg_out_dump.cc modelgen/mg_out_h.cc modelgen/mg_out_lib.cc modelgen/mg_out_model.cc modelgen/mg_out_root.cc)
+
+# Build default plugins (apps).
+add_library(gnucap-default-plugins SHARED apps/bm_complex.cc apps/bm_exp.cc apps/bm_fit.cc apps/bm_generator.cc apps/bm_model.cc apps/bm_poly.cc apps/bm_posy.cc apps/bm_pulse.cc apps/bm_pwl.cc apps/bm_sffm.cc apps/bm_sin.cc apps/bm_tanh.cc apps/bmm_semi.cc apps/bmm_table.cc apps/c_clear.cc apps/c_comand.cc apps/c_delete.cc apps/c_exp.cc apps/c_genrat.cc apps/c_list.cc apps/c_measure.cc apps/c_modify.cc apps/c_param.cc apps/c_prbcmd.cc apps/c_sim.cc apps/c_status.cc apps/c_sweep.cc apps/c_system.cc apps/d_admit.cc apps/d_cap.cc apps/d_cccs.cc apps/d_ccvs.cc apps/d_coil.cc apps/d_cs.cc apps/d_meter.cc apps/d_poly_cap.cc apps/d_poly_g.cc apps/d_res.cc apps/d_switch.cc apps/d_trln.cc apps/d_vcg.cc apps/d_vcr.cc apps/d_vcvs.cc apps/d_vs.cc apps/func_core.cc apps/lang_spectre.cc apps/lang_spice.cc apps/lang_verilog.cc apps/measure_at.cc apps/measure_average.cc apps/measure_cross.cc apps/measure_eval.cc apps/measure_integral.cc apps/measure_max.cc apps/measure_min.cc apps/measure_rms.cc apps/measure_slewrate.cc apps/s__init.cc apps/s__out.cc apps/s__solve.cc apps/s_ac.cc apps/s_dc.cc apps/s_fo.cc apps/s_tr.cc apps/s_tr_set.cc apps/s_tr_swp.cc apps/signon.cc)
+
+# Build gnucap binary.
+add_executable(gcap main/main.cc)
+target_link_libraries(gcap gnucap)
-- 
1.8.2.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.