Revised the sky130 Makefile to completely ignore blocks that are not
specified for install, instead of running all of the target recipe
procedures.  This prevents the Makefile from building out directory
structures for libraries that will not be installed.  It also fixes
an error where the make process hits an error and halts if the
primitives submodule is not initialized.
diff --git a/VERSION b/VERSION
index 089ef33..fc59624 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.163
+1.0.164
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index dfce02b..989e6c3 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -706,7 +706,49 @@
 	${CPP} -quiet ${SKY130A_DEFS} openlane/sky130_osu_sc_t18/tracks.info \
 		${OPENLANE_STAGING_A}/sky130_osu_sc_t18/tracks.info
 
-vendor-a: primitive-a io-a digital-a alpha-a sram-a osu-base-a osu-t12-a osu-t15-a osu-t18-a
+vendor-a:
+	# Build targets conditionally based on what repositories or submodules
+	# were selected or initialized.  To be done:  Allow a library version
+	# to be specified that overrides "latest".
+	if test -d ${SKYWATER_LIBS_PATH}/sky130_fd_pr/latest/cells ; then \
+		echo "Building primitives library and simulation models" ;\
+		make primitive-a;\
+	fi
+	if test -d ${SKYWATER_LIBS_PATH}/sky130_fd_io/latest/cells ; then \
+		echo "Building padframe I/O libraries" ;\
+		make io-a ;\
+	fi
+	# This assumes that at least the HD library submodule exists.  Also it
+	# assumes that the same library version is used for all libraries, which
+	# is fine with "latest" but otherwise probably invalid.
+	if test -d ${SKYWATER_LIBS_PATH}/sky130_fd_sc_hd/latest/cells ; then \
+		echo "Building digital standard cell libraries" ;\
+		make digital-a ;\
+	fi
+	if test -d ${ALPHA_PATH} ; then \
+		echo "Building alphanumeric layout libraries" ;\
+		make alpha-a ;\
+	fi
+	if test -d ${SRAM_PATH} ; then \
+		echo "Building SRAM macro library" ;\
+		make sram-a ;\
+	fi
+	if test -d ${OSU_PATH} ; then \
+		echo "Building OSU full source library" ;\
+		make osu-base-a ;\
+	fi
+	if test -d ${OSU_T12_PATH} ; then \
+		echo "Building OSU 12-track-high standard cell library" ;\
+		make osu-t12-a ;\
+	fi
+	if test -d ${OSU_T15_PATH} ; then \
+		echo "Building OSU 15-track-high standard cell library" ;\
+		make osu-t15-a ;\
+	fi
+	if test -d ${OSU_T18_PATH} ; then \
+		echo "Building OSU 18-track-high standard cell library" ;\
+		make osu-t18-a ;\
+	fi
 
 primitive-a:
 	# Install device subcircuits from vendor files
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 679f234..225663a 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -308,6 +308,12 @@
  -comment res1p41
  -comment res2p85
  -comment res5p73
+# fixed bipolar area identifiers
+ -comment pnp0p68
+ -comment pnp3p40
+ -comment npn1p00
+ -comment npn2p00
+ -comment npn11p0
 
 end
 
@@ -524,6 +530,11 @@
   res1p41   implant1
   res2p85   implant1
   res5p73   implant1
+  pnp0p68   implant1
+  pnp3p40   implant1
+  npn1p00   implant1
+  npn2p00   implant1
+  npn11p0   implant1
 
   pdiode    pdiffusion     pselect2
   ndiode    ndiffusion     nselect2
@@ -5286,8 +5297,17 @@
 	*mvnndiff nwell error l=l w=w a1=as a2=ad p1=ps p2=pd
 
  # Bipolars
+ device msubcircuit sky130_fd_pr__npn_05v5_W1p00L1p00 npn *ndiff dnwell space/w \
+	error +npn1p00
+ device msubcircuit sky130_fd_pr__npn_05v5_W1p00L2p00 npn *ndiff dnwell space/w \
+	error +npn2p00
  device msubcircuit sky130_fd_pr__npn_05v5 npn *ndiff dnwell space/w error a2=area
- device msubcircuit sky130_fd_pr__pnp_05v5 pnp *pdiff pwell,space/w a2=area
+ device msubcircuit sky130_fd_pr__pnp_05v5_W0p68L0p68 pnp *pdiff \
+	pwell,space/w +pnp0p68
+ device msubcircuit sky130_fd_pr__pnp_05v5_W3p40L3p40 pnp *pdiff \
+	pwell,space/w +pnp3p40
+ device msubcircuit sky130_fd_pr__npn_11v0_W1p00L1p00 npn *mvndiff \
+	dnwell space/w error +npn11p0
  device msubcircuit sky130_fd_pr__npn_11v0 npn *mvndiff dnwell space/w error a2=area
 
  # Ignore the extended-drain FET geometry that forms part of the high-voltage
@@ -5462,8 +5482,13 @@
  device pdiode sky130_fd_pr__diode_pd2nw_05v5_hvt *pdiodehvt nwell a=area
  device pdiode sky130_fd_pr__diode_pd2nw_11v0 *mvpdiode nwell a=area
 
+ device bjt sky130_fd_pr__npn_05v5_W1p00L1p00 npn *ndiff dnwell space/w error +npn1p00
+ device bjt sky130_fd_pr__npn_05v5_W1p00L2p00 npn *ndiff dnwell space/w error +npn2p00
  device bjt sky130_fd_pr__npn_05v5 npn *ndiff dnwell space/w error a2=area
+ device bjt sky130_fd_pr__pnp_05v5_W0p68L0p68 pnp *pdiff pwell,space/w +pnp0p68
+ device bjt sky130_fd_pr__pnp_05v5_W3p40L3p40 pnp *pdiff pwell,space/w +pnp3p40
  device bjt sky130_fd_pr__pnp_05v5 pnp *pdiff pwell,space/w a2=area
+ device bjt sky130_fd_pr__npn_11v0_W1p00L1p00 npn *mvndiff dnwell space/w error +npn11p0
  device bjt sky130_fd_pr__npn_11v0 npn *mvndiff dnwell space/w error a2=area
 
 #ifdef MIM