Modified the liberty library generator to allow a header file to
be specified, since liberty libraries can't just be made by
concatenating cell entries together.  Revised the GF180MCU Makefile
to add the header files, which I recently added to the Google
repositories for the standard cells and the I/O library.  The
current version is writing out the first cell's header, which
should be cleaned up, but it is producing valid liberty libraries.
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in
index 8f78f7a..c543511 100644
--- a/gf180mcu/Makefile.in
+++ b/gf180mcu/Makefile.in
@@ -721,34 +721,49 @@
 			rename=gf180mcu_fd_sc_mcu9t5v0.tlef \
 		-cdl cells/*/*.cdl compile-only noconvert \
 		-liberty cells/*/*_ff_125C_1v98.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_125C_1v98.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_1v98 \
 		-liberty cells/*/*_ff_n40C_1v98.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_n40C_1v98.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_1v98 \
-		-liberty cells/*/*_ff_125C_3p6v.lib compile-only \
-			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_3p6v \
-		-liberty cells/*/*_ff_n40C_3p6v.lib compile-only \
-			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_3p6v \
+		-liberty cells/*/*_ff_125C_3v60.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_125C_3v60.lib \
+			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_3v60 \
+		-liberty cells/*/*_ff_n40C_3v60.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_n40C_3v60.lib \
+			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_3v60 \
 		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_125C_5v50.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ff_125C_5v50 \
 		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ff_n40C_5v50.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ff_n40C_5v50 \
 		-liberty cells/*/*_ss_125C_1v62.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_125C_1v62.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_1v62 \
 		-liberty cells/*/*_ss_n40C_1v62.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_n40C_1v62.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_1v62 \
 		-liberty cells/*/*_ss_125C_3v00.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_125C_3v00.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_3v00 \
 		-liberty cells/*/*_ss_n40C_3v00.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_n40C_3v00.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_3v00 \
 		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_125C_4v50.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_125C_4v50 \
 		-liberty cells/*/*_ss_n40C_4v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__ss_n40C_4v50.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__ss_n40C_4v50 \
 		-liberty cells/*/*_tt_025C_1v80.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__tt_025C_1v80.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_1v80 \
 		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__tt_025C_3v30.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_3v30 \
 		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu9t5v0__tt_025C_5v00.lib \
 			rename=gf180mcu_fd_sc_mcu9t5v0__tt_025C_5v00 \
 		-gds cells/*/*.gds compile-only \
 		-lef cells/*/*.lef compile-only \
@@ -764,34 +779,49 @@
 			rename=gf180mcu_fd_sc_mcu7t5v0.tlef \
 		-cdl cells/*/*.cdl compile-only noconvert \
 		-liberty cells/*/*_ff_125C_1v98.lib compile-only \
+                        header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_125C_1v98.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_1v98 \
 		-liberty cells/*/*_ff_n40C_1v98.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_n40C_1v98.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_1v98 \
-		-liberty cells/*/*_ff_125C_3p6v.lib compile-only \
-			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_3p6v \
-		-liberty cells/*/*_ff_n40C_3p6v.lib compile-only \
-			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_3p6v \
+		-liberty cells/*/*_ff_125C_3v60.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_125C_3v60.lib \
+			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_3v60 \
+		-liberty cells/*/*_ff_n40C_3v60.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_n40C_3v60.lib \
+			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_3v60 \
 		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_125C_5v50.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ff_125C_5v50 \
 		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ff_n40C_5v50.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ff_n40C_5v50 \
 		-liberty cells/*/*_ss_125C_1v62.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_125C_1v62.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_1v62 \
 		-liberty cells/*/*_ss_n40C_1v62.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_n40C_1v62.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_1v62 \
 		-liberty cells/*/*_ss_125C_3v00.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_125C_3v00.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_3v00 \
 		-liberty cells/*/*_ss_n40C_3v00.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_n40C_3v00.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_3v00 \
 		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_125C_4v50.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_125C_4v50 \
 		-liberty cells/*/*_ss_n40C_4v50.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__ss_n40C_4v50.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__ss_n40C_4v50 \
 		-liberty cells/*/*_tt_025C_1v80.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__tt_025C_1v80.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_1v80 \
 		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__tt_025C_3v30.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_3v30 \
 		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
+			header=liberty/gf180mcu_fd_sc_mcu7t5v0__tt_025C_5v00.lib \
 			rename=gf180mcu_fd_sc_mcu7t5v0__tt_025C_5v00 \
 		-gds cells/*/*.gds compile-only \
 		-lef cells/*/*.lef compile-only \
@@ -809,28 +839,40 @@
 		-target ${STAGING_PATH}/${GF180MCU$*} \
 		-cdl cells/*/*.cdl compile-only noconvert \
 		-liberty cells/*/*_ff_125C_2v75.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_125C_2v75.lib \
 			rename=gf180mcu_fd_io__ff_125C_2v75 \
 		-liberty cells/*/*_ff_n40C_2v75.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_n40C_2v75.lib \
 			rename=gf180mcu_fd_io__ff_n40C_2v75 \
 		-liberty cells/*/*_ff_125C_3v63.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_125C_3v63.lib \
 			rename=gf180mcu_fd_io__ff_125C_3v63 \
 		-liberty cells/*/*_ff_n40C_3v63.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_n40C_3v63.lib \
 			rename=gf180mcu_fd_io__ff_n40C_3v63 \
 		-liberty cells/*/*_ff_125C_5v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_125C_5v50.lib \
 			rename=gf180mcu_fd_io__ff_125C_5v50 \
 		-liberty cells/*/*_ff_n40C_5v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ff_n40C_5v50.lib \
 			rename=gf180mcu_fd_io__ff_n40C_5v50 \
 		-liberty cells/*/*_ss_125C_2v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ss_125C_2v50.lib \
 			rename=gf180mcu_fd_io__ss_125C_2v50 \
 		-liberty cells/*/*_ss_125C_2v97.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ss_125C_2v97.lib \
 			rename=gf180mcu_fd_io__ss_125C_2v97 \
 		-liberty cells/*/*_ss_125C_4v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__ss_125C_4v50.lib \
 			rename=gf180mcu_fd_io__ss_125C_4v50 \
 		-liberty cells/*/*_tt_025C_2v50.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__tt_025C_2v50.lib \
 			rename=gf180mcu_fd_io__tt_025C_2v50 \
 		-liberty cells/*/*_tt_025C_3v30.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__tt_025C_3v30.lib \
 			rename=gf180mcu_fd_io__tt_025C_3v30 \
 		-liberty cells/*/*_tt_025C_5v00.lib compile-only \
+                        header=liberty/gf180mcu_fd_io__tt_025C_5v00.lib \
 			rename=gf180mcu_fd_io__tt_025C_5v00 \
 		-gds cells/*/*_${$*_STACK}.gds compile-only \
 			options=custom/scripts/gds_import_io.tcl \